Sari la conținut
ELFORUM - Forumul electronistilor

Probleme proiectare driver microstep


izua

Postări Recomandate

De mai multe luni gândesc proiectarea unui driver de microstep pentru motoare pas cu pas. Din punctul meu de vedere, exist? dou? probleme care trebuiesc rezolvate.Prima este limitarea puterii în motor, prin limitarea curentului maxim. Motoarele care functioneaz? în microstep au de obicei tensiunea la borne de la 3x mai mare decât tensiunea recomandat?, tocmai pentru a men?ine puterea total? în specifica?ii. Având tensiunea mai mare aceste motoare pot accelera mai rapid datorit? cre?terii rapide a curentului prin bobine. A doua problem? este generarea unui curent intermediar pentru a genera subpa?ii. Deci set?m un curent maxim, în func?ie de tensiunea aplicat? pe faz?, dup? care alegem 4, 6, 8, 13 sau oricâ?i al?i curen?i intermediari pân? la acea valoare maxim? pentru a pozi?iona axul în subpas.Eu am încercat realizarea unui chopper de curent, simulat în swcad (care exceleaz? la simul?ri de sisteme în comuta?ie ?i e gratuit). A reu?it într-o oarece m?sur?, cu piese mai mult teoretice (sarcin? pe poart? mic?, rezisten?? dren? surs? ?i mai mic?) s? ajung? pe la 100khz în oscila?ia între?inut?. Acum problema vine în intercalarea acestui chopper cu o punte H, care s?dea sensul pe una din cele dou? faze, ?i aplicarea unui semnal modulat pe jum?tate din puntea H pentru a realiza subpasul (chopperul fiind folosit pentru a limita curentul maxim). Problema e c? nu m-am prins cum s? leg un chopper de o punte H f?ra a afecta func?ionalitatea final?.O alt? variant? la care m-am gândit ar fi realizarea limit?rii de curent printr-un pwm rapid (dat de un controller sau fpga) ?i realizarea microstepului printr-un pwm mai lent, s? zicem f/5 sau f/10 din pwmul principal.Problema care intervine în ambele cazuri este c? ambele semnale controleaz? sarcina (bobina motorului) - doar asta se ?i dore?te, nu? - ?i calculele devin mult mai complicate (ce valori de semnal duc la ce curent maxim pe faz?). M? gândesc c? aici s-ar rezolva empiric, da mi-e fric? când m? gândesc câ?i tranzistori or s?ri în aer la modul ?sta.Ultima varianta mai fiabil? mi se pare ce a f?cut ?i maris de la gecko/geckodrive. Un fpga/cpld genereaz? un semnal/punte H (deci dou? semnale per faz?) de vitez? ?i rezolu?ie mare. Astfel, dup? ce se cunoa?te digital atât curentul maxim dorit, cât ?i % din acest curent (microstep), se genereaz? un semnal dreptunghiular care trece prin driverele de tranzistori ?i tranzistori. Complica?ia dracului, ?i evident scump (cpldurile capabile nu-s ieftine decât dac? le iei cu camionu, de fpgauri nu mai zic..)Ce p?rere ave?i? A realizat cineva un driver de microstep cu limitare de curent _bun_ ? Am g?sit 500 de kitsch pe net, care zic c? halfstepul e microstep, cu l293 ca ie?ire de putere ?i alde asemenea. Am v?zut kitschuri ?i de la firme mari, precum a3986 de la allegro. Ca s? nu mai vorbesc de sutele de chinez?rii de pe ebay sau de la motioncontrol, care sunt atât de complicat f?cute ?i s-a investit atâta timp în cercetarea ?i proiectarea lor, încât faimo?ii electroni?ti chinezi au decis distrugerea primului strat de pe integrate (?la cu numele ?i data de fabrica?ie a chipului) pentru a le proteja secretele. ?i în final tot de 8 ori mai mari ca un gecko au ie?it, ?i tot ca dracu se încing.O fi teoria controlului în microstep ?i recircul?rii curen?ilor a?a complicat?, de pân? la ora actual? nu exist? un driver bun (microstep programabil, limitare de curent, morphing) realizat open source/open hardware? C? platforme zic eu c? exist?.

Link spre comentariu
  • Răspunsuri 5
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Laci

    3

  • izua

    3

Top autori în acest subiect

Nu stiu ce intelegi tu prin kitsch, dar allegro are integrate bune cu toate functiile ce ai tu nevoie, este si A3977 care are integrat cele doua punti DMOS. De ce spui ca cpld/fpga e scump? nu-i scump deloc costa intra 3-30E depinde de care ai nevoie. Chestia este ca daca deja vrei ceva industrial si sa fie open source, open hardware, complet functional exact cum vrei tu, si sa mai aiba si cineva care te ajuta sa pui in functiune, asa ceva nu exista, sa spun sincer daca asi avea ceva similar asi cere bani pentru proiect.Dar sa revenim la problema, daca studiezi integratele de la allegro o sa ai o idee cam cum se poate face, problema vine de la controlul curentului, trebuie sa ai o bucla rapida. Daca totusi vrei sa faci de la 0,(de dragul stiintei :) ), pentru inceput lasa controlul de curent, pune o rezistenta de balast in serie cu bobine si comanzi puntile fara feedback, relativ usor de facut cu microcontroller, dupa asta faci si regulatoarele de curent aici o sa ai nevoie de cunostinte temeinice de programare asm,C folosind la greu intreruperile si o arhitectura buna cu un atmel cu clock 20MHz poti sa faci 2 regulatore de curent cu frecventa fixa de 15-20kHz, daca vrei ceva mai rapid trebuie sa folosesti adc, dac extern si fpga.

Link spre comentariu

DAC nu cred c? e necesar, decât dac? lucrezi cu un opera?ional înseriat cu rezisten?a de feedback. Nebunii cu controllere ?i fpgauri am f?cut cu carul, inclusiv control de steppere d-?la urât în halfstep cu rezisten?e de limitare :) problema e c? s? dai 30 de euro pe un fpga care intr? într-un singur driver de microstep, va fi cam scum pre?ul lui final, nu?Integratele allegro sunt kitsch. Sunt utile unor chestii mici, dar eu d-aia am zis industriale. A3977, duce 33v, 2 amperi. Un pic dac? te duci mai sus de valorile astea ?i bum. Eu m? refer aici la chestii serioase, de la 3-4 amperi în sus. A3985/3986 au tabela de trigonometrie de numa' liniari nu ai pa?ii (pe încercate cu ambele).Eu zic e c? regulare de curent ?i microstep nu prea ai cum pe un controller la 20MHz. Dac? vrei purt?toarea la 16 bi?i (ca s? po?i face ambele chestii, s? zicem 8 bi?i semnificativi curent, 8 LSB microstep) atunci o s? ai o vitez? de 20000000/2 (parc? a?a e la avr) / 16000000, deci extraordinara viteza de 6.25hz. Cuno?tiin?ele exist?, atât la limbaje de programare software pentru diverse platforme (avr, pic, arm, etc..) cât ?i limbaje de descriere hardware pentru fpgauri, nu asta e problema. Dac? vrei vitez?, s? zicem 20khz ca s? iasa din spectrul audio (chiar ?i 16 ar fi ok), o s? avem 20000000/ (20000*2), 500 valoarea maxim?, adic? aproape 9 bi?i. Dac? dai 4 la reglaj de curent, ?i 4 + restu pân? la 500 la microstep, atunci nu o s? po?i ob?ine nici mare microstep (4 bi?i ar fi 16 liniar, deci poate în 8 pa?i s-ar sinusoida), ?i nici ?ia 4 bi?i nu vor ajuta la reduc?ia de curent, în m?sura în care puterea total? în motor cre?te p?tratic.De-asta doar metoda pe care o spui tu, cu reglajul curentului prin rezisten?e de balast merge.. Da ?tii cât se încing alea, nu?Ce urm?resc eu aici e adunarea de idei, sunt sigur c? în ra?ionamentul meu, expunerea problemelor ?i generarea pu?inelor solu?ii am gre?eli. Poate cineva m? corecteaz?, poate se vine cu o alt? solu?ie ?i se realizeaz? ceva. Nu cer o persoan? care s? m? ajute la fiecare pas, asta ar fi aberant :)Deci, ce metode de a rezolva aceaste 2 probleme vede?i? Eu m? mai gândeam la op?iunea de a folosi un controller care are PLL intern, ?i se folose?te de o frecven?? mult mai mare decât clockul principal pentru stagiile generatoare de frecven?? (timere), putând ob?ine astfel rezolu?ii ?i viteze mai mari. Da' din auzite, nu ar fi prea stabile..

Link spre comentariu

Eu cred ca asi putea sa fac cu un atmega88 de ex. un driver de microstepping cu reglaj de curent cu frecventa fixa 15-20kHz :)nu prea inteleg ce calcul ai facut si ti-a iesit 6.25Hz. A3986 se poate extinde cu niste ir2110 sau orice alt driver de tensiune mare, iar feedbackul poti face isolat, ma rog solutii sunt destule.

Link spre comentariu

p?i am împ?r?it frecven?a procesorului 20MHz, la 2, cum zice în datasheet, deci avem 10 MHz. ?ia 10 Mhz înseamn? c? asta e viteza maxim? a PWMului la rezolu?ie minim?, adic? 1 bit. Calculeaz? tu pentru 16 bi?i. De?i am impresia c? ar trebui s? împar?i la valoarea maxim? (65535) c? pân? acolo trebuie s? numeri (?i va fi undeva mai sus frecven?a maxim?, pe la 152hz). Am gre?it eu cu ni?te zerouri acolo, vroiam s? împart la 16000, nu la 1600000, 16000 find frecven?a la care a? fi vrut s?comand tranzistorii. Dar tre s? împart la valoarea rezolu?iei maxime ca s? ob?in frecven?a, relativ logic.eu când zic microstepping m? refer la 8, 16, halfstep nu se pune ca microstepping :) din ?la, ?i-am zis, am f?cut ?i eu cu reglaj de curent, chiar nu e dificil.Te-ai jucat cu 3986? Nu e chiar ce scrie pe datasheet. Te a?tep?i s? mearg? motoru ok, ?i când colo, face ca dracu - pa?ii sunt complet inegali, tabela trigonometric? e mai mult liniar?, cuplu nu e constant, motoarele se încing urât de tot. Eu vreau o solu?ie cât mai fiabil?, solu?ii evident c? sunt destule, putem face comanda de mpp cu un registru de deplasare ?i un uln, asta nu înseamn? ?i c? a?a trebuie f?cut.

Link spre comentariu

Sincer nu am folosit 3986, stiu ce-i microstepping.Uite eu asi face asa: cate o bucla de reglaj curent/bobina aici este nevoie de pwm. pentru comanda deplasarii pur si simplu activezi iesirile respective in secventa dorita, de restul se ocupa bucla de curent. In datasheet scrie clar ca poti selecta un prescaler 1 asta inseamna 20MHZ pentru modulul pwm, unele pic-uri au si post scaller, nu inteleg de ce vrei 16biti pentru reglajul curentului, 8 biti dual-slope ajung atunci ai ~37kHz, o alta problema mai interesanta: cum eviti rezonanta ca atunci se pierde cuplul.

Link spre comentariu

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