Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Arduino Uno R3, Da PWM ad analogico con DAC

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Arduino Uno R3, Da PWM ad analogico con DAC

Messaggioda Foto Utentemassimoxl » 13 giu 2021, 0:30

Ciao a tutti voi,

Possiedo un Arduino Uno R3 con Atmega328P con al suo interno un codice.
Devo convertire il segnale PWM in analogico (0-5 volt). Per fare questo, non voglio usare il filtro RC, ma preferisco un DAC integrato già pronto. La domanda è semplice: ho letto in un PDF che il codice all'interno del Atmega328P utilizza 10 bit [1024] (vedi immagine allegata), ma nel manuale del software che dialoga con il codice, ho letto che utilizza 8 bit [255] (vedi immagine allegata).

La domanda è semplice: devo usare un DAC integrato a 8 bit o un DAC integrato a 10 bit?
Allegati
2 (1).jpg
1 (1).jpg
Avatar utente
Foto Utentemassimoxl
90 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 307
Iscritto il: 20 feb 2018, 19:05

0
voti

[2] Re: Arduino Uno R3, Da PWM ad analogico con DAC

Messaggioda Foto UtenteGioArca67 » 13 giu 2021, 7:43

Prima di parlare di bit...
Come è fatto un segnale codificato PWM?
Prova a caricare un paio di immagini di esempio.
Avatar utente
Foto UtenteGioArca67
820 3 6
Expert
Expert
 
Messaggi: 619
Iscritto il: 12 mar 2021, 9:36

0
voti

[3] Re: Arduino Uno R3, Da PWM ad analogico con DAC

Messaggioda Foto Utentepgiagno » 13 giu 2021, 9:07

Forse stai confondendo DAC (Digital to Analog Converter) con ADC (Analog to Digital Converter).
Nel primo caso un valore binario è convertito in un livello di tensione compreso fra due estremi. Gli estremi coincidono con il valore minimo e massimo che la rappresentazione binaria può assumere.
Nel secondo caso un valore di tensione è convertito in un valore binario compreso fra due valori, minimo e massimo, che la rappresentazione binaria può assumere.

Il segnale PWM è un'onda quadra che varia fra un valore Vmin e un valore Vmax, Nel caso di un PWM generato da Arduino, fra 0 e 5 V, con una frequenza di 490 Hz se il segnale è generato dai pin 3, 9, 10, 11 e di 980 Hz se è generato dai pin 5 e 6.

Quindi in un segnale PWM generato da Arduino i livelli sono FISSATI (o 0 V o 5 V) e la frequenza è FISSA. Ciò che varia è l'AMPIEZZA dell'IMPULSO dell'onda quadra, che si ripete ogni 2ms circa nel caso di PWM con frequenza 490 Hz.

Arduino usa AL SUO INTERNO un ADC per 'misurare' un livello di tensione su uno dei suoi pin ANALOGICI. Quindi partendo dalla tensione applicata al pin l'ADC lo converte in binario usando una configurazione di 10 bit. Il valore minimo corrispondente a 0V è 0 (in binario 0000000000) il massimo corrispondente a 5V è 1023 (in binario 1111111111).

Sempre Arduino usa un suo Timer interno per variare (modulare) l'AMPIEZZA del segnale PWM che è in grado di generare da uno dei suoi pin DIGITALI. L'AMPIEZZA non può avere qualsiasi valore, ma soltanto uno dei 255 valori prestabiliti, fra 0 e 2ms circa per un PWM a 490 Hz.

Ora tu vuoi usare un DAC per convertire un segnale PWM in una tensione, ma un segnale PWM NON È un segnale il cui valore è rappresentato da una combinazione binaria. È solo un segnale che varia fra 0 e 5 V con una determinata frequenza e con ampiezza variabile, quindi quello che vuoi fare NON È POSSIBILE farlo con un DAC, a meno di non complicarsi la vita.

In altro forum ti è già stato suggerito di usare un filtro passa basso (una resistenza in serie seguita da un condensatore in parallelo, non è poi così complicato) per risolvere il tuo problema. Vorrei capire cosa non va in questa soluzione.

Ciao,
P.
Avatar utente
Foto Utentepgiagno
458 3 6
Stabilizzato
Stabilizzato
 
Messaggi: 314
Iscritto il: 5 gen 2015, 21:27

0
voti

[4] Re: Arduino Uno R3, Da PWM ad analogico con DAC

Messaggioda Foto Utenteedgar » 13 giu 2021, 10:05

Hai già aperto una discussione sullo stesso argomento, sei pregato di proseguire su quella già aperta per mantenerne la leggibilità a chi dovesse imbattersi nello stesso problema. Grazie
Questa discussione viene bloccata
Avatar utente
Foto Utenteedgar
8.326 3 5 8
Master
Master
 
Messaggi: 4223
Iscritto il: 15 set 2012, 22:59


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti