Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Leggere valore PWM

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Leggere valore PWM

Messaggioda Foto UtenteAgatino » 16 dic 2021, 19:02

Buonasera a tutti.

Dovrei realizzare un driver con arduino capace di leggere un segnale PWM per poi generare un segnale DMX (su specifici canali) proporzionale al segnale PWM in ingresso.

Vi spiego meglio: ho una centralina che gestisce N canali su cui fa delle dissolvenze. Questi canali hanno una uscita di 12V e permettono di pilotare direttamente delle strisce led. Presumo che l'alimentazione in uscita sia in PWM (dico presumo perché la centralina non ancora è in mio possesso...). Siccome devo espandere le potenzialità di questa centralina, avevo pensato di interfacciarmi con arduino e generare un segnale DMX proporzionale.

Cercando qualcosa di simile a quello che serve a me avevo trovato un post con cui qualcuno chiedeva come fare a leggere tensioni con range 40-47V con una tolleranza di 0.01V e suggerivano l'uso di un MCP3421 per fare la conversione. Ora non so se nel mio caso va bene lo stesso oppure devo utilizzare altri approcci.

Grazie
Avatar utente
Foto UtenteAgatino
109 1 5
Frequentatore
Frequentatore
 
Messaggi: 167
Iscritto il: 26 mar 2010, 10:36

0
voti

[2] Re: Leggere valore PWM

Messaggioda Foto UtenteIsidoroKZ » 16 dic 2021, 20:18

Direi filtro passa basso sul segnale PWM in modo da ricavarne il valore medio, acquisizione con l'A/D del micro poi fai cosa vuoi. Bisogna vedere i livelli di tensione del PWM e verificare se sono stabili.

Qui e qui le spiegazioni sul filtro passa basso per trasformare il PWM in una tensione continua.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[3] Re: Leggere valore PWM

Messaggioda Foto Utentelucaking » 17 dic 2021, 9:54

Beh, per quanto riguarda il filtraggio del segnale, Foto UtenteIsidoroKZ ti ha gia illustrato quello chè è all' incirca lo stato dell' arte, e visto che a questo punto molti avranno paura ad aggiungere altro per paura di fare delle figuracce, io che a fare delle figuracce sono abituato :oops: :mrgreen: provo a dirti quel poco che credo di aver capito.

Arduino integra un ADC a 10 bit, suddetto convertitore permette quindi di acquisire la tensione presente sugli ingressi analogici con una risoluzione di 1024 (2^10) "intervalli", utilizzando normalmente una tensione di riferimento di 5 V si possono quindi ottenere degli step di circa 0,005 V (5/1024).
Per tensioni piu basse di 5 V si possono usare altri riferimenti di tensione ottenendo valori minimi di risoluzione piu piccoli, ad esempio, utilizzando il riferimento interno di 1,1 V teroicamente si dovrebbero poter apprezzare gli 0.0011 V (1,1/1024).
Il tuo "problema" è che hai una tensione media che, se ho ben capito, varia tra 0 e 12 V, quindi dovrai usare un partitore di tensione 2,4:1 per adattarla ai valori massimi ammissibili dal micro, di conseguenza anche la variazione minima apprezzabile passerà a circa 0,012 V.
Bisogna capire se ti basta.

Infine, avendo una tensione da misurare potenzialmente pericolosa per arduino, penso sarebbe opportuno proteggere l' ingresso in questione in qualche modo e personalmente finora l' ho fatto sol o con uno Zener da 5,1 V, ma immagino ci siano metodi piu corretti che però dovrà spiegarti qualcun' altro.
Avatar utente
Foto Utentelucaking
1.651 4 5 8
Expert
Expert
 
Messaggi: 1445
Iscritto il: 29 mag 2015, 14:28

0
voti

[4] Re: Leggere valore PWM

Messaggioda Foto Utentedadduni » 17 dic 2021, 11:22

https://create.arduino.cc/projecthub/ye ... o-c-7502ea

Se usi il comparatore analogico interno al processore, puoi far partire un timer ogni volta che il segnale ha un fronte di salita e fermare il timer sul fronte di discesa così hai un valore di tempo in cui il PWM è alto senza usare né filtri né l ADC.

Il comparatore può lanciare una interrupt, nella routine di interrupt puoi lanciare e fermare il contatore al bisogno e salvare il valore temporale, in questo modo senza aggiungere paccottiglia analogica Foto UtenteIsidoroKZ :twisted: e senza neanche sporcare il main del codice puoi risolvere.

Certo dipende dalla frequenza del PWM, ma per dei led non mi aspetto sia altissima
Avatar utente
Foto Utentedadduni
2.073 2 7 12
Expert EY
Expert EY
 
Messaggi: 1370
Iscritto il: 23 mag 2014, 16:26

0
voti

[5] Re: Leggere valore PWM

Messaggioda Foto Utentelelerelele » 17 dic 2021, 11:49

ùPartendo da un segnale digitale, anche io seguirei la strada di leggere i tempi del PWM.

saluti.
Avatar utente
Foto Utentelelerelele
4.899 3 7 9
Master
Master
 
Messaggi: 5505
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti