Scaling Voltage untuk Arduino Analog In, Beyond Voltage Dividers


16

Saya baru-baru ini membangun beberapa sensor tikungan serat optik dan saya ingin membaca nilai yang saya dapatkan dari mereka ke komputer melalui Arduino. Saya mengukur cahaya dengan fotodioda ini dari Industrial Fiber Optics . Saat ini, saya memberikan LED di ujung lain serta fotodioda 2.2V. Pertanyaan saya berkaitan dengan fakta bahwa fluktuasi tegangan yang diukur oleh multi-meter pada fotodioda adalah linear, tetapi agak kecil karena seratnya terdeformasi, bahkan cukup radikal. Dengan serat lurus, tergantung pada serat (sulit untuk mencetaknya secara identik), tegangan melayang di sekitar 1,92V, misalnya, dan dengan menekuknya akan naik ke, katakanlah, 1,93-1,94V. Saya tidak khawatir tentang mendapatkan tegangan yang identik seperti yang saya dapat skala dalam perangkat lunak.

Yang saya khawatirkan adalah kehilangan resolusi ketika melakukan A / D dengan Arduino. Jika fluktuasi tegangan saya berada pada urutan 10mV, bukankah Arduino 10-bit A / D akan menghitungnya, bahkan jika saya menaikkan tegangan hingga 5V dengan pembagi tegangan? Apa yang saya cari adalah scaler analog. Bagaimana saya bisa merentangkan kisaran antara 1,92 dan 1,94 untuk mencakup rentang penuh, dari 0V hingga 5V sehingga saya bisa memanfaatkan rentang penuh Arduino A / D?

Saya merasa ini harus menjadi operasi umum dalam elektronik, tetapi saya tidak pernah mempelajarinya secara resmi, jadi banyak hal yang hilang pada saya.

(Anda mungkin berpikir, seperti davr dulu, "mengapa Anda menggunakan serat optik untuk penginderaan tikungan? Mengapa Anda mengharapkan perubahan voltase saat serat tertekuk?" Caranya adalah dengan menghapus kelongsong pada satu sisi kabel serat optik. Ini memungkinkan cahaya tumpah. Ketika kabel dibengkokkan dari penilaian, bahkan lebih banyak cahaya yang dikeluarkan dari kabel, menyebabkan penurunan tegangan pada penerima, dan sebaliknya.)


Apakah Anda akan berbaik hati menunjukkan skema penerima Anda? Apakah Anda memasok tegangan bias 1,9 V?
endolith

Jika maksud Anda skema untuk penerima itu sendiri, saya ditautkan ke lembar data di atas. Ini dia lagi: i-fiberoptics.com/pdf/IFD91.pdf Jika maksud Anda bagaimana saya memasangnya, Anda dapat melihat di foto. Penerima adalah yang hitam. Saya memberikan 2.2V (meskipun, di foto itu adalah baterai li-ion) melalui kabel merah ke sisi penerima dengan titik oranye, dan saya mengukur tegangan di resistor yang menuju ke tanah di sisi lain.
teras

Jawaban:


11

Jadi, jika saya mengerti dengan benar, Anda ingin dapat "membaca" variasi 10 mV di atas sinyal 1.9V?

Jika itu masalahnya maka saya akan menyarankan dua tahap terpisah. Yang pertama akan menjadi penguat fotodioda (halaman 9 adalah sirkuit yang paling standar). Ini akan membantu untuk mendapatkan arus dari fotodioda Anda yang diterjemahkan ke dalam tegangan.

Tahap kedua akan menjadi penguat instrumentasi, seperti keluarga INA dari Texas Instruments (yang terbaik tetapi juga bisa mahal). Ini akan membantu menghilangkan sinyal "mode umum" Anda, yang dalam hal ini adalah 1.9 V. Anda juga dapat menambahkan penguatan ke amp instrumentasi atau secara bergantian menambahkan op amp sederhana dalam konfigurasi non-pembalik di akhir untuk membantu mendapatkan sinyal Anda hingga 5 V. diperlukan

Saya tidak mengatakan itu akan menjadi sempurna, tapi saya pikir itu awal yang baik.

Sebagai catatan terakhir, saya menyukai ide David di atas tentang klem, meskipun itu dapat menyebabkan beberapa kesalahan pengukuran pada konverter A / D. Yang lebih penting adalah jika Anda dapat mengayunkannya, cobalah op amp yang lebih baik daripada 741. Itu biasa tetapi spesifikasinya mengerikan. 3 atau 4 mV dari tegangan offset pada terminal input benar-benar dapat mengacaukan sinyal kecil seperti yang Anda coba ukur.

~ Chris Gammell


1
Anda tidak perlu amp instrumentasi. Dif amp sederhana akan dilakukan. Anda membutuhkan suplai konstan 1,9 V untuk digunakan sebagai referensi. Saya menduga sesuatu seperti ini sudah ada di sirkuit sebagai bias untuk sensor. Ini akan membantu untuk memiliki skema. Juga, setelah menghapus bias, Anda perlu menambahkan kembali bias lain untuk mendapatkannya antara rentang 0 dan 5 V dari ADC.
endolith

1
Saya setuju bahwa Anda TIDAK PERLU satu, tapi itu ide yang bagus. Sebuah instrumentasi amp hanyalah sebuah amp dengan buffer sebelumnya (kadang-kadang dengan resistor ditambahkan untuk mendapatkan). Jika Anda hanya menggunakan diff amp, Anda berada pada belas kasihan resistor di diff amp Anda; terkadang serendah 1K. Jika dia mencoba mengukur sesuatu, impedansi tinggi (dari buffer iAmp) dapat sangat membantu (yaitu tidak ada aliran arus ke perangkat pengukuran).
Chris Gammell

12

Pengondisian sinyal dalam pengertian ini sangat umum. Anda ingin menggunakan penguat untuk membuat rentang rentang 10mV (misalnya) seluruh rentang 0-5V dari arduino. Ini dapat dilakukan dengan menggunakan op-amp seperti LM741. Anda mungkin juga ingin menggunakan "penjepit tegangan" (mis: dua dioda zener) pada output pengkondisi sinyal Anda ke dalam ADC untuk memastikan bahwa nilainya tidak melebihi 5V. Jika Anda melihat-lihat online di op-amp data sheet dan / atau sirkuit pengkondisian sinyal, Anda harus menemukan panduan untuk apa yang Anda cari.


4

Sarankan Anda melihat kombinasi PGA diferensial (penguat penguatan yang dapat diprogram) dan DAC, dengan output sensor menuju input "+" dan DAC menuju input "-". (Atau sesuatu yang terintegrasi yang memberi Anda fungsionalitas yang setara.) Pada dasarnya, lihat sinyal dengan penguatan rendah, cari tahu offsetnya, tempatkan tegangan pada DAC, dan kencangkan penguatannya.

PGA308 TI sepertinya merupakan solusi yang bagus.

Jika Anda menginginkan solusi yang lebih murah, gunakan penguat diferensial gain-tetap (standar 4-resistor + op-amp akan lakukan) + DAC 8-bit yang stabil dan tenang (karakteristik stabilitas / kebisingan lebih penting daripada akurasi), sekali lagi pasang output sensor pada input "+" ke diff amp dan output DAC pada input "-".

Latihan untuk pembaca: tunjukkan bahwa Anda dapat mengeluarkan keluaran diff-amp dari saturasi dan ke dalam rentang linier dengan menggunakan teknik pencarian biner dengan DAC, dan memastikan bahwa gain tidak lebih besar dari G1 = tegangan input ADC skala penuh, dibagi dengan jumlah ukuran langkah nominal DAC dan DNL-nya (nonlinier diferensial). Saya mungkin akan menggunakan yang lebih kecil dari (G1 / 2) dan G2, di mana G2 = tegangan input ADC skala penuh dibagi dengan rentang tegangan output sensor yang Anda pedulikan.


Jauh terlalu ambisius untuk saya saat ini diberikan batasan waktu, tetapi terima kasih atas sarannya. Saya senang menyelam lebih jauh ke pengkondisian sinyal analog untuk prototipe masa depan.
teras

Mengapa Anda membutuhkan DAC? Anda hanya menghasilkan DC offset dengannya? Itu agak berlebihan.
endolith

Ya. DAC didasarkan pada asumsi harus mengubah offset DC pada rentang yang luas. Jika Anda memiliki sistem dengan rentang tegangan hanya rentang sempit, (dengan asumsi Anda telah melakukan analisis toleransi Anda dengan benar) maka pembagi resistor dan referensi mungkin cukup untuk menghasilkan tegangan offset. Atau untuk sedikit lebih rumit, sebuah jaringan resistor + multiplexer (yang merupakan beberapa DAC). DAC bukanlah perangkat yang terlalu rumit atau mahal, jika Anda tidak memerlukan kecepatan sangat tinggi atau resolusi sangat halus.
Jason S

3

Menggunakan serat optik sebagai sensor tikungan mungkin merupakan pilihan yang buruk, bukankah seluruh titik serat optik dengan mudah memungkinkan Anda membengkokkan cahaya di sudut-sudut dengan kehilangan minimal?


2
Ya, tetapi jika Anda menanggalkan jaket dan dengan ringan mengikis kelongsong pada satu sisi dengan pisau cukur, jumlah cahaya yang melewati akan bervariasi saat Anda menekuk serat. Fitur yang bagus adalah Anda mendapatkan sinyal dua arah. Jika Anda menekuk dari penilaian, lebih sedikit cahaya yang menembus, jika Anda membungkuk ke arah itu, lebih banyak cahaya yang melewati. Anda harus menggunakan dua sensor tikungan tradisional untuk mendapatkannya. Mereka juga terlihat keren.
teras

2

Anda memerlukan dua hal: untuk menggunakan input diferensial untuk dibandingkan dengan standar 1.9v (atau dekat dengan itu), dan penguat untuk meningkatkan resolusi perbedaan itu.

Untuk hasil terbaik, Anda harus menggunakan amp instrumentasi eksternal atau op amp berkualitas tinggi. Tetapi Anda dapat mencoba menggunakan fasilitas yang dibangun ke dalam mikrokontroler. Arduino Mega (chip ATMega2560) dan Arduino Leonardo keduanya termasuk opsi untuk diferensial, input yang diperkuat ke ADC tepat pada chip. (The Uno tidak memiliki ini). ATMega2560 dapat melakukan beberapa saluran (multipleks) ADC diferensial yang diperkuat untuk beberapa sensor - bacalah lembar data untuk melihat kombinasi pin mana yang mungkin. Ini memiliki opsi amplifikasi 200x, yang akan menempatkan resolusi 1024 langkah penuh di 25 mv. Anda hanya perlu memposisikan jendela 25 mV di mana Anda membutuhkannya!

Itu mungkin atau mungkin tidak cukup bebas noise untuk keperluan Anda - itu tidak berkualitas tinggi seperti yang Anda dapat membangun eksternal untuk lebih banyak $$.

Bagian yang lebih sulit mungkin mendapatkan referensi 1.9v yang stabil dan akurat untuk dibandingkan.


Datang ke sini untuk mengatakan ini. +1!
Nick Johnson
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.