include include include include include include $fn = $preview ? 50 : 200; // $t = 0; /* Weight: Component Weight Amount Motor 280g 2 Bearing 60g 4 Computer 50g ? 1 RTL SDR 30g? 1 GPS 50g? 1 Pulley 60T 50g? 2 Pulley 16T 10g? 2 Belts, Screws 100g? 1 Box Frame 200g? 1 */ module gimbal(alt, az){ alt_axis_z = 73.5; pulley_dist_alt = 51.7; pulley_dist_az = 51.7; pulley_height = 12; rotate([0, 0, az]){ translate([-15, 0, alt_axis_z]){ rotate([0, -alt, 0]){ translate([0, 55, 0]){ cammount(); } translate([0, -45, 0]){ rotate([0, 0, 180]){ cammount(); } } translate([-50, 95, 0]){ rotate([0, 90, 0]){ w110(); } } translate([-40, -85, 0]){ rotate([-90, 0, -90]){ usbcam1(); } } translate([0, 45, 0]){ rotate([-90, 90, 0]){ color([1,1,0.8]) union(){ intersection(){ cylinder(h=5, r=50); translate([100, -100, 0]){ cube([200, 200, 100], center=true); } } cylinder(h=5, r=15); } } } } rotate([90, 0, 0]){ cylinder(h=120, r=5, center=true); } translate([0, -55/2+4, 0]){ rotate([90, 0, 0]){ driveunit(12, pulley_dist_alt, 19, 5, 7); } } translate([0, 55/2, 0]){ rotate([-90, 60, 0]){ kfl000(); } } translate([0, -55/2+4, 0]){ rotate([-90, -60, 0]){ kfl000(); } } } translate([0, 0, 0]){ rotate([0, 180, 180]){ driveunit(12, pulley_dist_alt, 19, 5, 7); } } rotate([0, 0, -60]){ kfl000(); } translate([0, 0, 101]){ rotate([0, 0, 60]){ kfl000(); } } color([1,1,0.8]) difference(){ union(){ translate([-37.5 - 15, 55/2 - 4, 0]){ cube([130, 4, 101]); } translate([-37.5 - 15, -55/2, 0]){ cube([130, 4, 101]); } translate([130/2 -37.5 - 15, 0, -2]){ cube([130, 55, 4], center=true); } translate([130/2 -37.5 - 15 + 4, 0, 47+2]){ cube([130-4, 55, 4], center=true); } translate([130/2 -37.5 - 15, 0, 101 - 2]){ cube([130, 55, 4], center=true); } } cylinder(h=200, r=6, center=true); translate([pulley_dist_az, 0, 0]){ cylinder(h=40, r=11, center=true); } } translate([-37.5-15 + 2, 0, 101/2-2]){ color([0.5,0.5,0,0.2]){ // cube([4, 55-8, 101-4], center=true); } } translate([50, 0, 101]){ antenna_gps(); } translate([-40, 0, 101]){ antenna_adsb(); } } translate([0, 0, -30]){ rotate([0, 0, 0]){ cube([200, 200, 10], center=true); } cylinder(h=150, r=5); } } gimbal(abs(($t * 360)%180 - 90), $t*360);