PD тригер з корпусом

У січні в моїй майстерні стало доволі прохолодно, тож я вирішив додати своєму офісному стільцю нову функцію — підігрів. Для цього я замовив накидку для автосидінь із підігрівом потужністю 40 Вт.

Однак вона потребує автомобільної розетки на 12 В, що, як на мене, не дуже зручно. Набагато зручнішим варіантом для мене є Type-C з PD, щоб можна було живити від павербанка. Тож беремо паяльник і переробляємо.



Розбираємо автомобільну вилку



Тут усе просто: синій дріт — мінус, коричневий — плюс. Припаюємо їх до тригера.



Перевіряємо, щоб перемичка на тригері була виставлена саме на 12 В. Ізоляція дротів трохи пошкоджена, але я не буду її виправляти, оскільки планую зробити корпус для тригера. Модель корпусу створюю в OpenSCAD. Він складатиметься з двох частин і збиратиметься на гвинтах.

Нижня частина:



Верхня частина:

  


Моделі доволі прості, друкуються швидко, і в результаті отримую ось такі деталі:



Збираємо разом із тригером:





Готовий результат



Це лише перша тестова версія. Одразу можна помітити, що немає захисту від перетирання дротів. Якщо часто рухати кабель, він може зламатися на виході з корпусу.

Модель корпусу:

include <libs/NopSCADlib/utils/core/global.scad>
include <libs/NopSCADlib/vitamins/nuts.scad>

IDX_LEFT = 0;
IDX_BACK = 1;
IDX_RIGHT = 2;
IDX_FRONT = 3;
IDX_BOTTOM = 4;
IDX_TOP = 5;
PD_BOARD_SIZE = [23.2,12.0,1.22];
TYPE_C_SIZE = [7.4,9.0,1.2];
typecr = 1.5;
DRAW_BOARD = false;
DRAW_BOTTOM = true;
DRAW_TOP = true;
WIRE_R = 1.5;

module drawPdTrigger(board, typec) {
    color("green") cube(board);
    // TypeC
    translate([typec.z,1.2+typecr,1.5+board.z])
    color("lightgrey") hull() {
        rotate([0,90,0])
            cylinder(r=typecr,h=typec.x, $fn=12);
        translate([0,typec.y-typecr*2,0])
            rotate([0,90,0])
            cylinder(r=typecr,h=typec.x, $fn=12);
    }    
}

module drawCase(
    draw = [DRAW_BOARD,DRAW_BOTTOM,DRAW_TOP],
    board = PD_BOARD_SIZE,
    thikness = [0.6, M2p5_nut[2]+0.2, 12.4, M2p5_nut[2]+0.2, 1.0, 1.0],
    typec = TYPE_C_SIZE,
    rightr = 9,
) {
    case = [board.x + thikness[IDX_LEFT] + thikness[IDX_RIGHT], 
        board.y + thikness[IDX_BACK] + thikness[IDX_FRONT], 
        thikness[IDX_BOTTOM] + thikness[IDX_TOP] + board.z + 2];
    height = 4.2;
    if (draw[0])
        drawPdTrigger(
            board = board,
            typec = typec
            );
    difference() {
        union() {
            if (draw[1]) {
                // bottom
                difference() {
                    translate([-thikness[IDX_LEFT],
                        -thikness[IDX_FRONT],
                        -thikness[IDX_BOTTOM]*1.3])
                        cube([case.x, case.y, thikness[IDX_BOTTOM]*2]);
                    translate([-0.1,-0.1,-0.1])
                    cube([board.x+0.6,board.y+0.6,10]);

                    // 1st nut
                    translate([case.x/2 - M2p5_nut[1]/2,
                        -thikness[IDX_FRONT] + M2p5_nut[2]/2,
                        -0.1-M2p5_nut[3]])
                        scale([1.07,1.07,1.0])
                        nut(type=M2p5_nut, nyloc = false, dome = false);

                    // 2nd nut
                    translate([case.x/2 - M2p5_nut[1]/2,
                        case.y - thikness[IDX_FRONT] - M2p5_nut[2]/2,
                        -0.1-M2p5_nut[3]])
                        scale([1.07,1.07,1.0])
                        nut(type=M2p5_nut, nyloc = false, dome = false);
                }
            }
            if (draw[2]) {
                // top
                difference() {
                    union() {
                        topheight = case.x-typec.z - thikness[IDX_LEFT];
                        translate([typec.z,
                                -thikness[IDX_FRONT],
                                height])
                            cube([topheight, case.y, thikness[IDX_TOP]]);
                        translate([typec.z,
                            -thikness[IDX_FRONT],
                            thikness[IDX_TOP]-0.2])
                            cube([topheight, 
                                thikness[IDX_FRONT]-0.2, 
                                height]);
                        translate([typec.z,
                                case.y-thikness[IDX_BACK]+0.2-thikness[IDX_FRONT],
                                thikness[IDX_TOP]-0.2])
                            cube([topheight, 
                                thikness[IDX_FRONT]-0.2, 
                                height]);
                        
                        translate([board.x + 0.2,
                                -thikness[IDX_FRONT],
                                thikness[IDX_TOP]-0.2])
                            cube([thikness[IDX_RIGHT]-0.2, 
                                case.y, 
                                height]);
                    }
                    // for wires
                    translate([board.x-1,1,1.0])
                    rotate([0,90,45])
                        cylinder(r=WIRE_R,h=6.5);
                    translate([board.x-1,11,1.0])
                    rotate([0,90,-45])
                        cylinder(r=WIRE_R,h=6.5);
                    translate([case.x-10,5.5,1.0])
                    rotate([0,90,0])
                        cylinder(r=WIRE_R,h=13);
                    translate([case.x-10,6.5,1.0])
                    rotate([0,90,0])
                        cylinder(r=WIRE_R,h=13);
                }
            }
        }
        //screw  holes
        translate([case.x/2 - M2p5_nut[1]/2,
            -thikness[IDX_FRONT] + M2p5_nut[2]/2,
            -0.1-M2p5_nut[3]])
            cylinder(r=M2p5_nut[1]/2+0.2,h=20,$fn=14);
        translate([case.x/2 - M2p5_nut[1]/2,
            case.y - thikness[IDX_FRONT] - M2p5_nut[2]/2,
            -0.1-M2p5_nut[3]])
            cylinder(r=M2p5_nut[1]/2+0.2,h=20,$fn=14);
        // circles
        for (sy = [0:1]) {
            translate([case.x,-thikness[IDX_FRONT]+case.y*sy,
                -thikness[IDX_BOTTOM] - board.z])
                cylinder(r= rightr, h = 12);
        }
    }
}

drawCase();

Коментарі

Популярні дописи з цього блогу

Огляд DC-DC Step-down Buck перетворювачів

ESP8266 модуль з OLED екраном (HW-364A)

Модуль PD тригер IP2721 на 15 та 20 вольт