Ya, semua mikrokontroler memiliki beberapa cara untuk menghasilkan sinyal tegangan yang dikendalikan oleh firmware. Metode brute force adalah agar mikro memasukkan konverter digital ke analog (D / A). Firmware menulis angka ke D / A dan menghasilkan tegangan sebanding dengan angka itu.
Salah satu spesifikasi penting dari D / As adalah berapa banyak bit yang dimilikinya. Ini menentukan resolusinya. D / A dapat menghasilkan 2 N nilai yang berbeda ketika ada N bit dalam angka. Sebagai contoh, D / A 8 bit dapat menghasilkan 256 level tegangan yang berbeda. Perhatikan bahwa pin output digital biasa dapat dianggap sebagai 1 bit D / A. Angka tersebut memiliki dua status, 0 dan 1, dan tegangan outputnya tinggi atau rendah.
Kebanyakan micros tidak datang dengan multi-bit D / As bawaan karena ada sedikit permintaan untuk ini. Biasanya kami mencoba mengubah nilai analog ke digital sedini mungkin dalam prosesnya, melakukan manipulasi secara digital, kemudian mengendalikan berbagai hal dengan pulsa. Tidak biasa menginginkan mikro untuk menghasilkan tegangan analog. Bahkan dalam aplikasi seperti audio yang Anda anggap sebagai inheren tentang sinyal analog, banyak hal yang sering ditangani secara digital atau dengan pulsa pada akhirnya. Pada dasarnya itulah yang dimaksud dengan amplifier kelas D.
Jika Anda tidak ingin menggunakan salah satu dari set micros terbatas yang memiliki D / A bawaan, Anda dapat menambahkannya secara eksternal. Ada banyak D / As yang tersedia yang dapat dikendarai oleh mikro melalui bus SPI, misalnya.
Namun, kecuali Anda membutuhkan output kecepatan tinggi, low pass filtering output PWM dari mikro menghasilkan sinyal analog yang bagus. Mikro sangat bagus dalam menghasilkan rangkaian pulsa yang terkontrol dengan baik, dan banyak yang memiliki perangkat keras untuk keperluan ini. Sebagai contoh, pertimbangkan output digital yang dapat diubah setiap 1 μs (pada kecepatan 1 MHz). Misalkan Anda mengelompokkan irisan waktu 1 μs menjadi blok 1023. Untuk setiap blok, Anda dapat memiliki irisan 0 hingga 1023 dari tinggi. Jika Anda meratakan ini, Anda akan mendapatkan nilai analog dengan level 1024 yang mungkin, yang akan Anda dapatkan dari D / A 10 bit. Sinyal mentah akan berisi nilai rata-rata yang Anda inginkan, ditambah frekuensi tinggi mulai dari 1 MHz / 1023 = 978 Hz. Dengan menerapkan beberapa kutub low pass filtering (satu resistor dan kapasitor per kutub),
Tipe A / D ini memiliki beberapa sifat yang bagus karena sangat linier, monotonik, dan tidak memiliki kekuatan dua keluaran kesalahan. Satu-satunya kelemahan biasanya bandwidth. Untuk beberapa resistor dan kapasitor sederhana yang membentuk filter low pass, Anda mungkin tidak bisa mendapatkan sinyal analog lebih cepat dari beberapa Hz.
Perhatikan bahwa menggunakan 1023 irisan per blok adalah pilihan arbiter yang Anda buat. Jika Anda ingin lebih banyak resolusi, buat blok lebih besar, tetapi kemudian output yang difilter harus berubah lebih lambat. Namun, banyak mikro dapat melakukan pembuatan PWM dalam perangkat keras dengan kecepatan slice 1 MHz lebih cepat.
Saya akan mencoba untuk melihat apakah metode PWM dapat dibuat berfungsi sebelum pergi ke D / A eksternal.