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/12/13 22:08] Mushussumachine_a_peindre [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 1: Ligne 1:
-===== Machine à peindre ===== +====== Machine à peindre ====== 
-==== Inspirations ====+===== 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." "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."
  
-Picasso+Pablo Picasso
  
-==== Réalisation ==== +[[https://www.youtube.com/watch?v=s5MUxuY4Hbw|Niki de Saint-Phalle]] 
-=== JOUR 1 ===+===== Réalisation ===== 
 +==== JOUR 1 ====
 09/11/2108 09/11/2108
  
Ligne 12: Ligne 13:
 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 deux moteurs pas-à-pas qui réalisent le pan et le tilt ont comme référence : 23HS0001-02
Ligne 24: Ligne 25:
 Commutateur optique manquant : Code commande RS 708-5538 Référence fabricant TCST1103 Fabricant Vishay Commutateur optique manquant : Code commande RS 708-5538 Référence fabricant TCST1103 Fabricant Vishay
  
-=== JOUR 2 ===+==== JOUR 2 ====
 22/11/2108 22/11/2108
 Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan : Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan :
  
-{{:encodeur.jpg?400|}}+{{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 positionner côte à côte. +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 ===+==== JOUR 3 ====
 13/12/2108 13/12/2108
  
Ligne 37: Ligne 38:
 Résultat : ~2470 Résultat : ~2470
  
-{{:montage.jpg?400|}}+{{media_09:montage.jpg?400|}}
  
 Code Arduino : Code Arduino :
Ligne 94: Ligne 95:
 } }
 </code> </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}} {{tag>sylvain}}
machine_a_peindre.1544738937.txt.gz · Dernière modification : 2018/12/13 22:08 de Mushussu