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.