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

Réalisation

JOUR 1

09/11/2108

Base une lyre Robe Spot 250xt hors d'usage. 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 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 :

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

Code Arduino :

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 :

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

JOUR 4

14/12/2108

Objectif : Faire fonctionner les capteurs à effet Hall du pan

J'ai repris le code Arduino de l'étape précédente. Pour la visualisation des capteurs, voici le code Processing :

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

Driver des moteurs pas à pas : NJM2670D2 fabricant JRC

Jours ...

QttNom Valeur Référence Fabricant Fabricant Réf. FournisseurFournisseur
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 contactsAWHW 40G-0202-T ASSMANN WSW 674-1252 RS
2 Connecteur IDC F 40 contacts09185406813 Harting 409-8720 RS.
2 Connecteur XHP 11 contactsXHP-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 ohm. MRS25000C2209FCT00 Vishay 683-3336 RS
1 Résistance 10k ohm
8 Résistance 1 ohm 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 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 :

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

JOUR 7

31/10/2019

Fraisage du plateau avec le code ci-dessous :

Plateau

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

JOUR 8

01/11/2019

Conception du support de l'embout du marqueur :

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

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.

Support Marqueur

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

Visserie

Qtt Nom Diamètre Longueur Référence Remarques
4 Vis tête cylindrique hexagonale creuseUNF 10-32 1'' eBay
20 Vis tête cylindrique hexagonale creuse4 20
1 Vis tête cylindrique hexagonale creuse5 40

Liens

  • machine_a_peindre.txt
  • Dernière modification: 2019/11/03 16:18
  • par Mushussu