Etape 8: Logiciel (gravure de Raster)
Lorsque j’ai conçu la machine, je voulais seulement il pour graver des fichiers image régulière bitmap . Alors, j’ai fait trois programmes distincts, qui, une fois utilisés ensemble, permettent des images bitmap normal à être gravée sur bois.C# programme (fichier de texte génère « instruction »)
Il accepte un fichier bitmap et génère un fichier texte, contenant "des caractères instruction". Le type bitmap elle accepte est un bitmap 24 bits, avec des pixels seulement noir et blanc (pas gris / couleurs). Le programme analyse la bitmap, balayage ligne par ligne pour les pixels noirs qui doivent être gravés. Tout d’abord, il scanne la rangée du haut de gauche à droite, puis gouttes sur une seule ligne, analyses de droite à gauche, descend d’une autre ligne, scans de gauche à droite et ainsi de suite, jusqu'à ce que le dernier rang est scanné. Il peut sauter les pixels blancs sur les bords des lignes, et peuvent sauter des lignes vides. En outre, en raison des limitations de mémoire tampon serial Arduino, le programme divise le fichier texte séparés par des virgules "blocs d’instruction", qui sont moins de 64 caractères de long. Ces instructions numériques sont interprétées par l’Arduino (voir la section Arduino Sketch pour plus de détails).
Ce programme fonctionne bien pour des images plus petites (par exemple moins de 1000 x 700), mais il s’enlise avec des images plus grandes qui ont beaucoup de pixels brûlés (peut prendre plus de 10 minutes pour générer le fichier d’instructions).
Le chemin que ce programme scanne l’image porte directement à la façon dont la machine grave l’image. L’Arduino utilise le fichier d’instructions pour faire la machine à graver l’image ligne par ligne.
Échantillon de blocs de Instruction séparés par des virgules (pour voir ce que signifient les numéros, faites défiler jusqu'à la section de sketch Arduino) :
111111111111111111111111115555555555555555555555555555555555920,
019201920192010101010101010101010101010101010101010101010101010,
010101010101010101010101010101010101010101010101010101010101010,
0101010101010101010101010192019201920,
11594039403940394039403940303030303030303030303030303030303030,
030303030303030303030303030303030303030303030303030303030303030,
0303030303030303030303030303030394039403940394039403940,
L’exécutable se trouve au bas de la page
Traitement IDE Sketch (données de flux d’instructions)
Un simple croquis de traitement a été créé au flux le contenu du fichier d’instructions.
Vous pouvez obtenir traitement d’ici : http://processing.org/
Les données sont transmis en continu via une connexion de port série virtuel à l’Arduino. L’esquisse envoie les blocs d’instruction séparée par des virgules, un pâté de maisons à la fois, avec un retard entre les blocs. Ces délais sont calculés au moment de l’exécution, basé sur le contenu de chaque bloc d’instruction. Le délai est nécessaire pour assurer que le schéma de traitement n’envoie pas nouvelles instructions relatives à l’Arduino avant d’ont exécuté les instructions précédentes. Dans ce cas, l’image gravée est endommagée, alors les valeurs de minuterie utilisé dans le traitement de croquis et Arduino croquis doivent être compatibles.
L’esquisse de traitement fournit également un état d’avancement , en comptant le nombre total de blocs d’instructions et des rapports en permanence combien de blocs d’instructions ont été envoyées à l’Arduino.
L’esquisse est au bas de la page
Arduino Sketch (interprète d’instructions données et les contrôles matériels)
Le sketch Arduino interprète chaque bloc d’instruction. Il y a un certain nombre de caractères de l’instruction :
1 - déplacer vers la droite d’un pixel FAST (pixel blanc)
2 - déplacer vers la droite d’un pixel SLOW (pixel brûlé)
3 - se déplacer de la gauche d’un pixel FAST (pixel blanc
4 - se déplacer de la gauche d’un pixel SLOW (pixel brûlé)
5 - déplacer vers le haut par un pixel FAST (pixel blanc)
6 - move UP par un pixel SLOW (pixel brûlé)
7 - déplacer vers le bas par un pixel FAST (pixel blanc)
8 - déplacer vers le bas par un pixel SLOW (pixel brûlé)
9 - allumer le laser
0 - laser turn OFF
r - les axes retour à la position de départ
Avec chaque personnage, l’arduino exécute une fonction correspondante, pour écrire sur les broches de sortie.
L’Arduino contrôle la Vitesse du moteur à travers les retards entre les impulsions de l’étape. Idéalement, la machine aurait fonctionner les moteurs à la même vitesse élevée, si sa gravure un pixel ou en passant sur un pixel blanc. Toutefois, en raison d’une puissance limitée de la diode laser, la machine doit ralentir légèrement lorsque brûle un pixel. C’est pourquoi il y a deux vitesses pour chaque direction dans la liste de caractère d’instruction ci-dessus. Actuellement, j’ai configuré la machine pour passer sur un pixel blanc de 8 mset de passer d’un pixel brûlé dans 18ms.
Le sketch Arduino contrôle également redimensionnement de l’image.
Les pilotes de moteurs pas à pas ont été configurés pour marcher à moitié, ce qui signifie que les pilotes ont besoin de 400 impulsions d’étape par une rotation du moteur, ou 400 impulsions étape / 5 mm de mouvement linéaire. Sans aucune mise à l’échelle, les images gravées serait trop petits pour voir.
J’ai décidé d’utiliser un facteur d’échelle de 8, afin que lorsque la machine déplace d’un pixel, 8 impulsions d’étape sont envoyées. Cela se traduit par 50 pixels / une révolution du moteur, ou 50 pixels / 5mm de mouvement linéaire. Cela signifie que l’espacement des pixels est de 0,1 mm, ou 254 dpi. Une image de 1600 x 900 pixels sera 16 cm x 9 cm de taille.
Il est à noter que, bien que l’espacement des pixels est de 0,1 mm, la mort de pixel créé par le laser est supérieure à 0,1 x 0,1 mm.
L’esquisse est au bas de la page