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 Utenteg.schgor, Foto UtenteIsidoroKZ, Foto UtenteBrunoValente, Foto Utentecarloc

3
voti

[61] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtenteIsidoroKZ » 15 giu 2021, 19:06

massimoxl ha scritto:Con tutto rispetto alla tua preparazione..ma perché devi continuare a ribadire che un DAC non possa fare al mio caso?

Forse perche' NON fa al caso tuo?

massimoxl ha scritto:Acquisterò il DAC che riterrò opportuno (e dicasi DAC), effettuerò le dovute verifiche di funzionamento e poi vi posterò il risultato.

Mi sembra un buon piano di azione! Puoi anche postare il risultato passo passo di mano in mano che ci arrivi, ad esempio il DAC che hai scelto, poi come lo monti, infine i risultati che ottieni.

massimoxl ha scritto:A me è stato detto da un tecnico di LABORATORIO ..."anziché usare un filtro RC...puoi usare un DAC già pronto da utilizzare senza nessuna programmazione i2c e calcola tutto in funzione della PWM in entrata"


Potevi dirlo subito che te lo ha detto un tecnico di LABORATORIO. Ubi maior minor cessat!
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
113,1k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 19793
Iscritto il: 17 ott 2009, 0:00

0
voti

[62] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtenteGioArca67 » 15 giu 2021, 20:02

massimoxl ha scritto:Per Pietro
La frequenza trasmessa dal PIN9 di Arduino è di 25KHz, livello basso 0v, livello alto 5v

Per "frequenza del segnale contenuto nel PWM" cosa intendi?



Se non è coperto da qualche copyright o segreto industriale potresti postare il codice che imposta il PWM?
Non serve tutto il codice sorgente, basta la parte dove imposti i prescaler e gli Output Compare Registers (OCRxx).
Puoi descrivere anche l'applicazione/il contesto? Cioè cosa deve fare il tuo Arduino?
Avatar utente
Foto UtenteGioArca67
330 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 324
Iscritto il: 12 mar 2021, 9:36

3
voti

[63] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtentePietroBaima » 16 giu 2021, 8:20

massimoxl ha scritto:Per Pietro
La frequenza trasmessa dal PIN9 di Arduino è di 25KHz, livello basso 0v, livello alto 5v

Per "frequenza del segnale contenuto nel PWM" cosa intendi?


Ti ho già detto che chilo si scrive con la k minuscola.

Che il livello basso sia 0V e il livello alto sia 5V dipende dalla corrente che assorbi.
Comunque di questo ne parliamo dopo.

Per "frequenza del segnale contenuto nel PWM" intendo questo: il PWM trasporta un segnale, dentro di sé, giusto?
Supponiamo che tu abbia inserito nel PWM una sinusoide (tanto per fare un esempio qualunque).
Mi serve sapere quanto vale la frequenza di questa sinusoide.

Questa informazione é indispensabile QUALUNQUE metodo tu decida di utilizzare per demodulare, cioè trasformare il tuo segnale PWM in una tensione. (per parlare in modo semplice seppur poco preciso)

Non basta inserire nella formula che hai trovato C=\frac{1}{2\pi Rf} la frequenza di 25kHz per progettare il filtro, perché questa frequenza deve essere completamente rimossa, per cui il filtro dovrà tagliare più in basso, molto più in basso, però senza tagliare la frequenza che il segnale PWM trasporta, altrimenti non ti resta nulla.

Spero di essere stato chiaro.


Fammi un favore personale, smettila di dire che userai un DAC. E' una cazzata. punto.
Non importa chi te l'ha suggerito.
Generatore codice per articoli:
nomi
emoticon
citazioni
formule latex
Avatar utente
Foto UtentePietroBaima
83,3k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 10806
Iscritto il: 12 ago 2012, 1:20
Località: Londra

3
voti

[64] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtentePietroBaima » 16 giu 2021, 8:42

GioArca67 ha scritto:Non serve tutto il codice sorgente, basta la parte dove imposti i prescaler e gli Output Compare Registers (OCRxx).

Non credo che lo sappia.
Di solito copiano ed incollano snippet di codice presi dal sito di Arduino e poi fanno delle crasi strane perché hanno l'idea che basti prendere due snippet di codice diversi e metterli insieme per ottenere due funzioni contemporaneamente.
Non sanno come funzioni la temporizzazione interna del PWM e cosa sia e a cosa serva un prescaler e spesso mandano al PWM la frequenza di sistema non scalata per cui il contatore del PWM va in overcloking. (non scherzo, sono serio).
Ignorano che si possa programmare il PWM in free running o in compare match mode.

Una volta un tizio non capiva perché due snippet di codice funzionavano da soli, ma non insieme.
Entrambi programmavano il prescaler con due valori diversi.
Lo stesso UPC veniva utilizzato da entrambi con due valori di OCRA diversi. Inoltre uno dei due, con il compare match generava un interrupt e l'altro, con lo stesso compare match, voleva scrivere su di un pin...

Do not underestimate what a fool can do. Oscar Wilde
Generatore codice per articoli:
nomi
emoticon
citazioni
formule latex
Avatar utente
Foto UtentePietroBaima
83,3k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 10806
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[65] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto Utentegvee » 16 giu 2021, 10:10

PietroBaima ha scritto:Ignorano che si possa programmare il PWM in free running o in compare match mode.

So di qualcuno che, con Arduino, generava uno pseudo PWM (se così si può chiamare) commutando un GPIO e cambiando continuamente il divisore del clock del sistema interno.
Avatar utente
Foto Utentegvee
805 2 6
Frequentatore
Frequentatore
 
Messaggi: 265
Iscritto il: 11 feb 2018, 20:34

0
voti

[66] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtentePietroBaima » 16 giu 2021, 10:59

gvee ha scritto:So di qualcuno che, con Arduino, generava uno pseudo PWM (se così si può chiamare) commutando un GPIO e cambiando continuamente il divisore del clock del sistema interno.

Geniale, penso che non riuscirei a pensare un algoritmo meno efficiente di questo per fare un PWM.

E se pensassimo ad una International Inefficient Code Competition ed EY rilasciasse attestati IICC di livello Novice-Expert-Advanced-Proficient con relative medaglie ? :mrgreen:
Generatore codice per articoli:
nomi
emoticon
citazioni
formule latex
Avatar utente
Foto UtentePietroBaima
83,3k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 10806
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[67] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtenteGioArca67 » 16 giu 2021, 11:11

PietroBaima ha scritto:Non credo che lo sappia.


Ma senza codice come capisci cosa fa effettivamente?
La vedo dura a fare passare 25kHz con le impostazioni standard del PWM di Arduino...
Avatar utente
Foto UtenteGioArca67
330 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 324
Iscritto il: 12 mar 2021, 9:36

1
voti

[68] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto Utentexyz » 16 giu 2021, 11:48

gvee ha scritto:So di qualcuno che, con Arduino, generava uno pseudo PWM (se così si può chiamare) commutando un GPIO e cambiando continuamente il divisore del clock del sistema interno.


Chiariamo alcuni aspetti.

La board ≪Arduino≫ più diffusa (se non viene specificato il nome esatto) usa come
micro-controllare AVR ATmega328P della Microchip (prima Atmel) il quale permette funzioni molto avanzate dei PWM, molto di più di quelle offerte dalla semplice API di programmazione di Arduino, la quale non brilla in molti aspetti tra cui proprio le funzioni del PWM.

Se uno legge il datasheet del ATmega328P i pin che la board di Arduino chiama analogici non vengono mai (e sottolineo mai) chiamati analogici. La programmazione avanzata del PWM di Arduino permette di cambiare il divisore del clock principale al runtime, cosa che in certi applicazioni è fondamentale farlo (si usa direttamente il C o assembler). Tutti i vari tipi di PWM che si possono generare non vengono chiamati ≪pseudo PWM≫, ogni configurazione ha un nome specifico indicato e spiegato sempre nel datasheet.

Il termine ≪GPIO≫ per un AVR non è coretto, è un termine usato in altri micro controllori come gli ARM Cortex, con gli AVR i pin sono molto meno generici e hanno sempre funzioni specifiche com poca flessibilità.
Avatar utente
Foto Utentexyz
6.400 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1688
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[69] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtentePietroBaima » 16 giu 2021, 12:06

xyz ha scritto:La board ≪Arduino≫ più diffusa (se non viene specificato il nome esatto) usa come
micro-controllare AVR ATmega328P della Microchip (prima Atmel) il quale permette funzioni molto avanzate dei PWM, molto di più di quelle offerte dalla semplice API di programmazione di Arduino, la quale non brilla in molti aspetti tra cui proprio le funzioni del PWM.

Beh, se è per questo possiamo metterci a parlare dei bug che ha.
Forse però non va bene sparare sulla croce rossa.
Generatore codice per articoli:
nomi
emoticon
citazioni
formule latex
Avatar utente
Foto UtentePietroBaima
83,3k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 10806
Iscritto il: 12 ago 2012, 1:20
Località: Londra

2
voti

[70] Re: PWM, DAC(risoluzione) e Arduino

Messaggioda Foto UtentedrGremi » 16 giu 2021, 12:24

PietroBaima ha scritto:Perché il PWM è intrinsecamente una modulazione di tipo analogica, poi che si discretizzi l’informazione codificata nel tempo è una cosa diversa. Se vuoi stabilire un protocollo digitale per il PWM puoi chiamarla QPWM, che non credo esista. :D
Esempio: AM è una modulazione di tipo analogica perché l’ampiezza PUO’ variare con continuità, mentre ASK no.

Grazie del chiarimento. In effetti pensandoci bene il mio ragionamento iniziale porta ad un assurdo. Cioè il segnale è generato da un circuito digitale, è per forza discretizzato nel tempo quindi è digitale.
Ma allora ragionando così si "dovrebbe" dire che un DAC abbia comunque una uscita digitale, perché il segnale originale è stato campionato nel tempo (ma comunque questo non è un problema per via di shannon-nyquist visto che limitato in banda) e quantizzato (e questo non è reversibile invece). Ora visto che questo ragionamento è una supercazzola e ha molto più di filosofico che di ingegneristico non ha proprio senso tutto il discorso.
La modulazione è analogica quindi il segnale è analogico.

PietroBaima ha scritto:
drGremi ha scritto: Abbiamo detto essere tempo discreto e (ovviamente) discreto in tensione (perché binario). Non è digitale?

Qui viene fuori la confusione di cui si è parlato nei post passati.
E’ digitale nel senso che si parla di un segnale che passa da 0 ad 1 con soluzione di continuità, che rende il segnale adatto ad essere mandato su di un pin digitale di un microcontrollore, per esempio, ma non è digitale nel senso che il PWM codifica l’informazione usando il duty cycle, che è analogico.

La confusione deriva dal fatto che essendo comunque discreto nel tempo anche il duty cycle è con precisione finita.

PietroBaima ha scritto:Se guardi l’interno di quell’integrato che trasforma il PWM in una tensione vedrai che la prima cosa che fanno è discretizzare l’informazione contenuta nel duty cycle, per poi ottenerne un numero da mandare ad un DAC.
Estraggono l’informazione, che viene poi discretizzata. Se non è analogica questa...

Questo viene rifatto anche su segnali full digital per alcune elaborazioni (soprattutto ricevitori radio). D'altronde il segnale digitale, quando viaggia su supporto fisico è comunque analogico (cioè planck a parte) continuo nel tempo e in ampiezza.
Comunque ho scoperto esistere il DPWM. Credo questo tipo di confusione in realtà sia molto comunque perché ci si potrebbe spippolare il cervello e filosofeggiare. Ma questa non è materia da ingegneri :) Forse non ha proprio senso in questo caso cercare di definire tutto in maniera così dettagliata. Sappiamo cos'è, sappiamo le limitazioni e pace :ok:
Avatar utente
Foto UtentedrGremi
1.398 1 4 9
Master
Master
 
Messaggi: 769
Iscritto il: 20 nov 2019, 19:49

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Google [Bot], Google Feedfetcher e 58 ospiti