Dalam tutorial ini kita akan mengembangkan rangkaian menggunakan sensor Force, Arduino Uno dan motor servo. Ini akan menjadi sistem kontrol servo di mana posisi poros servo ditentukan oleh berat yang ada pada sensor gaya. Sebelum melangkah lebih jauh mari kita bahas tentang servo dan komponen lainnya.
Motor Servo digunakan jika diperlukan gerakan atau posisi poros yang akurat. Ini tidak diusulkan untuk aplikasi kecepatan tinggi. Ini diusulkan untuk kecepatan rendah, torsi sedang dan aplikasi posisi yang akurat. Motor ini digunakan dalam mesin lengan robotik, kontrol penerbangan, dan sistem kontrol. Motor servo juga digunakan di beberapa printer dan mesin faks.
Motor servo tersedia dalam berbagai bentuk dan ukuran. Motor servo akan memiliki kabel terutama di sana, satu untuk tegangan positif yang lain untuk ground dan yang terakhir untuk pengaturan posisi. Kabel MERAH terhubung ke daya, kabel Hitam terhubung ke ground dan kabel KUNING terhubung ke sinyal.
Motor servo adalah kombinasi motor DC, sistem kendali posisi, roda gigi. Posisi poros motor DC diatur oleh kontrol elektronik di servo, berdasarkan rasio tugas dari sinyal PWM pin SIGNAL. Cukup berbicara elektronik kontrol menyesuaikan posisi poros dengan mengendalikan motor DC. Data mengenai posisi poros ini dikirim melalui pin SIGNAL. Data posisi ke kontrol harus dikirim dalam bentuk sinyal PWM melalui pin sinyal motor servo.
Frekuensi sinyal PWM (Pulse Width Modulated) dapat berbeda-beda berdasarkan jenis motor servo. Yang penting di sini adalah RASIO TUGAS dari sinyal PWM. Berdasarkan DUTY RATION ini, elektronik kontrol menyesuaikan poros.
Seperti yang ditunjukkan pada gambar di bawah ini, untuk poros yang akan dipindahkan ke jam 9o, RASIO PENGHIDUPAN harus 1/18. Yaitu. 1milli detik dari 'ON time' dan 17milli second dari 'OFF time' dalam sinyal 18ms.
Untuk poros yang akan dipindahkan ke clock 12o, waktu sinyal ON harus 1.5ms dan waktu OFF harus 16.5ms.
Rasio ini diterjemahkan oleh sistem kontrol in servo dan menyesuaikan posisi berdasarkan itu.
PWM ini di sini dibuat dengan menggunakan ARDUINO UNO.
Jadi untuk saat ini kita tahu bahwa, kita dapat mengontrol poros SERVO MOTOR dengan memvariasikan duty ratio dari sinyal PWM yang dibangkitkan oleh UNO.
Sekarang mari kita bicara tentang sensor gaya atau sensor berat.
Untuk menghubungkan sensor FORCE dengan ARDUINO UNO, kita akan menggunakan fitur 8 bit ADC (Analog to Digital Conversion) di arduno uno.
Sensor FORCE adalah transduser yang mengubah resistansinya saat tekanan diterapkan pada permukaan. Sensor FORCE tersedia dalam berbagai ukuran dan bentuk.
Kami akan menggunakan salah satu versi yang lebih murah karena kami tidak membutuhkan banyak akurasi di sini. FSR400 adalah salah satu sensor gaya termurah di pasaran. Gambar FSR400 terlihat pada gambar di bawah ini.
Sekarang penting untuk dicatat bahwa FSR 400 sensitif sepanjang panjangnya, gaya atau berat harus terkonsentrasi pada labirin di tengah mata sensor, seperti yang ditunjukkan pada gambar.
Jika gaya diterapkan pada waktu yang salah, perangkat dapat merusak secara permanen.
Hal penting lainnya yang perlu diketahui adalah, sensor dapat menggerakkan arus dengan kisaran tinggi. Jadi perhatikan arus mengemudi saat memasang. Juga sensor memiliki batas gaya yaitu 10Newtons. Jadi kita hanya bisa menerapkan berat 1Kg. Jika bobot lebih tinggi dari 1Kg diterapkan, sensor mungkin menunjukkan beberapa penyimpangan. Jika meningkat lebih dari 3Kg. sensor dapat rusak secara permanen.
Seperti yang diceritakan sebelumnya, sensor ini digunakan untuk merasakan perubahan tekanan. Jadi ketika bobot diterapkan di atas sensor FORCE, resistansi berubah secara drastis. Resistensi FS400 terhadap berat ditunjukkan pada grafik di bawah ini:
Seperti yang ditunjukkan pada gambar di atas, resistansi antara dua kontak sensor berkurang dengan bobot atau konduktansi antara dua kontak sensor meningkat.
Hambatan konduktor murni diberikan oleh:
Dimana, p- Resistivitas konduktor
l = Panjang konduktor
A = Area konduktor.
Sekarang pertimbangkan konduktor dengan resistansi "R", jika beberapa tekanan diterapkan di atas konduktor, area pada konduktor berkurang dan panjang konduktor meningkat sebagai akibat dari tekanan. Jadi dengan rumus resistansi konduktor harus meningkat, karena resistansi R berbanding terbalik dengan luas dan juga berbanding lurus dengan panjang l.
Jadi dengan ini untuk konduktor di bawah tekanan atau berat resistansi konduktor meningkat. Tetapi perubahan ini kecil dibandingkan dengan resistansi keseluruhan. Untuk perubahan yang cukup besar, banyak konduktor ditumpuk bersama.
Inilah yang terjadi di dalam Sensor Gaya yang ditunjukkan pada gambar di atas. Saat melihat lebih dekat, seseorang dapat melihat banyak garis di dalam sensor. Masing-masing garis ini mewakili konduktor. Sensitivitas sensor ada dalam bilangan konduktor.
Namun dalam hal ini tahanan akan berkurang dengan adanya tekanan karena material yang digunakan disini bukanlah konduktor murni. FSR di sini adalah perangkat film tebal polimer (PTF) yang kuat. Jadi ini bukan perangkat bahan konduktor murni. Ini terbuat dari bahan, yang menunjukkan penurunan resistansi dengan peningkatan gaya yang diterapkan ke permukaan sensor.
Materi ini menunjukkan karakteristik seperti yang ditunjukkan pada grafik FSR.
Perubahan penolakan ini tidak ada gunanya kecuali kita dapat membacanya. Pengontrol di tangan hanya dapat membaca peluang dalam tegangan dan tidak kurang, untuk ini kita akan menggunakan rangkaian pembagi tegangan, dengan itu kita dapat memperoleh perubahan resistansi sebagai perubahan tegangan.
Pembagi tegangan adalah rangkaian resistif dan ditunjukkan pada gambar. Dalam jaringan resistif ini kami memiliki satu resistansi konstan dan resistansi variabel lainnya. Seperti yang ditunjukkan pada gambar, R1 di sini adalah resistansi konstan dan R2 adalah sensor FORCE yang bertindak sebagai resistansi.
Titik tengah cabang digunakan untuk pengukuran. Dengan perubahan R2, kami memiliki perubahan di Vout. Jadi dengan ini kami memiliki tegangan yang berubah dengan berat.
Sekarang hal penting untuk dicatat di sini adalah, input yang diambil oleh pengontrol untuk konversi ADC serendah 50µAmp. Efek pembebanan pembagi tegangan berbasis resistansi ini penting karena arus yang ditarik dari Vout pembagi tegangan meningkatkan persentase kesalahan yang meningkat, untuk saat ini kita tidak perlu khawatir tentang efek pembebanan.
Sekarang ketika gaya diterapkan pada FORCE SENSOR, tegangan di ujung pembagi mengubah pin ini karena terhubung ke saluran ADC UNO, kita akan mendapatkan nilai digital yang berbeda dari ADC UNO, setiap kali gaya pada sensor berubah.
Nilai digital ADC ini disesuaikan dengan rasio tugas sinyal PWM, jadi kami memiliki kontrol posisi SERVO dalam kaitannya dengan gaya yang diterapkan pada sensor.
Komponen
Perangkat keras: UNO, power supply (5v), kapasitor 1000uF, kapasitor 100nF (3 buah), resistor 100KΩ, SERVO MOTOR (SG 90), resistor 220Ω, sensor gaya FSR400.
Perangkat lunak: Atmel studio 6.2 atau aurdino nightly.
Diagram Sirkuit dan Penjelasan Kerja
The diagram rangkaian untuk servo kontrol motor dengan sensor gaya ditunjukkan pada gambar di bawah.
Tegangan di sensor tidak sepenuhnya linier; itu akan menjadi yang berisik. Untuk menyaring kebisingan kapasitor ditempatkan di setiap resistor di sirkuit pembagi seperti yang ditunjukkan pada gambar.
Di sini kita akan mengambil tegangan yang disediakan oleh pembagi (tegangan yang mewakili berat secara linier) dan memasukkannya ke salah satu saluran ADC Arduino Uno. Setelah konversi kita akan mengambil nilai digital itu (mewakili berat) dan menghubungkannya dengan nilai PWM dan memberikan sinyal PWM ini ke motor SERVO.
Jadi dengan bobot kami memiliki nilai PWM yang mengubah rasio tugasnya tergantung pada nilai digital. Semakin tinggi nilai digital semakin tinggi rasio tugas PWM. Jadi dengan sinyal PWM rasio tugas yang lebih tinggi, poros servo harus mencapai paling kanan atau paling kiri seperti gambar yang diberikan dalam pendahuluan.
Jika bobotnya lebih rendah, kita akan memiliki rasio tugas PWM yang lebih rendah dan sesuai gambar dalam pendahuluan servo harus mencapai paling kanan.
Dengan ini kami memiliki kontrol posisi SERVO dengan BERAT atau PAKAI.
Agar ini terjadi, kami perlu menetapkan beberapa instruksi dalam program dan kami akan membicarakannya secara rinci di bawah.
ARDUINO memiliki enam saluran ADC, seperti yang ditunjukkan pada gambar. Dalam salah satu atau semuanya dapat digunakan sebagai input untuk tegangan analog. UNO ADC memiliki resolusi 10 bit (jadi nilai integer dari (0- (2 ^ 10) 1023)). Ini berarti akan memetakan tegangan input antara 0 dan 5 volt menjadi nilai integer antara 0 dan 1023. Jadi untuk setiap (5/1024 = 4.9mV) per unit.
Di sini kita akan menggunakan A0 dari UNO. Kami perlu mengetahui beberapa hal.
|
Pertama-tama saluran ADC Arduino Uno memiliki nilai referensi default 5V. Ini berarti kita dapat memberikan tegangan input maksimum 5V untuk konversi ADC di saluran input mana pun. Karena beberapa sensor memberikan tegangan dari 0-2.5V, dengan referensi 5V kami mendapatkan akurasi yang lebih rendah, jadi kami memiliki instruksi yang memungkinkan kami untuk mengubah nilai referensi ini. Jadi untuk mengubah nilai referensi yang kita miliki ("analogReference ();") Untuk saat ini kita biarkan sebagai.
Sebagai default kami mendapatkan resolusi ADC papan maksimum yaitu 10 bit, resolusi ini dapat diubah dengan menggunakan instruksi (“analogReadResolution (bits);”). Perubahan resolusi ini dapat berguna untuk beberapa kasus. Untuk saat ini kami membiarkannya sebagai.
Nah jika kondisi di atas diset ke default, kita bisa membaca nilai dari ADC channel '0' dengan langsung memanggil function “analogRead (pin);”, disini “pin” mewakili pin tempat kita menghubungkan sinyal analog, dalam hal ini akan menjadi "A0". Nilai dari ADC dapat diambil menjadi integer sebagai "int SENSORVALUE = analogRead (A0); ", Dengan instruksi ini nilai setelah ADC disimpan dalam integer" SENSORVALUE ".
PWM dari UNO dapat dicapai di salah satu pin yang disimbolkan sebagai "~" di papan PCB. Ada enam saluran PWM di UNO. Kami akan menggunakan PIN3 untuk tujuan kami.
analogWrite (3, VALUE); |
Dari kondisi diatas kita bisa langsung mendapatkan sinyal PWM pada pin yang sesuai. Parameter pertama dalam tanda kurung adalah untuk memilih nomor pin sinyal PWM. Parameter kedua adalah rasio tugas penulisan.
Nilai PWM Arduino Uno dapat diubah dari 0 menjadi 255. Dengan "0" sebagai yang terendah ke "255" sebagai tertinggi. Dengan 255 sebagai duty ratio kita akan mendapatkan 5V pada PIN3. Jika duty ratio diberikan sebagai 125 kita akan mendapatkan 2.5V pada PIN3.
Sekarang mari kita bicara tentang kontrol motor servo, Arduino Uno memiliki fitur yang memungkinkan kita untuk mengontrol posisi servo hanya dengan memberikan nilai derajat. Katakanlah jika kita ingin servo berada di 30, kita bisa langsung mewakili nilai dalam program. File header SERVO menangani semua perhitungan rasio tugas secara internal. Anda dapat mempelajari lebih lanjut tentang kontrol motor servo dengan Arduino di sini.
Sekarang sg90 dapat bergerak dari 0-180 derajat, kami memiliki hasil ADC 0-1024.
Jadi ADC kira-kira enam kali SERVO POSITION. Jadi dengan membagi hasil ADC dengan 6 kita akan mendapatkan perkiraan posisi tangan SERVO. Karenanya kami memiliki sinyal PWM yang rasio tugasnya berubah secara linier dengan BERAT atau KEKUATAN. Ini diberikan ke motor servo, kita dapat mengontrol motor servo dengan sensor gaya.