L'idée de fabriquer une machine à la maison avec ses mains n'est pas nouvelle. Quiconque pense à la mise en œuvre d'un tel équipement à la maison doit être guidé par son motif de création. Cela est nécessaire pour moi, car par nature je n'ai pas autant de mains droites pour fabriquer de bonnes pièces, même plus ou moins globales, et souvent la tâche se pose de fabriquer la pièce complexe exacte, que la machine peut bien gérer. Il y a toujours assez de nouvelles idées et d'idées pour la mise en œuvre, mais pas beaucoup de temps.
En bref sur l'auteur
4- , « », « », « ».
Spoiler
. , . , , , . . , - , .
Termes de référence ou à quoi s'attendre à la sortie
La fraiseuse résultante doit satisfaire aux conditions suivantes:- Avoir un espace de travail acceptable
- Avoir une vitesse axiale acceptable
- Pour traiter des pièces de bois de dureté moyenne et élevée. Idéalement gérer l'aluminium
La règle principale des machines est la rigidité. Plus la rigidité de la machine est élevée, moins les vibrations, le jeu, l'affaissement, les coudes et autres défauts qui affectent la qualité des ébauches traitées sont réduits. Étant donné que la machine sera fabriquée entièrement à la maison, le seul matériau qui peut vraiment être traité en quantité en ce sens à la maison et à partir duquel il sera possible de faire le lit de la machine - un arbre. Bien sûr, il existe différents types. Et faute de gros capital, pour l'étudiant , tout ce qui se trouvera servira à créer. Et ceci est essentiellement une planche échantillon avec une perceuse d'un arbre plutôt mou. Bien qu'il y ait aussi de petites feuilles de contreplaqué. Ce qui est riche, alors il sera utilisé.Il convient également de noter sur quel contrôle de la machine sera lancé. Il y a un ordinateur très ancien, son rivage est à peu près à de telles fins. AMD Duron 1,2 GHz, RAM 768 Mo, 64 Mo de mémoire vidéo, disque dur 20 Go. Juste adapté à ces fins. La gestion se fera sous Linux CNC. Car Mach3 sous Win ne voulait pas travailler intelligemment. Il a besoin d'un peu plus de ressources.Développement
Le développement de la machine sera divisé en plusieurs parties.- Développement d'un contrôleur de moteur pas à pas
- Développement d'un pilote de moteur pas à pas
- Conception d'isolation optique
- Élaboration d'un plan de nutrition
Il faut dire tout de suite que le développement de la partie mécanique en tant que telle était absent, car il n'y a pas tellement d'expérience pour développer et anticiper quelque chose. Par conséquent, le développement a été effectué immédiatement au stade de l'assemblage.Développement d'un contrôleur de moteur pas à pas
Un contrôleur de moteur pas à pas sera développé sur un microcontrôleur PIC. Pourquoi? Premièrement, il fallait enfin comprendre comment fonctionnent les moteurs pas à pas, deuxièmement, c'était plus intéressant, troisièmement, la même puce L297 finie coûtait un peu cher pour une raison quelconque, et en conséquence, elle s'est avérée être assemblée sur le microcontrôleur un peu moins cher.
Comme le microcontrôleur de contrôle a été pris PIC16F630. Il a un minimum de périphérie et un nombre suffisant de pattes à contrôler. Le port C est pour la sortie directe des impulsions de commande. Les broches A1, A2 ont des signaux d'entrée DIR, STEP. La broche A2 est activée en mode d'interruption externe et DIR fonctionne comme une broche d'entrée régulière. Le contrôleur est lancé par quartz à 20 MHz.Le code a été écrit en C à l'aide d'un petit insert asm et compilé sur le compilateur CCS C.#include <16f630.h>
#case
#FUSES NOWDT
#FUSES NOMCLR
#FUSES HS
#FUSES PUT
#FUSES BROWNOUT
#use delay(clock = 20 MHz)
#use fast_io(C)
#opt 9
#define DIR PIN_A1
#define CLK PIN_A2
#define LED PIN_A0
#zero_ram
const int steps[256] =
{
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101
};
unsigned int8 nowStep = 0;
#INT_TIMER1
void LoadDrop_isr()
{
output_c(0);
}
#INT_EXT
void clk_isr()
{
#asm asis
BTFSC 05.1
INCF nowStep,F
BTFSS 05.1
DECF nowStep,F
#endasm
output_c(steps[nowStep]);
set_timer1(0);
}
void main()
{
output_a(0);
input_a();
set_tris_c(0);
output_c(0);
setup_comparator(NC_NC_NC_NC);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(0);
ext_int_edge(L_TO_H);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
unsigned int16 blinkCounter = 0;
MAIN_LOOP:
if(!blinkCounter++)
output_toggle(LED);
goto MAIN_LOOP;
}
Pour décrire le code, il sera plus facile de commencer par la logique du contrôleur. Lorsque le contrôleur démarre, la configuration initiale du fer et l'inclusion d'interruptions se produisent. Le numéro d'étape est stocké dans la variable 8 bits non signée nowStep et au début, le nombre est zéro. Ensuite, le cycle de programme perpétuel est démarré dans MAIN_LOOP dans lequel il y a simplement un clignotement de la LED connectée à la broche A0. Pour quoi? D'une part, il est clair que la pierre n'a pas gelé, et d'autre part, des effets spéciaux! La broche A2 est configurée pour une interruption externe sur un front ascendant. Lorsqu'un événement est enregistré sur le pied, l'interruption INT_EXT est traitée au cours de laquelle la prochaine étape est commutée. Pour afficher l'étape suivante, un incrément ou une décrémentation du pointeur d'étape nowStep se produit, selon le DIR d'entrée.Ensuite, à partir du tableau d'étapes étapes de la position nowStep, une nouvelle combinaison de commutation des enroulements du moteur s'affiche dans le port. De plus, au début de l'initialisation du microcontrôleur, la temporisation 1 est mise en place et démarrée Cette temporisation réinitialise les signaux de sortie pour éviter une surchauffe des moteurs. Le temporisateur réinitialise les signaux de sortie environ 100 ms après avoir réglé le signal. Autrement dit, il s'agit d'une mesure purement préventive.Dans la simulation, il a été possible d'obtenir une période de signal CLK de 15 μs, ce qui correspond à une fréquence de 66. (6) KHz. Pour la première fois, ce n'est pas mal, je pense cependant qu'une optimisation supplémentaire est possible.Développement d'un pilote de moteur pas à pas
Il n'est pas nécessaire d'aller loin. Schéma typique. Le pilote est construit sur la base du pilote fini L298N.
Pourquoi les résistances R1 - R4? Honnêtement, je ne sais pas. Dans un premier temps, la documentation va au circuit en liaison avec L297, toute communication sans résistances. Cependant, sur Internet, j'ai trouvé des circuits avec des résistances sur les lignes. J'ai regardé le schéma de principe dans la fiche technique du L298N. Toutes les lignes INPUT vont à l'élément d'entrée inversé AND. Rien ne devrait arriver sans résistances. Mais j'ai décidé de ne pas le risquer et juste au cas où l'insérer, cette fois. Ce ne sera pas bien pire, la pente du front à l'entrée va chuter.Le reste du schéma reprend celui donné dans la fiche technique.Conception d'isolation optique
La carte optocoupleur sert à protéger la machine de commande, en l'occurrence l'ordinateur, de la partie puissance de la machine. Donc, si quelque chose commence à fumer du côté de la machine, il ne fumera que jusqu'à la carte opto-coupleur et minimisera les dommages.Le schéma est assez grand, alors cliquez pour voir la taille réelle. Initialement, des optocoupleurs 4N25 ont été pris. Car je pensais que tout optocoupleur d'aujourd'hui s'étendrait à 60 kHz. Mais en fait, non, ils ne l'ont pas étiré, ils n'ont pas eu le temps. Par conséquent, j'ai dû le remplacer par du 6N135, dont les performances sont beaucoup plus élevées (jusqu'à 2 MHz en termes de fiche technique). Par broches, elles ne sont pas directement compatibles, cependant, il était possible de les insérer sans altérer la carte entière. Je n'ai pas fait de nouveau plan, je pense que celui qui veut, pourra recharger le conseil d'administration par lui-même.
Comme il se doit, la puissance du circuit est divisée en deux parties, du côté machine et du côté ordinateur. Côté ordinateur, l'alimentation est fournie via le câble USB, c'est son seul objectif. Du côté de la machine se trouve déjà n'importe quel faisceau de fils de 5 V.Élaboration d'un plan de nutrition
De plus, comme tout se faisait non pas en monolithe, mais en petits blocs, il fallait séparer plus de fils que d'habitude pour l'alimentation et pour les signaux. Par conséquent, pour simplifier le câblage, j'ai décidé de créer une petite barrette séparée avec des connecteurs pour distribuer l'alimentation sur les lignes 12 V et 5 V. La barrette d'alimentation
contient six connecteurs pour les lignes 5 V et 12 V, ainsi que deux connecteurs séparés pour connecter les refroidisseurs.Montage et résultat
Comme je n'ai pas commencé à prendre des photos dès le début et qu'il n'était pas prévu d'écrire un article, de nombreuses étapes d'assemblage sont manquantes, mais je vais montrer celles qui le sont. Toutes les photos de cette section sont cliquables.Faire un pilote de moteur pas à pas
Déplacement de l'image avec LUT: Gravé et étamé: Percé: Scellé: Ensuite, il a fallu répéter le succès pour 2 axes supplémentaires:





Fabrication de panneaux d'isolation optique
Déplacé LUTom et corrigé avec un marqueur:
Gravé:
Taché: Assemblé
toute l'électronique:


Assemblage de la machine
La machine a été assemblée à partir de panneaux de contreplaqué de 10 mm d'épaisseur et de 18 mm. Lors de l'assemblage, des guides de meubles ont été utilisés, c'était mieux pour la première fois que je n'ai rien trouvé, et psychologiquement je n'étais pas prêt à traiter au moins les mêmes coins métalliques.Au début, il y avait une telle construction:
La première version de l'axe Z:
Mais si je comprends bien maintenant, ce n'était pas bon du tout, tout tournait en quinconce. En général, il n'a été question d'aucune rigidité.Une autre tentative a suivi:
Au cours de laquelle les axes X et Y ont été déplacés vers une plate-forme séparée et transformés en une table mobile:
C'était déjà mieux, mais toujours très loin de quelque chose qui ne chancelait pas. En conséquence, je suis venu à cette option:
Cependant, l'axe Z tremblait et se pliait toujours trop. Cette fois, je me suis assis et j'ai bien réfléchi et j'étais déjà engagé dans une certaine conception. Le résultat a été cette conception:
des coins égaux en aluminium avec une étagère de 25 mm et une épaisseur de 2 mm ont été utilisés comme guides. Je n'ai pas pu trouver d'acier. Ils seraient bien mieux. Bien entendu, les directives pour la fabrication industrielle ne peuvent toujours pas être comparées.Chariot mobile:
nouvel axe Z assemblé:
résultat. Vous pouvez remarquer que l'axe assemblé, et la conception dans son ensemble, diffère toujours même de celui conçu. Néanmoins, l'alignement et le centrage de l'axe lorsque vous n'avez besoin que d'un pied à coulisse et d'une perceuse à main est une tâche assez difficile. J'ai donc dû changer d'avis et expérimenter en déplacement:
Échantillons pour broyer quelque chose:Même avec un si grand nombre, même avec un design aussi imparfait, j'ai réussi à créer quelque chose qui fonctionnait et le résultat m'a impressionné.Ordinateur de contrôle
Le logiciel de contrôle des machines CNC doit fonctionner sur des systèmes en temps réel pour générer des signaux synchronisés avec précision. Par conséquent, Windows n'est pas bien adapté à cela. Bien sûr, pour un fonctionnement correct, des pilotes sont écrits pour résoudre ce problème, mais généralement cela nécessite plus de ressources, et la stabilité d'un tel système est inférieure à celle des systèmes en temps réel.Le traitement a été effectué sous le contrôle de LinuxCNC. L'installation et la configuration ne devraient pas causer beaucoup de difficultés. Le site Web du programme a déjà des constructions toutes faites et des sources gastronomiques. Il existe plusieurs méthodes d'installation: sur un système déjà installé ou à partir de zéro avec un système d'exploitation configuré. J'ai choisi la deuxième option, car je n'avais pas beaucoup d'expérience avec Linux et il n'y avait pas assez de temps pour traiter le processus de correction. La deuxième option est une distribution Debian régulière avec un noyau RTC et LinuxCNC déjà installés.Après l'installation, il est nécessaire d'ajuster l'axe des machines: cartographie du signal, vitesse, accélération, etc. Le résultat est un fichier de sortie pour le démarrage qui, une fois lancé, montrera le programme de contrôle de la machine lui-même avec les paramètres spécifiés.Conclusion
À la suite du travail effectué, il reste de nombreuses impressions, ainsi que des questions et des tâches pour améliorer la machine résultante.- Pour augmenter la tension des moteurs de 12 V à leur 24 V de travail
- Renforcez la conception et préparez idéalement une nouvelle conception de machine avec une conception complète préliminaire
- Ajouter des interrupteurs de fin de course et un bouton d'arrêt d'urgence
- Optimiser le fonctionnement des contrôleurs de moteur
- Remontez l'électronique de la machine sur une seule carte, à l'exception de la carte opto-isolante
- Remplacez la broche de la machine par celle qui correspond à l'objectif. C'est un moteur très dynamique et plus puissant que le graveur chinois actuel.
- Remplacez le moteur sur l'axe Z, car le moteur actuel est moins puissant et le plus chargé
La machine résultante a une zone de travail de plus de 270 mm le long des axes X et Y et d'environ 150 mm le long des axes Z. Les vitesses de déplacement le long des axes X et Y sont supérieures à 500 mm / s et le long des axes Z 300 mm / s. Il s'agit d'une tension de fonctionnement de 12 V. C'est la moitié de leur performance. Il y a de la place pour grandir.Ce qui peut être dit avec certitude - cela en valait la peine. Au moins une tâche que la machine fera bien maintenant: les planches à découper. Vous pouvez oublier la gravure et la LUT. Les planches à découper ont bien sûr leurs inconvénients, mais il vaut mieux avoir des alternatives que la seule option. Dans la vidéo, on a vu comment une fraise de 3 mm fraisait la lettre M, peut-être avec une faible vitesse d'avance et des couches de 0,1 mm, mais c'est aussi le résultat.Diffuser certaines cartes source ou PCB ne voient pas grand chose pour l'instant. La machine n'a pas fonctionné adaptée à des charges graves ou assez stable et unique. Cependant, ce n'est pas la dernière tentative de faire quoi que ce soit et la prochaine itération de développement est en préparation, j'espère, une meilleure.