Sari la conținut
ELFORUM - Forumul electronistilor

Idei control interpolat doua motoare pas cu pas


tranc3d

Postări Recomandate

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 spre comentariu
  • 1 lună mai târziu...
  • Răspunsuri 7
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • bogdanel

    2

  • tranc3d

    2

  • marinescug

    2

  • puiu

    1

Top autori în acest subiect

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 spre comentariu

1. Daca uP este legat la PC, trebuie sa fi foarte clar ce vrei sa faca uP si ce PC?

Cel ami simplu ar fi ca uP sa ia din PC un DXF si sa execute ce scrie in ala, altfel trebuie scris si softul pentru PC.
Link spre comentariu
  • 3 săptămâni mai târziu...

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 spre comentariu

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 spre comentariu

Fain articolul, mi-ar fi prins bine atunci cand m-am apucat de treaba. Si eu am pornit tot asa, doar ca folosesc timpul ca si axa virtuala. Aici ai avantajul ca folosesti un timer cu frecventa fixa.

Link spre comentariu
  • 1 lună mai târziu...

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări