Le "grapher" vertical

Projet de traçage vertical.

Il existe déjà plusieurs versions de traceur vertical, je suis à la V5.2.
Elle intègre un serveur pour placer les fichiers a tracer, c'est une version aboutie qui fonctionne super bien.


  • Objectif :Imprimer sur des grandes surfaces verticales.
  • Moyens
    MatérielQtéConsommation
    mA
    Masse
    g
    Prix U
    Alimentation 5V 3A USB mini1--3,21€

    WEMOS D1 mini Lite V1.0.0-WIFI Internet
    développement basé ESP8285
      Tensilica L106 32-bit RISC processor
    • 11 digital input/output pins, all pins have interrupt/pwm/I2C/one-wire supported(except D0) EN 3.3V
    • 1 analog input(3.2V max input)
    • a Micro USB connection
    • 1MB Flash
    • 80MHz/160MHz
    • Compatible with Arduino
    • Taille : 34.2mm x 25.6mm
    1-103,69€
    Moteur 28BYJ-48 DC 5 V réduction pas à pas moteur pas à pas 4 phases Ø27mm2-331,52€
    MINI ULN2003 cinq lignes quatre phases2-100,84€
    Femelle MICRO USB À DIP 5 Pin Pinboard 2.54mm Micro USB Type1--0,20€
    Cablage AWG24 2m2-81,00€
    Support pour voiture pare-brise Mini ventouse2--1,09€
    Connecteurs Duponts femelles27--0,01€
Pour une masse Hors 3D, fils et connecteurs dupont de 122 grammes.
Soit un total de d'environs 15.27 € avec les cablages ... auquel il faut ajouter l'impression 3D
Principe de fonctionnement et mathématiques

Pour simplifier la vue, les moteurs ne sont pas au niveau du feutre, mais au niveau du tableau, c'était la version initiale.

Le déplacement du point dépend de la longueur des cordes a et b.
$a_1=\sqrt{x_1^2+(Y-y_1)^2}$
$b_1=\sqrt{(X-x_1)^2+(Y-y_1)^2}$
$a_2=\sqrt{x_2^2+(Y-y_2)^2}$
$b_2=\sqrt{(X-x_2)^2+(Y-y_2)^2}$
$\Delta a=(a1-a2)$
$\Delta b=(b1-b2)$
Exemple A(10,20) et B(30,50) avec X=100 et Y=100 :
$a_1=80,622577483,~b_1=120,4159457879$
$a_2=58,3095189485,~b_2=86,0232526704$
$a_1-b_1=22,3130585345,~a_2-b_2=34,3926931175$

Pour déplacer le stylet du point $A$ au point $B$, nous devons calculer la différence entre les longueurs de cordes entre les coordonnées successives.
Dans cet exemple, le moteur 1 doit allonger la corde de $(a_1-a_2)$ alors que le moteur 2 doit être raccourcir la corde de $(b_1-b_2)$.

Attention, cependant, l'erreur qui pourrait être faite, c'est de penser que l'on peu diviser les longueurs de cordes entre deux points.
Il est donc nécessaire de diviser les distances suivant X et Y à parcourir et non pas les cordes.

Attention à la précision.
Suivant les distances à parcourir, le nombre de point nécessaire est à redéfinir en permanence.

Après optimisation de la trajectoire en fonction d'une précision imposée.

Les impressions 3D Avant tout il faut imprimer les modèles 3D suivants, cliquer sur l'image pour récupere le fichier .3mf:
1x Bati Simple2x PoulieGuide poulie gaucheGuide poulie droite
4x PiedsPlan complet
Évolution programmation (Version 5.2)
Tous ce passe maintenant via le site internet placer sur la puce.
Et surtout, l'ensemble est dans un bloc de traçage, les moteurs sont intégrés uniquement deux fils reliés à deux ventouses et une alimentation 5V 3A, qui peut-être substitué par une batterie.
Branchement Wemos/Moteurs
WEMOSPORTULN2003Moteur
D1GPIO51BGauche
D2GPIO42B
D3GPIO03B
D4GPIO24B
WEMOSPORTULN2003Moteur
D0GPIO161BDroit
D5GPIO142B
D6GPIO123B
D7GPIO134B
WEMOSPORTAutre
D8GPIO15Servo SG90
Mise au point matériel Après avoir placer l'ensemble des composants, vous-vous posez deux questions primordiale, dans quel sens ces \~xq]}$¤ de moteurs.
La réponse est : Ont s'en fou! En effet, au moment du montage le serveur permet un réglage de positionnement, et de ce fait, quand vous monter, ça s'enroule, et peut importe le sens.
Et enfin, brancher le tout.
Les différentes difficultés et corrections de traçage
Image OK
Image avec Y trop grandImage avec Y trop petit
Image avec X trop petitImage avec X trop grand
Image avec diamètre trop grandImage avec diamète trop petit
Image avec X- et Y trop grand
Image avec X trop petit Y trop grand Diam trop grandImage avec X trop petit Y trop grand Diam trop petit
Et enfin le dernier default :

Ce défaut de détente d'un des fils est principalement dû à la faible masse. En effet le frottement du feutre sur le tableau doit être compensé par la masse
Cependant, avec le moteur utilisé, la masse ne doit pas être trop importante.
Programme de conversion pour la mise en œuvre : J'ai fait le choix de réaliser les calculs directement dans inkscape, le programme dans l'ESP, ne se charge que du serveur, et de se déplacer suivant le nombre de pas demandé.
Plusieurs avantage à cela :
  • Pas de ralentissement dût aux calculs
  • Les fichiers sont directements lisibles et modifiables
  • D'une machine à l'autre le diamètre de poulie ou le type de moteur peut changer, pas de problèmes
  • Le fichier est simple au format texte et le serveur compresse, ce qui laisse plus de place
  • La gestion de plusieurs couleurs, avec un fichier par couleur facilite la gestion
  • etc...
Pour les fichiers vectoriels, c'est plus rapide, par inkscape décompresser l'extension suivante:
Fichier RAR concernant l'extension dans inkscape Et enfin, ouvrir sous inkscape le fichier à tracer (Attention, en cas de bitmap, il faut le convertir en vectoriel).
Puis :
  1. Selectionner toute l'image [ctrl-A]
  2. Dans le menu Chemin -> Objet en chemin Maj+Ctrl+C
  3. Dans le menu Ficier -> Propriétés du document Maj+Ctrl+D
    • Dans l'onglet page choisir
    • Unité par défaut : mm
    • Dimensions personnalisées (Celle du tableau d'impression) Largeur 800, Hauteur 1000, Unité : mm
    • Dans Echelle Echelle en x : 1,00000
  4. Sauvegarder votre fichier au format grapher (*.grp)
Cette fois, c'est le moment de mettre ce fichier sur le serveur et de lancer le traçage, toutes ces opérations se font en wifi.
Le format "grp" J'ai décidé de réaliser mon propre format de fichier, celui-ci est simple d'utilisation.
#GRAPHER V5.1<CR><LF>    Nom du convertisseur										
#800.0 x 1000.0<CR><LF>  Dimension du tableau en mm
#D:26.0<CR><LF>          Diamètre de poulie
#S:2048<CR><LF>          Nombre de pas par tour du moteur
#EX:102.00<CR><LF>       Décallage en X entre les deux point haut des poulies
#EY:-10.00
#Temps:  00:10:49
V25813 W28187<CR><LF>   Prend la position actuelle et considère qu''elle est
                                    à 25813 pas des moteurs "Left" et 28187 a droite"Right".
G0<CR><LF>              Lève le stylo.
L24694 R25570<CR><LF>   Déplace stylo à 24694 pas du moteur "Left" et 25570 pas du moteur "Right".
G1<CR><LF>              Baisse le stylo
L24694 R25570<CR><LF>   Déplace stylo à 24694 pas du moteur "Left" et 25570 pas du moteur "Right".
L24542 R25406<CR><LF>   Déplace stylo à 24542 pas du moteur "Left" et 25406 pas du moteur "Right".
L24542 R25406<CR><LF>
L24573 R25380<CR><LF>
L24573 R25380<CR><LF>
L24588 R25370<CR><LF>
M30<CR><LF>              Fin de programme.
<CR><LF> sont de simple "entrée" du clavier
Calcul de pas
Moteur
Nombre de pas par tour:
Diamètre primitif de la poulie: mm
Soit :
26.07594587617613 pas/mm
Ce qui donne une précision de
0.03834951969714103 mm/pas
Longueur de la corde: mm
Pour une distance de 500 mm
3207 pas
Calcul de l'effort
Coupe : mNm
Force :
9.60 N soit environs 942gr
Calcul de la vitesse
Fréquence : Hz
Vitesse de rotation :
1.0ms/pas 2.05 s/tr soit 29.30 tr/min
Vitesse linéaire :
38.35 mm/s
Le programme actuel est en pas entier, la précision est plus que suffisante et la distance très importante.
Le choix du programme en pas c'est fait par le gain en vitesse.
L'évolution L'évolution pourrai supporter un gyroscope pour la correction angulaire.
Et pourquoi pas utiliser l'ESP8266 comme serveur, ça serai plus simple pour la connexion
C'est tout pour aujourd'hui...Et c'est déjà pas mal