Mengatasi output tidak linear sensor FSR pada Arduino

heloo...sobat GoBlog, kangen nih, ternyata sudah cukup lama tidak sharing materi lagi. Liburan lebaran ternyata cukup membuatku terlelap, dan tidak terasa sudah hampir habis tahun 2014. Dan tetap seperti biasanya aku selipin curcol, keinginan untuk foto selfie pake toga masih belum tercapai hufttt......Padahal biasiswa udah masuk masa expansi 4 bulan sampai desember. Well, apapun yang terjadi kita harus jalani hehehe...

Oke sebelum airmataku menetes aku akhiri dulu curcolnya dan yang penting saat ini aku masih bisa berbagi sesuatu dengan sobat GoBlog semua. Bisa berbagi adalah anugerah terindah buatku hehehe....

Materi kali ini berhubungan dengan sensor, pemrograman, dan kendali. Jadi buat sobat yang suka membuat instrumen-instrumen tertentu dengan menggunakan mikrokontroller seperti Arduino misalnya akan cocok sekali. Awalnya aku butuh sensor untuk mengukur tekanan, setelah survei ada beberapa jenisnya. Dari beberapa yang aku temukan sepertinya flexi force sensor cukup baik tetapi ternyata harganya membuatku mundur karena cukup tinggi untuk spesifikasi yang aku butuhkan yaitu sekitar 300rb. Kemudian aku memutuskan untuk membeli pilihan kedua yaitu Force Sensing Resistor (FSR) dengan harga dibawah 100rb (sekitar 90 sekian aku lupa). Wujudnya FSR bisa sobat-sobat lihat pada gambar 1.

Gambar 1. Penampakan FSR

Dari namanya sudah jelas terlihat bahwa FSR bekerja berdasarkan perubahan resistansi karena pengaruh gaya yang bekerja pada permukaannya. Sehingga dalam pemasangannya pun kita menggunakan prinsip pembagi tegangan, sehingga outputnya yang keluar menjadi berupa tegangan (volt). Untuk rangkaian inputnya bisa sobat-sobat lihat pada gambar 2.


Gambar 2. Rangkaian input FSR

Jadi pada rangkaian inputnya kita membutuhkan RM dan sebuah Op-Amp. RM ini adalah resistor yang mempengaruhi karakteristik output sensor FSR. Untuk lebih jelasnya sobat-sobat bisa doownload datasheet dari FSR, disana sobat-sobat bisa menemukan informasi detailnya.

Sekarang ke permasalah utama yang aku hadapi. Ternyata output dari FSR ini tidak linear, artinya kita tidak bisa serta merta memasukkan rumus ke program mikrokontroler dengan perkalian biasa untuk konversi output tegangan menjadi gram. Untuk yang bingung dengan penjelasanku tentang linear, aku kasih perumpamaan atau contoh kasus linear. Contoh kasus linear misal pada output 1 volt sama dengan 100gram, output 2 volt sama dengan 200gram, maka pada output 4 volt sudah pasti sama dengan 400gram. Itu jika outputnya linear. Output FSR yang tidak linear ini bisa dilihat pada datasheetnya, atau sobat-sobat bisa langsung lihat pada gambar 3.



Gambar 3. Data output FSR

Dari grafik tegangan terhadap gaya pada gambar 3 jelas kita lihat bahwa karakteristik output FSR tidak linear. Dan artinya kita tidak bisa langsung memunculkan output pada mikrokontroler berupa gram dengan perkalian biasa. Langkah pertama yang perlu kita lakukan adalah menentukan RM untuk memilih karakteristik output yang mana yang paling cocok dengan apa yang kita mau. Kemudian setelah RM kita tentukan kita berarti memiliki output dengan karakteristik sesuai RM yang kita pilih. Pada kasusku aku memilih RM 10k. Kemudian kita rangkai rangkaian input FSR dengan mikrokontroler, dalam kasus ini aku pake Arduino. (lihat gambar 4).

Gambar 4. Rangkaian hardware

Pada rangkaian gambar 4 digunakan op-amp LM358, tetapi sebenarnya sobat-sobat bisa menggunakan op-amp jenis yang lain misalnya seperti LM741. Untuk pemrograman akuisisi FSR sampai dengan output tegangan sepertinya tidak ada masalah. Sobat-sobat tinggal menggunakan perintah AnalogRead aja. Atau pemrograman sederhananya seperti gambar 5, dengan output masih tegangan (volt).

Gambar 5. Program akuisisi FSR output tegangan

Pada program gambar 5 satuannya adalah volt, dan sekarang kita masuk ke masalah yaitu kita ingin output akhirnya adalah gram. langkah yang harus kita lakukan adalah memetakan karakteristik output FSR ke dalam sebuah tabel terlebih dahulu. Jadi data seperti pada gambar 3 kita tabelkan dahulu. Hasilnya seperti tabel 1.

Tabel 1. Output FSR

Dari tabel 1 kliatan kan kalau outputnya ngga linear, 1 volt aja 200 gram tetapi 2 volt sama dengan 1000gram atau 1 kg. Nah inilah masalah yang menantang untuk diselesaikan, hehehe....

Permasalahan tersebut bisa kita selesaikan dengan persamaan polynomial, untuk memudahkan dan mempercepat kita, kita bisa menggunakan bantuan microsof Excell. Buat grafik dari tabel 1 kemudian garis grafiknya sobat-sobat klik kanan terus klik Addtrendline. Kemudian pilih polynomial dan tentukan berapa ordenya. Pada kasusku aku coba semua orde kemudian aku analisa yang paling mendekati, terutama pada kisaran output yang kita mau. Hasil data polynomialku seperti gambar 6 dan 7 dibawah ini.



Gambar 6. Grafik dari tabel 1 dan persamaan polynomialnya (beberapa orde)



Gambar 7. Tabel hasil perbandingan pers.polynomial dengan datasheet


Dari hasil perbandingan seperti pada gambar 7, aku memutuskan untuk menggunakan pers. polynomial dengan orde 5 dengan beberapa pertimbangan. Persamaannya adalah sebagai berikut:


Nah setelah ketemu persamaannya, maka kita sekarang tinggal memasukkannya ke dalam program Arduino. Biar cepet maka tak SS aja nih program yang udah aku buat sobat-sobat. silahkan cekibrot pada gambar 8.


Gambar 8. Program arduino FSR

Dan sepertinya sudah cukup jelas kan sobat GoBlog semua, dan sepertinya jari-jari indahku juga udah mulai capek nih hahahaha....Jika memang masih ada yang kurang jelas atau bahkan mungkin ada tulisanku yang ngaco sobat-sobat bisa langsung komen di kolom komentar atau bisa juga lewat kontak yang udah aku sediakan di blog ini.

Akhir kata, terimakasih udah mengikuti dan menyimak tulisan ini, semoga berguna hehehe....


Salam Garuda !!








Comments

  1. berharap... ada yang mau ngajarin robotik.. hellllppppp !

    ReplyDelete
    Replies
    1. Kuliah atau udah kerja gan? hehehe....yang penting suka dulu seh mainan robot atau segala macam aplikasi otomasi gan. Udah banyak tutorial gan, bisa buku, kursus, ataupun artikel2 di internet yang bisa dicari di google :)

      Delete

Post a Comment