Bagaimana saya mendapatkan pembacaan tegangan rentang penuh dari sensor tekanan?

10

Saya membuat aplikasi menggunakan DIY Force Sensitive Resistor (FSR) yang diambil dari instruksi ini . Resistansi sensor ini biasanya berkisar dari 20 kOhm saat diam hingga 9kOhm saat ditekan.

Bagaimana cara saya mengkonversi nilai resistansi ini ke sinyal di mana 0v sesuai dengan kondisi istirahat dan 5v sesuai dengan kondisi "ditekan" sehingga saya bisa membacanya dengan Arduino?

bpijl
sumber

Jawaban:

14

Anda ingin rentang sinyal dari 0V hingga 5V. Bukankah kita semua :-)? Mari kita pergi untuk pendekatan yang berbeda dan melihat di mana itu membawa kita.

Titik awal: solusi termurah dan paling sederhana.

Itu akan menjadi resistor seri untuk membuat pembagi tegangan. Itu minimum absolut. Saya perhatikan bahwa orang tidak terlalu memikirkan resistor itu, hanya memilih nilai bulat yang bagus seperti 10k . Tetapi saya menemukan bahwa ada nilai optimal untuk ini. Ω

masukkan deskripsi gambar di sini

Kurva menunjukkan perbedaan tegangan antara pembacaan minimum dan maksimum (9k dan 20k resp.) Sebagai fungsi dari resistor seri (dalam k ). Lihat, memang memang sudah maksimal. Itu mudah ditemukan jika Anda mengingatnya ΩΩΩ

(f(x)g(x))=f(x)g(x)f(x)g(x)g2(x)

Perbedaan - memiliki ekstrem untuk VMAXVMIN

ddRX(RMAXRMAX+RXRMINRMIN+RX)=0

Memecahkan untuk memberi RX

RX=RMINRMAX

Kecantikan!

Jadi dalam kasus kami resistor seri akan 13,42 k , Anda dapat memeriksa ini pada grafik. Menempatkan resistor antara 0V dan + 5V ini akan memberi kita rentang keluaran [2V, 3V]. Itu rentang maksimum yang bisa Anda dapatkan dengan 1 resistor (*). Ω

Cukup? Arduino memiliki ADC 10-bit, sehingga kisaran ini akan memberi Anda kisaran 200 tingkat diskrit. Itu harus memberikan akurasi yang cukup untuk sensor DIY. Jadi tidak ada komponen lain seperti opamps yang dibutuhkan.


(*) Jawaban yang diterima memberikan kisaran 1,9V, tetapi memiliki persamaan yang salah . Tidak mungkin mendapatkan rentang yang lebih tinggi dari 1V dengan 1 resistor dan hanya pasokan + 5V.

stevenvh
sumber
2
+1. Ini harus mendapatkan lebih banyak suara positif. Setiap orang membutuhkan pembagi resistor untuk resistor variabel sekarang dan kemudian, dan mengapa tidak menggunakan rentang optimal sebagai pengganti resistor seri 10k konyol itu?
Federico Russo
5

Anda memerlukan tegangan negatif untuk dapat membuat pembagi tegangan resistor menuju 0V. Saya akan menganggap Anda memiliki + 5V dan -5V tersedia.
Menempatkan resistor variabel Anda antara + 5V dan GND. Sekarang Anda perlu menemukan nilai untuk resistor pull-down antara GND dan -5V. Nah, itu mudah; Anda ingin 0V keluar ketika resistor variabel adalah 20k , jadi pull-down juga harus 20k karena semuanya simetris. Selanjutnya kita harus mencari tahu apa tegangan keluaran pembagi ketika adalah 9k . Kami mencatat bahwa arus melalui adalah arus yang sama dengan arus melalui resistor pull-down, jadi RXΩΩ
RXΩRX

5VVO9kΩ=VO(5V)20kΩ

Mengerjakan ini memberi kita . Sekarang yang masih harus dilakukan adalah skala 0V..1.9V ke 0V..5V. Untuk ini kami menggunakan opamp RRIO (Rail-to-Rail I / O) sebagai penguat non-pembalik VO=1.9V

masukkan deskripsi gambar di sini

Jika Anda memilih dan Anda akan mendapatkan kisaran tegangan output 0V..5V untuk dari 20k ..9k .R 2 = 47 k Ω R X Ω ΩR1=18kΩR2=47kΩRXΩΩ

stevenvh
sumber
1

Saya pikir cara paling sederhana adalah pembagi tegangan yang memberi Anda 5V pada 9k dan berkurang dengan meningkatnya resistansi. Anda dapat bermain dengan berbagai kombinasi resistor dalam kalkulator pembagi tegangan ini . Akan tetapi, ini akan menjadi perkembangan linier.

blalor
sumber
2
Anda tidak dapat membuat pembagi yang memberi Anda 5V jika semua yang Anda miliki adalah 5V.
Federico Russo