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édentes Révision précédente
Prochaine révision
Révision précédente
machine_a_peindre [2018/11/09 06:14]
Mushussu
machine_a_peindre [2020/05/17 14:56] (Version actuelle)
Mushussu [Jours ...]
Ligne 1: Ligne 1:
-===== 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."​
  
-=== JOUR 1 ===+Pablo Picasso 
 + 
 +[[https://​www.youtube.com/​watch?​v=s5MUxuY4Hbw|Niki de Saint-Phalle]] 
 +===== Réalisation ===== 
 +==== JOUR 1 ====
 09/11/2108 09/11/2108
  
Ligne 7: Ligne 13:
 La voici démontée : La voici démontée :
  
-{{:​démontage.jpg| ​démontage.jpg démontage.jpg}}+{{:​démontage.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 18: Ligne 24:
  
 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 ====
 +22/11/2108
 +Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan :
 +
 +{{:​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
 +
 +{{:​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
 +
 +{{:​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/​W ​   |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 :
 +
 +{{:​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 :
 +
 +{{:​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.
 +
 +{{:​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 :
 +
 +{{:​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 :
 +{{ :​map_coeur.mp4 |}}
 +
 +Un autre angle permettant de voir la machine en fonctionnement :
 +
 +{{ :​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.1541740454.txt.gz · Dernière modification: 2018/11/09 06:14 par Mushussu