Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

microstepping

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] microstepping

Messaggioda Foto Utentelcua31989 » 24 mag 2015, 21:17

Ciao a tutti,

sto documentandomi per realizzare un driver per motore stepper semplice con PIC. Ancora non ho definito quale PIC usare se la serie a 8 bit o passare alla 32 direttamente. Nel driver che sto progettando dovrebbero essere disponibili 6 profili di funzionamento tutti con un controllo in corrente sia sul coil A e B del relativo motore. I profili di funzionamento sono:

- Full step torque
- Half step torque
- 1/4 step torque
- 1/8 step torque
- 1/16 step torque
- 1/16 step torque

In giro per la rete ho trovato le formule per calcolarmi le correnti Ia e Ib nelle diverse fasi di configurazione con la percentuale in PWM da applicare al driver di potenza. Allego qui il file excel da me calcolato. Se qualcuno vuole dare un'occhiatina al file delle volte ottengo un PWM con la percentuale negativa.

So che i PIC hanno un modulo apposito per fare dei pilotaggi in PWM che è il CCP oppure l'ECCP per i PIC più nuovi.

Come è possibile dare un PWM negativo? Non credo sia possibile.
C'è qualcuno che può aiutarmi a capire meglio?

Saluti
lcua31989
Allegati
Stepper_Tables.zip
(22 Byte) Scaricato 31 volte
Avatar utente
Foto Utentelcua31989
58 1 1 7
Frequentatore
Frequentatore
 
Messaggi: 189
Iscritto il: 28 nov 2012, 23:37

0
voti

[2] Re: microstepping

Messaggioda Foto Utentebobina » 24 mag 2015, 22:28

Il file zip non ha file all'interno, cosa intendi per PWM negativo?

Per poter pilotare un motore con un PWM, devi definire 2 parametri, la frequenza ed il duty cycle.
La frequenza di solito è fissa ed è abbastanza bassa di solito si sceglie una frequenza oltre le frequenze udibili.
Il duty cycle che di solito è espresso in percentuale ed è il valore che decide per quanto tempo l'onda quadra deve avere un segnale alto.
Ad esempio un duty cycle al 50% di una frequenza 50KHz avrà un segnale alto per 10 uS ed un segnale basso per altri 10uS. Se invece la percentuale fosse 90% avresti un segnale alto di 18uS ed un segnale basso di 2uS.
Comunque quando metterai il foglio excel vediamo le formule usate.

EDIT
Questi 2 calcolatori di PWM per PIC potrebbero esserti utili

http://www.micro-examples.com/public/mi ... lator.html
http://eng-serve.com/PIC/pic_pwm.html
Avatar utente
Foto Utentebobina
212 6
Frequentatore
Frequentatore
 
Messaggi: 177
Iscritto il: 27 dic 2009, 14:22

0
voti

[3] Re: microstepping

Messaggioda Foto Utentelcua31989 » 24 mag 2015, 22:33

Chiedo scusa per il file zip... Ora provo a riallegarlo. Se noti nella pagina 1_8 torque allo step 9 trovi 98% e -20% rispettivamente per Ia e Ib.

Come faccio ad implementare quella tabella?

Ciao
lcua31989
Allegati
Stepper_Tables.zip
(19.05 KiB) Scaricato 34 volte
Avatar utente
Foto Utentelcua31989
58 1 1 7
Frequentatore
Frequentatore
 
Messaggi: 189
Iscritto il: 28 nov 2012, 23:37

1
voti

[4] Re: microstepping

Messaggioda Foto Utenteangel99 » 24 mag 2015, 23:00

L'errore che hai commesso, mi riferisco solo alla parte dei calcoli, è di considerare le correnti negative come generate da PWM negativi. Per valori di corrente negativi, il PWM deve essere sempre positivo, ma il ponte deve alimentare il carico con polarità inversa.

Un altro errore, ben più grave, è quello di pensare di poter alimentare uno stepper in PWM. Non si può. O meglio, si può fare, ma si ottengono risultati neppure lontanamente paragonabili a quelli che ci si potrebbe aspettare. Il metodo corretto è quello isteretico, ed è molto più complesso di un semplice PWM.

Ti consiglio di guardare i datasheet di due integrati della ST L6258 e L6470. Qui le cose sono spiegate bene, ma proprio bene. Più che guardarli dovresti cercare di capire bene ogni singola parola.

Dopo aver capito come si fanno veramente i driver per gli stepper (ST li sa fare), potrai sganasciare anche tu per tutte le cazzate che si trovano in rete su PWM e compagnia.
Avatar utente
Foto Utenteangel99
3.516 1 4 11
Master
Master
 
Messaggi: 1148
Iscritto il: 23 gen 2015, 19:39

1
voti

[5] Re: microstepping

Messaggioda Foto Utentegill90 » 24 mag 2015, 23:05

A occhio ciò significa che dovrai far scorrere la corrente nella direzione opposta: una PWM non è altro che una tecnica per ottenere ampiezze intermedie e il fatto che sia negativa implica che la tensione fornita deve essere di segno opposto. In pratica devi invertire i collegamenti dei pin: laddove prima alimentavi con 5V-0V, adesso devi alimentare con 0V-5V. Questo lo puoi fare con un ponte H, oppure con un relè.
Avatar utente
Foto Utentegill90
2.156 5 7
Expert EY
Expert EY
 
Messaggi: 695
Iscritto il: 1 set 2011, 16:18

0
voti

[6] Re: microstepping

Messaggioda Foto Utentelcua31989 » 31 mag 2015, 22:48

Ciao a tutti,

Ho dato un'occhiata ai documenti che mi ha linkato angel99, ma onestamente tutto quel casino di controllo che fanno i chip di ST dedicati adibiti a tale funzione non è che mi servano tanto, poiché vorrei fare un circuito didattico che implementi quasi tutte le modalità di pilotaggio per il motore stepper. Io sto dando un'occhiata a questo documento: http://ww1.microchip.com/downloads/en/AppNotes/00822a.pdf, un application note di microchip che in certi aspetti non approfondisce. Così mi sono nati alcuni quesiti.

Ricapitolando se volessi fare un controllo banale in PWM con segno devo usare:

- un microcontrollore (e qui mi sembra ovvio)
- una logica di pilotaggio per il ponte H
- un ponte ad H preferibilmente MOSFET (li preferisco ai transistor). Il problema è che questo circuito ha un
L298 che a me non piace molto ho correnti limitate, a me serve un ponte ad H con almeno 5 Apere di carico
con almeno una Vmotore da 50Vcc.
Ho visto in giro per la rete la realizzazione di questi ponti e a me piace molto la soluzione 2 mosfet di
canale P e 2 mosfet di canale N. Però ho visto anche una soluzione tipo questa: https://www.google.it/search?q=ponte+ad+h+mosfet&rlz=1C1AVNG_enIT632IT632&espv=2&biw=1920&bih=1017&source=lnms&tbm=isch&sa=X&ei=tGZrVZW9Isa67gb_1YPQCw&ved=0CAYQ_AUoAQ&dpr=1#imgrc=dRPF1Me16zidSM%253A%3BlyhT-7Aeeb8McM%3Bhttp%253A%252F%252Fwww.vincenzov.net%252Ftutorial%252Fmotoridc%252Fponte-H.gif%3Bhttp%253A%252F%252Fwww.vincenzov.net%252Ftutorial%252Fmotoridc%252Fdriver.htm%3B544%3B297. Domanda è corretta questa soluzione? A scuola non abbiamo affrontato i MOSFET so veramente poco e mi toccherà aprire il libro di nuovo. perché usare 4 mosfet uguali e non 2P +2N?

Avendo poi due ponti ad H dovrei fare in modo di:
- Invertire il verso della corrente con un pin per ciascun ponte.
- Una uscita PWM per ciascun ponte

E qui ci pensa la logica di controllo, che avendo scelto il ponte con mosfet H 2P e 2N, l'ho progettata e simulata pienamente funzionante. Siccome mi voglio complicare la vita, vorrei inserire una resistenza di shunt per ciascun ponte ad H che possa fare in modo di monitorare, attraverso dei convertitori AD, l'ampiezza di corrente (opportunamente convertita in tensione, ovviamente). Tale resistenza avevo pensato di inserirla da 0.1 ohm che mi servirà per fermare il motore qualora si andrà in overcurrent.

L'application note dice che (dalla toeria del microstepping) il PWM A e B si calcolano:
- Ia = IPEAK * sin(θ)
- Ib = IPEAK * cos(θ)

Ora io non so come interpretare questa IPEAK se un valore approssimabile a 1 per via della formula riportata di sotto all'application note, se il valore letto come feedback dall'adc oppure la corrente nominale. Qualcuno mi sa spiegare?

Ancora un dubbio sul PWM con frequenza da 25KHz. A seguito di un impulso ricevuto su un pin del PIC l'indice si incrementa di 1 e l'indice della tabella avanza di +1. Essendo questo il primo impulso partendo dalla posizione 0 mi ritrovo in posizione 1 dove il PWM A passa da 0% a 5% mentre B resta al 100%. Se non ricevo un altro impulso devo sempre garantire su A un PWM del 5% fino al prossimo impulso? (ovviamente anche per B) Autorispondendomi direi proprio di sì altrimenti il motore perderebbe di coppia spegnendosi, altrimenti. Dico Giusto?

Grazie mille a tutti per la pazienza...

ciao
lcua31989
Avatar utente
Foto Utentelcua31989
58 1 1 7
Frequentatore
Frequentatore
 
Messaggi: 189
Iscritto il: 28 nov 2012, 23:37

1
voti

[7] Re: microstepping

Messaggioda Foto Utenteangel99 » 1 giu 2015, 0:03

lcua31989 ha scritto:ma onestamente tutto quel casino di controllo che fanno i chip di ST dedicati adibiti a tale funzione non è che mi servano tanto, poiché vorrei fare un circuito didattico che implementi quasi tutte le modalità di pilotaggio per il motore stepper.

Ma secondo te, se si potesse fare senza tutto quel casino, non l'avrebbero fatto anche quelli di ST?

lcua31989 ha scritto:Io sto dando un'occhiata a questo documento: http://ww1.microchip.com/downloads/en/AppNotes/00822a.pdf, un application note di microchip che in certi aspetti non approfondisce.

Quel documento è quanto di peggio si possa scegliere per capire come funziona un driver per stepper.

lcua31989 ha scritto:se volessi fare un controllo banale in PWM

Decidi. O vuoi fare un driver che implementi quasi tutte le funzioni come hai scritto sopra, o vuoi fare un controllo banale. Le due cose insieme non ci stanno.

lcua31989 ha scritto:a me serve un ponte ad H con almeno 5 Apere di carico con almeno una Vmotore da 50Vcc

Quindi ti serve un driver per motori stepper in microstepping da 250 W, ma non con tutto il casino fatto da ST (che non serve a nulla), molto più semplice. Ovviamente non ti rendi conto di ciò che stai chiedendo.

lcua31989 ha scritto:Ho visto in giro per la rete la realizzazione di questi ponti e a me piace molto la soluzione 2 mosfet di canale P e 2 mosfet di canale N.

In rete si trova di tutto, magari ne trovi uno anche a triodi.

lcua31989 ha scritto:perché usare 4 mosfet uguali e non 2P +2N?

Perché il risultato finale è nettamente superiore. Spiegarlo in due parole è impossibile e per capirlo bisogna prima convincersi che le cose vanno fatte diversamente da quanto hai in mente tu.

lcua31989 ha scritto:vorrei inserire una resistenza di shunt per ciascun ponte ad H che possa fare in modo di monitorare, attraverso dei convertitori AD, l'ampiezza di corrente (opportunamente convertita in tensione, ovviamente). Tale resistenza avevo pensato di inserirla da 0.1 ohm che mi servirà per fermare il motore qualora si andrà in overcurrent.

Sbagliato, non si fa così.

lcua31989 ha scritto:Ora io non so come interpretare questa IPEAK se un valore approssimabile a 1 per via della formula riportata di sotto all'application note, se il valore letto come feedback dall'adc oppure la corrente nominale. Qualcuno mi sa spiegare?

Quel valore è la corrente di picco (in ampere) che devi fornire al motore per ottenere la coppia che ti serve.

lcua31989 ha scritto:Ancora un dubbio sul PWM con frequenza da 25KHz. A seguito di un impulso ricevuto su un pin del PIC l'indice si incrementa di 1 e l'indice della tabella avanza di +1. Essendo questo il primo impulso partendo dalla posizione 0 mi ritrovo in posizione 1 dove il PWM A passa da 0% a 5% mentre B resta al 100%. Se non ricevo un altro impulso devo sempre garantire su A un PWM del 5% fino al prossimo impulso? (ovviamente anche per B) Autorispondendomi direi proprio di sì altrimenti il motore perderebbe di coppia spegnendosi, altrimenti. Dico Giusto?

In generale la risposta è sì. Per essere precisi bisognerebbe analizzare separatamente la coppia statica e la coppia dinamica del sistema meccanico costituito dal motore e dal carico connesso all'albero.

Il concetto fondamentale che ti manca è quello di controllo della corrente in retroazione. E' spiegato bene nei documenti che ti ho indicato sopra. Se piloti uno stepper con un PWM ad anello aperto (quello che vorresti fare tu), funziona solo a velocità molto basse e con accelerazioni ridicole. Voler fare un driver da 250 W in questo modo è semplicemente assurdo.
Avatar utente
Foto Utenteangel99
3.516 1 4 11
Master
Master
 
Messaggi: 1148
Iscritto il: 23 gen 2015, 19:39

0
voti

[8] Re: microstepping

Messaggioda Foto Utenteangel99 » 1 giu 2015, 9:44

Leggi anche questo.
Avatar utente
Foto Utenteangel99
3.516 1 4 11
Master
Master
 
Messaggi: 1148
Iscritto il: 23 gen 2015, 19:39


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti