Jump to content
PLC Forum


Conteggio impulsi in uscita PWM


Mario Brumini
 Share

Recommended Posts

Mario Brumini

Buongiorno a tutti, sto facendo qualche esperimento con raspy ed un motore passo passo con il suo driver..

in mio problema è che posso gestire frequenza etc.. ma non riesco ad inviare un numero di impulsi determinato.

quindi posso farlo girare avanti.. indietro ma vorrei poter inviare X impulsi per usarlo in posizionamento.

probabile che mi manchi qualche pezzo..

un ultima cosa, uso python (non conosco altri linguaggi).

se qualcuno ha qualche idea, grazie anticipatamente.

 

Link to comment
Share on other sites


Livio Orsini

 

 

8 ore fa, Mario Brumini scrisse:

sto facendo qualche esperimento con raspy ed un motore passo passo con il suo driver.

Tutto dipende da come generi gli impulsi.

Che tipo di drive usi?

Da raspberry dai solo comandi o dai gli impulsi al drive?

Devi dare qualche informazione in piùse vuoi risposte mirate e non generiche

Link to comment
Share on other sites

Mario Brumini

Certo, arrivano le info.

essenzialmente in questo modo:

freq= xxx

mot=33

 

dopo i setmode..

 

pwm=GPIO.PWM(mot, freq)

pwm.start(0)

 

ok, a questo punto genero il treno di impulsi e li invio al drive.

ci sono poi i comandi direzione etc.. ma quelli non sono un problema.

 

spiegando cosa vorrei fare è:

ad un evento (pulsante o altro) generare X impulsi, nel dettaglio, se ad ogni impulso muovo di 0.18° voglio muovermi di 36 gradi dovrei inviare, o meglio generare 200 impulsi.

Link to comment
Share on other sites

Livio Orsini

A parte il fatto che la modulazione di PWM non ha alcun senso, perchè son solo necesari gli impulsi.

Ti avevo chisesto anche di specificare il tipo di drive che stai usando.

 

Da quello che scrivi deduco che gli non sai come raspberry generi gli impulsi, ti limiti ad usare la funzione di libreria.

In questo caso non hai molte possibilità di controllare il numero di impulsi che generi.

L'unico modo di avere un controllo sulla quantità di impulsi, se usi questa funzione, è rileggere gli impulsi tramite un contatore.

Raspberry la conosco superficialmente, anche perchè non la considore come dispositivo indicato per questo tipo di lavari. Però questi impulsi sono usati partendo dal clock interno ed usando un temporizzatore per determinare il tempo di "1" e quello di "0", quindi o sai come contare direttamente queste tansizioni, oppure leggi gli inpulsi generati, li conti e raggiunto il numero prefissato fermi il drive e la generazione degli impulsi.

Link to comment
Share on other sites

ilguargua
50 minuti fa, Livio Orsini scrisse:

Raspberry la conosco superficialmente, anche perchè non la considore come dispositivo indicato per questo tipo di lavari

Concordo con Livio, tantomeno usando la libreria che stai usando, che infatti nella pagina del repository indica chiaramente:

Quote

This package provides a class to control the GPIO on a Raspberry Pi.

Note that this module is unsuitable for real-time or timing critical applications. This is because you can not predict when Python will be busy garbage collecting. It also runs under the Linux kernel which is not suitable for real time applications - it is multitasking O/S and another process may be given priority over the CPU, causing jitter in your program. If you are after true real-time performance and predictability, buy yourself an Arduino http://www.arduino.cc !

Per esperienza personale posso dirti che è esattamente così come scrivono, ho fatto un test per un progetto che richiedeva solo un banale PWM variabile per controllare la velocità di un motoriduttore, ebbene iltutto era talmente affetto da jitter che si poteva vedere ed udire la non stabilità della velocità, l'oscilloscopio confermava il tutto, sul PWM sembrava imposta una successiva modulazione che rendeva il tutto molto instabile. Se vuoi fare una prova collega un semplice led (con una avvia resistenza) direttamente al pin PWM, e potrai vedre anche od occhio quello che intendo.

 

2 ore fa, Mario Brumini scrisse:

ad un evento (pulsante o altro) generare X impulsi, nel dettaglio, se ad ogni impulso muovo di 0.18° voglio muovermi di 36 gradi dovrei inviare, o meglio generare 200 impulsi.

Questo, ammesso che vuoi restare con il controllo in PWM, che come diceva Livio, non ha molto senso, lo puoi fare facilmente se usi una piattaforma diversa. Ad esempio, gli STM32 (piattaforma per cui ho optato poer il mio progetto) hanno, in ambiente Arduino, una bella libreria chiamata HarrwareTimer con cui puoi legare ogni ciclo di PWM ad un interrupt, per cui diventa facile contare gli impulsi.

 

Ciao, Ale.

Link to comment
Share on other sites

Livio Orsini
4 ore fa, ilguargua scrisse:

Ad esempio, gli STM32 (piattaforma per cui ho optato poer il mio progetto) hanno, in ambiente Arduino,

 

Se è per questo si può usare addirittura arduino che ha già librerie per gestire gli stepper.

Link to comment
Share on other sites

ilguargua
2 ore fa, Livio Orsini scrisse:

Se è per questo si può usare addirittura arduino che ha già librerie per gestire gli stepper.

Certo, e che mi sono incartato anch'io sulla soluzione PWM, che rimane la più contorta. 😀

Una soluzione di compromesso può essere usare un Arduino insieme al Raspberry, per la gestione dello stepper basta anche un Arduino mini, grande poco più di un francobollo, con zero problemi, e lasciare al Raspy la parte di comando/grafica, connessione etc.

 

Ciao, Ale.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...