Jump to content
ELFORUM - Forumul electronistilor
tranc3d

Idei control interpolat doua motoare pas cu pas

Recommended Posts

Vreau sa imi construiesc un sistem mecanic de gravare/inscriptionare cu 3 axe cu motoare pas cu pas.De partea de forta a motoarelor se ocupa integratele Toshiba TA8435Q care primesc comenzi step/dir.Deocamdata nu vreau sa folosesc softuri specializate gen Mach3, vreau sa incerc sa imi contruiesc un sistem cu microcontroller legat la PC care sa dea aceste impulsuri step/dir partii de forta.Pentru inceput mi-ar prinde bine sa fac o miscare liniar interpolata pe doua axe (X si Y). Daca linia care se doreste a fi trasata este ortogonala sau la 45 de grade este simplu (merge ori doar un sigur motor, ori amandoua motoarele cu aceeasi viteza). Problema este pentru liniile cu unghiuri diferite fata de acestea.Eu m-am gandit sa folosesc un microcontroller la viteza mare si un doua timere de 32 de biti. Programez timerele sa dea intrerupere la intervale de timp proportionale cu distantele care trebuie parcurse pe axa X si pe Y. Astfel, un timer va corespunde axei X si celalalt pentru Y. Cand se genereaza intrerupere pe un timer, se genereaza un impuls step pentru motorul axei respective. Aceasta metoda are ceva limitari din pacate.Cum s-ar putea face elegant si simplu? :scarpin

Link to comment
Share on other sites

Motoare pas cu pas sau motor de cc cu deplasarea controlata. E bine ca si la motorul pas cu pas sa fie un sistem de control al miscarii. Un encoder. Foarte util pentr u generare semnal eroare si altfel decat prin supravegherea curentului prin motor. Am inatalnit sisteme ieftine, care roteau un disc si aveau doar 1 senzor. Unul pentru zero. Numarau numarul de pasi necesari pentru 1 rotatie completa, iar pentru orice miscare, inainte treaceau prin zero. Total nefiabil si ca timp si ca sistem in general.Pentru problema data, luati 1 foaie cu caroiaj si incercati sa aplicati urmatorul algoritm, pentru 2 puncte identificat cu x1,y1 si x2,y2.Calculati distanta x1-x2 si y1-y2. Translatati apoi punctul 1 in 1' pe cea mai scurta cale (fie pe x, fie pe y). Punctul 1' eeste tratat in continuare ca si punctul 1.

Link to comment
Share on other sites

Salut, deci se poate, eu am facut o jucarie pe 4 axe, interpolare liniara. este de fapt un soi de interpolator pe sample-uri de timp, cu un buffer mare. greul il duce tot pc-ul, si partea de real time o face picul intr-un mod responsabil. nu cred ca se justifica sa bagi intrepretorul de gcode/dxf/hpgl in pic. si e de lucru, vreo 4-5K de linii de cod :(

Link to comment
Share on other sites

Am gasit un algoritm simplu de interpolare liniara si circulara in documentul atasat. Poate o sa mai foloseasca la cineva. Am implementat prima data algoritmii pe PC (interpolare liniara si circulara) spre test dupa care am trecut algoritmul pe interpolare liniara (miscarea circulara inca nu) pe uC (dsPIC33F). uC primeste comenzi de "nivel inalt" de la PC (prin portul serial) in fomatul: [byte1], [byte2,byte3], [byte4,byte5], [byte6,byte7] in care byte1 codifica comanda (0x01 de ex inseamna interpolare liniara pe X si Y, un byte permite codificarea a maxim 256 de comenzi diferite) iar pe restul de bytes se transmit parametrii comenzii (3 parametrii pe 16biti, a, b si c). La interpolarea liniara folosesc doar parametrii a si b in care se transmit offset-urile pe X si Y ale miscarii (numere in intervalul [-32768, 32767] care reprezinta numarul de pasi pe care trebuie sa ii faca fiecare motor de pe axa respectiva : a pt X si b pt Y). Numarul acesta de pasi se calculeaza de catre PC. PC stie dimensiunile mesei de lucru a masinii, numarul necesar de pasi pentru ca motorul sa faca o rotatie completa precum si pasul suruburilor de ghidare ale axelor. Programul PC in prima faza permite o definire interactiva grafica in coordonate reale a miscarilor liniar interpolate pe care trebuie sa le faca masina. Dupa ce s-au definit toate miscarile liniare care se doresc a fi facute in programul PC, se calculeaza toate comenzile care vor fi trimise uC. Blocul acesta de comenzi este stocat in memoria uC(sau intr-o memorie SRAM 256K x 16 legata la dsPIC) dupa care la un semnal START uC incepe sa execute aceste comenzi fara ajutorul PC. Dupa ce termina de executat aceste comenzi, semnalizeaza PC-ul asta, dupa care PC-ul ii trimite alt bloc de comenzi (daca mai are, daca programul nu a intrat dintr-o singura bucata in memoria uC).La pornirea si oprirea motoarelor am implementat o rampa liniara (trapezoidala). Ce rampa este cea mai eficienta?Miscarea nu se bazeaza pe encoder, este "open loop".

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines