Dalam tutorial ini kita akan mengembangkan rangkaian menggunakan sensor Force, Arduino Uno dan motor servo. Ini akan menjadi sistem kawalan servo di mana kedudukan poros servo ditentukan oleh berat yang ada pada sensor daya. Sebelum pergi lebih jauh mari kita bincangkan mengenai servo dan komponen lain.
Servo Motors digunakan di mana terdapat keperluan pergerakan poros atau kedudukan yang tepat. Ini tidak dicadangkan untuk aplikasi berkelajuan tinggi. Ini dicadangkan untuk kelajuan rendah, tork sederhana dan aplikasi kedudukan tepat. Motor ini digunakan dalam mesin lengan robot, kawalan penerbangan dan sistem kawalan. Motor servo juga digunakan di beberapa mesin pencetak dan faks.
Motor servo boleh didapati dalam pelbagai bentuk dan saiz. Motor servo mempunyai wayar terutamanya, satu untuk voltan positif yang lain untuk tanah dan yang terakhir adalah untuk penetapan kedudukan. Kawat MERAH disambungkan ke kuasa, Kawat hitam disambungkan ke tanah dan wayar KUNING dihubungkan ke isyarat.
Motor servo adalah gabungan motor DC, sistem kawalan kedudukan, gear. Kedudukan poros motor DC diselaraskan oleh elektronik kawalan dalam servo, berdasarkan nisbah tugas PWM memberi isyarat pada pin SIGNAL. Cukup elektronik kawalan menyesuaikan kedudukan poros dengan mengawal motor DC. Data mengenai kedudukan poros ini dihantar melalui pin SIGNAL. Data kedudukan ke kawalan harus dihantar dalam bentuk isyarat PWM melalui pin isyarat motor servo.
Frekuensi isyarat PWM (Pulse Width Modulated) boleh berbeza-beza berdasarkan jenis motor servo. Yang penting di sini ialah DUTY RATIO isyarat PWM. Berdasarkan DATY RATION ini elektronik kawalan menyesuaikan poros.
Seperti yang ditunjukkan dalam gambar di bawah ini, agar poros digerakkan ke jam 9o, JALAN TURN ON mestilah 1 / 18.ie. 1 juta detik dari 'waktu ON' dan 17 juta detik 'waktu OFF' dalam isyarat 18ms.
Untuk poros digerakkan ke jam 12o, waktu isyarat ON mestilah 1.5ms dan masa OFF hendaklah 16.5ms.
Nisbah ini disahkod oleh sistem kawalan dalam servo dan menyesuaikan kedudukan berdasarkannya.
PWM ini di sini dihasilkan dengan menggunakan ARDUINO UNO.
Jadi buat masa ini kita tahu bahawa, kita dapat mengawal poros SERVO MOTOR dengan mengubah nisbah tugas isyarat PWM yang dihasilkan oleh UNO.
Sekarang mari kita bercakap mengenai sensor daya atau sensor berat.
Untuk menyambungkan sensor FORCE dengan ARDUINO UNO, kami akan menggunakan fitur ADC 8 bit (Penukaran Analog ke Digital) di arduno uno.
Sensor FORCE adalah transduser yang mengubah rintangannya apabila tekanan di permukaan. Sensor FORCE tersedia dalam pelbagai saiz dan bentuk.
Kami akan menggunakan salah satu versi yang lebih murah kerana kami tidak memerlukan banyak ketepatan di sini. FSR400 adalah salah satu sensor daya termurah di pasaran. Gambar FSR400 ditunjukkan dalam gambar di bawah.
Sekarang penting untuk diperhatikan bahawa FSR 400 sensitif sepanjang panjangnya, kekuatan atau berat harus tertumpu pada labirin di tengah mata sensor, seperti yang ditunjukkan pada gambar.
Sekiranya daya ditekankan pada waktu yang salah, peranti boleh merosakkan secara kekal.
Satu lagi perkara penting untuk diketahui bahawa, sensor dapat menggerakkan arus dari jarak tinggi. Oleh itu, ingat arus pemacu semasa memasang. Sensor juga mempunyai had daya iaitu 10Newtons. Oleh itu, kita boleh menggunakan berat badan hanya 1Kg. Sekiranya berat lebih tinggi daripada 1Kg digunakan, sensor mungkin menunjukkan beberapa penyimpangan. Sekiranya ia meningkat lebih dari 3Kg. sensor mungkin merosakkan secara kekal.
Seperti yang diberitahu sebelumnya, sensor ini digunakan untuk merasakan perubahan tekanan. Oleh itu, apabila berat dikenakan di atas sensor FORCE, rintangan diubah secara drastik. Rintangan berat FS400 ditunjukkan dalam grafik di bawah:
Seperti yang ditunjukkan dalam gambar di atas, rintangan antara dua kenalan sensor menurun dengan berat atau kekonduksian antara dua kenalan sensor meningkat.
Rintangan konduktor tulen diberikan oleh:
Di mana, p- Ketahanan konduktor
l = Panjang konduktor
A = Kawasan konduktor.
Sekarang pertimbangkan konduktor dengan rintangan "R", jika ada tekanan yang berlaku di atas konduktor, kawasan pada konduktor menurun dan panjang konduktor meningkat akibat tekanan. Jadi dengan formula, rintangan konduktor harus meningkat, kerana rintangan R berkadar songsang dengan luas dan juga berkadar langsung dengan panjang l.
Jadi dengan ini untuk konduktor di bawah tekanan atau berat, rintangan konduktor meningkat. Tetapi perubahan ini kecil berbanding dengan rintangan keseluruhan. Untuk perubahan yang banyak, banyak konduktor disusun bersama.
Inilah yang berlaku di dalam Force Sensor yang ditunjukkan dalam gambar di atas. Apabila melihat dengan teliti, seseorang dapat melihat banyak garis di dalam sensor. Setiap garis ini mewakili konduktor. Sensitiviti sensor berada dalam nombor konduktor.
Tetapi dalam hal ini rintangan akan berkurang dengan tekanan kerana bahan yang digunakan di sini bukan konduktor tulen. FSR di sini adalah peranti filem tebal polimer (PTF) yang kuat. Jadi ini bukan alat bahan konduktor tulen. Ini terbuat dari bahan, yang menunjukkan penurunan daya tahan dengan peningkatan kekuatan yang dikenakan pada permukaan sensor.
Bahan ini menunjukkan ciri-ciri seperti yang ditunjukkan dalam grafik FSR.
Perubahan rintangan ini tidak ada gunanya kecuali kita dapat membacanya. Pengawal di tangan hanya dapat membaca kemungkinan voltan dan tidak kurang, untuk ini kita akan menggunakan litar pembahagi voltan, dengan itu kita dapat memperoleh perubahan rintangan sebagai perubahan voltan.
Pembahagi voltan adalah litar resistif dan ditunjukkan dalam rajah. Dalam rangkaian resistif ini kita mempunyai satu rintangan tetap dan rintangan pemboleh ubah yang lain. Seperti yang ditunjukkan dalam gambar, R1 di sini adalah rintangan tetap dan R2 adalah sensor FORCE yang bertindak sebagai rintangan.
Titik tengah cabang dibawa ke pengukuran. Dengan perubahan R2, kita mempunyai perubahan di Vout. Jadi dengan ini kita mempunyai voltan yang berubah dengan berat.
Perkara penting yang perlu diberi perhatian di sini ialah, input yang diambil oleh pengawal untuk penukaran ADC serendah 50µAmp. Kesan pemuatan pembahagi voltan berdasarkan rintangan ini penting kerana arus yang diambil dari Vout pembahagi voltan meningkatkan peratusan ralat meningkat, buat masa ini kita tidak perlu bimbang tentang kesan pemuatan.
Sekarang apabila daya diterapkan pada FORCE SENSOR, voltan di hujung pembahagi mengubah pin ini ketika dihubungkan ke saluran ADC UNO, kita akan mendapat nilai digital yang berbeza dari ADC UNO, setiap kali daya pada sensor berubah.
Nilai digital ADC ini dipadankan dengan nisbah tugas isyarat PWM, jadi kami memiliki kawalan posisi SERVO dalam kaitannya dengan kekuatan yang dikenakan pada sensor.
Komponen
Perkakasan: UNO, bekalan kuasa (5v), kapasitor 1000uF, kapasitor 100nF (3 keping), perintang 100KΩ, SERVO MOTOR (SG 90), perintang 220Ω, sensor daya FSR400.
Perisian: Atmel studio 6.2 atau aurdino setiap malam.
Diagram Litar dan Penjelasan Kerja
The gambarajah litar untuk servo kawalan motor dengan sensor kuasa adalah seperti di bawah angka.
Voltan merentasi sensor tidak linear sepenuhnya; ia akan menjadi bising. Untuk menyaring kebisingan, kapasitor ditempatkan di setiap perintang di litar pembahagi seperti yang ditunjukkan dalam gambar.
Di sini kita akan mengambil voltan yang diberikan oleh pembahagi (voltan yang mewakili berat secara linear) dan memasukkannya ke salah satu saluran ADC Arduino Uno. Selepas penukaran, kami akan mengambil nilai digital (mewakili berat) dan mengaitkannya dengan nilai PWM dan memberikan isyarat PWM ini kepada motor SERVO.
Jadi dengan berat badan kita mempunyai nilai PWM yang mengubah nisbah tugasnya bergantung pada nilai digital. Semakin tinggi nilai digital semakin tinggi nisbah tugas PWM. Oleh itu dengan isyarat PWM nisbah tugas yang lebih tinggi, poros servo harus mencapai paling kanan atau paling kiri seperti gambar yang diberikan dalam pendahuluan.
Sekiranya berat badan lebih rendah, kita akan mempunyai nisbah tugas PWM yang lebih rendah dan seperti pada gambar dalam pengenalan, servo harus mencapai ujung kanan.
Dengan ini kita mempunyai kawalan kedudukan SERVO oleh WEIGHT atau FORCE.
Untuk ini berlaku, kita perlu menetapkan beberapa arahan dalam program dan kita akan membincangkannya secara terperinci di bawah.
ARDUINO mempunyai enam saluran ADC, seperti yang ditunjukkan dalam gambar. Di mana satu atau semua itu boleh digunakan sebagai input voltan analog. UNO ADC mempunyai resolusi 10 bit (jadi nilai integer dari (0- (2 ^ 10) 1023)). Ini bermaksud bahawa ia akan memetakan voltan input antara 0 dan 5 volt menjadi nilai integer antara 0 dan 1023. Jadi untuk setiap (5/1024 = 4.9mV) seunit.
Di sini kita akan menggunakan A0 UNO. Kita perlu mengetahui beberapa perkara.
|
Pertama sekali saluran Arduino Uno ADC mempunyai nilai rujukan lalai 5V. Ini bermakna kita dapat memberikan voltan input maksimum 5V untuk penukaran ADC di mana-mana saluran input. Oleh kerana beberapa sensor memberikan voltan dari 0-2.5V, dengan rujukan 5V, kita mendapat ketepatan yang lebih rendah, jadi kita mempunyai petunjuk yang memungkinkan kita mengubah nilai rujukan ini. Jadi untuk mengubah nilai rujukan yang kita miliki (“analogReference ();”) Buat masa ini kita membiarkannya sebagai.
Sebagai lalai, kami mendapat resolusi ADC papan maksimum iaitu 10 bit, resolusi ini dapat diubah dengan menggunakan instruksi ("analogReadResolution (bit);"). Perubahan resolusi ini sangat berguna untuk beberapa kes. Buat masa ini kami membiarkannya.
Sekarang jika syarat di atas ditetapkan ke lalai, kita dapat membaca nilai dari ADC saluran '0' dengan memanggil fungsi langsung "analogRead (pin);", di sini "pin" mewakili pin di mana kita menghubungkan isyarat analog, dalam hal ini akan menjadi "A0". Nilai dari ADC dapat dimasukkan ke dalam bilangan bulat sebagai “int SENSORVALUE = analogRead (A0); ", Dengan arahan ini nilai setelah ADC disimpan dalam bilangan bulat" SENSORVALUE ".
PWM UNO dapat dicapai pada salah satu pin yang dilambangkan sebagai "~" pada papan PCB. Terdapat enam saluran PWM di UNO. Kami akan menggunakan PIN3 untuk tujuan kami.
analogWrite (3, NILAI); |
Dari keadaan di atas, kita boleh mendapatkan isyarat PWM secara langsung pada pin yang sesuai. Parameter pertama dalam tanda kurung adalah untuk memilih nombor pin isyarat PWM. Parameter kedua adalah untuk nisbah tugas menulis.
Nilai PWM Arduino Uno dapat diubah dari 0 ke 255. Dengan “0” serendah ke “255” tertinggi. Dengan nisbah tugas 255 sebagai tugas, kita akan mendapat 5V pada PIN3. Sekiranya nisbah tugas diberikan sebagai 125, kita akan mendapat 2.5V pada PIN3.
Sekarang mari kita bincangkan mengenai kawalan motor servo, Arduino Uno mempunyai ciri yang membolehkan kita mengawal kedudukan servo dengan hanya memberikan nilai darjah. Katakanlah jika kita mahu servo berada pada 30, kita secara langsung dapat mewakili nilai dalam program. Fail header SERVO mengurus semua pengiraan nisbah tugas secara dalaman. Anda boleh mengetahui lebih lanjut mengenai kawalan motor servo dengan arduino di sini.
Sekarang sg90 boleh bergerak dari 0-180 darjah, kami mempunyai hasil ADC 0-1024.
Oleh itu, ADC adalah kira-kira enam kali POSISI SERVO. Oleh itu, dengan membagi hasil ADC dengan 6, kita akan mendapat kedudukan tangan SERVO anggaran. Oleh itu, kita mempunyai isyarat PWM yang nisbah tugasnya berubah secara linear dengan BERAT atau FORCE. Ini diberikan kepada motor servo, kita dapat mengawal motor servo dengan sensor kekuatan.