Pagina 1 di 1

Leggere valore PWM

MessaggioInviato: 16 dic 2021, 19:02
da Agatino
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

Re: Leggere valore PWM

MessaggioInviato: 16 dic 2021, 20:18
da IsidoroKZ
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.

Re: Leggere valore PWM

MessaggioInviato: 17 dic 2021, 9:54
da lucaking
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.

Re: Leggere valore PWM

MessaggioInviato: 17 dic 2021, 11:22
da dadduni
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

Re: Leggere valore PWM

MessaggioInviato: 17 dic 2021, 11:49
da lelerelele
ùPartendo da un segnale digitale, anche io seguirei la strada di leggere i tempi del PWM.

saluti.