Posso controlar uma saída de tensão de um microcontrolador?


8

Eu tenho que gerar valores entre 0 V e 0,8 V para um circuito e pegar o valor da tensão de saída do sistema e analisar os dados. Posso gerar valores de tensão automaticamente usando um microcontrolador? (Por exemplo: 0,05 V, 0,1 V, 0,15 V ...)

Se a resposta for sim, qual microcontrolador devo usar e quais técnicas você recomendaria?

Se a resposta for não, você pode sugerir outros meios?

Respostas:


8

Sim, todos os microcontroladores têm alguma maneira de produzir sinais de tensão controlados pelo firmware. O método de força bruta é para o micro incluir um conversor digital para analógico (D / A). O firmware grava um número no D / A e produz uma tensão proporcional a esse número.

Uma especificação importante de D / As é quantos bits o número possui. Isso determina sua resolução. O D / A pode produzir 2 N valores diferentes quando houver N bits no número. Por exemplo, um D / A de 8 bits pode produzir 256 níveis de tensão diferentes. Observe que um pino de saída digital comum pode ser considerado como um D / A de 1 bit. O número tem dois estados, 0 e 1, e a tensão de saída é alta ou baixa.

A maioria dos micros não vem com D / As de vários bits, porque há pouca demanda para isso. Normalmente, tentamos converter valores analógicos em digitais o mais cedo possível, fazer as manipulações digitalmente e controlar as coisas com pulsos. É incomum querer um micro para produzir uma tensão analógica. Mesmo em aplicativos como o áudio que você pode considerar inerentemente sobre um sinal analógico, as coisas geralmente são tratadas digitalmente ou com pulsos no final. Isso é basicamente o que é um amplificador de classe D.

Se você não quiser usar um dos conjuntos limitados de micros com D / A incorporada, poderá adicioná-lo externamente. Existem muitos D / As disponíveis que o micro pode dirigir através de um barramento SPI, por exemplo.

No entanto, a menos que você precise de alta velocidade de saída, o filtro passa-baixo da saída PWM de um micro resulta em um bom sinal analógico. Os micros são bons em produzir sequências de pulsos bem controladas, e muitos possuem hardware incorporado para esse fim. Por exemplo, considere uma saída digital que pode ser alterada a cada 1 µs (na taxa de 1 MHz). Suponha que você agrupou as fatias de tempo de 1 µs em blocos de 1023. Para cada bloco, você pode ter de 0 a 1023 das fatias altas. Se você calculasse a média, obteria um valor analógico com 1024 níveis possíveis, que é o que obteria de um D / A de 10 bits. O sinal bruto conterá o valor médio desejado, além de altas frequências começando em 1 MHz / 1023 = 978 Hz. Ao aplicar alguns polos de filtragem passa-baixo (um resistor e capacitor por polo),

Esse tipo de A / D tem algumas boas propriedades, pois é muito linear, monotônico e sem potência de duas saídas de falha. A única desvantagem é geralmente a largura de banda. Para alguns resistores e capacitores simples que formam o filtro passa-baixo, você provavelmente não pode obter um sinal analógico mais rápido que alguns 10s de Hz.

Observe que o uso de 1023 fatias por bloco foi uma escolha arbitrária que você fez. Se você quiser mais resolução, aumente os blocos, mas a saída filtrada terá que mudar mais devagar. No entanto, muitos micros podem fazer a geração de PWM em hardware com uma taxa de fatia muito mais rápida que 1 MHz.

Eu tentaria ver se o método PWM pode funcionar antes de ir para um D / A externo.


Como um novato completo, foi útil ver o espectro de filtros disponíveis: analog.com/designtools/en/filterwizard
user391339

3

O que você está tentando criar é um sistema de aquisição de dados

Se houver um conversor Digital-Analógico (DAC), você poderá fazê-lo. Caso contrário, obtenha um DAC externo e faça com que o microcontrolador se comunique com ele do jeito que puder (I2C, SPI, UART, etc.)

Observe que você marcou um microchip, eles têm microcontroladores com um DAC desde os mais simples (pic12f752, pic16f753,782) até os avançados (dsPIC33fj16GS504,502,302) e vários outros. você pode encontrá-los aqui http://www.microchip.com/maps/microcontroller.aspx


Então eu poderia usar o 12F752, por exemplo, usar o CDA para gerar uma tensão e usar um CAD para pegar os valores do sistema e analisar, certo?
User26136

@ user26136 se CDA = DA do microcontrolador e CAD = AD do microcontrolador, sim! Eu recomendo também olhar para notas de aplicação de calibração
Iancovici

Haha sim, é.
user26136

1

Dependendo da corrente consumida pelo sistema, você poderá fazer isso com uma escada de resistor como DAC: http://en.wikipedia.org/wiki/Resistor_ladder

Se você deseja um pequeno número de valores de tensão específicos, pode até projetar a escada do resistor para emitir esses valores exatamente ao invés do sistema normal de 2 ^ n valores espaçados uniformemente.

Se ele consumir corrente não trivial, você desejará um amplificador operacional na saída configurado como um buffer. Verifique se o seu op-amp opera com linearidade adequada perto de 0V; você pode precisar de uma fonte de alimentação negativa para isso.


1

Além das outras respostas, a maioria dos microcontroladores possui uma função PWM (e, caso contrário, você sempre pode usar uma). Se você alimentar o PWM em um filtro RC simples, poderá criar um DAC primitivo sem muitos componentes ou custos adicionais.


1

Se você concorda com o PWM, a saída analógica do Arduino faria o trabalho perfeitamente. Você também pode considerar adicionar um filtro passa-baixo, pois os pulsos podem ser muito barulhentos.

Se você precisar de uma solução mais limpa, encontre microcontroladores que acompanham os módulos DAC. Alguns dos microcontroladores MSP430 possuem DAC (na página 23 ) que você pode usar. Você precisa examinar suas folhas de dados.

Se você se sentir limitado a um microcontrolador sem DAC, considere adquirir um chip DAC. Esses chips podem ser controlados facilmente via SPI ou I2C e são baratos. Aqui está um DAC de 12 bits que custa um pouco mais de um dólar.

Espero que isto ajude.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.