Daftar Isi:

Robot Pengikut Baris Lanjut: 22 Langkah (dengan Gambar)
Robot Pengikut Baris Lanjut: 22 Langkah (dengan Gambar)

Video: Robot Pengikut Baris Lanjut: 22 Langkah (dengan Gambar)

Video: Robot Pengikut Baris Lanjut: 22 Langkah (dengan Gambar)
Video: Gerak Jalan Viral Siswa SMA Dari Tobelo Halmahera Utara 2024, Juli
Anonim
Image
Image
Pembuatan Prototipe - Papan Perf
Pembuatan Prototipe - Papan Perf

Ini adalah robot garis lanjutan yang berbasis pada sensor garis Teensy 3.6 dan QTRX yang telah saya buat dan kerjakan selama beberapa waktu. Ada beberapa peningkatan besar dalam desain dan kinerja dari robot line following saya sebelumnya. Kecepatan dan respons robot telah meningkat. Struktur keseluruhan kompak dan ringan. Komponen disusun dekat dengan sumbu roda untuk meminimalkan momentum sudut. Motor gir logam mikro berdaya tinggi memberikan torsi yang memadai dan roda silikon hub aluminium menawarkan traksi yang sangat dibutuhkan pada kecepatan tinggi. Pelindung penyangga dan enkoder roda memungkinkan robot menentukan posisi dan orientasinya. Dengan Teensyview terpasang di papan, semua informasi yang relevan dapat divisualisasikan dan parameter program penting dapat diperbarui menggunakan tombol tekan.

Untuk mulai membuat robot ini, Anda memerlukan perlengkapan berikut (serta banyak waktu dan kesabaran yang Anda miliki).

Perlengkapan

Elektronik

  • Papan Pengembangan Teensy 3.6
  • Prop Shield dengan Sensor Gerak
  • Sparkfun TeensyView
  • Array Sensor Reflektansi Pololu QTRX-MD-16A
  • PCB prototipe sisi ganda 15x20cm
  • Regulator Tegangan Step-Up / Step-Down Pololu S9V11F3S5
  • Pololu Adjustable 4-5-20V Step-Up Voltage Regulator U3V70A
  • MP12 6V 1580 rpm mikro gear motor dengan encoder (x2)
  • DRV8833 Pengangkut Pengemudi Motor Ganda (x2)
  • Baterai Li-Po 3.7V, 750mAh
  • Saklar ON/OFF
  • Kapasitor elektrolit 470uF
  • Kapasitor elektrolit 1000uF (x2)
  • Kapasitor keramik 0.1uF (x5)
  • Tombol tekan (x3)
  • 10mm LED Hijau (x2)

Perangkat keras

  • Roda Silikon Atom 37x34mm (x2)
  • Kastor Bola Pololu dengan Bola Logam 3/8”
  • Dudukan motor N20 (x2)
  • Baut dan mur

Kabel dan Konektor

  • Kabel fleksibel 24AWG
  • 24 pin FFC ke DIP breakout dan kabel FFC (Tipe A, panjang 150mm)
  • Header pin bulat wanita
  • Terminal panjang tajuk pin perempuan bulat
  • Header wanita baris ganda sudut kanan
  • Header laki-laki baris ganda sudut kanan
  • Header pin pria
  • Header pin jarum pria

Peralatan

  • Multimeter
  • Besi solder
  • Kawat Solder
  • penari telanjang kawat
  • Alat pemotong kawat

Langkah 1: Tinjauan Sistem

Seperti desain robot self-balancing saya sebelumnya, robot ini merupakan kumpulan papan breakout yang dipasang pada perfboard yang juga berfungsi sebagai struktur.

Sistem utama robot diuraikan di bawah ini.

Mikrokontroler: Papan pengembangan Teensy 3.6 yang menampilkan prosesor ARM Cortex-M4 32-bit 180MHz.

Sensor garis: Rangkaian sensor garis keluaran analog 16 saluran QTRX-MD-16A Pololu dalam pengaturan kepadatan sedang (pitch sensor 8mm).

Drive: 6V, 1580rpm, motor roda gigi mikro daya tinggi dengan encoder roda magnetik dan roda silikon dipasang pada hub aluminium.

Odometri: Pasangan encoder roda magnetik untuk memperkirakan koordinat dan jarak yang ditempuh.

Sensor orientasi: Pelindung penyangga dengan sensor gerak untuk memperkirakan posisi dan arah robot.

Catu daya: 3.7V, baterai lipo 750mAh sebagai sumber daya. Regulator step-up/down 3.3V memberi daya pada mikrokontroler, sensor, dan perangkat tampilan. Regulator step-up yang dapat disesuaikan memberi daya pada kedua motor.

Antarmuka pengguna: Teensyview untuk menampilkan informasi. Breakout tiga tombol untuk menerima input pengguna. Dua nomor LED hijau berdiameter 10mm untuk indikasi status saat berjalan.

Langkah 2: Mari Mulai Membuat Prototipe

Image
Image

Kami akan menerapkan sirkuit di atas di perfboard. Pertama-tama kita harus menyiapkan papan breakout dengan menyolder header di atasnya. Video akan memberikan ide tentang header mana yang harus disolder pada papan breakout mana.

Setelah menyolder header di papan breakout, susun Teensyview dan tombol tekan breakout di atas Teensy.

Langkah 3: Pembuatan Prototipe - Perfboard

Pembuatan Prototipe - Papan Perf
Pembuatan Prototipe - Papan Perf

Dapatkan perfboard prototipe sisi ganda 15x20cm dan tandai batas dengan spidol permanen seperti yang ditunjukkan pada gambar. Bor lubang ukuran M2 untuk memasang susunan sensor, roda kastor, dan motor roda gigi logam mikro di lokasi yang ditandai dengan lingkaran putih. Kami nantinya akan memotong perfboard di sepanjang batas setelah menyolder dan menguji semua komponen.

Kami akan memulai prototyping kami dengan menyolder pin header dan soket pada perfboard. Papan breakout nantinya akan disisipkan pada header ini. Perhatikan baik-baik posisi header pada perfboard. Kami akan menghubungkan semua kabel berdasarkan tata letak header ini.

Langkah 4: Pembuatan Prototipe - Prop Shield

Prototipe - Prop Shield
Prototipe - Prop Shield
Prototipe - Prop Shield
Prototipe - Prop Shield
Prototipe - Prop Shield
Prototipe - Prop Shield
Prototipe - Prop Shield
Prototipe - Prop Shield

Kami pertama-tama akan menyolder koneksi ke pelindung penyangga. Karena kami hanya menggunakan sensor gerak pelindung penyangga, kami hanya perlu menghubungkan pin SCL, SDA, dan IRQ selain dari 3V dan pin ground pelindung penyangga.

Setelah koneksi selesai, masukkan Teensy dan pelindung penyangga dan kalibrasi sensor gerak dengan mengikuti langkah-langkah yang disebutkan di sini.

Langkah 5: Pembuatan Prototipe - Daya dan Tanah

Prototyping - Power dan Ground
Prototyping - Power dan Ground

Solder semua koneksi daya dan ground mengacu pada gambar. Masukkan semua papan breakout di tempatnya dan pastikan kontinuitas menggunakan multimeter. Verifikasi tingkat tegangan yang berbeda di papan.

  • Tegangan keluaran Li-po (biasanya antara 3V dan 4.2V)
  • Tegangan keluaran regulator step-up/down (3.3V)
  • Tegangan keluaran regulator step-up yang dapat disesuaikan (diatur ke 6V)

Langkah 6: Pembuatan Prototipe - Pengangkut Pengemudi Motor

Prototyping - Pengangkut Pengemudi Motor
Prototyping - Pengangkut Pengemudi Motor
Prototyping - Pengangkut Pengemudi Motor
Prototyping - Pengangkut Pengemudi Motor
Prototyping - Pengangkut Pengemudi Motor
Prototyping - Pengangkut Pengemudi Motor

Papan pembawa driver motor ganda DRV8833 dapat memberikan arus puncak 1,2A terus menerus dan 2A per saluran. Kami akan menghubungkan dua saluran secara paralel untuk menggerakkan satu motor. Solder koneksi dengan mengikuti langkah-langkah di bawah ini.

  • Sejajarkan dua input dan dua output dari pembawa driver motor seperti yang ditunjukkan pada gambar.
  • Hubungkan kabel kontrol input ke driver motor.
  • Hubungkan kapasitor elektrolitik 1000uF dan kapasitor keramik 0,1uF melintasi terminal Vin dan Gnd dari dua papan pembawa.
  • Hubungkan kapasitor keramik 0.1uF di terminal output driver motor.

Langkah 7: Pembuatan Prototipe - Header Array Sensor Garis

Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis
Pembuatan Prototipe - Header Array Sensor Garis

Teensy 3.6 memiliki dua ADC - ADC0 dan ADC1 yang dimultipleks ke 25 pin yang dapat diakses. Kita dapat mengakses dua pin dari dua ADC secara bersamaan. Kami akan menghubungkan delapan sensor garis masing-masing ke ADC0 dan ADC1. Sensor angka genap akan dihubungkan ke ADC1 dan sensor angka ganjil akan dihubungkan ke ADC0. Solder koneksi dengan mengikuti langkah-langkah di bawah ini. Nantinya kita akan menghubungkan sensor garis menggunakan adaptor dan kabel FFC ke DIP.

  • Hubungkan semua pin sensor genap (16, 14, 12, 10, 8, 6, 4, 2) seperti yang ditunjukkan pada gambar. Rutekan kabel untuk menghubungkan pin sensor 12 melalui sisi sebaliknya dari papan berlubang.
  • Hubungkan pin kontrol emitor (BAHKAN) ke pin Teensy 30.
  • Hubungkan semua pin sensor ganjil (15, 13, 11, 9, 7, 5, 3, 1) seperti pada gambar.
  • Hubungkan kapasitor elektrolitik 470uF melintasi Vcc dan Gnd.

Jika Anda mengamati dengan cermat pin sensor garis dan pin header yang sesuai pada perboard, Anda akan melihat bahwa baris atas sensor garis memetakan ke baris bawah header pada perboard dan sebaliknya. Ini karena ketika kami menghubungkan sensor garis ke perfboard menggunakan header sudut kanan baris ganda, baris akan sejajar dengan benar. Butuh beberapa waktu bagi saya untuk mengetahui hal ini dan memperbaiki tugas pin dalam program.

Langkah 8: Pembuatan Prototipe - Motor Gear Mikro dan Encoder

Pembuatan Prototipe - Motor Micro Gear dan Encoder
Pembuatan Prototipe - Motor Micro Gear dan Encoder
  • Perbaiki motor roda gigi logam mikro dengan encoder menggunakan dudukan motor N20.
  • Hubungkan kabel motor dan encoder seperti yang ditunjukkan pada gambar.
  • Encoder kiri - Pin kecil 4 & 0
  • Encoder kanan - Pin kecil 9 & 27

Langkah 9: Pembuatan prototipe - LED

Prototipe - LED
Prototipe - LED
Prototipe - LED
Prototipe - LED

Kedua LED menunjukkan apakah robot telah mendeteksi belokan atau tidak. Saya telah menggunakan resistor seri 470-ohm untuk menghubungkan LED ke Teensy.

  • Kiri anoda LED ke pin Teensy 6
  • Anoda LED kanan ke pin Teensy 8

Langkah 10: Pembuatan Prototipe - Jerawat

Image
Image
Pembuatan Prototipe - Jerawat
Pembuatan Prototipe - Jerawat

Sekarang setelah kita menyelesaikan semua penyolderan pada perfboard, kita dapat dengan hati-hati memotong sepanjang batas yang ditandai pada perfboard dan menghapus bit tambahan perfboard. Juga, pasang dua roda dan roda kastor.

Masukkan semua papan breakout di soketnya masing-masing. Untuk memasukkan breakout FFC-DIP dan untuk memperbaiki sensor garis QTRX-MD-16A, lihat video.

Langkah 11: Ikhtisar Pustaka Perangkat Lunak

Ikhtisar Pustaka Perangkat Lunak
Ikhtisar Pustaka Perangkat Lunak

Kami akan memprogram Teensy di Arduino IDE. Kita akan membutuhkan beberapa perpustakaan sebelum kita mulai. Library yang akan kita gunakan adalah:

  • pembuat enkode
  • tampilan remaja
  • EEPROM
  • ADC
  • NXPMotionSense

Dan beberapa yang telah ditulis khusus untuk robot ini,

  • Tekan tombol
  • Sensor Garis
  • TeensyviewMenu
  • Motor

Pustaka khusus untuk robot ini dibahas secara rinci dan tersedia untuk diunduh pada langkah selanjutnya.

Langkah 12: Library Dijelaskan - PushButton

Pustaka ini untuk menghubungkan papan breakout tombol tekan dengan Teensy. Fungsi yang digunakan adalah

PushButton(int leftButtonPin, int centerButtonPin, int rightButtonPin);

Memanggil konstruktor ini dengan membuat objek mengonfigurasi pin tombol ke mode INPUT_PULLUP.

int8_t waitForButtonPress(void);

Fungsi ini menunggu hingga tombol ditekan dan dilepaskan dan mengembalikan kode kunci.

int8_t getSingleButtonPress(void);

Fungsi ini memeriksa apakah tombol ditekan dan dilepaskan. Jika ya, kembalikan kode kunci yang lain mengembalikan nol.

Langkah 13: Perpustakaan Dijelaskan - Sensor Garis

LineSensor adalah perpustakaan untuk menghubungkan array sensor garis dengan Teensy. Berikut ini adalah fungsi-fungsi yang digunakan.

LineSensor (batal);

Memanggil konstruktor ini dengan membuat objek menginisialisasi ADC0 dan ADC1, membaca nilai ambang batas, minimum dan maksimum dari EEPROM dan mengkonfigurasi pin sensor ke mode input dan pin kontrol emitor ke mode output.

batal kalibrasi(uint8_t kalibrasiMode);

Fungsi ini mengkalibrasi sensor garis. Mode kalibrasi dapat berupa MIN_MAX atau MEDIAN_FILTER. Fungsi ini dijelaskan secara rinci di langkah selanjutnya.

void getSensorsAnalog(uint16_t *sensorValue, mode uint8_t);

Membaca larik sensor di salah satu dari tiga mode yang diteruskan sebagai argumen. Modus adalah keadaan emitor dan bisa ON, OFF atau TOGGLE. Mode TOGGLE mengkompensasi pembacaan sensor dari reflektansi karena cahaya sekitar. Sensor yang terhubung ke ADC0 dan ADC1 dibaca secara serempak.

int getLinePosition(uint16_t *sensorValue);

Menghitung posisi larik sensor di atas garis dengan metode rata-rata tertimbang.

uint16_t getSensorsBinary(uint16_t *sensorValue);

Mengembalikan representasi 16-bit dari status sensor. Biner satu menunjukkan bahwa sensor melewati garis dan nol biner menunjukkan bahwa sensor keluar dari garis.

uint8_t countBinary(uint16_t binaryValue);

Melewati representasi 16-bit dari nilai sensor ke fungsi ini akan mengembalikan jumlah sensor yang melewati batas.

void getSensorsNormalized(uint16_t *sensorValue, mode uint8_t);

Membaca nilai sensor dan membatasi setiap nilai sensor ke nilai min dan maks yang sesuai. Nilai sensor kemudian dipetakan dari rentang min hingga maks yang sesuai hingga rentang 0 hingga 1000.

Langkah 14: Library Dijelaskan - TeensyviewMenu

TeensyviewMenu adalah library dimana fungsi-fungsi untuk tampilan menu dapat diakses. Berikut ini adalah fungsi-fungsi yang digunakan.

TeensyViewMenu(kosong);

Memanggil konstruktor ini membuat objek kelas LineSensor, PushButton dan TeensyView.

batal intro (batal);

Ini untuk navigasi menu.

uji batal (batal);

Ini disebut secara internal di dalam menu ketika nilai sensor garis akan ditampilkan di Teensyview untuk pengujian.

Langkah 15: Library Dijelaskan - Motors

Motors adalah library yang digunakan untuk menggerakkan kedua motor tersebut. Berikut ini adalah fungsi-fungsi yang digunakan.

Motor (batal);

Memanggil konstruktor ini dengan membuat objek mengonfigurasi kontrol arah motor dan pin kontrol PWM ke mode output.

void setSpeed(int leftMotorSpeed, int rightMotorSpeed);

Memanggil fungsi ini menggerakkan dua motor dengan kecepatan yang diteruskan sebagai argumen. Nilai kecepatan dapat berkisar dari -255 hingga +255 dengan tanda negatif yang menunjukkan bahwa arah putarannya terbalik.

Langkah 16: Pengujian - Odometri Encoder

Kami akan menguji encoder roda magnetik dan menampilkan posisi dan jarak yang ditempuh oleh robot.

Unggah DualEncoderTeensyview.ino. Program ini menampilkan kutu encoder di Teensyview. Encoder mencentang kenaikan jika Anda menggerakkan robot ke depan dan mengurangi jika Anda memindahkannya ke belakang.

Sekarang unggah EncoderOdometry.ino. Program ini menampilkan posisi robot dalam koordinat x-y, menampilkan jarak total yang ditempuh dalam sentimeter dan sudut yang diputar dalam derajat.

Saya telah merujuk Implementasi Dead Reckoning oleh Odometry pada Robot dengan Drive Diferensial Servo R/C oleh Seattle Robotics Society untuk menentukan posisi dari kutu encoder.

Langkah 17: Pengujian - Sensor Gerak Prop Shield

Pastikan Anda telah mengkalibrasi sensor gerak dengan mengikuti langkah-langkah yang disebutkan di sini.

Sekarang unggah PropShieldTeensyView.ino. Anda seharusnya dapat melihat nilai accelerometer, gyro, dan magnetometer dari ketiga sumbu di Teensyview.

Langkah 18: Ikhtisar Program

Program untuk pengikut garis lanjutan ditulis dalam Arduino IDE. Program ini bekerja dalam urutan berikut yang dijelaskan di bawah ini.

  • Nilai yang disimpan di EEPROM dibaca dan menu ditampilkan.
  • Saat menekan LAUNCH, program memasuki loop.
  • Nilai sensor garis yang dinormalisasi dibaca.
  • Nilai biner posisi garis diperoleh dengan menggunakan nilai sensor yang dinormalisasi.
  • Hitungan jumlah sensor yang melewati garis dihitung dari nilai biner posisi garis.
  • Kutu enkoder diperbarui dan jarak total yang ditempuh, koordinat x-y dan sudut diperbarui.
  • Untuk nilai hitungan biner yang berbeda mulai dari 0 hingga 16, satu set instruksi dieksekusi. Jika hitungan biner berada dalam rentang 1 hingga 5 dan jika sensor yang berada di atas garis berdekatan satu sama lain, rutinitas PID disebut. Rotasi dilakukan dalam kombinasi lain dari nilai biner dan jumlah biner.
  • Dalam rutinitas PID (yang sebenarnya merupakan rutinitas PD), motor digerakkan pada kecepatan yang dihitung berdasarkan kesalahan, perubahan kesalahan, nilai Kp dan Kd.

Program saat ini tidak mengukur nilai orientasi dari pelindung penyangga. Ini adalah pekerjaan yang sedang berlangsung dan sedang diperbarui.

Unggah TestRun20.ino. Kita akan melihat cara menavigasi menu, menyesuaikan pengaturan dan cara mengkalibrasi sensor garis pada langkah selanjutnya yang akan kita uji robot kita.

Langkah 19: Menavigasi Menu dan Pengaturan

Menu memiliki pengaturan berikut yang dapat dinavigasi menggunakan tombol tekan kiri dan kanan dan dipilih menggunakan tombol tekan tengah. Pengaturan dan fungsinya dijelaskan di bawah ini.

  1. CALIBRATE: Untuk mengkalibrasi sensor garis.
  2. TEST: Untuk menampilkan nilai sensor garis.
  3. PELUNCURAN: Untuk memulai baris berikut.
  4. MAX SPEED: Untuk mengatur batas atas kecepatan robot.
  5. ROTATE SPEED: Untuk mengatur batas atas kecepatan robot saat melakukan putaran yaitu ketika kedua roda berputar dengan kecepatan yang sama dalam arah yang berlawanan.
  6. KP: Konstanta proporsional.
  7. KD: Konstanta turunan.
  8. RUN MODE: Untuk memilih antara dua mode operasi - NORMAL dan ACCL. Dalam mode NORMAL, robot berjalan pada kecepatan yang telah ditentukan sebelumnya sesuai dengan nilai posisi garis. Dalam mode ACCL, KECEPATAN MAX robot digantikan oleh KECEPATAN ACCL pada tahapan lintasan yang telah ditentukan sebelumnya. Ini dapat digunakan untuk mempercepat robot di bagian trek yang lurus. Pengaturan berikut hanya dapat diakses jika RUN MODE diatur sebagai ACCL.
  9. LAP DISTANCE: Untuk mengatur total panjang lintasan balap.
  10. ACCL SPEED: Untuk mengatur kecepatan akselerasi robot. Kecepatan ini menggantikan MAX SPEED pada tahapan trek yang berbeda seperti yang didefinisikan di bawah ini.
  11. TIDAK. OF STAGES: Untuk mengatur jumlah stage dimana ACCL SPEED digunakan.
  12. TAHAP 1: Untuk mengatur jarak awal dan akhir tahap di mana MAX SPEED diganti dengan ACCL SPEED. Untuk setiap tahap, jarak awal dan akhir dapat diatur secara terpisah.

Langkah 20: Kalibrasi Sensor Garis

Image
Image

Kalibrasi sensor garis adalah proses dimana nilai ambang dari masing-masing dari 16 sensor ditentukan. Nilai ambang ini digunakan untuk memutuskan apakah sensor tertentu melewati garis atau tidak. Untuk menentukan nilai ambang 16 sensor, kami menggunakan salah satu dari dua metode tersebut.

FILTER MEDIAN: Dalam metode ini, sensor garis ditempatkan di atas permukaan putih dan jumlah pembacaan sensor yang telah ditentukan sebelumnya diambil untuk semua 16 sensor. Nilai median dari semua 16 sensor ditentukan. Proses yang sama diulang setelah menempatkan sensor garis di atas permukaan hitam. Nilai ambang batas adalah rata-rata nilai median permukaan hitam dan putih.

MIN MAX: Dalam metode ini, nilai sensor dibaca berulang kali hingga pengguna meminta berhenti. Nilai maksimum dan minimum yang ditemui oleh setiap sensor disimpan. Nilai ambang batas adalah rata-rata dari nilai minimum dan maksimum.

Nilai ambang yang diperoleh dipetakan ke kisaran 0 hingga 1000.

Kalibrasi sensor garis dengan metode MIN MAX ditunjukkan dalam video. Setelah mengkalibrasi sensor garis, data dapat divisualisasikan seperti yang ditunjukkan pada gambar. Informasi berikut ditampilkan.

  • Representasi biner 16-bit dari posisi garis dengan biner 1 yang menunjukkan bahwa sensor garis yang sesuai berada di atas garis dan biner 0 menunjukkan bahwa sensor garis berada di luar garis.
  • Hitungan jumlah total sensor yang melewati garis.
  • Nilai minimum, maksimum, dan sensor (mentah dan dinormalisasi) dari 16 sensor, satu sensor pada satu waktu.
  • Posisi garis di kisaran -7500 hingga +7500.

Nilai sensor garis minimum dan maksimum kemudian disimpan di EEPROM.

Langkah 21: Uji Jalan

Image
Image

Video tersebut merupakan uji coba di mana robot diprogram untuk berhenti setelah menyelesaikan satu putaran.

Langkah 22: Pemikiran dan Perbaikan Terakhir

kontes robot
kontes robot

Perangkat keras yang dipasang untuk membangun robot ini tidak dimanfaatkan secara maksimal oleh program yang menjalankannya. Banyak perbaikan dapat dilakukan pada bagian program. Sensor gerak pelindung penyangga tidak digunakan saat ini untuk menentukan posisi dan orientasi. Data odometri dari encoder dapat digabungkan dengan data orientasi dari prop shield untuk menentukan posisi dan heading robot secara akurat. Data ini kemudian dapat digunakan untuk memprogram robot untuk mempelajari lintasan dalam beberapa putaran. Saya mendorong Anda untuk bereksperimen pada bagian ini dan membagikan hasil Anda.

Semoga beruntung.

kontes robot
kontes robot

Hadiah Kedua dalam Kontes Robot

Direkomendasikan: