Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PWM, DAC(risoluzione) e Arduino

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[11] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto Utentemassimoxl » 13 giu 2021, 16:06

Ok Walter, si è meglio modificarlo, è giusto anche per avere il Forum ordinato.
Colgo l'occasione, se puoi essermi d'aiuto, e cioè:

Io ho un benedetto Arduino Uno :D dal quale tramite apposito sketch caricato dentro, mi si sviluppa nel pin9 un'uscita PWM (0-5) con frequenza fissa 490Hz.

Non sapendo programmare e avendo appreso in questo Forum che per creare un buon filtro RC occorre una buona dimistichezza... ho deciso di utilizzare un integrato DAC che è gia pronto per essere saldato (al suo interno ci sta tutto l'occorrente per elaborare i dati per ottenere in uscita i miei volt, da 0v a 5v (0,15...0,23...1,20...2,46... insomma tutte le divisioni possibili da 0 a 5v).

Ora cio che io chiedo è la seguente:

Possiedo un Arduino Uno R3 con Atmega328P con al suo interno un codice.
Devo convertire il segnale PWM (segnale logico 0 e 1, cioè 0-5 volt) in analogico (0-5 volt) scala di valori. 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
1 (1).jpg
2 (1).jpg
Avatar utente
Foto Utentemassimoxl
113 1 3 6
Stabilizzato
Stabilizzato
 
Messaggi: 479
Iscritto il: 20 feb 2018, 19:05

0
voti

[12] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteMarcoD » 13 giu 2021, 16:55

Mi sembra che di questo argomento si sia dibattuto fin troppo, con troppi malintesi.

Non sapendo programmare e avendo appreso in questo Forum che per creare un buon filtro RC occorre una buona dimistichezza. Un mediocre filtro lo puoi realizzare con un remplice filtro RC :100 ohm una estremità connessa al piedino di arduino, l'altra estremità a un 100 uF connesso a massa. L'uscita è fra il resistore e il condensatore.

.. ho deciso di utilizzare un integrato DAC che è gia pronto per essere saldato (al suo ...). Specifica il modello (sigla) dell'integrato e come lo colleghi ad arduino.

Ora cio che io chiedo è la seguente:
La domanda è semplice: devo usare un DAC integrato a 8 bit o un DAC integrato a 10 bit?

Se non specifichi l'integrato DAC non lo so. Può darsi che l'integrato (che in realtà è un filtro) vada bene sia per un PWM a 8 bit (uscita di arduino) , sia per uno a 10 bit.
Ma se non specifichi l'integrato la domanda ha poco senso, e qualunque risposta sarebbe corretta.
O_/
Avatar utente
Foto UtenteMarcoD
12,2k 5 9 13
Master EY
Master EY
 
Messaggi: 6696
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[13] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteGioArca67 » 13 giu 2021, 17:53

Un segnale PWM è un'onda quadra il cui duty cycle varia nel tempo sulla base del valore impostato di volta in volta nello sketch.
Con un DAC non ci fai nulla, semmai servirebbe un ADC e nemmeno con tanti bit: 2 bastano e avanzano poiché devi riconoscere o 0 o 5V.
Ma il problema è un altro. A meno di usi particolari (e non lo stai specificando) un ADC anche non serve a nulla poiché non rileveresti mai il byte che avevi specificato nello sketch.
Per dirlo in altro modo con un'uscita PWM non ci trasmetti in digitale ovvero non ci invii bytes.
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

4
voti

[14] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteIsidoroKZ » 13 giu 2021, 19:18

massimoxl ha scritto:La domanda è semplice: devo usare un DAC integrato a 8 bit o un DAC integrato a 10 bit?


Nessuno dei due. Stai facendo una confusione mastodontica fra argomenti slegati fra di loro, ovvero la risoluzione dell'alogoritmo PID, il formato di trasmissione seriale asincrono e l'utilizzo di un segnale PWM.

Qualunque cosa voglia fare, non hai le competenze software (lo hai detto tu) e neanche hardware (questo lo dico io) :( e lo dico in funzione del fatto che ritieni complicato un filtro passa basso e che non sai che cosa e` un convertitore digitale analogico.

Un segnale PWM e` un segnale con una modulazione ANALOGICA, che non puoi mettere in ingresso di un convertitore D/A.

Se l'algoritmo PID e` fatto in modo da dare in uscita un segnale PWM, hai solo la possibilita` di usare un filtro RC. A seconda della banda passante (che comunque sara` bassa, vista la frequenza del PWM) puoi usare un filtro RC, o un RC a due celle oppure ancora un filtro attivo: la scelta dipende dal ritardo di fase ammissibile, dato che il filtro si trova dentro a un anello di retroazione.

La scelta dell'integrato che avevo suggerito e` una soluzione percorribile, ma ben piu` complicata di un filtro passa basso. In entrambi i casi (filtro o IC) bisogna conoscere la risoluzione del modulatore PWM: non conosco come e` programmato il generatore PWM di arduino).

Altra possibilita`, per usare un vero convertitore D/A e` di avere dal processore un segnale digitale che rappresenti il NUMERO proporzionale al comando da inviare al D/A e quindi al sistema controllato.

In questo caso bisogna modificare l'interfaccia software del PID, oppure verificare che il PID possa avere piu` uscite, inclusa una seriale (non una seriale asincrona!) da mandare al D/A.

In questo caso ci sono miriadi di convertitori con ingresso seriale, ad esempio LTC1660, e uscita analogica. Non so se arduino abbia un driver per mandare fuori un segnale seriale adatto ai DAC e soprattutto se il PID preveda una uscita numerica.
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

[15] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto Utentemassimoxl » 13 giu 2021, 23:10

Con un DAC non ci fai nulla, semmai servirebbe un ADC e nemmeno con tanti bit: 2 bastano e avanzano poiché devi riconoscere o 0 o 5V.

Assolutamente no, ti sbagli di grosso.
Con un DAC è possibile convertire un segnale PWM in ingresso e ottenere in uscita un segnale analogico 0v........5v

Qualunque cosa voglia fare, non hai le competenze software (lo hai detto tu) e neanche hardware (questo lo dico io) :( e lo dico in funzione del fatto che ritieni complicato un filtro passa basso e che non sai che cosa e` un convertitore digitale analogico.

Permettimi Isidoro, io non avrò sicuramente le tue competenze , ma non sono neppure come hai inteso tu.
Le competenze hardware le ho, non come te, ma le ho.
Ovvio che l'elettronica è vasta e ci si puo imbattere in argomenti sconosciuti o di cui si ha qualche perplessità.
So cosa sia un circuito RC (resistenza + condensatore) ma proprio in questo Forum in un altro thread che io avevo aperto...qualcuno diceva che non è semplice calcolare i valori di R e C, e tu stesso per calcolare i due valori di R e C avevi aperto un lungo articolo dal quale solo chi ha la tua stessa preparazione potrebbe capirci molto, non io..

Ma cio non vuol dire che io non sappia nulla di elettronica, se tutti fossimo bravi come te...allora non esisterebbe un Forum per chiedere informazioni e aiuti.
Avatar utente
Foto Utentemassimoxl
113 1 3 6
Stabilizzato
Stabilizzato
 
Messaggi: 479
Iscritto il: 20 feb 2018, 19:05

2
voti

[16] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteIsidoroKZ » 13 giu 2021, 23:23

Se sei convinto che ti serve un D/A per trasformare un segnale PWM in una tensione, metti un D/A!

Non hai idea di cosa sia un D/A (che richiede un NUMERO all'ingresso) o un segnale PWM (che e` una modulazione ANALOGICA), tantomeno un regolatore PID e quali siano le specifiche di banda che servono. Pero` sei sicuro che ti serva un D/A. Non sai calcolare un gruppo RC, ma vuoi montare un convertitore. Mah!

Buona fortuna.
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

2
voti

[17] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto Utentexyz » 14 giu 2021, 0:31

massimoxl ha scritto:...
Con un DAC è possibile convertire un segnale PWM in ingresso e ottenere in uscita un segnale analogico 0v........5v
...

Sarei curioso di leggere una qualsiasi documentazione che spiega nei dettagli come fare
Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1778
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

2
voti

[18] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteGioCosco » 14 giu 2021, 8:13

Vedo una discreta confusione tra DAC e PWM, che sono cose ben diverse.
L'unico punto in comune è che un PWM può essere convertito in analogico 0-n volt con un filtro passa-basso ed eventuale (consigliato) amplificatore operazionale in uscita. C'è anche da considerare che il PWM convertito in analogico avrà al massimo il livello logico di uscita del pin del micro, che potrebbe essere solo 3.3 V.
Però c'è un bellissimo documento Texas Instruments (cerca con Google "PWM dac converter" spraa88a.pdf) scaricabile dove spiega bene il passaggio PWM -> analogico.
Per usare un DAC è necessario un controllo seriale o parallelo, i più comuni e semplici sono pilotabili in I2C o SPI.
In questo caso i bit di risoluzione del DAC possono essere 10, 12 ... anche 24. La qualità della conversione dipende poi dal circuito di uscita. Io ho ottenuto ottimi risultati con i Microchip MCP4725 gestiti in I2C.
Avatar utente
Foto UtenteGioCosco
70 1
 
Messaggi: 25
Iscritto il: 14 giu 2019, 14:28

3
voti

[19] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteGioArca67 » 14 giu 2021, 10:23

massimoxl ha scritto:Assolutamente no, ti sbagli di grosso.
Con un DAC è possibile convertire un segnale PWM in ingresso e ottenere in uscita un segnale analogico 0v........5v


Spiega come per favore.

Prova a leggere https://www.ne555.it/guida-arduino-uscite-pwm/ un po' sul PWM e Arduino.

Ti allego una immagine con alcuni esempi di onde modulate col PWM.
Come potrai vedere il valor medio del segnale varia fra 0V (duty cycle 0%) e 5V (duty cycle 100%) passando ad es per 1.25V (duty cycle 25%) ecc.

Questo valore medio (che è ciò che vedrebbe applicato un carico dotato di inerzia collegato al PIN che sta mettendo il segnale PWM) è sfruttato per alcuni trucchetti come ad es. un modo per variare la luminosità di un led sfruttando il fatto che l'occhio umano ha una caratteristica passa basso con frequenza di taglio a circa 20Hz, quindi variazioni intermittenti a frequenza più elevata (490Hz) non le percepisce e al cervello arriva un segnale che è proporzionale al valor medio delle accensioni cioè il tempo di ON rispetto al totale della durata del ciclo.

Un DAC che ha ingresso parallelo si aspetta 8 - 10 - 12 bit ecc. uno per ciascuno dei suoi 8 - 10 - 12 ingressi e se ne colleghi solo uno hai la possibilità di riconoscere solo 2 valori: quindi supponiamo di collegare il MSB direttamente al PIN che emette il segnale PWM (e collegando gli altri a massa) , allora il DAC rileverà ogni tanto 0 (quando il PWM vale 0V) ed ogni tanto 127 - 511 - 2047 (a seconda di quanti bit era: 8 - 10 - 12, quando il PWM vale 5V) e ti restituisce quindi o 0V oppure Vref/2, con lo svantaggio che hai perso l'informazione sulla durata dell'impulso, cioè hai proprio perso l'informazione connessa al segnale PWM, a meno di convertire più velocemente e fare una successiva elaborazione.
Il tutto non ha alcun senso.

Supponi ora di metterci un ADC (come qualcuno suggeriva pensando ad una svista fra DAC e ADC, poiché ovviamente non ha alcun senso collegare un DAC ad un PIN PWM allora forse invece che DAC hanno pensato che volessi intendere ADC)
Anche in questo caso avresti problemi poiché, come ti stanno spiegando in molti (perdendoci tempo prezioso), un segnale PWM porta l'informazione NON sull'AMPIEZZA, ma sulla DURATA dell'impulso: non ti serve quindi di convertire 0V o 5V in un numero (0 o 255 - 1023 - 4095 a seconda dei bit dell'ADC) perché quei 2 valori non hanno "informazione".
Ecco perché ti dicevo che basterebbe un ADC ad 1 bit: devi riconoscere solo DUE valori.
Ma anche in questo caso NON HA ALCUN SENSO poiché comunque ti serve una successiva elaborazione per risalire alla DURATA dell'impulso, ovvero al valor medio del segnale sulla durata del ciclo.
Indovina cosa? Un filtraggio passa basso nella migliore delle ipotesi.

Ma qui c'è di sicuro un complotto contro i DAC. O_/

La figura promessa.
Allegati
pwm-arduino.jpg
pwm-arduino.jpg (34.74 KiB) Osservato 5237 volte
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

0
voti

[20] Re: DAC - differenza 8bit e 10bit

Messaggioda Foto UtenteWALTERmwp » 14 giu 2021, 14:10

Forse a @massimoxl non sono chiari alcuni aspetti di base, però aveva intuito qualcosa che in assenza di riferimenti tecnici certi non ha razionalizzato.

@massimoxl, se ti è chiaro il principio del PWM, concordi ad esempio con questo passaggio riportato da @GioArca67 ?
GioArca67 ha scritto:(... ) Un DAC che ha ingresso (...) a meno di convertire più velocemente e fare una successiva elaborazione (...)


Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8989
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 44 ospiti