Pagina 1 di 5

Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 12:08
da massimoxl
Ciao a tutti voi

Possiedo un circuito che trasmette un segnale PWM per la velocità di un motore.
Ho la necessità di trasformare il segnale PWM di 20 kHz (Duty Cycle 0-5 volt, 0-255) in un segnale analogico per utilizzare il mio circuito per altre applicazioni.
So che bisogno utilizzare un circuito RC, ma non so come fare...

C'è un calcolo/formula per ottenere il giusto valore di R e di C ?

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 12:23
da MarcoD
Sei fortunato, sono annoiato in casa, ti rispondo subito :-) .
di trasformare il segnale PWM di 20 kHz (Duty Cycle 0-5 volt, 0-255) in un segnale analogico per utilizzare il mio circuito per altre applicazioni....utilizzare un circuito RC,

Tau = R x C costante di tempo di filtraggio del segnale

20 kHz >> periodo 0,05 ms
fissiamo arbitrariamente un Tau 100 volte maggiore ad esempio 5 ms.
Imponiamo un R che sarà in serie non troppo bassa per non caricare l'uscita, ma non troppo alta
per non essere troppo caricata da un carico.
per esempio imponiamo 10 k ohm
La C viene Tau/R = 5 x 10^-3 /( 10 x 10^3) = 0,5 microfarad

Ora disegna uno schema elettrico del circuito RC e delle connessioni per dimostrare che hai capito tutto. :-)
O_/

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 12:26
da marioursino
Dipende da quanto "forte" vuoi filtrare. Per esempio:

\frac{1}{\tau} = \frac{1}{RC} < \frac{1}{10} f_{sw}

La resistenza non deve essere esagerata, altrimenti ti compare un offset dato dalla corrente di bias dell'ADC.

edit: vedo ora che si qualcuno ha risposto similmente a me :ok:

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 12:32
da massimoxl
Ciao ragazzi e grazie per le vostre CELERI risposte =D>

Vi spiego praticamente cio che voglio fare: ho questo circuito elettronico con Atmega328P che trasmette da un pin digitale una frequenza PWM di 20 kHz con Duty Cycle 0-5 volt per la variazine della velocità del motore.

Siccome voglio pilotare un azionamento brushless che accetta un segnale analogico 0-5 volt, ho bisogno che io trasforma il PWM in segnale analogico, appunto 0-5 volt

Ricordo ancora che il mio Duty Cycle è 0-5 volt, (scala ei valori 0-255)

0= motore fermo
255 = motore alla massima velocità

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 14:40
da marioursino
Sì, valgono le risposte sopra allora.

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 15:08
da IsidoroKZ
Non capisco cosa vuoi dire con la frase duty cycle che va da 0V a 5V. Il duty cycle può avere qualunque valore da 0 a 1, non lo si misura in volt!

Oltre al filtro RC che ti hanno detto, si può mettere un filtro fatto con duè RC in cascata, a pari attenuazione del ripple dovrebbe avere una risposta temporale con minor ritardo.

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 15:36
da massimoxl
Non capisco cosa vuoi dire con la frase duty cycle che va da 0V a 5V. Il duty cycle può avere qualunque valore da 0 a 1, non lo si misura in volt!

Ciao Isidoro, scusatemi mi sono espresso male ma non sono molto preparato su questo... Lo so che 0V sarebbe come a dire "spento" e 5V "acceso". Volevo dire che sull'oscilloscopio leggo valore minimo 0 e valore massimo 5, ho voluto quindi dare tutte le informazioni in mio possesso.

Inoltre ho voluto pure specificare che la gamma dei valori disponibili non sono 1024 bensì 255

0= motore fermo
255= motore massima velocità

Oltre al filtro RC che ti hanno detto, si può mettere un filtro fatto con duè RC in cascata, a pari attenuazione del ripple dovrebbe avere una risposta temporale con minor ritardo.

A me occorre che ci sia meno ritardo possibile perché devo far ruotare il motore in maniera reattiva/veloce. Dico cio perché so che "filtrando" l'onda... si ottiene un ritardo prima che io ottenga il valore in tensione...
Avendo la PWM da 20 kHz, potreste farmi un esempio matematico di come CALCOLARE i valori di RC (magari ancora meglio con un filtro fatto con due RC in cascata) affinchè io abbia in uscita un segnale analogico di 0-5 volt?

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 16:12
da MarcoD
A me occorre che ci sia meno ritardo possibile perché devo far ruotare il motore in maniera reattiva/veloce. Dico cio perché so che "filtrando" l'onda... si ottiene un ritardo prima che io ottenga il valore in tensione...

La frase nion fornisce informazione :(
cosa intendi per reattiva/veloce?
Fornisci i valori per
Valore accelerazione massima?
Precisione asservimento?
Tempo assestamento al 99% ?



Avendo la PWM da 20 kHz, potreste farmi un esempio matematico di come CALCOLARE i valori di RC (magari ancora meglio con un filtro fatto con due RC in cascata) affinchè io abbia in uscita un segnale analogico di 0-5 volt?
Qualunque filtro fornisce un segnale analogico 0-5 V

Prima volevi un solo RC ora vuoi un filtro passa basso a più stadi,
cosa sei disposto a investire in complessità del filtro ?
Due operazionali,? quattro ?
Cerca progetto filtri passa basso
O_/

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 17:13
da marioursino
Aggiungo che molto spesso i controller per motori elettrici accettano anche un segnale PWM, filtrando già internamente.

Re: Trasformare PWM in segnale analogico

MessaggioInviato: 19 gen 2021, 18:43
da massimoxl
La frase non fornisce informazione :(
cosa intendi per reattiva/veloce?

Ciao Marco, mi spiego meglio:


Premessa: praticamente allo stato attuale io sto controllando un motore DC con un segnale PWM da 20 kHz che uso su un ponte H e fin qui tutto funziona benissimo.
Adesso ho la necessità di utilizzare i motori brushless e sto cercando gli azionamenti piu economici ma molti di essi accettano una frequenza PWM (non compatibile con la mia) oppure un ingresso analogico 0-5 volt o 0-10 volt. L'unica soluzione è quindi quella di trasformare l'onda quadra in un segnale analogico.
Rispondo alla tua domanda: alcuni azionamenti hanno una rampa di accelerazione di circa 0.1 o 0.2 secondi per l'inversione di rotazione del motore. Quindi io devo stare molto al di sotto di 0.1 secondi per non sommare le varie latenze.
Non avendo mai usato nessun filtro passa basso, specie in questo contesto, non so se la trasformazione del segnale del filtro possa o meno comportare un ritardo, cioè vi faccio un esempio pratico:

ho testato il mio ponte H e il motore DC (3000 giri/minuto) e ho potuto osservare una latenza di circa 30 ms.
Significa che dal momento in cui ottengo un Duty Cycle del 50%, il motore si porta a 1500 giri/minuto in circa 30 ms. Se il Duty Cycle va al 100%, il motore raggiunge 3000 giri/minuto in circa 30 ms, etc....

Adesso devo capire se il filtro passa basso puo incidere molto sulla latenza o no perché i motori devono simulare gli effetti di una corsa (rally), buche, disconnessioni, vibrazioni...
La precisione non è un grosso problema, cioè nel senso che il motore che si posiziona in una posizione con un errore di 2-3 millimetri... non è un gran problema. La priorità è che i motori non abbiano ulteriori latenze da sommare a quella che gia ho (30 ms) data da... Software > Conversione telemetria > Trasmissione USB > Esecuzione ponte H.

Prima volevi un solo RC ora vuoi un filtro passa basso a più stadi,
cosa sei disposto a investire in complessità del filtro ?

IsidoroKZ mi ha "consigliato" cio perché dovrebbe avere una risposta temporale con minor ritardo, e come spiegato sopra, la latenza è importante.

Come gia spiegato, non sono molto pratico, ho cercato in rete circuti elettronici gia pronti anche a 7€, ma accettano in ingresso frequenze fino a 3Khz.
Da come sto capendo a me basterebbe una resistenza ed un condensatore (semplice ed economico filtro passa basso), ma nonostante il vostro prezioso aiuto non riesco a calcolarle :roll:

Spero di avere spiegato meglio cio che voglio realizzare, chiedo il vostro aiuto per venirne fuori.
Grazie