machine_a_peindre
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
machine_a_peindre [2018/11/08 23:15] – Mushussu | machine_a_peindre [2020/10/26 14:58] – ancienne révision (2020/10/05 12:39) restaurée Labomedia | ||
---|---|---|---|
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:// | ||
+ | ===== Réalisation ===== | ||
+ | ==== JOUR 1 ==== | ||
09/11/2108 | 09/11/2108 | ||
Ligne 7: | Ligne 13: | ||
La voici démontée : | La voici démontée : | ||
- | {{: | + | {{: |
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 19: | 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 ==== | ||
+ | 22/11/2108 | ||
+ | Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 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' | ||
+ | Résultat : ~2470 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 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 Processing : | ||
+ | <code java> | ||
+ | import processing.serial.*; | ||
+ | |||
+ | Serial arduino; | ||
+ | int val = 0; | ||
+ | |||
+ | void setup() { | ||
+ | String portArduino = Serial.list()[4]; | ||
+ | arduino = new Serial(this, | ||
+ | } | ||
+ | |||
+ | void draw() { | ||
+ | } | ||
+ | |||
+ | void serialEvent(Serial port) { | ||
+ | val++; | ||
+ | } | ||
+ | |||
+ | void keyPressed() { | ||
+ | switch(key) { | ||
+ | case ' ' : | ||
+ | println(val); | ||
+ | break; | ||
+ | case ' | ||
+ | val = 0; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ==== JOUR 4 ==== | ||
+ | 14/12/2108 | ||
+ | |||
+ | Objectif : Faire fonctionner les capteurs à effet Hall du pan | ||
+ | |||
+ | {{: | ||
+ | |||
+ | J'ai repris le code Arduino de l' | ||
+ | <code java> | ||
+ | import processing.serial.*; | ||
+ | |||
+ | Serial arduino; | ||
+ | byte lecture = 3; | ||
+ | |||
+ | void setup() { | ||
+ | size(500, 300); | ||
+ | String portArduino = Serial.list()[4]; | ||
+ | arduino = new Serial(this, | ||
+ | } | ||
+ | |||
+ | 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(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Driver des moteurs pas à pas : NJM2670D2 fabricant JRC | ||
+ | |||
+ | ==== Jours ... ==== | ||
+ | ^Qtt^Nom | ||
+ | |2 |Driver moteur | ||
+ | |2 |Dissipateur | ||
+ | |1 |Embase IDC |40 contacts|AWHW 40G-0202-T | ||
+ | |2 |Connecteur IDC F |40 contacts|09185406813 | ||
+ | |2 |Connecteur XHP |11 contacts|XHP-11 | ||
+ | |8 |Cosse à sertir | ||
+ | |6 |Embase KK |4 Contacts |22-27-2041 | ||
+ | |2 |Embase KK |2 Contacts |22-27-2021 | ||
+ | |17 |Diode | ||
+ | |2 |Résistance | ||
+ | |1 |Résistance | ||
+ | |8 |Résistance | ||
+ | |1 |Condensateur | ||
+ | |1 |Condensateur | ||
+ | |1 |MOSFET canal N |30A 60VA | ||
+ | ==== JOUR 5 ==== | ||
+ | 21/10/2019 | ||
+ | |||
+ | Finition du PCB avec génération des fichiers Gerber. | ||
+ | J'ai commandé le PCB chez [[https:// | ||
+ | ==== JOUR 6 ==== | ||
+ | 29/10/2019 | ||
+ | |||
+ | Réalisation du gabarit pour fixer le support du " | ||
+ | Voici le fichier le code OpenSCAD : | ||
+ | <code java> | ||
+ | $fn=40; | ||
+ | |||
+ | Plaque(); | ||
+ | |||
+ | module Plaque() { | ||
+ | difference() { | ||
+ | translate([-122, | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ==== JOUR 7 ==== | ||
+ | 31/10/2019 | ||
+ | |||
+ | Fraisage du plateau avec le code ci-dessous : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | <code java> | ||
+ | module Plateau() { | ||
+ | difference() { | ||
+ | hull() { // Forme | ||
+ | translate([-10, | ||
+ | translate([10, | ||
+ | translate([91, | ||
+ | translate([91, | ||
+ | translate([10, | ||
+ | translate([-10, | ||
+ | translate([-91, | ||
+ | translate([-91, | ||
+ | } | ||
+ | translate([0, | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | | ||
+ | translate([-110, | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | translate([110, | ||
+ | | ||
+ | } | ||
+ | translate([-10, | ||
+ | translate([38, | ||
+ | translate([-102, | ||
+ | translate([0, | ||
+ | // -103.3 Vis arrière | ||
+ | // 90.7 Vis avant | ||
+ | // 194 Distance entre deux vis | ||
+ | | ||
+ | // Support marqueur arrière | ||
+ | translate([-20, | ||
+ | translate([-20, | ||
+ | translate([20, | ||
+ | translate([20, | ||
+ | | ||
+ | // Support marqueur avant | ||
+ | translate([-20, | ||
+ | translate([-20, | ||
+ | translate([20, | ||
+ | translate([20, | ||
+ | | ||
+ | // Fixation Solénoïde | ||
+ | translate([15, | ||
+ | translate([35, | ||
+ | translate([15, | ||
+ | translate([35, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ==== JOUR 8 ==== | ||
+ | 01/11/2019 | ||
+ | |||
+ | Conception du support de l' | ||
+ | |||
+ | {{: | ||
+ | <code java> | ||
+ | module SupportEmbout() { | ||
+ | difference() { | ||
+ | union() { | ||
+ | resize([43.3012702, | ||
+ | hull() { // Platine de fixation | ||
+ | translate([-30, | ||
+ | translate([30, | ||
+ | } | ||
+ | } | ||
+ | translate([-3, | ||
+ | union() { | ||
+ | translate([0, | ||
+ | resize([44.8, | ||
+ | translate([0, | ||
+ | translate([0, | ||
+ | cylinder(d = 12, h = 5.5, $fn = 6); | ||
+ | translate([-40, | ||
+ | } | ||
+ | } | ||
+ | // Trous de fixation | ||
+ | translate([-30, | ||
+ | translate([30, | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== JOUR 9 ==== | ||
+ | 02/11/2019 | ||
+ | |||
+ | Conception des supports de l' | ||
+ | |||
+ | La distance entre le dessus du plateau en bois et l'axe de rotation est de 35,7mm. | ||
+ | |||
+ | {{: | ||
+ | <code java> | ||
+ | module SupportMarqueur() { | ||
+ | taille = 20; | ||
+ | hauteur = 14.25; | ||
+ | difference() { | ||
+ | hull() { | ||
+ | translate([0, | ||
+ | hull() { | ||
+ | translate([20, | ||
+ | translate([-20, | ||
+ | } | ||
+ | } | ||
+ | translate([0, | ||
+ | // Trous de vis | ||
+ | translate([20, | ||
+ | translate([-20, | ||
+ | // Trous tête de vis | ||
+ | translate([20, | ||
+ | translate([-20, | ||
+ | // Forme du cylindre | ||
+ | translate([0, | ||
+ | translate([0, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== JOUR 10 ==== | ||
+ | 08/12/2019 | ||
+ | |||
+ | Impression du support du S. | ||
+ | Echec cuisant, j'ai retournée la pièce pour l' | ||
+ | |||
+ | ==== JOUR 11 ==== | ||
+ | 09/12/2019 | ||
+ | |||
+ | J'ai rectifié l' | ||
+ | <code java> | ||
+ | module SupportSolenoide() { | ||
+ | difference() { | ||
+ | union() { | ||
+ | hull() { | ||
+ | translate([80, | ||
+ | translate([80, | ||
+ | translate([7, | ||
+ | translate([7, | ||
+ | } | ||
+ | //Patte | ||
+ | hull() { | ||
+ | translate([77, | ||
+ | translate([77, | ||
+ | } | ||
+ | // Extension solénoïde | ||
+ | hull() { | ||
+ | translate([91, | ||
+ | translate([91, | ||
+ | translate([49, | ||
+ | translate([49, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Trous solénoïde | ||
+ | translate([88, | ||
+ | translate([88, | ||
+ | translate([58, | ||
+ | translate([58, | ||
+ | // Tête de vis | ||
+ | translate([88, | ||
+ | translate([88, | ||
+ | translate([58, | ||
+ | translate([58, | ||
+ | // Fixation | ||
+ | translate([7, | ||
+ | translate([7, | ||
+ | // Passage écrou | ||
+ | translate([41.5, | ||
+ | translate([47, | ||
+ | //pattes | ||
+ | translate([77, | ||
+ | translate([77, | ||
+ | // Passage marqueur | ||
+ | translate([0, | ||
+ | translate([0, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== JOUR 12 ==== | ||
+ | 10/12/2019 | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code java> | ||
+ | module EmboutSolenoide() { | ||
+ | largeurCourroie = 6; | ||
+ | largeurEmbout = 50; | ||
+ | profondeur = 18; | ||
+ | longueurVis = 17; | ||
+ | largeurCote = 10; | ||
+ | difference() { | ||
+ | union() { | ||
+ | // Base | ||
+ | hull() { | ||
+ | translate([4, | ||
+ | translate([largeurEmbout - 4, 0, 4]) rotate([-90, | ||
+ | } | ||
+ | // Côté gauche | ||
+ | translate([0, | ||
+ | translate([0, | ||
+ | translate([-4, | ||
+ | translate([-4, | ||
+ | // Côté droit | ||
+ | translate([largeurEmbout - largeurCote, | ||
+ | translate([largeurEmbout - largeurCote, | ||
+ | translate([largeurEmbout, | ||
+ | translate([largeurEmbout + 4, profondeur, 11]) rotate([0, 180, 90]) prisme(profondeur, | ||
+ | // Partie centrale | ||
+ | hull() { | ||
+ | translate([largeurEmbout / 2, 0, 15]) rotate([-90, | ||
+ | translate([largeurCote, | ||
+ | } | ||
+ | } | ||
+ | // Axe solénoïde | ||
+ | translate([largeurEmbout / 2, 0, 15]) rotate([-90, | ||
+ | // Encoches | ||
+ | translate([largeurCote / 2, 0, 5]) Trapeze(0.5, | ||
+ | translate([largeurEmbout - largeurCote / 2, 0, 5]) Trapeze(0.5, | ||
+ | // Vis | ||
+ | translate([0, | ||
+ | translate([largeurEmbout - longueurVis, | ||
+ | // Tête de vis | ||
+ | translate([-4, | ||
+ | translate([largeurEmbout, | ||
+ | // Ecrou | ||
+ | translate([largeurCote, | ||
+ | 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, | ||
+ | translate([largeurEmbout, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module arrondisseurAngle(rayon, | ||
+ | difference() { | ||
+ | cube([rayon, | ||
+ | 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, | ||
+ | [4, | ||
+ | [7, | ||
+ | [5, | ||
+ | [6, | ||
+ | [7,4,0,3]]; // Gauche | ||
+ | | ||
+ | polyhedron( CubePoints, CubeFaces ); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== JOUR 13 ==== | ||
+ | 24/12/2019 | ||
+ | |||
+ | Echec lamentable d' | ||
+ | |||
+ | ==== JOUR 14 ==== | ||
+ | 25/12/2019 | ||
+ | |||
+ | Passage par la fraiseuse numérique avec l' | ||
+ | |||
+ | {{media_05: | ||
+ | |||
+ | <code java> | ||
+ | $fn = 50; | ||
+ | |||
+ | Decalage(); | ||
+ | |||
+ | module Decalage() { | ||
+ | difference() { | ||
+ | // Base | ||
+ | hull() { | ||
+ | circle(d | ||
+ | translate([25, | ||
+ | } | ||
+ | for (i = [-26: 5 : 50]) { | ||
+ | translate([i, | ||
+ | } | ||
+ | translate([-50, | ||
+ | for (i = [0 : 3]) { | ||
+ | for (j = [0 : 6: 24]) { | ||
+ | translate([j, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== JOUR 15 ==== | ||
+ | 26/12/2019 | ||
+ | |||
+ | La fraiseuse numérique à encore travailler. Aujourd' | ||
+ | <code java> | ||
+ | module Plateau() { | ||
+ | difference() { | ||
+ | hull() { // Forme | ||
+ | translate([-20, | ||
+ | translate([111, | ||
+ | translate([111, | ||
+ | translate([-20, | ||
+ | translate([-91, | ||
+ | translate([-91, | ||
+ | } | ||
+ | // Vis support lyre | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | translate([-110, | ||
+ | translate([110, | ||
+ | |||
+ | translate([-45, | ||
+ | translate([-45, | ||
+ | translate([45, | ||
+ | translate([45, | ||
+ | |||
+ | translate([-10, | ||
+ | // Passage embout | ||
+ | translate([0, | ||
+ | translate([-10, | ||
+ | | ||
+ | translate([-10, | ||
+ | | ||
+ | translate([38, | ||
+ | translate([-102, | ||
+ | | ||
+ | translate([0, | ||
+ | // -103.3 Vis arrière | ||
+ | // 90.7 Vis avant | ||
+ | // 194 Distance entre deux vis | ||
+ | | ||
+ | // Support marqueur arrière | ||
+ | translate([-20, | ||
+ | translate([-20, | ||
+ | translate([20, | ||
+ | // | ||
+ | | ||
+ | // Support marqueur avant | ||
+ | translate([-20, | ||
+ | translate([-20, | ||
+ | translate([20, | ||
+ | translate([20, | ||
+ | | ||
+ | // Support Bouteille | ||
+ | translate([31, | ||
+ | translate([111, | ||
+ | translate([111, | ||
+ | | ||
+ | // Support Solénoïde | ||
+ | translate([-31, | ||
+ | | ||
+ | // Support Embout Bouteille | ||
+ | translate([41, | ||
+ | translate([101, | ||
+ | translate([41, | ||
+ | translate([101, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | 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' | ||
+ | |||
+ | Avec l' | ||
+ | |||
+ | 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 : | ||
+ | {{ : | ||
+ | |||
+ | Un autre angle permettant de voir la machine en fonctionnement : | ||
+ | |||
+ | {{ : | ||
+ | ===== Matériel ===== | ||
+ | ==== Visserie ==== | ||
+ | ^Qtt ^Nom ^Diamètre | ||
+ | |20 |Vis TCHC acier 8.8 noir EF DIN 912 | ||
+ | |20 |Vis TCHC acier 8.8 noir EF DIN 912 | ||
+ | |1 | ||
+ | |1 | ||
+ | |1 | ||
+ | |||
+ | ^Qtt ^Nom ^Diamètre | ||
+ | |4 |Vis tête cylindrique hexagonale creuse | ||
+ | |1 |Vis TCHC acier 8.8 noir EF DIN 912 | ||
+ | |2 |Vis TCHC acier 8.8 noir EF DIN 912 | ||
+ | |1 |Vis TCHC acier 8.8 noir EF DIN 912 | ||
+ | |4 |Vis TFHC acier 10.9 noir EF DIN 7991 | ||
+ | |||
+ | ==== Alimentation ==== | ||
+ | Boîtier | ||
+ | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | |||
+ | Contrôleur de moteur pas à pas: | ||
+ | |||
+ | A3982 | ||
+ | |||
+ | ==== Consommables ==== | ||
+ | |||
+ | [[https:// | ||
+ | ===== Liens ===== | ||
+ | Pour les PCB : | ||
+ | |||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | A tester pour un clavier : | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Joystick : | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Circuit : | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Logiciel : | ||
+ | |||
+ | PWM : [[https:// | ||
+ | |||
+ | PWM : [[https:// | ||
+ | |||
+ | ISR : [[https:// | ||
+ | |||
+ | Câble : | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | {{tag> |
machine_a_peindre.txt · Dernière modification : 2020/12/01 17:43 de serge