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();









Коментарі
Дописати коментар