Cours:RobotiqueCoupeGEII : Différence entre versions
(→Caractéristiques mécaniques) |
(→positionnement) |
||
(7 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
=Ressources= | =Ressources= | ||
*[[Media:Coupe_GEII_-_Règlement_-_2020.pdf| règlement de la coupe de robotique]] | *[[Media:Coupe_GEII_-_Règlement_-_2020.pdf| règlement de la coupe de robotique]] | ||
+ | *matériel disponible | ||
+ | **https://www.cytron.io/p-13amp-6v-30v-dc-motor-driver | ||
=Caractéristiques mécaniques= | =Caractéristiques mécaniques= | ||
Ligne 48 : | Ligne 50 : | ||
=Positionnement= | =Positionnement= | ||
+ | |||
+ | =Modèles 3d= | ||
+ | |||
+ | {{boîte déroulante/début|titre=longeron.scad}} | ||
+ | <source lang=c> | ||
+ | tailleCube=7.5; | ||
+ | isConge=1; | ||
+ | isPercage=1; | ||
+ | rayonPercage=1.5; | ||
+ | conge=0.25; | ||
+ | $fn=25; | ||
+ | |||
+ | module longeronX(nbCubes=3,posX=0,posY=0,posZ=0) | ||
+ | { | ||
+ | translate([posX*tailleCube,posY*tailleCube,posZ*tailleCube]) | ||
+ | rotate([0,0,0]) | ||
+ | longeron(nbCubes); | ||
+ | } | ||
+ | |||
+ | module longeronY(nbCubes=3,posX=0,posY=0,posZ=0) | ||
+ | { | ||
+ | translate([posX*tailleCube,posY*tailleCube,posZ*tailleCube]) | ||
+ | rotate([0,0,90]) | ||
+ | longeron(nbCubes); | ||
+ | } | ||
+ | |||
+ | module longeronZ(nbCubes=3,posX=0,posY=0,posZ=0) | ||
+ | { | ||
+ | translate([posX*tailleCube,posY*tailleCube,posZ*tailleCube]) | ||
+ | rotate([0,-90,0]) | ||
+ | longeron(nbCubes); | ||
+ | } | ||
+ | |||
+ | module longeron(nbCubes=3) | ||
+ | { | ||
+ | difference() | ||
+ | { | ||
+ | translate([-tailleCube/2,-tailleCube/2,-tailleCube/2]) | ||
+ | cube([tailleCube*nbCubes,tailleCube,tailleCube]); | ||
+ | if (isPercage==1) | ||
+ | { | ||
+ | for (i=[0:nbCubes-1]) | ||
+ | { | ||
+ | translate([i*tailleCube,0,0]) | ||
+ | rotate([0,0,0]) | ||
+ | trou(); | ||
+ | translate([i*tailleCube,0,0]) | ||
+ | rotate([90,0,0]) | ||
+ | trou(); | ||
+ | } | ||
+ | rotate([0,90,0]) | ||
+ | trou(nbCubes); | ||
+ | }} | ||
+ | } | ||
+ | |||
+ | |||
+ | module boite() | ||
+ | { | ||
+ | difference() | ||
+ | { | ||
+ | cube([tailleCube,tailleCube,tailleCube],center=true); | ||
+ | if (isPercage==1) | ||
+ | { | ||
+ | rotate([0,0,0]) | ||
+ | trou(); | ||
+ | rotate([90,0,0]) | ||
+ | trou(); | ||
+ | rotate([0,90,0]) | ||
+ | trou(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module trou(size=1) | ||
+ | { | ||
+ | translate([0,0,(size-1)*tailleCube/2]) | ||
+ | { | ||
+ | cylinder(h=tailleCube*size+2*conge, r=rayonPercage,center=true); | ||
+ | if (isConge==1) | ||
+ | { | ||
+ | translate([0,0,-tailleCube*size/2-conge]) | ||
+ | cylinder(h=2*conge, d1=(rayonPercage+2*conge)*2, | ||
+ | d2=(rayonPercage)*2); | ||
+ | translate([0,0,tailleCube*size/2-conge]) | ||
+ | cylinder(h=2*conge, d2=(rayonPercage+2*conge)*2, | ||
+ | d1=(rayonPercage)*2); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=supportMoteur.scad}} | ||
+ | <source lang=c> | ||
+ | diamMoteur=36.6; | ||
+ | $fn=200; | ||
+ | rayonPercage=1.5; | ||
+ | |||
+ | |||
+ | difference() | ||
+ | { | ||
+ | intersection() | ||
+ | { | ||
+ | translate([0,4,0]) | ||
+ | difference() | ||
+ | { | ||
+ | cube([52.5,30.0-5-5,diamMoteur/2+2+2]); | ||
+ | |||
+ | |||
+ | translate([52.5/2,-0.1,-2]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=30, d=diamMoteur+0.4+2); | ||
+ | |||
+ | |||
+ | translate([7.5/2,2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2,7.5*1+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2,7.5*2+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | |||
+ | |||
+ | translate([7.5/2+7.5*6,7.5*0+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2+7.5*6,7.5*1+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2+7.5*6,7.5*2+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | union() | ||
+ | { | ||
+ | translate([-1,-1,-1]) | ||
+ | cube([60,30,3.5]); | ||
+ | |||
+ | |||
+ | translate([52.5/2,-0.1,-2+1]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=30, d=diamMoteur+0.4+2+4+1); | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | translate([0,4,3]) | ||
+ | union() | ||
+ | { | ||
+ | translate([7.5/2,2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*2); | ||
+ | translate([7.5/2,7.5*1+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*2); | ||
+ | translate([7.5/2,7.5*2+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*2); | ||
+ | |||
+ | |||
+ | translate([7.5/2+7.5*6,7.5*0+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*2); | ||
+ | translate([7.5/2+7.5*6,7.5*1+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*2); | ||
+ | translate([7.5/2+7.5*6,7.5*2+2.25,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*2); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | translate([52.5,-5,0]) | ||
+ | rotate([180,0,180]) | ||
+ | difference() | ||
+ | { | ||
+ | |||
+ | translate([0,5,0]) | ||
+ | cube([52.5,30.0-5,diamMoteur/2+2]); | ||
+ | union() | ||
+ | { | ||
+ | translate([-0.5,-0.5,11]) | ||
+ | cube([53.5,8,17]); | ||
+ | translate([-0.5,-0.5,12]) | ||
+ | cube([8,31,18]); | ||
+ | translate([52.5-7.5,-0.5,11.5]) | ||
+ | cube([8,31,18]); | ||
+ | |||
+ | translate([-0.5,-0.5,-0.5]) | ||
+ | cube([8.5,8.5,30]); | ||
+ | translate([7.5*6-0.5,-0.5,-0.5]) | ||
+ | cube([8.5,8.5,30]); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | translate([52.5/2,8.8,0]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=30, d=diamMoteur+0.4); | ||
+ | translate([52.5/2,-0.5,0]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=30, d=12+1); | ||
+ | |||
+ | |||
+ | |||
+ | translate([7.5/2,7.5+7.5/2,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2,7.5*2+7.5/2,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2,7.5*3+7.5/2,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | |||
+ | |||
+ | translate([7.5/2+7.5*6,7.5+7.5/2,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | translate([7.5/2+7.5*6,7.5*2+7.5/2,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.2); | ||
+ | translate([7.5/2+7.5*6,7.5*3+7.5/2,-0.5]) | ||
+ | cylinder(h=30, d=2*rayonPercage*1.1); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=supportRoulette.scad}} | ||
+ | <source lang=c> | ||
+ | include <longeron.scad> | ||
+ | isConge=0; | ||
+ | isPercage=1; | ||
+ | $fn=45; | ||
+ | //rayonPercage=1.8; | ||
+ | |||
+ | s=7.5; | ||
+ | center=[s*4,s*3,15-7.5]; | ||
+ | |||
+ | difference() | ||
+ | { | ||
+ | union() | ||
+ | { | ||
+ | longeronX(7,1,0,0); | ||
+ | longeronX(5,2,0,2); | ||
+ | longeronX(5,2,5,2); | ||
+ | |||
+ | longeronZ(3,2,0,0); | ||
+ | longeronZ(3,6,0,0); | ||
+ | |||
+ | longeronY(7,2,0,2); | ||
+ | longeronY(7,6,0,2); | ||
+ | |||
+ | translate([s*2.5-1,s*0.5-1,s*1.5-2.4]) | ||
+ | cube([3*s+2,4*s+2,4.5]); | ||
+ | } | ||
+ | |||
+ | |||
+ | translate(center) | ||
+ | union() | ||
+ | { | ||
+ | |||
+ | rotate([0,0,360*2/3]) | ||
+ | translate([7,0,0]) | ||
+ | cylinder(h=10,d=3); | ||
+ | |||
+ | rotate([0,0,360/3]) | ||
+ | translate([7,0,0]) | ||
+ | cylinder(h=10,d=3); | ||
+ | |||
+ | translate([7,0,0]) | ||
+ | cylinder(h=10,d=3); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=supportVariateur.scad}} | ||
+ | <source lang=c> | ||
+ | include <longeron.scad> | ||
+ | isConge=0; | ||
+ | isPercage=1; | ||
+ | $fn=45; | ||
+ | |||
+ | s=7.5; | ||
+ | |||
+ | union() | ||
+ | { | ||
+ | longeronX(5,0,0,0); | ||
+ | longeronX(5,0,12,0); | ||
+ | longeronX(5,0,24,0); | ||
+ | |||
+ | intersection() | ||
+ | { | ||
+ | union() | ||
+ | { | ||
+ | longeronX(5,0,0,-1); | ||
+ | longeronX(5,0,12,-1); | ||
+ | longeronX(5,0,24,-1); | ||
+ | } | ||
+ | |||
+ | translate([-s/2,-s/2,-s/2-2]) | ||
+ | cube([5*s,25*s,4]); | ||
+ | |||
+ | } | ||
+ | |||
+ | translate([-s/2,s/2,-s/2-2]) | ||
+ | difference() | ||
+ | { | ||
+ | union() | ||
+ | { | ||
+ | difference() | ||
+ | { | ||
+ | cube([5*s,11*s,2+s]); | ||
+ | translate([1.5,-0.1,2]) | ||
+ | cube([5*s-3,11*s+0.2,s+0.1]); | ||
+ | } | ||
+ | translate([2.5*s-14,5.5*s-28,1]) cylinder(h=3,d=8); | ||
+ | translate([2.5*s-14,5.5*s+28,1]) cylinder(h=3,d=8); | ||
+ | translate([2.5*s+14,5.5*s-28,1]) cylinder(h=3,d=8); | ||
+ | translate([2.5*s+14,5.5*s+28,1]) cylinder(h=3,d=8); | ||
+ | } | ||
+ | translate([2.5*s-14,5.5*s-28,-0.5]) cylinder(h=13,d=3); | ||
+ | translate([2.5*s-14,5.5*s+28,-0.5]) cylinder(h=13,d=3); | ||
+ | translate([2.5*s+14,5.5*s-28,-0.5]) cylinder(h=13,d=3); | ||
+ | translate([2.5*s+14,5.5*s+28,-0.5]) cylinder(h=13,d=3); | ||
+ | |||
+ | translate([20,0.1,-2]) cube ([7,4,5]); | ||
+ | translate([10,0.1,-2]) cube ([7,4,5]); | ||
+ | } | ||
+ | translate([-s/2,s/2+12*s,-s/2-2]) | ||
+ | difference() | ||
+ | { | ||
+ | union() | ||
+ | { | ||
+ | difference() | ||
+ | { | ||
+ | cube([5*s,11*s,2+s]); | ||
+ | translate([1.5,-0.1,2]) | ||
+ | cube([5*s-3,11*s+0.2,s+0.1]); | ||
+ | } | ||
+ | translate([2.5*s-14,5.5*s-28,1]) cylinder(h=3,d=8); | ||
+ | translate([2.5*s-14,5.5*s+28,1]) cylinder(h=3,d=8); | ||
+ | translate([2.5*s+14,5.5*s-28,1]) cylinder(h=3,d=8); | ||
+ | translate([2.5*s+14,5.5*s+28,1]) cylinder(h=3,d=8); | ||
+ | } | ||
+ | translate([2.5*s-14,5.5*s-28,-0.5]) cylinder(h=13,d=3); | ||
+ | translate([2.5*s-14,5.5*s+28,-0.5]) cylinder(h=13,d=3); | ||
+ | translate([2.5*s+14,5.5*s-28,-0.5]) cylinder(h=13,d=3); | ||
+ | translate([2.5*s+14,5.5*s+28,-0.5]) cylinder(h=13,d=3); | ||
+ | |||
+ | translate([20,11*s-0.1-4,-2]) cube ([7,4,5]); | ||
+ | translate([10,11*s-0.1-4,-2]) cube ([7,4,5]); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=roueRobot.scad}} | ||
+ | <source lang=c> | ||
+ | largeurJoint = 5.3; | ||
+ | diametreJoint = 50; | ||
+ | |||
+ | $fn = 250; | ||
+ | |||
+ | |||
+ | difference() | ||
+ | { | ||
+ | union() | ||
+ | { | ||
+ | translate([0,0,-3.5]) | ||
+ | cylinder(h=7, d=diametreJoint); | ||
+ | translate([0,0,-3.5]) | ||
+ | cylinder(h=15, d=10); | ||
+ | |||
+ | } | ||
+ | |||
+ | rotate_extrude() | ||
+ | translate([diametreJoint/2, 0, 0]) | ||
+ | circle(d = largeurJoint); | ||
+ | difference() | ||
+ | { | ||
+ | translate([0,0,-3]) | ||
+ | cylinder(h=15, d=3.1*2); | ||
+ | translate([-2,2.5,-3.5]) | ||
+ | cube([4,1.5,15]); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=supportBatterie.scad}} | ||
+ | <source lang=c> | ||
+ | c=7.5; | ||
+ | $fn=30; | ||
+ | batterieHauteur=69; | ||
+ | batterieLargeur=73; | ||
+ | batterieProfondeur=20; | ||
+ | |||
+ | percageRayon=1; | ||
+ | nbPercageLargeur=24;//24 | ||
+ | nbPercageHauteur=25;//25 | ||
+ | nbPercageProfondeur=7;//7 | ||
+ | percagePasLargeur =(batterieLargeur-2*percageRayon-1)/(nbPercageLargeur-1); | ||
+ | percagePasHauteur =(batterieHauteur-2*percageRayon-1)/(nbPercageHauteur-1); | ||
+ | percagePasProfondeur=(batterieProfondeur-2*percageRayon-1)/(nbPercageProfondeur-1); | ||
+ | |||
+ | connecteurBatterieLargeur=16.25; | ||
+ | connecteurBatterieProfondeur=8; | ||
+ | largeurLogementCarte=25; | ||
+ | largeurParoieCarte=2; | ||
+ | epaisseurFondCarte=8; | ||
+ | boiteEpaisseur=3; | ||
+ | |||
+ | difference() | ||
+ | { | ||
+ | cube([17*c,4*c-0.5,7*c]); | ||
+ | |||
+ | translate([(17*c-106.5)/2,-0.1,12]) cube([106.5,26.5,7*c]); | ||
+ | translate([(17*c-116.5)/2,23,12]) cube([116.5,3.5,7*c]); | ||
+ | |||
+ | |||
+ | for (i=[0:10]) | ||
+ | translate([(17*c-106.5)/2-c/2-3,-0.1,c/2+c*i ]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=100, d=3); | ||
+ | |||
+ | for (i=[2:10]) | ||
+ | for (j=[0:2]) | ||
+ | translate([-0.1,c/2+c*j,c/2+c*i ]) | ||
+ | rotate([0,90,0]) | ||
+ | cylinder(h=200, d=3); | ||
+ | |||
+ | for (j=[0:5]) | ||
+ | translate([-0.1,c/2+4.5*j,c/2 ]) | ||
+ | rotate([0,90,0]) | ||
+ | cylinder(h=200, d=4); | ||
+ | |||
+ | |||
+ | for (i=[0:10]) | ||
+ | translate([(17*c-106.5)/2-c/2-3+c*16,-0.1,c/2+c*i ]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=100, d=3); | ||
+ | |||
+ | for (i=[0:15]) | ||
+ | translate([(17*c-106.5)/2-c/2-3+i*c,-0.1,c/2 ]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=100, d=3); | ||
+ | |||
+ | |||
+ | for (j=[0:13]) { | ||
+ | for (i=[0:33]) { | ||
+ | translate([ i*percagePasLargeur+percageRayon+0.5+(17*c-106.5)/2, | ||
+ | 26, | ||
+ | percageRayon*(j*percagePasHauteur)+percageRayon+12.5]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=10, r=percageRayon*1.2); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | translate ([batterieLargeur+largeurParoieCarte+boiteEpaisseur+(largeurLogementCarte-connecteurBatterieProfondeur)/2+(connecteurBatterieProfondeur-1)/2+10.5, | ||
+ | boiteEpaisseur+(batterieProfondeur-connecteurBatterieLargeur)/2+(connecteurBatterieProfondeur-1)/2+0.75, | ||
+ | -5]) | ||
+ | |||
+ | union(){ | ||
+ | |||
+ | minkowski() { | ||
+ | cube([1, | ||
+ | connecteurBatterieLargeur-2*((connecteurBatterieProfondeur-1)/2), | ||
+ | epaisseurFondCarte+20]); | ||
+ | // coins arrondis | ||
+ | sphere((connecteurBatterieProfondeur-1)/2); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | translate([(17*c-106.5)/2-c/2-3-10/2+10*c+10.5,1.5,-0.1 ]) | ||
+ | cube([10,26.5-3,6.5]); | ||
+ | translate([(17*c-106.5)/2-c/2-3-10/2+10*c+10.5,1.5+3,-0.1 ]) | ||
+ | cube([30,20.5-3,6]); | ||
+ | |||
+ | |||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=boitierBatterie.scad}} | ||
+ | <source lang=c> | ||
+ | // --------- Programme principal ---------------- // | ||
+ | // Appel des modules, etc. | ||
+ | |||
+ | difference(){ | ||
+ | union() | ||
+ | { | ||
+ | difference() | ||
+ | { | ||
+ | boite(); | ||
+ | union() | ||
+ | { | ||
+ | logementBatterie(); | ||
+ | capotBatterie(); | ||
+ | capotCarte(); | ||
+ | logementCarte(); | ||
+ | logementFilsBatterie(); | ||
+ | logementConnecteur(); | ||
+ | inscriptionGEII(); | ||
+ | inscriptionPolarite(); | ||
+ | porteFusible(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | union() | ||
+ | { | ||
+ | trousLargeur(); | ||
+ | trousProfondeur(); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | union() | ||
+ | { | ||
+ | inscriptionGEII(0); | ||
+ | inscriptionPolarite(0); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | // --------- Variables (ou plutôt constantes) -- // | ||
+ | batterieHauteur=69; | ||
+ | batterieLargeur=73; | ||
+ | batterieProfondeur=20; | ||
+ | |||
+ | glissiereLargeur=5; | ||
+ | glissiereEpaisseur=1.5; | ||
+ | glissiereLanguette=1.75; | ||
+ | |||
+ | largeurLogementCarte=25; | ||
+ | largeurParoieCarte=2; | ||
+ | epaisseurFondCarte=8; | ||
+ | |||
+ | paroieFils=3; | ||
+ | longueurFils=8.5; | ||
+ | |||
+ | connecteurBatterieLargeur=16.25; | ||
+ | connecteurBatterieProfondeur=8; | ||
+ | |||
+ | boiteEpaisseur=3; | ||
+ | boiteHauteur=batterieHauteur+2*boiteEpaisseur; | ||
+ | boiteLargeur=batterieLargeur+2*boiteEpaisseur+largeurParoieCarte+largeurLogementCarte; | ||
+ | boiteProfondeur=batterieProfondeur+2*boiteEpaisseur; | ||
+ | |||
+ | percageRayon=1; | ||
+ | nbPercageLargeur=24;//24 | ||
+ | nbPercageHauteur=25;//25 | ||
+ | nbPercageProfondeur=7;//7 | ||
+ | percagePasLargeur =(batterieLargeur-2*percageRayon-1)/(nbPercageLargeur-1); | ||
+ | percagePasHauteur =(batterieHauteur-2*percageRayon-1)/(nbPercageHauteur-1); | ||
+ | percagePasProfondeur=(batterieProfondeur-2*percageRayon-1)/(nbPercageProfondeur-1); | ||
+ | |||
+ | |||
+ | |||
+ | $fn=30; | ||
+ | |||
+ | // texte | ||
+ | |||
+ | module inscriptionGEII(offset=0.2) | ||
+ | { | ||
+ | translate([batterieLargeur+2*boiteEpaisseur+8,0.8,5]) | ||
+ | rotate([90,-90,0]) | ||
+ | linear_extrude(0.8+offset) | ||
+ | text("IUT Troyes", size = 8); | ||
+ | translate([batterieLargeur+2*boiteEpaisseur+8*2.5,0.8,5]) | ||
+ | rotate([90,-90,0]) | ||
+ | linear_extrude(0.8+offset) | ||
+ | text("GEII", size = 8); | ||
+ | } | ||
+ | module inscriptionPolarite(offset=0.2) | ||
+ | { | ||
+ | translate([boiteLargeur+1,2,-offset]) | ||
+ | rotate([0,0,90]) | ||
+ | linear_extrude(0.8+offset) | ||
+ | text("+", size = 14); | ||
+ | translate([boiteLargeur-0.3,15.5,-offset]) | ||
+ | rotate([0,0,90]) | ||
+ | linear_extrude(0.8+offset) | ||
+ | text("-", size = 14); | ||
+ | } | ||
+ | |||
+ | // --------- Modules --------------------------- // | ||
+ | module boite() { | ||
+ | union(){ | ||
+ | cube([boiteLargeur,boiteProfondeur,boiteHauteur]); | ||
+ | translate ([-glissiereLargeur,boiteProfondeur-boiteEpaisseur,0]) | ||
+ | cube([boiteLargeur+2*glissiereLargeur,boiteEpaisseur,boiteHauteur]);; | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | module logementBatterie() { | ||
+ | union(){ | ||
+ | translate ([boiteEpaisseur,boiteEpaisseur,boiteEpaisseur]) | ||
+ | cube([batterieLargeur,batterieProfondeur,batterieHauteur+0.5]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module capotBatterie() { | ||
+ | |||
+ | translate ([-1-glissiereLargeur,boiteEpaisseur,boiteHauteur-boiteEpaisseur]) | ||
+ | union(){ | ||
+ | |||
+ | cube([batterieLargeur+boiteEpaisseur+(largeurParoieCarte-1)/2+1+glissiereLargeur, | ||
+ | batterieProfondeur, | ||
+ | boiteEpaisseur+1]); | ||
+ | translate ([0,-glissiereLanguette,0]) | ||
+ | cube([batterieLargeur+boiteEpaisseur+(largeurParoieCarte-1)/2+1+glissiereLargeur, | ||
+ | batterieProfondeur+2*glissiereLanguette, | ||
+ | glissiereEpaisseur]); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | //capotCarte(); | ||
+ | module capotCarte() { | ||
+ | |||
+ | |||
+ | translate ([boiteLargeur-boiteEpaisseur, | ||
+ | boiteEpaisseur, | ||
+ | boiteHauteur+1]) | ||
+ | rotate([0,90,0]) | ||
+ | union(){ | ||
+ | |||
+ | cube([boiteHauteur-epaisseurFondCarte+1, | ||
+ | batterieProfondeur, | ||
+ | boiteEpaisseur+1]); | ||
+ | translate ([0,-glissiereLanguette,0]) | ||
+ | cube([boiteHauteur-epaisseurFondCarte+2+1, | ||
+ | batterieProfondeur+2*glissiereLanguette, | ||
+ | glissiereEpaisseur]); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | module logementCarte() { | ||
+ | translate ([batterieLargeur+largeurParoieCarte+boiteEpaisseur, | ||
+ | boiteEpaisseur, | ||
+ | epaisseurFondCarte]) | ||
+ | union(){ | ||
+ | |||
+ | cube([largeurLogementCarte+1, | ||
+ | batterieProfondeur, | ||
+ | batterieHauteur-epaisseurFondCarte+boiteEpaisseur]); | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | module logementFilsBatterie() | ||
+ | { | ||
+ | translate ([batterieLargeur+boiteEpaisseur-1, | ||
+ | boiteEpaisseur+paroieFils, | ||
+ | boiteEpaisseur]) | ||
+ | union(){ | ||
+ | |||
+ | cube([longueurFils+1, | ||
+ | batterieProfondeur-2*paroieFils, | ||
+ | batterieHauteur+1]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module logementConnecteur() | ||
+ | { | ||
+ | translate ([batterieLargeur+largeurParoieCarte+boiteEpaisseur+(largeurLogementCarte-connecteurBatterieProfondeur)/2+(connecteurBatterieProfondeur-1)/2, | ||
+ | boiteEpaisseur+(batterieProfondeur-connecteurBatterieLargeur)/2+(connecteurBatterieProfondeur-1)/2, | ||
+ | -10]) | ||
+ | union(){ | ||
+ | |||
+ | minkowski() { | ||
+ | cube([1, | ||
+ | connecteurBatterieLargeur-2*((connecteurBatterieProfondeur-1)/2), | ||
+ | epaisseurFondCarte+20]); | ||
+ | // coins arrondis | ||
+ | sphere((connecteurBatterieProfondeur-1)/2); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | module trousLargeur() { | ||
+ | for (j=[0:nbPercageHauteur-1]) { | ||
+ | for (i=[0:nbPercageLargeur-1]) { | ||
+ | translate([ i*percagePasLargeur+boiteEpaisseur+percageRayon+0.5, | ||
+ | -1+0.5, | ||
+ | percageRayon*(j*percagePasHauteur)+boiteEpaisseur+percageRayon+0.5]) | ||
+ | rotate([-90,0,0]) | ||
+ | cylinder(h=boiteProfondeur+2, r=percageRayon); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | module trousProfondeur() { | ||
+ | for (j=[0:nbPercageHauteur-1]) { | ||
+ | for (i=[0:nbPercageProfondeur-1]) { | ||
+ | translate([ -1+0.5, | ||
+ | i*percagePasProfondeur+boiteEpaisseur+percageRayon+0.5, | ||
+ | percageRayon*(j*percagePasHauteur)+boiteEpaisseur+percageRayon+0.5]) | ||
+ | rotate([0,90,0]) | ||
+ | cylinder(h=boiteEpaisseur+2, r=percageRayon); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module porteFusible() | ||
+ | { | ||
+ | |||
+ | translate ([batterieLargeur+boiteEpaisseur+largeurLogementCarte/2+largeurParoieCarte, | ||
+ | boiteProfondeur/2, | ||
+ | boiteHauteur-boiteEpaisseur-1]) | ||
+ | cylinder(h=boiteEpaisseur+2,r=13/2); | ||
+ | } | ||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | {{boîte déroulante/début|titre=chassis.scad}} | ||
+ | <source lang=c> | ||
+ | // --------- Programme principal ---------------- // | ||
+ | // Appel des modules, etc. | ||
+ | |||
+ | include <longeron.scad> | ||
+ | isConge=0; | ||
+ | isPercage=1; | ||
+ | $fn=45; | ||
+ | |||
+ | L=25; | ||
+ | p=23; | ||
+ | avtmoteur=6; | ||
+ | retrait=5; | ||
+ | roulette=5; | ||
+ | hauteur=7; | ||
+ | posRenfort=7; | ||
+ | |||
+ | |||
+ | translate([-L*tailleCube/2,-158,-76.5+tailleCube/2+7]) chassis(); | ||
+ | |||
+ | module chassis() | ||
+ | { | ||
+ | union() | ||
+ | { | ||
+ | base(); | ||
+ | translate([0,0,hauteur*tailleCube]) base2(); | ||
+ | rangeePilier(0); | ||
+ | rangeePilier(-5); | ||
+ | rangeePilier(avtmoteur); | ||
+ | |||
+ | longeronZ(hauteur-1,0,22-retrait,1); | ||
+ | longeronZ(hauteur-1,roulette+1,22-retrait,1); | ||
+ | longeronZ(hauteur-1,24,22-retrait,1); | ||
+ | longeronZ(hauteur-1,24-roulette-1,22-retrait,1); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module rangeePilier(y) | ||
+ | { | ||
+ | longeronZ(hauteur-1,0,y,1); | ||
+ | longeronZ(hauteur-1,0+7,y,1); | ||
+ | longeronZ(hauteur-1,24-7,y,1); | ||
+ | longeronZ(hauteur-1,24,y,1); | ||
+ | } | ||
+ | |||
+ | module base() | ||
+ | { | ||
+ | // largeur | ||
+ | longeronX(L-2,1,0,0); | ||
+ | longeronX(L-2,1,-5,0); | ||
+ | longeronX(L-2,1,avtmoteur,0); | ||
+ | longeronX(L-2,1,0,0); | ||
+ | // traverses | ||
+ | longeronY(5,(L-1)/2,1,0); | ||
+ | longeronY(4,8,-4,0); | ||
+ | longeronY(4,24-8,-4,0); | ||
+ | // longueur | ||
+ | longeronY(p,0,-retrait,0); | ||
+ | longeronY(p,L-1,-retrait,0); | ||
+ | // roulette | ||
+ | longeronX(roulette,1,p-retrait-1,0); | ||
+ | longeronX(roulette,L-roulette-1,p-retrait-1,0); | ||
+ | longeronY(p-avtmoteur-retrait-1,roulette+1,avtmoteur+1,0); | ||
+ | longeronY(p-avtmoteur-retrait-1,L-roulette-2,avtmoteur+1,0); | ||
+ | } | ||
+ | |||
+ | //translate([0,0,hauteur*tailleCube]) | ||
+ | module base2() | ||
+ | { | ||
+ | // largeur | ||
+ | longeronX(L-2,1,0,0); | ||
+ | longeronX(L-2,1,-5,0); | ||
+ | longeronX(L-2,1,avtmoteur,0); | ||
+ | longeronX(L-2,1,0,0); | ||
+ | // traverses | ||
+ | longeronY(5,(L-1)/2,1,0); | ||
+ | // longueur | ||
+ | longeronY(p,0,-retrait,0); | ||
+ | longeronY(p,L-1,-retrait,0); | ||
+ | // roulette | ||
+ | longeronX(roulette,1,p-retrait-1,0); | ||
+ | longeronX(roulette,L-roulette-1,p-retrait-1,0); | ||
+ | longeronY(p-avtmoteur-retrait-1,roulette+1,avtmoteur+1,0); | ||
+ | longeronY(p-avtmoteur-retrait-1,L-roulette-2,avtmoteur+1,0); | ||
+ | // renfort avt | ||
+ | longeronX(L-(roulette+2)*2,roulette+2,avtmoteur+posRenfort,0); | ||
+ | } | ||
+ | |||
+ | </source> | ||
+ | {{boîte déroulante/fin}} | ||
+ | |||
+ | =fichiers= | ||
+ | |||
+ | ==cartes µcontroleur== | ||
+ | *[[Media:SchemaROBOT2019.sch]] | ||
+ | *[[Media:SchemaROBOT2019.brd]] | ||
+ | |||
+ | ==positionnement== | ||
+ | *[http://manubatbat.free.fr/doc/positionning/node5.html odométrie] | ||
+ | |||
+ | =historique= | ||
+ | *[[Projet_Robot_Coupe_GEII_:_BERTRAND,_DUVAUX,_GRESSET,_PACITTO| projet 2019-2020]] |
Version actuelle datée du 1 février 2021 à 00:01
Sommaire
Ressources
- règlement de la coupe de robotique
- matériel disponible
Caractéristiques mécaniques
- moteurs
- vitesse rotation roues officielles à prévoir : 600 à 800 tr/min max
- poulies crantées
- https://www.fingertechrobotics.com/how-to_pulley_belt.php
- 40/74/125 dents
Surveillance de la batterie
Description
- objectifs
- protection en court circuit (ou limite de courant)
- ultra faible consommation en veille (bouton pour remettre en "route" la batterie)
- protection en température min/max
- protection en tension mini/maxi
- mesure d'énergie en option
- principe
- µcontroleur :
- faible consommation (3.3V, fcpu faible)
- comparateur analogique
- ADC (gain important pour mesure de courant)
- bus (i2c ?)
- composant de puissance
- relais ?
- mos ?
- résistance de shunt
- µcontroleur :
Composants
- régulateurs faible tension 3.3V
- mcp1703a
- mic5206
- µcontrôleur attiny841
Carte électronique
Détection des balles
Caméra pixy
lidar
capteur ultrason
ne fonctionne pas pour détecter la présence d'une balle à qques centimètres, pb lié à la forme sphérique ou matière ou état de surface
Positionnement
Modèles 3d
longeron.scad
tailleCube=7.5;
isConge=1;
isPercage=1;
rayonPercage=1.5;
conge=0.25;
$fn=25;
module longeronX(nbCubes=3,posX=0,posY=0,posZ=0)
{
translate([posX*tailleCube,posY*tailleCube,posZ*tailleCube])
rotate([0,0,0])
longeron(nbCubes);
}
module longeronY(nbCubes=3,posX=0,posY=0,posZ=0)
{
translate([posX*tailleCube,posY*tailleCube,posZ*tailleCube])
rotate([0,0,90])
longeron(nbCubes);
}
module longeronZ(nbCubes=3,posX=0,posY=0,posZ=0)
{
translate([posX*tailleCube,posY*tailleCube,posZ*tailleCube])
rotate([0,-90,0])
longeron(nbCubes);
}
module longeron(nbCubes=3)
{
difference()
{
translate([-tailleCube/2,-tailleCube/2,-tailleCube/2])
cube([tailleCube*nbCubes,tailleCube,tailleCube]);
if (isPercage==1)
{
for (i=[0:nbCubes-1])
{
translate([i*tailleCube,0,0])
rotate([0,0,0])
trou();
translate([i*tailleCube,0,0])
rotate([90,0,0])
trou();
}
rotate([0,90,0])
trou(nbCubes);
}}
}
module boite()
{
difference()
{
cube([tailleCube,tailleCube,tailleCube],center=true);
if (isPercage==1)
{
rotate([0,0,0])
trou();
rotate([90,0,0])
trou();
rotate([0,90,0])
trou();
}
}
}
module trou(size=1)
{
translate([0,0,(size-1)*tailleCube/2])
{
cylinder(h=tailleCube*size+2*conge, r=rayonPercage,center=true);
if (isConge==1)
{
translate([0,0,-tailleCube*size/2-conge])
cylinder(h=2*conge, d1=(rayonPercage+2*conge)*2,
d2=(rayonPercage)*2);
translate([0,0,tailleCube*size/2-conge])
cylinder(h=2*conge, d2=(rayonPercage+2*conge)*2,
d1=(rayonPercage)*2);
}
}
}
supportMoteur.scad
diamMoteur=36.6;
$fn=200;
rayonPercage=1.5;
difference()
{
intersection()
{
translate([0,4,0])
difference()
{
cube([52.5,30.0-5-5,diamMoteur/2+2+2]);
translate([52.5/2,-0.1,-2])
rotate([-90,0,0])
cylinder(h=30, d=diamMoteur+0.4+2);
translate([7.5/2,2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2,7.5*1+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2,7.5*2+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2+7.5*6,7.5*0+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2+7.5*6,7.5*1+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2+7.5*6,7.5*2+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
}
union()
{
translate([-1,-1,-1])
cube([60,30,3.5]);
translate([52.5/2,-0.1,-2+1])
rotate([-90,0,0])
cylinder(h=30, d=diamMoteur+0.4+2+4+1);
}
}
translate([0,4,3])
union()
{
translate([7.5/2,2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*2);
translate([7.5/2,7.5*1+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*2);
translate([7.5/2,7.5*2+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*2);
translate([7.5/2+7.5*6,7.5*0+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*2);
translate([7.5/2+7.5*6,7.5*1+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*2);
translate([7.5/2+7.5*6,7.5*2+2.25,-0.5])
cylinder(h=30, d=2*rayonPercage*2);
}
}
translate([52.5,-5,0])
rotate([180,0,180])
difference()
{
translate([0,5,0])
cube([52.5,30.0-5,diamMoteur/2+2]);
union()
{
translate([-0.5,-0.5,11])
cube([53.5,8,17]);
translate([-0.5,-0.5,12])
cube([8,31,18]);
translate([52.5-7.5,-0.5,11.5])
cube([8,31,18]);
translate([-0.5,-0.5,-0.5])
cube([8.5,8.5,30]);
translate([7.5*6-0.5,-0.5,-0.5])
cube([8.5,8.5,30]);
translate([52.5/2,8.8,0])
rotate([-90,0,0])
cylinder(h=30, d=diamMoteur+0.4);
translate([52.5/2,-0.5,0])
rotate([-90,0,0])
cylinder(h=30, d=12+1);
translate([7.5/2,7.5+7.5/2,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2,7.5*2+7.5/2,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2,7.5*3+7.5/2,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2+7.5*6,7.5+7.5/2,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
translate([7.5/2+7.5*6,7.5*2+7.5/2,-0.5])
cylinder(h=30, d=2*rayonPercage*1.2);
translate([7.5/2+7.5*6,7.5*3+7.5/2,-0.5])
cylinder(h=30, d=2*rayonPercage*1.1);
}
}
supportRoulette.scad
include <longeron.scad>
isConge=0;
isPercage=1;
$fn=45;
//rayonPercage=1.8;
s=7.5;
center=[s*4,s*3,15-7.5];
difference()
{
union()
{
longeronX(7,1,0,0);
longeronX(5,2,0,2);
longeronX(5,2,5,2);
longeronZ(3,2,0,0);
longeronZ(3,6,0,0);
longeronY(7,2,0,2);
longeronY(7,6,0,2);
translate([s*2.5-1,s*0.5-1,s*1.5-2.4])
cube([3*s+2,4*s+2,4.5]);
}
translate(center)
union()
{
rotate([0,0,360*2/3])
translate([7,0,0])
cylinder(h=10,d=3);
rotate([0,0,360/3])
translate([7,0,0])
cylinder(h=10,d=3);
translate([7,0,0])
cylinder(h=10,d=3);
}
}
supportVariateur.scad
include <longeron.scad>
isConge=0;
isPercage=1;
$fn=45;
s=7.5;
union()
{
longeronX(5,0,0,0);
longeronX(5,0,12,0);
longeronX(5,0,24,0);
intersection()
{
union()
{
longeronX(5,0,0,-1);
longeronX(5,0,12,-1);
longeronX(5,0,24,-1);
}
translate([-s/2,-s/2,-s/2-2])
cube([5*s,25*s,4]);
}
translate([-s/2,s/2,-s/2-2])
difference()
{
union()
{
difference()
{
cube([5*s,11*s,2+s]);
translate([1.5,-0.1,2])
cube([5*s-3,11*s+0.2,s+0.1]);
}
translate([2.5*s-14,5.5*s-28,1]) cylinder(h=3,d=8);
translate([2.5*s-14,5.5*s+28,1]) cylinder(h=3,d=8);
translate([2.5*s+14,5.5*s-28,1]) cylinder(h=3,d=8);
translate([2.5*s+14,5.5*s+28,1]) cylinder(h=3,d=8);
}
translate([2.5*s-14,5.5*s-28,-0.5]) cylinder(h=13,d=3);
translate([2.5*s-14,5.5*s+28,-0.5]) cylinder(h=13,d=3);
translate([2.5*s+14,5.5*s-28,-0.5]) cylinder(h=13,d=3);
translate([2.5*s+14,5.5*s+28,-0.5]) cylinder(h=13,d=3);
translate([20,0.1,-2]) cube ([7,4,5]);
translate([10,0.1,-2]) cube ([7,4,5]);
}
translate([-s/2,s/2+12*s,-s/2-2])
difference()
{
union()
{
difference()
{
cube([5*s,11*s,2+s]);
translate([1.5,-0.1,2])
cube([5*s-3,11*s+0.2,s+0.1]);
}
translate([2.5*s-14,5.5*s-28,1]) cylinder(h=3,d=8);
translate([2.5*s-14,5.5*s+28,1]) cylinder(h=3,d=8);
translate([2.5*s+14,5.5*s-28,1]) cylinder(h=3,d=8);
translate([2.5*s+14,5.5*s+28,1]) cylinder(h=3,d=8);
}
translate([2.5*s-14,5.5*s-28,-0.5]) cylinder(h=13,d=3);
translate([2.5*s-14,5.5*s+28,-0.5]) cylinder(h=13,d=3);
translate([2.5*s+14,5.5*s-28,-0.5]) cylinder(h=13,d=3);
translate([2.5*s+14,5.5*s+28,-0.5]) cylinder(h=13,d=3);
translate([20,11*s-0.1-4,-2]) cube ([7,4,5]);
translate([10,11*s-0.1-4,-2]) cube ([7,4,5]);
}
}
roueRobot.scad
largeurJoint = 5.3;
diametreJoint = 50;
$fn = 250;
difference()
{
union()
{
translate([0,0,-3.5])
cylinder(h=7, d=diametreJoint);
translate([0,0,-3.5])
cylinder(h=15, d=10);
}
rotate_extrude()
translate([diametreJoint/2, 0, 0])
circle(d = largeurJoint);
difference()
{
translate([0,0,-3])
cylinder(h=15, d=3.1*2);
translate([-2,2.5,-3.5])
cube([4,1.5,15]);
}
}
supportBatterie.scad
c=7.5;
$fn=30;
batterieHauteur=69;
batterieLargeur=73;
batterieProfondeur=20;
percageRayon=1;
nbPercageLargeur=24;//24
nbPercageHauteur=25;//25
nbPercageProfondeur=7;//7
percagePasLargeur =(batterieLargeur-2*percageRayon-1)/(nbPercageLargeur-1);
percagePasHauteur =(batterieHauteur-2*percageRayon-1)/(nbPercageHauteur-1);
percagePasProfondeur=(batterieProfondeur-2*percageRayon-1)/(nbPercageProfondeur-1);
connecteurBatterieLargeur=16.25;
connecteurBatterieProfondeur=8;
largeurLogementCarte=25;
largeurParoieCarte=2;
epaisseurFondCarte=8;
boiteEpaisseur=3;
difference()
{
cube([17*c,4*c-0.5,7*c]);
translate([(17*c-106.5)/2,-0.1,12]) cube([106.5,26.5,7*c]);
translate([(17*c-116.5)/2,23,12]) cube([116.5,3.5,7*c]);
for (i=[0:10])
translate([(17*c-106.5)/2-c/2-3,-0.1,c/2+c*i ])
rotate([-90,0,0])
cylinder(h=100, d=3);
for (i=[2:10])
for (j=[0:2])
translate([-0.1,c/2+c*j,c/2+c*i ])
rotate([0,90,0])
cylinder(h=200, d=3);
for (j=[0:5])
translate([-0.1,c/2+4.5*j,c/2 ])
rotate([0,90,0])
cylinder(h=200, d=4);
for (i=[0:10])
translate([(17*c-106.5)/2-c/2-3+c*16,-0.1,c/2+c*i ])
rotate([-90,0,0])
cylinder(h=100, d=3);
for (i=[0:15])
translate([(17*c-106.5)/2-c/2-3+i*c,-0.1,c/2 ])
rotate([-90,0,0])
cylinder(h=100, d=3);
for (j=[0:13]) {
for (i=[0:33]) {
translate([ i*percagePasLargeur+percageRayon+0.5+(17*c-106.5)/2,
26,
percageRayon*(j*percagePasHauteur)+percageRayon+12.5])
rotate([-90,0,0])
cylinder(h=10, r=percageRayon*1.2);
}
}
translate ([batterieLargeur+largeurParoieCarte+boiteEpaisseur+(largeurLogementCarte-connecteurBatterieProfondeur)/2+(connecteurBatterieProfondeur-1)/2+10.5,
boiteEpaisseur+(batterieProfondeur-connecteurBatterieLargeur)/2+(connecteurBatterieProfondeur-1)/2+0.75,
-5])
union(){
minkowski() {
cube([1,
connecteurBatterieLargeur-2*((connecteurBatterieProfondeur-1)/2),
epaisseurFondCarte+20]);
// coins arrondis
sphere((connecteurBatterieProfondeur-1)/2);
}
}
translate([(17*c-106.5)/2-c/2-3-10/2+10*c+10.5,1.5,-0.1 ])
cube([10,26.5-3,6.5]);
translate([(17*c-106.5)/2-c/2-3-10/2+10*c+10.5,1.5+3,-0.1 ])
cube([30,20.5-3,6]);
}
boitierBatterie.scad
// --------- Programme principal ---------------- //
// Appel des modules, etc.
difference(){
union()
{
difference()
{
boite();
union()
{
logementBatterie();
capotBatterie();
capotCarte();
logementCarte();
logementFilsBatterie();
logementConnecteur();
inscriptionGEII();
inscriptionPolarite();
porteFusible();
}
}
}
union()
{
trousLargeur();
trousProfondeur();
}
}
union()
{
inscriptionGEII(0);
inscriptionPolarite(0);
}
// --------- Variables (ou plutôt constantes) -- //
batterieHauteur=69;
batterieLargeur=73;
batterieProfondeur=20;
glissiereLargeur=5;
glissiereEpaisseur=1.5;
glissiereLanguette=1.75;
largeurLogementCarte=25;
largeurParoieCarte=2;
epaisseurFondCarte=8;
paroieFils=3;
longueurFils=8.5;
connecteurBatterieLargeur=16.25;
connecteurBatterieProfondeur=8;
boiteEpaisseur=3;
boiteHauteur=batterieHauteur+2*boiteEpaisseur;
boiteLargeur=batterieLargeur+2*boiteEpaisseur+largeurParoieCarte+largeurLogementCarte;
boiteProfondeur=batterieProfondeur+2*boiteEpaisseur;
percageRayon=1;
nbPercageLargeur=24;//24
nbPercageHauteur=25;//25
nbPercageProfondeur=7;//7
percagePasLargeur =(batterieLargeur-2*percageRayon-1)/(nbPercageLargeur-1);
percagePasHauteur =(batterieHauteur-2*percageRayon-1)/(nbPercageHauteur-1);
percagePasProfondeur=(batterieProfondeur-2*percageRayon-1)/(nbPercageProfondeur-1);
$fn=30;
// texte
module inscriptionGEII(offset=0.2)
{
translate([batterieLargeur+2*boiteEpaisseur+8,0.8,5])
rotate([90,-90,0])
linear_extrude(0.8+offset)
text("IUT Troyes", size = 8);
translate([batterieLargeur+2*boiteEpaisseur+8*2.5,0.8,5])
rotate([90,-90,0])
linear_extrude(0.8+offset)
text("GEII", size = 8);
}
module inscriptionPolarite(offset=0.2)
{
translate([boiteLargeur+1,2,-offset])
rotate([0,0,90])
linear_extrude(0.8+offset)
text("+", size = 14);
translate([boiteLargeur-0.3,15.5,-offset])
rotate([0,0,90])
linear_extrude(0.8+offset)
text("-", size = 14);
}
// --------- Modules --------------------------- //
module boite() {
union(){
cube([boiteLargeur,boiteProfondeur,boiteHauteur]);
translate ([-glissiereLargeur,boiteProfondeur-boiteEpaisseur,0])
cube([boiteLargeur+2*glissiereLargeur,boiteEpaisseur,boiteHauteur]);;
}
}
module logementBatterie() {
union(){
translate ([boiteEpaisseur,boiteEpaisseur,boiteEpaisseur])
cube([batterieLargeur,batterieProfondeur,batterieHauteur+0.5]);
}
}
module capotBatterie() {
translate ([-1-glissiereLargeur,boiteEpaisseur,boiteHauteur-boiteEpaisseur])
union(){
cube([batterieLargeur+boiteEpaisseur+(largeurParoieCarte-1)/2+1+glissiereLargeur,
batterieProfondeur,
boiteEpaisseur+1]);
translate ([0,-glissiereLanguette,0])
cube([batterieLargeur+boiteEpaisseur+(largeurParoieCarte-1)/2+1+glissiereLargeur,
batterieProfondeur+2*glissiereLanguette,
glissiereEpaisseur]);
}
}
//capotCarte();
module capotCarte() {
translate ([boiteLargeur-boiteEpaisseur,
boiteEpaisseur,
boiteHauteur+1])
rotate([0,90,0])
union(){
cube([boiteHauteur-epaisseurFondCarte+1,
batterieProfondeur,
boiteEpaisseur+1]);
translate ([0,-glissiereLanguette,0])
cube([boiteHauteur-epaisseurFondCarte+2+1,
batterieProfondeur+2*glissiereLanguette,
glissiereEpaisseur]);
}
}
module logementCarte() {
translate ([batterieLargeur+largeurParoieCarte+boiteEpaisseur,
boiteEpaisseur,
epaisseurFondCarte])
union(){
cube([largeurLogementCarte+1,
batterieProfondeur,
batterieHauteur-epaisseurFondCarte+boiteEpaisseur]);
}
}
module logementFilsBatterie()
{
translate ([batterieLargeur+boiteEpaisseur-1,
boiteEpaisseur+paroieFils,
boiteEpaisseur])
union(){
cube([longueurFils+1,
batterieProfondeur-2*paroieFils,
batterieHauteur+1]);
}
}
module logementConnecteur()
{
translate ([batterieLargeur+largeurParoieCarte+boiteEpaisseur+(largeurLogementCarte-connecteurBatterieProfondeur)/2+(connecteurBatterieProfondeur-1)/2,
boiteEpaisseur+(batterieProfondeur-connecteurBatterieLargeur)/2+(connecteurBatterieProfondeur-1)/2,
-10])
union(){
minkowski() {
cube([1,
connecteurBatterieLargeur-2*((connecteurBatterieProfondeur-1)/2),
epaisseurFondCarte+20]);
// coins arrondis
sphere((connecteurBatterieProfondeur-1)/2);
}
}
}
module trousLargeur() {
for (j=[0:nbPercageHauteur-1]) {
for (i=[0:nbPercageLargeur-1]) {
translate([ i*percagePasLargeur+boiteEpaisseur+percageRayon+0.5,
-1+0.5,
percageRayon*(j*percagePasHauteur)+boiteEpaisseur+percageRayon+0.5])
rotate([-90,0,0])
cylinder(h=boiteProfondeur+2, r=percageRayon);
}
}
}
module trousProfondeur() {
for (j=[0:nbPercageHauteur-1]) {
for (i=[0:nbPercageProfondeur-1]) {
translate([ -1+0.5,
i*percagePasProfondeur+boiteEpaisseur+percageRayon+0.5,
percageRayon*(j*percagePasHauteur)+boiteEpaisseur+percageRayon+0.5])
rotate([0,90,0])
cylinder(h=boiteEpaisseur+2, r=percageRayon);
}
}
}
module porteFusible()
{
translate ([batterieLargeur+boiteEpaisseur+largeurLogementCarte/2+largeurParoieCarte,
boiteProfondeur/2,
boiteHauteur-boiteEpaisseur-1])
cylinder(h=boiteEpaisseur+2,r=13/2);
}
chassis.scad
// --------- Programme principal ---------------- //
// Appel des modules, etc.
include <longeron.scad>
isConge=0;
isPercage=1;
$fn=45;
L=25;
p=23;
avtmoteur=6;
retrait=5;
roulette=5;
hauteur=7;
posRenfort=7;
translate([-L*tailleCube/2,-158,-76.5+tailleCube/2+7]) chassis();
module chassis()
{
union()
{
base();
translate([0,0,hauteur*tailleCube]) base2();
rangeePilier(0);
rangeePilier(-5);
rangeePilier(avtmoteur);
longeronZ(hauteur-1,0,22-retrait,1);
longeronZ(hauteur-1,roulette+1,22-retrait,1);
longeronZ(hauteur-1,24,22-retrait,1);
longeronZ(hauteur-1,24-roulette-1,22-retrait,1);
}
}
module rangeePilier(y)
{
longeronZ(hauteur-1,0,y,1);
longeronZ(hauteur-1,0+7,y,1);
longeronZ(hauteur-1,24-7,y,1);
longeronZ(hauteur-1,24,y,1);
}
module base()
{
// largeur
longeronX(L-2,1,0,0);
longeronX(L-2,1,-5,0);
longeronX(L-2,1,avtmoteur,0);
longeronX(L-2,1,0,0);
// traverses
longeronY(5,(L-1)/2,1,0);
longeronY(4,8,-4,0);
longeronY(4,24-8,-4,0);
// longueur
longeronY(p,0,-retrait,0);
longeronY(p,L-1,-retrait,0);
// roulette
longeronX(roulette,1,p-retrait-1,0);
longeronX(roulette,L-roulette-1,p-retrait-1,0);
longeronY(p-avtmoteur-retrait-1,roulette+1,avtmoteur+1,0);
longeronY(p-avtmoteur-retrait-1,L-roulette-2,avtmoteur+1,0);
}
//translate([0,0,hauteur*tailleCube])
module base2()
{
// largeur
longeronX(L-2,1,0,0);
longeronX(L-2,1,-5,0);
longeronX(L-2,1,avtmoteur,0);
longeronX(L-2,1,0,0);
// traverses
longeronY(5,(L-1)/2,1,0);
// longueur
longeronY(p,0,-retrait,0);
longeronY(p,L-1,-retrait,0);
// roulette
longeronX(roulette,1,p-retrait-1,0);
longeronX(roulette,L-roulette-1,p-retrait-1,0);
longeronY(p-avtmoteur-retrait-1,roulette+1,avtmoteur+1,0);
longeronY(p-avtmoteur-retrait-1,L-roulette-2,avtmoteur+1,0);
// renfort avt
longeronX(L-(roulette+2)*2,roulette+2,avtmoteur+posRenfort,0);
}