Machine de commande numérique par ordinateur dessin (4 / 5 étapes)

Étape 4: Faire le CNC se déplacer correctement

La partie programmation de ce projet a été faite entièrement en VHDL, et j’ai préféré écrire mes propres implémentations de composant, bien que vous trouverez plusieurs exemples de code pour contrôler des Servos RC / DC motors.

Pour contrôler les deux types de moteurs, nous aurons besoin de mettre en œuvre un PWM (modulation de largeur d’impulsion). Si vous n’êtes pas familier avec elle essayer de chercher sur internet pour plus d’informations. Vous pouvez également lire sur comment Servos et DC motors travail, si vous voulez en savoir plus.

La période PWM sera différente pour chaque type de moteur donc en fin de compte, nous aurons 2 codes différents pour pwm pour plus de simplicité.

Commander un moteur à courant continu

Le moteur DC est contrôlé par le pont de H. Dans sa fiche technique H Bridge, nous voyons que la broche enable d’entrée doit être connectée à un signal PWM et sa période devrait être de 2 KHz. Parce que l’horloge interne Arty a fréquence de 100MHz, afin d’obtenir la période désirée horloge de 2 KHz, nous diviserons 100 MHz / 2 KHz = 50000. Alors j’ai utilisé un compteur de 0 à 49999 qui rafraîchit lorsqu’elle atteint 50000 et forces la sortie PWM signal « 1 » et un drapeau « 1 ». Pour le cycle, j’ai utilisé un autre compteur qui commence à compter avec le facteur de remplissage lorsque le drapeau est 1 "et quand il finit il forces que le drapeau de retour sur" 0". Les facteurs de remplissage sont stockés dans un tableau comme une constante dans l’architecture de PWM.

Car nous avons besoin du moteur de C.C pour arrêter lorsqu’il s’installe à certaines étapes, le signal PWM doit être 0 dans ce cas alors j’ai ajouté un autre signal d’entrée qui nous indique si le moteur devrait se déplacer ou non. Si ce n’est pas le cas, nous avons mis la sortie PWM à 0.

Dans cette étape du projet, le PWM sur le contrôleur de domaine est un peu hors de propos. On verra son importance dans les prochaines semaines, quand le codeur moteur DC et la régulation PID seront appliquées.

Pour l’instant, la direction du moteur sera automatiquement réglée selon la touche enfoncée.

Nous contrôlons les deux moteurs à courant continu de la même manière.

Commander un Servo RC

Dans cette mise en œuvre du projet est requise seulement 1 servo - le servo haut-bas. Le servo de sélecteur de plume sera montré dans la semaine suivante.

Les Servos d’entrée PWM doit avoir un 2ms période. Cela signifie un 50 Hz de fréquence. Comme avant de nous faire le calcul et nous obtenons 2000000 comte. Le principe est le même que précédemment sauf que cette fois nous ne se soucient pas si le signal PWM reste le même (en fait nous faisons, mais pas dans la façon dont nous avons pris en charge le moteur de C.C), parce qu’un certain facteur de remplissage nous donne une certaine pour le Servo.

Le servo se déplace selon une entrée provenant de l’interrupteur de planches. Il ira soit vers le haut ou le bas (dans cette position la plume sera sur le papier et dessiner).

Un composant qui unit tous les composants ci-dessus est mis en œuvre et s’appelle CNC.

=== Le Code CNC ===

---------------DC motor pwm-----------------------

type de ROM est tableau (0 à 4) d’entier ;

my_nums constant :

ROM: =

(0 = > 0, - 0 DC

1 = > 12500,--25 DC

2 = > 25000,--50DC

3 = > 37500,--75 DC

4 = > 50000--100 DC) ;

pwm_temp du signal : std_logic_vector: = « 0 » ;

signal pwm_temp_cnt : integer: = 0 ;

signal duty_temp : integer: = 0 ;

Indicateur2 signal : std_logic_vector: = « 0 » ;

sélecteur de signal : integer: = 0 ;

commencer

processus (clk)

commencer

IF(RISING_EDGE(CLK)) puis

Si selector = 0 then

pwm_temp < = « 0 » ;

elsif pwm_temp_cnt = 50000 puis

pwm_temp < = « 1 » ;

pwm_temp_cnt < = 0 ;

Indicateur2 < = « 1 » ;

d’autre

pwm_temp_cnt < = pwm_temp_cnt + 1 ;

end if ;

Si Indicateur2 = « 1 » puis

Si duty_temp = my_nums(selector) then

pwm_temp < = « 0 » ;

duty_temp < = 0 ;

Indicateur2 < = « 0 » ;

d’autre

duty_temp < = duty_temp + 1 ;

end if ;

end if ;

end if ;

terminer le processus ;

processus (move_DC)

commencer

IF(RISING_EDGE(CLK)) puis

move_DC affaire est

Lorsque « 1 » = > sélecteur < = 3 ;

Lorsque « 0 » = > sélecteur < = 0 ;

alors que d’autres = > sélecteur < = sélecteur ;

affaire de fin ;

end if ;

terminer le processus ;

pwm_clk < = pwm_temp ;

Composant principal moteur de CC------

composant PWM_DC est

Port (clk : dans std_logic_vector ;

pwm_clk : dehors std_logic_vector ;

move_DC : en std_logic_vector) ;

composant de fin ;

moveDC du signal : std_logic_vector: = « 0 » ;

commencer

PWM : pwm_dc port carte (clk, en_out, moveDC) ;

---COMMUTATEUR DU SENS DE---

Process(BTN)

commencer

IF(RISING_EDGE(CLK)) puis

btn affaire est

Lorsque « 10 » = > dir_out < = « 1 » ;

moveDC < = « 1 » ;

Lorsque « 01 » = > dir_out < = « 0 » ;

moveDC < = « 1 » ;

alors que d’autres = > dir_out < = « 0 » ;

moveDC < = « 0 » ;

affaire de fin ;

end if ;

terminer le processus ;

---RC composante primaire Servo---

my_nums constante: ROM: = ()
0 = > 80000,--1 0 = > 145000,--45 2 = > 165000,--90 3 = > 175000, -135 DC 4 = > 200000--180 DC) ;

pwm_temp du signal : std_logic_vector: = « 0 » ;

signal pwm_temp_cnt : integer: = 0 ;

signal duty_temp : integer: = 0 ;

Indicateur2 signal : std_logic_vector: = « 0 » ;

signal fr : std_logic_vector (3 downto 0): = (d’autres = > « 0 ») ;

bouton de signal : integer: = 0 ;

commencer

processus (clk)

commencer

IF(RISING_EDGE(CLK)) puis

Si pwm_temp_cnt = 2000000 puis

pwm_temp < = « 1 » ;

pwm_temp_cnt < = 0 ;

Indicateur2 < = « 1 » ;

d’autre

pwm_temp_cnt < = pwm_temp_cnt + 1 ;

end if ;

Si Indicateur2 = « 1 » puis

Si duty_temp = my_nums(button) then

pwm_temp < = « 0 » ;

duty_temp < = 0 ;

Indicateur2 < = « 0 » ;

d’autre

duty_temp < = duty_temp + 1 ;

end if ;

end if ;

end if ;

terminer le processus ;

lancer des processus (sw)

IF(RISING_EDGE(CLK)) puis

sw affaire est

Lorsque « 1 » = > bouton < = 4 ;

Lorsque « 0 » = > bouton < = 3 ;

alors que d’autres = > bouton < = bouton ;

affaire de fin ;

end if ;

terminer le processus ;

pwm_clk < = pwm_temp ;

Créer un composant principal qui sera port carte contrôleur principal moteur DC 2 fois, une pour l’axe X et un pour l’axe Y et 1 fois le composant primaire de servo RC.

Articles Liés

Hot Glue Gun extrudeuse pour votre Machine de commande numérique par ordinateur ou imprimante 3D

Hot Glue Gun extrudeuse pour votre Machine de commande numérique par ordinateur ou imprimante 3D

impression 3D encore coûte quelques dollars et peut être hors de portée de soudeur qui n'ont pas de n'importe quel budget.   L'objectif de cette instructable consiste à construire une extrudeuse d'imprimante FDM (fusionné Deposition Modeling) (indisp
Machine de commande numérique par ordinateur de bureau

Machine de commande numérique par ordinateur de bureau

il s'agit d'une machine CNC fabriquée à partir de gauche sur certaines parties de ma construction de robot d'écoles.  La seule chose que nous avons payé était le circuit imprimé pour l'exécuter.  Grand total d'environ 70 $.  Ceci a été rendu avec auc
Contrôleur pour ma Machine de commande numérique par ordinateur d’Arduino au laser

Contrôleur pour ma Machine de commande numérique par ordinateur d’Arduino au laser

si vous utilisez Linux EMC j'ai pu facilement conduire un laser de l'axe de direction de l'axe Z sur le port parallèle. Le code confidentiel conservé ce dernier État, donc si le dernier mouvement félicite était déprimé C'est resté comme ça, alors mêm
Construction d’un routeur de commande numérique par ordinateur

Construction d’un routeur de commande numérique par ordinateur

cette instructable va vous montrer comment j'ai construit mon routeur de commande numérique par ordinateur. J'espère que vous pouvez dessiner certains inspiration de ma carrure et que cette instructable sera utile pour vos projets futurs. Cette instr
Mini routeur de commande numérique par ordinateur, des plans complets et des instructions

Mini routeur de commande numérique par ordinateur, des plans complets et des instructions

Le projet de Mini CNC est un ensemble complet de plans et instructions sur la façon de construire une machine CNC 3 axes qui est fonctionnel et aussi précis. Le CNC Mini est très simple et facile à construire et si vous avez tous les matériaux et piè
Sculpture de commande numérique par ordinateur avec Neopixel

Sculpture de commande numérique par ordinateur avec Neopixel

Il s'agit d'un projet que j'aime à appeler le « nuage d'Adobe » parce que j'ai programmé mes lumières aux couleurs CMY. Il exigeait une connaissance du logiciel 3D SketchUp, Breadboarding, souder et général peinture et artisanat.Le « nuage d'Adobe »,
Ma première Machine à commande numérique par ordinateur

Ma première Machine à commande numérique par ordinateur

Cette commande numérique par ordinateur a été créé à l'aide de pièces achetés bien le projet Kickstarter www.aquickcnc.com.Voici le projet d'envoi terminé https://www.kickstarter.com/projects/ajquick/cnc-b...Le Design a été construit à l'aide de prof
Comment faire pour convertir tout imprimante 3D ou un routeur de commande numérique par ordinateur de coupage ou de machine de gravure ?

Comment faire pour convertir tout imprimante 3D ou un routeur de commande numérique par ordinateur de coupage ou de machine de gravure ?

Endurance est une axées sur la croissance russo-américain technologique start-up spécialisée dans le développement et la vente de produits technologiques, principalement des lasers, des robots et des drones.Offres d'endurance : Diode laser L-Cheapo (
Traceur de commande numérique par ordinateur Intel Galileo contrôlée

Traceur de commande numérique par ordinateur Intel Galileo contrôlée

C'est juste une intro courte quant à comment je suis allé sur la génération de table traçante de commande numérique par ordinateur. la plupart de ces est construit à l'aide de vieille imprimante et scanner pièces ou qui peuvent être facilement trouvé
Table de Plasma de commande numérique par ordinateur

Table de Plasma de commande numérique par ordinateur

Donc, vous avez acheté un coupeur de plasma et vous désirez que vous pouvez couper avec précision vos conceptions en métal. Traçant des lignes à la main donne des résultats décevants et tables de Plasma de commande numérique par ordinateur sont de so
Tabouret de Bar de routeur de commande numérique par ordinateur

Tabouret de Bar de routeur de commande numérique par ordinateur

Dans ce Instructable vous pourrez :Configuration du routeur de commande numérique par ordinateurCharger un fichier DXF et générer le G-CODE, la machine utilisera pour découper les sellesDécouper une barre de selles à l'aide du routeur de commande num
Carte du monde - palette de commande numérique par ordinateur

Carte du monde - palette de commande numérique par ordinateur

Voici comment à CNC votre propre mappemonde découpe.Ce qui suit instructable va vous montrer les étapes simples, que j'ai pris pour créer une grande coupe détailléeMatériaux et outils-Machine CNC-palette-papier sablé-couteau-percer-colliers de serrag
Comment faire des meubles de commande numérique par ordinateur

Comment faire des meubles de commande numérique par ordinateur

Le but de l'Instructable doit montrer au spectateur comment concevoir des meubles à couper à l'aide d'une machine à commande numérique par ordinateur (CNC). Meubles de commande numérique par ordinateur peuvent être conçus pour utiliser fournitures mi
Définition de limites de Soft pour votre routeur de commande numérique par ordinateur industriel

Définition de limites de Soft pour votre routeur de commande numérique par ordinateur industriel

lorsque vous êtes mise en route, afin de s'assurer que votre routeur de commande numérique par ordinateur industriel ne fonctionne pas dans le côté de la table, il peut être une bonne idée de mettre en place des limites dans votre logiciel de Mach 3