tranc3d Postat August 2, 2010 Partajează Postat August 2, 2010 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? Link spre comentariu
marinescug Postat Septembrie 26, 2010 Partajează Postat Septembrie 26, 2010 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
puiu Postat Septembrie 27, 2010 Partajează Postat Septembrie 27, 2010 1. Daca uP este legat la PC, trebuie sa fi foarte clar ce vrei sa faca uP si ce PC? Link spre comentariu
marinescug Postat Septembrie 27, 2010 Partajează Postat Septembrie 27, 2010 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
bogdanel Postat Octombrie 17, 2010 Partajează Postat Octombrie 17, 2010 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
tranc3d Postat Octombrie 19, 2010 Autor Partajează Postat Octombrie 19, 2010 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
bogdanel Postat Octombrie 19, 2010 Partajează Postat Octombrie 19, 2010 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
sabinescu2006 Postat Noiembrie 30, 2010 Partajează Postat Noiembrie 30, 2010 ceva noutati? ma intereseaza si pe mine acest subiect! Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum