Bisakah saya mengontrol output tegangan dari mikrokontroler?

8

Saya harus menghasilkan nilai antara 0 V dan 0,8 V untuk rangkaian dan mengambil nilai output tegangan dari sistem dan menganalisis data. Dapatkah saya menghasilkan nilai tegangan secara otomatis menggunakan mikrokontroler? (Misalnya: 0,05 V, 0,1 V, 0,15 V ...)

Jika jawabannya ya, mikrokontroler mana yang harus saya gunakan dan teknik apa yang akan Anda rekomendasikan?

Jika jawabannya tidak, dapatkah Anda menyarankan cara lain?

pengguna26136
sumber

Jawaban:

8

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.

Olin Lathrop
sumber
Sebagai pemula lengkap, ini berguna untuk melihat spektrum filter yang tersedia: analog.com/designtools/en/filterwizard
user391339
3

Apa yang Anda coba desain adalah Sistem Akuisisi Data

Jika memiliki konverter Digital-ke-Analog (DAC) maka Anda dapat melakukannya. Kalau tidak, dapatkan DAC eksternal dan minta mikrokontroler berkomunikasi dengannya melalui apa pun yang ia bisa (I2C, SPI, UART, dll.)

Melihat Anda menandai microchip, mereka memiliki mikrokontroler dengan DAC dari yang sederhana (pic12f752, pic16f753.782) untuk memajukan yang (dsPIC33fj16GS504.502.302) dan banyak lagi. Anda dapat menemukannya di sini http://www.microchip.com/maps/microcontroller.aspx

Iancovici
sumber
Lalu saya bisa menggunakan 12F752 misalnya, menggunakan CDA-nya untuk menghasilkan tegangan, dan menggunakan CAD untuk mengambil nilai-nilai sistem dan menganalisis, kan?
user26136
@ user26136 jika CDA = DA mikrokontroler, dan CAD = AD mikrokontroler maka ya !. Saya akan merekomendasikan juga melihat ke catatan aplikasi kalibrasi
Iancovici
Haha ya, benar.
user26136
1

Bergantung pada arus yang ditarik oleh sistem, Anda mungkin dapat melakukan ini dengan tangga resistor sebagai DAC: http://en.wikipedia.org/wiki/Resistor_ladder

Jika Anda menginginkan sejumlah kecil nilai tegangan tertentu, Anda bahkan dapat merancang tangga resistor untuk memancarkannya secara tepat daripada sistem normal dengan nilai spasi yang sama.

Jika itu menarik arus non-sepele, Anda akan menginginkan op-amp pada output yang dikonfigurasi sebagai buffer. Pastikan op-amp Anda beroperasi dengan linearitas yang sesuai di dekat 0V; Anda mungkin memerlukan catu daya negatif untuk ini.

pjc50
sumber
1

Selain jawaban lain, sebagian besar mikrokontroler memiliki fungsi PWM (dan jika tidak, Anda selalu dapat menggigitnya). Jika Anda memasukkan PWM ke filter RC sederhana, Anda dapat membuat DAC primitif tanpa banyak komponen atau biaya tambahan.

Phil Frost
sumber
1

Jika Anda setuju dengan PWM, maka keluaran Analog Arduino akan melakukan pekerjaan dengan baik. Anda juga dapat mempertimbangkan untuk menambahkan filter low pass, karena pulsa bisa sangat bising.

Jika Anda membutuhkan solusi yang lebih bersih, temukan mikrokontroler yang datang dengan modul DAC. Beberapa mikrokontroler MSP430 memiliki DAC ( lihat halaman 23 ) yang dapat Anda gunakan. Anda perlu melihat lembar datanya.

Jika Anda menemukan diri Anda terbatas pada mikrokontroler tanpa DAC, Anda dapat mempertimbangkan untuk mendapatkan chip DAC. Chip ini dapat dikontrol dengan mudah melalui SPI atau I2C, dan harganya murah. Berikut adalah DAC 12 bit yang harganya sedikit lebih dari satu dolar.

Semoga ini membantu.

bot3663369
sumber