Outils pour utilisateurs

Outils du site


machine_a_peindre

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
machine_a_peindre [2018/11/08 17:43] Mushussumachine_a_peindre [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 1: Ligne 1:
-Projet de réaliser une machine à peindre.+====== Machine à peindre ====== 
 +===== Inspirations ===== 
 +"Non, la peinture n’est pas faite pour décorer les appartements. C’est un instrument de guerre offensive et défensive contre l’ennemi."
  
 +Pablo Picasso
 +
 +[[https://www.youtube.com/watch?v=s5MUxuY4Hbw|Niki de Saint-Phalle]]
 +===== Réalisation =====
 +==== JOUR 1 ====
 +09/11/2108
  
 Base une lyre Robe Spot 250xt hors d'usage. Base une lyre Robe Spot 250xt hors d'usage.
 La voici démontée : La voici démontée :
  
-{{:démontage.jpg| démontage.jpg démontage.jpg}}+{{media_03:demontage.jpg?400|}} 
 + 
 +Les deux moteurs pas-à-pas qui réalisent le pan et le tilt ont comme référence : 23HS0001-02 
 + 
 +Les connecteurs de moteur JST :  
 + 
 +Boitier - Code commande : RS 820-1523 / Référence fabricant : XHP-11 / Fabricant : JST 
 + 
 +Cosse - Code commande RS : 820-1529 / Référence fabricant : BXH-001T-P0.6 / Fabricant : JST 
 + 
 +Commutateur optique manquant : Code commande RS 708-5538 Référence fabricant TCST1103 Fabricant Vishay 
 + 
 +==== JOUR 2 ==== 
 +22/11/2108 
 +Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan : 
 + 
 +{{media_03:encodeur.jpg?400|}} 
 + 
 +J'ai pris modèle sur le capteur du tilt. La surprise a été de constater que deux encodeurs optique étaient positionnés côte à côte. 
 +==== JOUR 3 ==== 
 +13/12/2108 
 + 
 +Objectif : Compter le nombre de pas du pan avec l'encodeur optique. 
 +Résultat : ~2470 
 + 
 +{{media_09:montage.jpg?400|}} 
 + 
 +Code Arduino : 
 +<code java> 
 +byte c2, c3; 
 + 
 +void setup() { 
 +  Serial.begin(115200);  
 +  pinMode(2, INPUT_PULLUP); 
 +  pinMode(3, INPUT_PULLUP); 
 +  c2 = digitalRead(2); 
 +  c3 = digitalRead(3); 
 +
 + 
 +void loop() { 
 +  if (c2 != digitalRead(2)) { 
 +    c2 = digitalRead(2); 
 +    byte b = c2 + (digitalRead(3) << 1); 
 +    Serial.write(b); 
 +  } 
 +  if (c3 != digitalRead(3)) { 
 +    c3 = digitalRead(3); 
 +    byte b = digitalRead(2) + (c3 << 1); 
 +    Serial.write(b); 
 +  } 
 +
 +</code> 
 +Code Processing : 
 +<code java> 
 +import processing.serial.*; 
 + 
 +Serial arduino; 
 +int val = 0; 
 + 
 +void setup() { 
 +  String portArduino = Serial.list()[4]; 
 +  arduino = new Serial(this, portArduino, 115200); 
 +
 + 
 +void draw() { 
 +
 + 
 +void serialEvent(Serial port) { 
 +  val++; 
 +
 + 
 +void keyPressed() { 
 +  switch(key) { 
 +  case ' ' :  
 +    println(val);  
 +    break; 
 +  case 'a' :  
 +    val = 0; 
 +    break; 
 +  } 
 +
 +</code> 
 +==== JOUR 4 ==== 
 +14/12/2108 
 + 
 +Objectif : Faire fonctionner les capteurs à effet Hall du pan 
 + 
 +{{media_06:hall_map.jpg?400|}} 
 + 
 +J'ai repris le code Arduino de l'étape précédente. Pour la visualisation des capteurs, voici le code Processing : 
 +<code java> 
 +import processing.serial.*; 
 + 
 +Serial arduino; 
 +byte lecture = 3; 
 + 
 +void setup() { 
 +  size(500, 300); 
 +  String portArduino = Serial.list()[4]; 
 +  arduino = new Serial(this, portArduino, 115200); 
 +
 + 
 +void draw() { 
 +  background(255); 
 +  if ((lecture & 1) != 0) { 
 +    fill(255); 
 +  } else { 
 +    fill(255, 0, 0); 
 +  } 
 +  rect(100, 100, 100, 100); 
 +  if ((lecture & 2) != 0) { 
 +    fill(255); 
 +  } else { 
 +    fill(255, 0, 0); 
 +  } 
 +  rect(300, 100, 100, 100); 
 +
 + 
 +void serialEvent(Serial port) { 
 +  lecture = (byte)arduino.read(); 
 +
 +</code> 
 + 
 +Driver des moteurs pas à pas : NJM2670D2 fabricant JRC 
 + 
 +==== Jours ... ==== 
 +^Qtt^Nom                ^Valeur     ^Référence Fabricant         ^Fabricant              ^Réf. Fournisseur^Fournisseur^ 
 +|2  |Driver moteur      |4A         |L298N                       |STMicroelectronics     |636-384              |RS         | 
 +|2  |Dissipateur        |8.5°C/   |ML33                        |AAVID THERMALLOY       |712-4263             |RS         | 
 +|1  |Embase IDC         |40 contacts|AWHW 40G-0202-T             |ASSMANN WSW            |674-1252             |RS         | 
 +|2  |Connecteur IDC F   |40 contacts|09185406813                 |Harting                |409-8720             |RS.        | 
 +|2  |Connecteur XHP     |11 contacts|XHP-11                      |JST                    |820-1523             |RS         | 
 +|8  |Cosse à sertir     |JST        |BXH-001T-P0.6               |JST                    |820-1529             |RS         | 
 +|6  |Embase KK          |4 Contacts |22-27-2041                  |Molex                  |483-8483             |RS         | 
 +|2  |Embase KK          |2 Contacts |22-27-2021                  |Molex                  |483-8461             |RS         | 
 +|17 |Diode              |2A 100V    |HER202G R0                  |Taiwan Semiconductor   |688-1940             |RS         | 
 +|2  |Résistance         |22Ω        |MRS25000C2209FCT00          |Vishay                 |683-3336             |RS         | 
 +|1  |Résistance         |10kΩ                                  |                                                     | 
 +|8  |Résistance         |1Ω         |CFR25J1R0                   |TE Connectivity        |135-550              |RS         | 
 +|1  |Condensateur       |470uF      |711-1129                    |RS Pro                 |711-1129             |RS         | 
 +|1  |Condensateur       |100nF      |USR1H0R1MDD                 |Nichicon               |475-8961             |RS         | 
 +|1  |MOSFET canal N     |30A 60VA   |STP36NF06L                  | STMicroelectronics    |486-5671             |RS         | 
 +==== JOUR 5 ==== 
 +21/10/2019 
 + 
 +Finition du PCB avec génération des fichiers Gerber. 
 +J'ai commandé le PCB chez [[https://www.seeedstudio.com/fusion_pcb.html|Seed Studio]] : 
 +==== JOUR 6 ==== 
 +29/10/2019 
 + 
 +Réalisation du gabarit pour fixer le support du "pinceau" sur le plaque emboutie soutenant le projecteur. 
 +Voici le fichier le code OpenSCAD : 
 +<code java> 
 +$fn=40; 
 + 
 +Plaque(); 
 + 
 +module Plaque() { 
 +    difference() { 
 +        translate([-122, 0]) square([244, 100]); 
 +        translate([-110, 10]) circle(d = 4); 
 +        translate([110, 10]) circle(d = 4); 
 +        translate([-110, 89]) circle(d = 4); 
 +        translate([110, 89]) circle(d = 4); 
 +    } 
 +
 +</code> 
 +==== JOUR 7 ==== 
 +31/10/2019 
 + 
 +Fraisage du plateau avec le code ci-dessous : 
 + 
 +{{media_11:plateau.png?400|Plateau}} 
 + 
 +<code java> 
 +module Plateau() { 
 +    difference() { 
 +        hull() { // Forme 
 +            translate([-10, 132]) circle(r=30); 
 +            translate([10, 132]) circle(r=30); 
 +            translate([91, 55]) circle(r=30); 
 +            translate([91, -42]) circle(r=30); 
 +            translate([10, -126]) circle(r=30); 
 +            translate([-10, -126]) circle(r=30); 
 +            translate([-91, 55]) circle(r=30); 
 +            translate([-91, -42]) circle(r=30); 
 +        } 
 +        translate([0, -7.2]) { // Décalage pour que l'axe X soit l'axe dde rotation 
 +                translate([-110, -39.5]) circle(d = 4.1); // Bas Gauche 
 +                translate([110, -39.5]) circle(d = 4.1); // Bas Droite 
 +                translate([-110, 39.5]) circle(d = 4.1); // Haut Gauche 
 +                translate([110, 39.5]) circle(d = 4.1); // Haut Droite 
 +         
 +                translate([-110, -39.5]) translate([65, 6])  circle(d = 4.1); // Bas Centre Gauche 
 +                translate([-110, 39.5])  translate([65, 1])  circle(d = 4.1); // Haut Centre Gauche 
 +                translate([110, -39.5])  translate([-65, 6]) circle(d = 4.1); // Bas Centre Droite 
 +                translate([110, 39.5])   translate([-65, 1]) circle(d = 4.1); // Haut Centre Droite 
 +           
 +        } 
 +        translate([-10, -116]) square([20, 238]); // Emplacement marqueur 
 +        translate([38, 48.3]) square([64, 4]); // Rainure renfort 
 +        translate([-102, 48.3]) square([64, 4]); // // Rainure renfort 
 +        translate([0, -4]) circle(d=26); // Sécurité 
 +        // -103.3 Vis arrière 
 +        // 90.7 Vis avant 
 +        // 194 Distance entre deux vis 
 +         
 +        // Support marqueur arrière 
 +        translate([-20, -83.3]) circle(d = 4.1); 
 +        translate([-20, -123.3]) circle(d = 4.1); 
 +        translate([20, -83.3]) circle(d = 4.1); 
 +        translate([20, -123.3]) circle(d = 4.1); 
 +         
 +        // Support marqueur avant 
 +        translate([-20, 110.7]) circle(d = 4.1); 
 +        translate([-20, 70.7]) circle(d = 4.1); 
 +        translate([20, 110.7]) circle(d = 4.1); 
 +        translate([20, 70.7]) circle(d = 4.1); 
 +         
 +        // Fixation Solénoïde 
 +        translate([15, 25]) circle(d=3); 
 +        translate([35, 25]) circle(d=3); 
 +        translate([15, 55]) circle(d=3); 
 +        translate([35, 55]) circle(d=3);         
 +    } 
 +
 +</code> 
 +==== JOUR 8 ==== 
 +01/11/2019 
 + 
 +Conception du support de l'embout du marqueur : 
 + 
 +{{media_12:supportembout.png?400 |}} 
 +<code java> 
 +module SupportEmbout() { 
 +    difference() { 
 +        union() { 
 +            resize([43.3012702, 0, 0]) cylinder(d = 25, h = 55); // Cylindre principal 
 +            hull() { // Platine de fixation 
 +                translate([-30, 0, 0]) cylinder(d = 25, h = 6); 
 +                translate([30, 0, 0]) cylinder(d = 25, h = 6); 
 +            } 
 +        } 
 +        translate([-3, 0, 31.6492]) rotate([0, 30, 0])  
 +        union() { 
 +            translate([0, 0, 22]) cube([60, 30, 30], center = true); // Cube pour le biseau 
 +            resize([44.8, 0, 0]) cylinder(d = 18, h = 7); // Ellipse intérieure 
 +            translate([0, 0, -32]) cylinder(d = 6, h = 100); // Axe de la vis de 40 
 +            translate([0, 0, -25]) { // Trou ecrou 
 +                cylinder(d = 12, h = 5.5, $fn = 6); 
 +                translate([-40, -5.2, 0]) cube([40, 10.4, 5.5]); 
 +            } 
 +        } 
 +        // Trous de fixation 
 +        translate([-30, 0, 0]) cylinder(d = 4.2, h = 6); 
 +        translate([30, 0, 0]) cylinder(d = 4.2, h = 6); 
 +    } 
 +             
 +
 +</code> 
 + 
 +==== JOUR 9 ==== 
 +02/11/2019 
 + 
 +Conception des supports de l'applicateur : 
 + 
 +La distance entre le dessus du plateau en bois et l'axe de rotation est de 35,7mm. 
 + 
 +{{media_12:supportmarqueur.png?400 |Support Marqueur}} 
 +<code java> 
 +module SupportMarqueur() { 
 +    taille = 20; 
 +    hauteur = 14.25; 
 +    difference() { 
 +        hull() { 
 +            translate([0, 0, hauteur]) rotate([90, 0, 0]) cylinder(d = 20, h = taille); 
 +            hull() { 
 +                translate([20, -taille / 2, 0]) cylinder(d = taille, h = 0.1); 
 +                translate([-20, -taille / 2, 0]) cylinder(d = taille, h = 0.1); 
 +            } 
 +        } 
 +        translate([0, 0, hauteur]) rotate([90, 0, 0]) cylinder(d = 4, h = taille); // Trou de l'axe 
 +        // Trous de vis 
 +        translate([20, -taille / 2, 0]) cylinder(d = 4.2, h = 20); 
 +        translate([-20, -taille / 2, 0]) cylinder(d = 4.2, h = 20); 
 +        // Trous tête de vis 
 +        translate([20, -taille / 2, 4]) cylinder(d = 8, h = 20); 
 +        translate([-20, -taille / 2, 4]) cylinder(d = 8, h = 20); 
 +        // Forme du cylindre 
 +        translate([0, 10, hauteur]) rotate([0, 90, 0]) cylinder(d = 25.5, h = 200, center = true); 
 +        translate([0, 10, 0]) cube([200, 20, 60], center = true); 
 +    } 
 +
 +</code> 
 + 
 +==== JOUR 10 ==== 
 +08/12/2019 
 + 
 +Impression du support du S. 
 +Echec cuisant, j'ai retournée la pièce pour l'impression et oublié de mettre l'encoche de l'autre côté. 
 + 
 +==== JOUR 11 ==== 
 +09/12/2019 
 + 
 +J'ai rectifié l'erreur d'hier et j'en ai profité pour peaufiner le tout : 
 +<code java> 
 +module SupportSolenoide() { 
 +    difference() { 
 +        union() { 
 +            hull() { 
 +                translate([80, 47, 0]) cylinder(d = 14, h = 5); 
 +                translate([80, 7, 0]) cylinder(d = 14, h = 5); 
 +                translate([7, 47, 0]) cylinder(d = 14, h = 5); 
 +                translate([7, 7, 0]) cylinder(d = 14, h = 5); 
 +            } 
 +            //Patte 
 +            hull() { 
 +                translate([77, -4, 0]) cylinder(d = 20, h = 5); 
 +                translate([77, 58, 0]) cylinder(d = 20, h = 5); 
 +            } 
 +            // Extension solénoïde 
 +            hull() { 
 +                translate([91, 42, 0]) cylinder(d = 10, h = 7.5); 
 +                translate([91, 12, 0]) cylinder(d = 10, h = 7.5); 
 +                translate([49, 42, 0]) cylinder(d = 10, h = 7.5); 
 +                translate([49, 12, 0]) cylinder(d = 10, h = 7.5); 
 +            } 
 +        } 
 + 
 +        // Trous solénoïde 
 +        translate([88, 38, 0]) cylinder(d = 3.2, h = 7.5); 
 +        translate([88, 16, 0]) cylinder(d = 3.2, h = 7.5); 
 +        translate([58, 38, 0]) cylinder(d = 3.2, h = 7.5); 
 +        translate([58, 16, 0]) cylinder(d = 3.2, h = 7.5); 
 +        // Tête de vis 
 +        translate([88, 38, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        translate([88, 16, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        translate([58, 38, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        translate([58, 16, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        // Fixation 
 +        translate([7, 7, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        translate([7, 47, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        // Passage écrou 
 +        translate([41.5, 47, 0]) cube([11, 7, 7.5]); 
 +        translate([47, 47, 0]) cylinder(d = 11, h = 7.5);  
 +        //pattes 
 +        translate([77, 58, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        translate([77, -4, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        // Passage marqueur 
 +        translate([0, 17, 0]) cube([16, 20, 7]); 
 +        translate([0, 17, 0]) cube([40, 20, 3]); 
 +    } 
 +
 +</code> 
 + 
 +==== JOUR 12 ==== 
 +10/12/2019 
 + 
 +L'embout précédent s'est cassé au serrage de la courroie. J'ai modifié la position pour l'impression. De ce fait la fibre de PLA est perpendiculaire à l'effort. J'ai aussi augmenté l'épaisseur des pattes de serrage. L'ensemble des éléments du plateau sont imprimés. Il reste à équilibrer le plateau afin de diminuer les efforts sur le moteur de tilt. 
 + 
 +<code java> 
 +module EmboutSolenoide() { 
 +    largeurCourroie = 6; 
 +    largeurEmbout = 50; 
 +    profondeur = 18; 
 +    longueurVis = 17; 
 +    largeurCote = 10; 
 +    difference() { 
 +        union() { 
 +            // Base 
 +            hull() { 
 +                translate([4, 0, 4]) rotate([-90, 0, 0]) cylinder(d = 8, h = profondeur); 
 +                translate([largeurEmbout - 4, 0, 4]) rotate([-90, 0, 0]) cylinder(d = 8, h = profondeur); 
 +            } 
 +            // Côté gauche 
 +            translate([0, 0, 4]) cube([largeurCote, profondeur,  13 + largeurCourroie / 2]); 
 +            translate([0, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = profondeur, h = largeurCote); 
 +            translate([-4, 0, 14 - largeurCourroie / 2]) cube([4, profondeur, largeurCourroie + 2]); // Passage courroie 
 +            translate([-4, 0, 11]) rotate([0, 180, -90]) prisme(profondeur, 4, 4); 
 +            // Côté droit 
 +            translate([largeurEmbout - largeurCote, 0, 4]) cube([largeurCote, profondeur,  13 + largeurCourroie / 2]); 
 +            translate([largeurEmbout - largeurCote, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = profondeur, h = largeurCote); 
 +            translate([largeurEmbout, 0, 14 - largeurCourroie / 2]) cube([4, profondeur, largeurCourroie + 2]); // Passage courroie 
 +            translate([largeurEmbout + 4, profondeur, 11]) rotate([0, 180, 90]) prisme(profondeur, 4, 4); 
 +            // Partie centrale 
 +            hull() { 
 +                translate([largeurEmbout / 2, 0, 15]) rotate([-90, 0, 0]) cylinder(d = 22, h = profondeur); 
 +                translate([largeurCote, 0, 8]) cube([largeurEmbout - 2 * largeurCote, profondeur, 0.1]); 
 +            } 
 +        } 
 +        // Axe solénoïde 
 +        translate([largeurEmbout / 2, 0, 15]) rotate([-90, 0, 0]) cylinder(d = 12.1, h = 13); 
 +        // Encoches 
 +        translate([largeurCote / 2, 0, 5]) Trapeze(0.5, 1.5, profondeur, 30); 
 +        translate([largeurEmbout - largeurCote / 2, 0, 5]) Trapeze(0.5, 1.5, profondeur, 30); 
 +        // Vis 
 +        translate([0, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 4, h = longueurVis); 
 +        translate([largeurEmbout - longueurVis, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 4, h = longueurVis); 
 +        // Tête de vis 
 +        translate([-4, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 7, h = 4); 
 +        translate([largeurEmbout, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 7, h = 4); 
 +        // Ecrou 
 +        translate([largeurCote, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 8, h = 5.6); 
 +        translate([largeurEmbout - largeurCote -5.6, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d =  
 +        8, h = 5.6); 
 +         
 +        // Fixation sur solenoide 
 +        translate([largeurEmbout / 2, 7, 10]) cylinder(d = 3.3, h = 20);  
 +        translate([largeurEmbout / 2, 7, 1]) cylinder(d = 3.1, h = 15); 
 +         
 +        // Arrondisseur 
 +        translate([0, 4, 0]) rotate([0, 0, 180]) arrondisseurAngle(4, 30); 
 +        translate([largeurEmbout, 4, 0]) rotate([0, 0, -90]) arrondisseurAngle(4, 30); 
 +    } 
 +
 + 
 +module arrondisseurAngle(rayon, hauteur) 
 +    difference() { 
 +        cube([rayon, rayon, hauteur]); 
 +        cylinder(r = rayon, h = hauteur); 
 +    } 
 +
 + 
 +module Trapeze(b1, b2, p, h) { 
 +    CubePoints = [ 
 +  [ -b1 / 2,  0,  0 ],  //0 
 +  [ b1 / 2,  0,  0 ],  //1 
 +  [ b1 / 2,  p,  0 ],  //2 
 +  [ -b1 / 2,  p,  0 ],  //3 
 +  [ -b2 / 2,  0,  h ],  //4 
 +  [ b2 / 2,  0,  h ],  //5 
 +  [ b2 / 2,  p,  h ],  //6 
 +  [ -b2 / 2,  p,  h ]]; //7 
 +   
 +    CubeFaces = [ 
 +  [0,1,2,3],  // Base 
 +  [4,5,1,0],  // Face 
 +  [7,6,5,4],  // Haut 
 +  [5,6,2,1],  // Droite 
 +  [6,7,3,2],  // Arrière 
 +  [7,4,0,3]]; // Gauche 
 +   
 +    polyhedron( CubePoints, CubeFaces );  
 +
 +</code> 
 + 
 +==== JOUR 13 ==== 
 +24/12/2019 
 + 
 +Echec lamentable d'impression des outils pour centrer le dispositif de peinture. 
 + 
 +==== JOUR 14 ==== 
 +25/12/2019 
 + 
 +Passage par la fraiseuse numérique avec l'utilisation d'un conte-plaqué de 5mm afin d'obtenir ceci qui va me permettre de trouver le point d'équilibre précis du plateau avec tout les accessoires : 
 + 
 +{{media_05:centrage.png?direct&400|Centre}} 
 + 
 +<code java> 
 +$fn = 50; 
 + 
 +Decalage(); 
 + 
 +module Decalage() { 
 +    difference() { 
 +        // Base 
 +        hull() { 
 +            circle(d  = 60); 
 +            translate([25, 0, 0]) circle(d  = 60); 
 +        } 
 +        for (i = [-26: 5 : 50]) { 
 +            translate([i, 0]) circle(d = 3); // Trou de l'axe 
 +        } 
 +        translate([-50, 22.63]) square([100, 100]); 
 +        for (i = [0 : 3]) {   
 +            for (j = [0 : 6: 24]) { 
 +            translate([j, 0]) rotate(90 * i) translate([18, 18]) circle(d = 4.2); // Trous de fixations 1 
 +            } 
 +        } 
 +    } 
 +
 +</code> 
 + 
 +==== JOUR 15 ==== 
 +26/12/2019 
 + 
 +La fraiseuse numérique à encore travailler. Aujourd'hui réalisation du plateau avec les corrections faites au fil du temps : 
 +<code java> 
 +module Plateau() { 
 +    difference() { 
 +        hull() { // Forme 
 +            translate([-20, 132]) circle(r=30); 
 +            translate([111, 152]) circle(r=10); 
 +            translate([111, -162]) circle(r=10); 
 +            translate([-20, -142]) circle(r=30); 
 +            translate([-91, 45]) circle(r=30); 
 +            translate([-91, -52]) circle(r=30); 
 +        } 
 +        // Vis support lyre 
 +        translate([-110, -42]) circle(d = 4); // Bas Gauche 
 +        translate([110, -42]) circle(d = 4); // Bas Droite 
 +        translate([-110, 22]) circle(d = 4); // Haut Gauche 
 +        translate([110, 22]) circle(d = 4); // Haut Droite 
 +            
 +        translate([-45, -36])  circle(d = 4); // Bas Centre Gauche 
 +        translate([-45, 23])  circle(d = 4); // Haut Centre Gauche 
 +        translate([45, -36]) circle(d = 4); // Bas Centre Droite 
 +        translate([45, 23]) circle(d = 4); // Haut Centre Droite 
 + 
 +        translate([-10, -116]) square([20, 155]); // Emplacement marqueur 
 +        // Passage embout 
 +        translate([0, 109]) circle(d = 26); 
 +        translate([-10, 77]) square([20, 32]); 
 +         
 +        translate([-10, 39.1]) square([20, 37.8]); // Poche de 1mm de profondeur 
 +         
 +        translate([38, 37]) square([64, 5]); // Rainure renfort droite 
 +        translate([-102, 37]) square([64, 5]); // // Rainure renfort gauche 
 +         
 +        translate([0, -4]) circle(d=26); // Sécurité 
 +        // -103.3 Vis arrière 
 +        // 90.7 Vis avant 
 +        // 194 Distance entre deux vis 
 +         
 +        // Support marqueur arrière 
 +        translate([-20, -83]) circle(d = 4.1); 
 +        translate([-20, -123]) circle(d = 4.1); 
 +        translate([20, -83]) circle(d = 4.1); 
 +        //translate([20, -123]) circle(d = 4.1); 
 +         
 +        // Support marqueur avant 
 +        translate([-20, 111]) circle(d = 4.1); 
 +        translate([-20, 71]) circle(d = 4.1); 
 +        translate([20, 111]) circle(d = 4.1); 
 +        translate([20, 71]) circle(d = 4.1); 
 +     
 +        // Support Bouteille 
 +        translate([31, -153]) circle(d = 4.1); 
 +        translate([111, -153]) circle(d = 4.1); 
 +        translate([111, -103]) circle(d = 4.1); 
 +         
 +        // Support Solénoïde 
 +        translate([-31, -153]) circle(d = 4.1); 
 +         
 +        // Support Embout Bouteille 
 +        translate([41, 154]) circle(d = 4.1); 
 +        translate([101, 154]) circle(d = 4.1); 
 +        translate([41, 126]) circle(d = 4.1); 
 +        translate([101, 126]) circle(d = 4.1); 
 +    } 
 +
 +</code> 
 +Une erreur existe encore, mais je la corrigerais peut-être plus tard. Il reste encore à vérifier que le plateau soit bien équilibré par rapport à 'axe de rotation. 
 + 
 +==== JOUR 16 ==== 
 +27/12/2019 
 + 
 +Mise au point du test logiciel pour la rotation des différents axes. Réussite absolue comme cette vidéo en témoigne : 
 + 
 +{{test_rotation.mp4|Rotation}} 
 + 
 +==== JOUR 17 ==== 
 +29/12/2019 
 + 
 +Test de l'équilibre du plateau avec les accessoires. Il est bien équilibré et le moteur entraine convenablement l'ensemble. 
 + 
 +Avec l'inertie de l'ensemble, des pas "sautent", donc il est nécessaire d'utiliser la roue dentée et les fourches optique afin de pouvoir établir une position précise. 
 + 
 +Une modification du plateau est nécessaire pour que le coin inférieur droit puis passer dans la fourche de la lyre. 
 +  
 +==== JOUR 17 ==== 
 +25/01/2020 
 + 
 +Finalisation de la pseudo-résidence au 108 pour voir la machine montée et la faire fonctionner. 
 +Voici le résultat : 
 +{{ media_08:map_coeur.mp4 |}} 
 + 
 +Un autre angle permettant de voir la machine en fonctionnement : 
 + 
 +{{ media_08:map_coeur2.mp4 |}} 
 +===== Matériel ===== 
 +==== Visserie ==== 
 +^Qtt ^Nom                                      ^Diamètre          ^Taille   ^Référence               ^Remarques    ^ 
 +|20  |Vis TCHC acier 8.8 noir EF DIN 912       |4                 |20       |TCHC04/020A8NOEF        |FIXNVIS      | 
 +|20  |Vis TCHC acier 8.8 noir EF DIN 912       |4                 |30       |TCHC04/030A8NOEF        |FIXNVIS      | 
 +|1   |Ecrou carré  DIN 557                     |5                 |8x8x4    |ECRCAR05/08/08/4ZN      |FIXNVIS      | 
 +|1   |Ecrou nylstop acier zingué blanc DIN 985 |4                         |ECRNYL04ZN              |FIXNVIS      | 
 +|1   |Rondelle acier zingué blanc NFE 25513    |4                 |M        |RONM04ZN                |FIXNVIS      | 
 + 
 +^Qtt ^Nom                                      ^Diamètre          ^Taille   ^Référence               ^Remarques    ^ 
 +|4   |Vis tête cylindrique hexagonale creuse   |UNF 10-32         |1''      |                        |eBay         | 
 +|1   |Vis TCHC acier 8.8 noir EF DIN 912       |3                 |20       |TCHC03/020A8NOEF        |FIXNVIS      | 
 +|2   |Vis TCHC acier 8.8 noir EF DIN 912       |4                 |16       |TCHC04/016A8NOEF        |FIXNVIS      | 
 +|1   |Vis TCHC acier 8.8 noir EF DIN 912       |5                 |40       |TCHC05/040A8NOEF        |FIXNVIS      | 
 +|4   |Vis TFHC acier 10.9 noir EF DIN 7991     |3                 |12       |TFHC03/012A10NOEF       |FIXNVIS      | 
 + 
 +==== Alimentation ==== 
 +Boîtier  
 +[[https://www.ldlc.com/informatique/pieces-informatique/alimentation-pc/c4289/+fv1911-10773.html|SFX]] ou 
 +[[https://www.ldlc.com/informatique/pieces-informatique/alimentation-pc/c4289/+fv1911-10775.html|TFX]] 
 + 
 + 
 +Contrôleur de moteur pas à pas: 
 + 
 +A3982 
 + 
 +==== Consommables ==== 
 + 
 +[[https://www.geant-beaux-arts.fr/papier-recycle-110g-m-1-x-50m-gris-clair-rouleau.html|Papier gris 1 x 50]] 
 +===== Liens ===== 
 +Pour les PCB : 
 + 
 + 
 +[[http://riton-duino.blogspot.com/2018/11/concevoir-un-pcb.html|Tutoriel]] 
 + 
 +[[https://www.pcbway.com|pcbway]] 
 + 
 +[[https://oshpark.com|oshpark]] 
 + 
 +[[https://forum.hardware.fr/hfr/electroniquedomotiquediy/conception_depannage_mods/concevoir-fabriquer-presque-sujet_645_6.htm|Forum PCB : concevoir et fabriquer comme un pro (ou presque)]] 
 + 
 +A tester pour un clavier : 
 + 
 +[[https://gitlab.freedesktop.org/libevdev/libevdev/blob/master/tools/libevdev-events.c|libevdev-events]] 
 + 
 +Joystick :  
 + 
 +[[https://gist.github.com/jasonwhite/c5b2048c15993d285130|Reads joystick/gamepad events on Linux and displays them.]] 
 + 
 +[[https://gist.github.com/meghprkh/9cdce0cd4e0f41ce93413b250a207a55|Libevdev playground]] 
 + 
 +Circuit : 
 + 
 +[[https://reprap.org/wiki/Stepper_Motor_Driver_2.3|Stepper Motor Driver 2.3]] 
 + 
 +[[http://www.cuteminds.com/en/elettronicagen/elettronica/36-controller-bipolare-con-a3982-allegro|A3982 bipolar small stepper motor controller]] 
 + 
 +Logiciel : 
 + 
 +PWM : [[https://librpip.frasersdev.net/peripheral-config/pwm0and1/|PWM0 & 1]] 
 + 
 +PWM : [[https://github.com/raspberrypi/firmware/issues/1178|RPI4 : PWM0 & PWM1 Alternate pins]] 
 + 
 +ISR : [[https://gist.github.com/ast/a19813fce9d34c7240091db11b8190dd|How to read a quadrature encoder in C on the Raspberry Pi GPIO, using the wiringPi library]] 
 + 
 +Câble : 
 + 
 +[[https://yadom.fr/plateformes-de-developpement/raspberry-pi/alimentations/cable-usb-c-coude-alimentation-raspberry-pi-4.html|yadom]] 
 + 
 +[[https://www.amazon.fr/gp/product/B07V6PVPKB|Amazon]] 
 + 
 +[[http://www.phartech.it|Fabricant de billes]] 
 + 
 +[[http://paintballfactory.pl/fr/page-daccueil/|Autre piste]]
  
 +{{tag>sylvain}}
machine_a_peindre.txt · Dernière modification : 2020/12/01 17:43 de serge