Posso controllare un'uscita di tensione da un microcontrollore?


8

Devo generare valori tra 0 V e 0,8 V per un circuito e prendere il valore della tensione in uscita dal sistema e analizzare i dati. Posso generare automaticamente i valori di tensione usando un microcontrollore? (Ad esempio: 0,05 V, 0,1 V, 0,15 V ...)

Se la risposta è sì, quale microcontrollore dovrei usare e quali tecniche consiglieresti?

Se la risposta è no, puoi suggerire altri mezzi?

Risposte:


8

Sì, tutti i microcontrollori hanno un modo per produrre segnali di tensione controllati dal firmware. Il metodo della forza bruta prevede che il micro includa un convertitore da digitale ad analogico (D / A). Il firmware scrive un numero sul D / A e produce una tensione proporzionale a quel numero.

Una specifica importante di D / As è quanti bit ha il numero. Questo determina la sua risoluzione. Il D / A può produrre 2 N valori diversi quando ci sono N bit nel numero. Ad esempio, un D / A a 8 bit può produrre 256 livelli di tensione diversi. Si noti che un normale pin di uscita digitale può essere considerato come un D / A a 1 bit. Il numero ha due stati, 0 e 1, e la tensione di uscita è alta o bassa.

La maggior parte dei micro non ha D / As multi-bit integrato perché c'è poca richiesta per questo. Di solito proviamo a convertire i valori analogici in digitali il più presto possibile, facciamo le manipolazioni in modo digitale, quindi controlliamo le cose con gli impulsi. È insolito desiderare che un micro produca una tensione analogica. Anche in applicazioni come l'audio che potresti pensare intrinsecamente a un segnale analogico, le cose sono spesso gestite in modo digitale o con impulsi alla fine. Questo è fondamentalmente quello che è un amplificatore di classe D.

Se non si desidera utilizzare uno dei set limitati di micro che hanno un D / A integrato, è possibile aggiungerne uno esternamente. Ci sono molti D / As disponibili che il micro può guidare su un bus SPI, per esempio.

Tuttavia, a meno che non sia necessaria un'uscita ad alta velocità, il filtro passa basso dell'uscita PWM di un micro produce un segnale analogico gradevole. I micro sono bravi a produrre sequenze di impulsi ben controllate e molti hanno hardware incorporato per questo scopo. Ad esempio, si consideri un'uscita digitale che può essere modificata ogni 1 µs (con una frequenza di 1 MHz). Supponiamo di aver raggruppato i frammenti di tempo di 1 µs in blocchi di 1023. Per ciascun blocco, è possibile avere da 0 a 1023 dei frammenti in qualsiasi punto. Se dovessi fare una media di questo, otterresti un valore analogico con 1024 livelli possibili, che è quello che otterrai da un D / A a 10 bit. Il segnale non elaborato conterrà il valore medio desiderato, oltre alle alte frequenze a partire da 1 MHz / 1023 = 978 Hz. Applicando alcuni poli di filtro passa basso (un resistore e un condensatore per polo),

Questo tipo di A / D ha alcune belle proprietà in quanto è molto lineare, monotonico e privo di potenza di due uscite glitch. L'unico inconveniente è di solito la larghezza di banda. Per alcuni semplici resistori e condensatori che formano il filtro passa-basso, probabilmente non è possibile ottenere un segnale analogico più veloce di qualche 10s di Hz.

Si noti che l'utilizzo di 1023 sezioni per blocco è stata una scelta arbitraria effettuata. Se si desidera una maggiore risoluzione, ingrandire i blocchi, ma l'output filtrato dovrà cambiare più lentamente. Tuttavia, molti micro possono eseguire la generazione PWM in hardware con una velocità di taglio molto più rapida di 1 MHz.

Proverei a vedere se il metodo PWM può essere fatto funzionare prima di passare a un D / A esterno.


Come principiante completo, è stato utile vedere lo spettro di filtri disponibili: analog.com/designtools/it/filterwizard
user391339

3

Quello che stai cercando di progettare è un sistema di acquisizione dati

Se ha un convertitore digitale-analogico (DAC), puoi farlo. In caso contrario, ottenere un DAC esterno e far comunicare il microcontrollore tramite tutto ciò che può (I2C, SPI, UART, ecc.)

Notato che hai un microchip taggato, hanno microcontrollori con un DAC da quelli semplici (pic12f752, pic16f753.782) per far avanzare quelli (dsPIC33fj16GS504.502.302) e molti altri. puoi trovarli qui http://www.microchip.com/maps/microcontroller.aspx


Quindi potrei usare il 12F752 per esempio, usare il suo CDA per generare una tensione e usare un CAD per prendere i valori del sistema e analizzare, giusto?
user26136

@ user26136 se CDA = DA del micrcontrollore e CAD = AD del microcontrollore, allora sì !. Consiglierei anche di esaminare le note dell'applicazione di calibrazione
Iancovici,

Haha sì, lo è.
user26136

1

A seconda della corrente assorbita dal sistema, potresti essere in grado di farlo con una scala di resistori come DAC: http://en.wikipedia.org/wiki/Resistor_ladder

Se si desidera un numero limitato di valori di tensione specifici, è anche possibile progettare la scala dei resistori in modo da emettere quelli esattamente anziché il normale sistema di 2 ^ n valori distribuiti uniformemente.

Se assorbe una corrente non banale, si vorrà un amplificatore operazionale sull'uscita configurato come buffer. Assicurarsi che l'amplificatore operazionale funzioni con una linearità adeguata vicino a 0 V; potrebbe essere necessario un alimentatore negativo per questo.


1

Oltre alle altre risposte, la maggior parte dei microcontrollori ha una funzione PWM (e, in caso contrario, puoi sempre bit-bang). Se inserisci PWM in un semplice filtro RC, puoi creare un DAC primitivo senza molti componenti o costi aggiuntivi.


1

Se stai bene con PWM, allora l'uscita analogica di Arduino farebbe bene il lavoro. Puoi anche considerare di aggiungere un filtro passa basso, poiché gli impulsi possono essere molto rumorosi.

Se hai bisogno di una soluzione più pulita, trova i microcontrollori forniti con i moduli DAC. Alcuni dei microcontrollori MSP430 dispongono di DAC ( vedi pagina 23 ) che è possibile utilizzare. Devi guardare nei loro fogli dati.

Se ti trovi vincolato a un microcontrollore senza DAC, puoi prendere in considerazione l'idea di ottenere un chip DAC. Questi chip possono essere controllati facilmente tramite SPI o I2C e sono economici. Ecco un DAC a 12 bit che costa poco più di un dollaro.

Spero che sia di aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.