Cours:RobotiqueCoupeGEII : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m (Ressources)
(positionnement)
 
(9 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=
 +
 +
*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=
 
=Surveillance de la batterie=
Ligne 40 : 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

Ressources

Caractéristiques mécaniques

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

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

fichiers

cartes µcontroleur

positionnement

historique