Isi kandungan:

Garis Lanjutan Mengikuti Robot: 22 Langkah (dengan Gambar)
Garis Lanjutan Mengikuti Robot: 22 Langkah (dengan Gambar)

Video: Garis Lanjutan Mengikuti Robot: 22 Langkah (dengan Gambar)

Video: Garis Lanjutan Mengikuti Robot: 22 Langkah (dengan Gambar)
Video: Quincy part 2 #dewivanow #robot #quincyrobotartis #mobix 2024, Julai
Anonim
Image
Image
Prototaip - Perfboard
Prototaip - Perfboard

Ini adalah barisan maju yang mengikuti robot berdasarkan sensor garis Teensy 3.6 dan QTRX yang telah saya bina dan telah lama saya kerjakan. Terdapat beberapa peningkatan besar dalam reka bentuk dan prestasi dari barisan robot saya yang terdahulu. Kelajuan dan tindak balas robot telah bertambah baik. Keseluruhan strukturnya ringkas dan ringan. Komponen disusun berdekatan dengan paksi roda untuk mengurangkan momentum sudut. Motor gear logam mikro berkuasa tinggi memberikan tork yang mencukupi dan roda silikon hab aluminium menawarkan daya tarikan yang sangat diperlukan pada kelajuan tinggi. Perisai prop dan pengekod roda membolehkan robot menentukan kedudukan dan orientasinya. Dengan Teensyview terpasang di atas kapal, semua maklumat yang relevan dapat dilihat dan parameter penting program dapat dikemas kini menggunakan tombol.

Untuk mula membina robot ini, anda memerlukan bekalan berikut (dan banyak masa dan kesabaran yang ada).

Bekalan

Elektronik

  • Teensy 3.6 Lembaga Pembangunan
  • Perisai Prop dengan Sensor Gerak
  • Sparkfun TeensyView
  • Array Sensor Refleksi Pololu QTRX-MD-16A
  • PCB prototaip dua sisi 15x20cm
  • Pololu Step-Up / Step-Down Voltage Regulator S9V11F3S5
  • Pololu Adjustable 4-5-20V Step-Up Voltage Regulator U3V70A
  • Motor gear mikro MP12 6V 1580 rpm dengan pengekod (x2)
  • Pembawa Pemacu Motor Dual DRV8833 (x2)
  • Bateri Li-Po 3.7V, 750mAh
  • Suis ON / OFF
  • Kapasitor elektrolitik 470uF
  • Kapasitor elektrolitik 1000uF (x2)
  • Kapasitor seramik 0.1uF (x5)
  • Butang tekan (x3)
  • LED Hijau 10mm (x2)

Perkakasan

  • Roda Silikon Atom 37x34mm (x2)
  • Pololu Ball Caster dengan Bola Logam 3/8”
  • Pemasangan motor N20 (x2)
  • Selak dan mur

Kabel dan Penyambung

  • Wayar fleksibel 24AWG
  • 24 pin FFC ke DIP breakout dan kabel FFC (Jenis A, panjang 150mm)
  • Pengepala pin wanita bulat
  • Terminal panjang kepala pin wanita bulat
  • Header wanita baris dua bersudut kanan
  • Tajuk lelaki baris dua sudut bersudut kanan
  • Pengepala pin lelaki
  • Header pin jarum lelaki

Alat

  • Multimeter
  • Besi pematerian
  • Kawat pateri
  • Pelucut wayar
  • Pemotong wayar

Langkah 1: Gambaran Keseluruhan Sistem

Seperti reka bentuk robot penyeimbang diri saya yang sebelumnya, robot ini adalah kumpulan papan pelarian yang dipasang pada papan wangi yang juga berfungsi untuk tujuan struktur.

Sistem utama robot digariskan di bawah.

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

Sensor garisan: Susunan sensor talian output analog QTRX-MD-16A Pololu dalam susunan ketumpatan sederhana (pitch sensor 8mm).

Pemacu: 6V, 1580rpm, motor gear mikro logam berkuasa tinggi dengan pengekod roda magnetik dan roda silikon yang dipasang pada hab aluminium.

Odometri: Pasangan pengekod roda magnetik untuk menganggar koordinat dan jarak yang diliputi.

Sensor orientasi: Perisai prop dengan sensor gerakan untuk menganggarkan kedudukan dan arah robot.

Bekalan kuasa: 3.7V, bateri lipo 750mAh sebagai sumber kuasa. Pengatur langkah naik / turun 3.3V memberi kuasa kepada pengawal mikro, sensor, dan peranti paparan. Pengatur langkah naik yang boleh laras memberi kuasa kepada dua motor.

Antara muka pengguna: Teensyview untuk memaparkan maklumat. Penembusan butang tiga untuk menerima input pengguna. Dua nombor LED hijau berdiameter 10mm untuk petunjuk status semasa berjalan.

Langkah 2: Mari Mulakan Prototaip

Image
Image

Kami akan melaksanakan litar di atas pada papan wangi. Kita mesti memastikan papan pelarian kita sentiasa siap dengan menyisipkan tajuk di atasnya. Video akan memberikan idea mengenai tajuk mana yang harus disolder pada papan pelarian yang mana.

Setelah menyolder header pada papan breakout, susun Teensyview dan pushbutton breakout di atas Teensy.

Langkah 3: Prototaip - Perfboard

Prototaip - Perfboard
Prototaip - Perfboard

Dapatkan papan wangi prototaip sisi ganda 15x20cm dan tandakan sempadannya dengan penanda kekal seperti yang ditunjukkan dalam gambar. Bor lubang ukuran M2 untuk memasang array sensor, roda kastor, dan motor gear logam mikro pada lokasi yang ditandai dengan lingkaran putih. Kami kemudian akan memotong papan wangi di sepanjang sempadan setelah menyolder dan menguji semua komponen.

Kami akan memulakan prototaip kami dengan menyisipkan pin header dan soket pada papan wangi. Papan pelarian akan dimasukkan kemudian pada tajuk ini. Perhatikan kedudukan header pada papan wangi. Kami akan menghubungkan semua wayar berdasarkan susun atur tajuk ini.

Langkah 4: Prototaip - Perisai Prop

Prototaip - Perisai Prop
Prototaip - Perisai Prop
Prototaip - Perisai Prop
Prototaip - Perisai Prop
Prototaip - Perisai Prop
Prototaip - Perisai Prop
Prototaip - Perisai Prop
Prototaip - Perisai Prop

Kami akan pertama kali menyambungkan sambungan ke pelindung prop. Oleh kerana kami hanya menggunakan sensor pergerakan pelindung prop, kami hanya perlu menyambungkan pin SCL, SDA dan IRQ selain daripada pin 3V dan pin ground pelindung prop.

Setelah sambungan selesai, masukkan perisai Teensy dan prop dan kalibrasi sensor gerakan dengan mengikuti langkah-langkah yang disebutkan di sini.

Langkah 5: Prototaip - Power and Ground

Prototaip - Kuasa dan Tanah
Prototaip - Kuasa dan Tanah

Selesaikan semua sambungan kuasa dan tanah yang merujuk pada gambar. Masukkan semua papan pelindung di tempatnya dan pastikan kesinambungan menggunakan multimeter. Sahkan tahap voltan yang berbeza di atas kapal.

  • Voltan keluaran Li-po (biasanya antara 3V dan 4.2V)
  • Voltan output pengatur langkah naik / turun (3.3V)
  • Voltan keluaran pengatur langkah yang boleh disesuaikan (set ke 6V)

Langkah 6: Prototaip - Pembawa Pemandu Motor

Prototaip - Pembawa Pemandu Motor
Prototaip - Pembawa Pemandu Motor
Prototaip - Pembawa Pemandu Motor
Prototaip - Pembawa Pemandu Motor
Prototaip - Pembawa Pemandu Motor
Prototaip - Pembawa Pemandu Motor

Papan pembawa pemacu motor berkembar DRV8833 dapat memberikan arus puncak 1.2A dan arus puncak 2A setiap saluran. Kami akan menyambungkan dua saluran secara selari untuk menggerakkan satu motor. Selesaikan sambungan dengan mengikuti langkah-langkah di bawah.

  • Selari dengan dua input dan dua output pembawa pemandu motor seperti yang ditunjukkan dalam gambar.
  • Sambungkan wayar kawalan input ke pemandu motor.
  • Sambungkan kapasitor elektrolitik 1000uF dan kapasitor seramik 0.1uF di terminal Vin dan Gnd kedua-dua papan pembawa.
  • Sambungkan kapasitor seramik 0.1uF ke terminal output pemacu motor.

Langkah 7: Prototaip - Header Array Sensor Line

Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis
Prototaip - Tajuk Array Sensor Garis

Teensy 3.6 mempunyai dua ADC - ADC0 dan ADC1 yang dilipatgandakan kepada 25 pin yang boleh diakses. Kami dapat mengakses dua pin dari kedua ADC pada masa yang sama. Kami akan menghubungkan lapan sensor baris masing-masing ke ADC0 dan ADC1. Sensor nombor genap akan disambungkan ke ADC1 dan sensor nombor ganjil ke ADC0. Selesaikan sambungan dengan mengikuti langkah-langkah di bawah. Kami kemudian akan menyambungkan sensor talian menggunakan penyesuai dan kabel FFC ke DIP.

  • Sambungkan semua pin sensor genap (16, 14, 12, 10, 8, 6, 4, 2) seperti yang ditunjukkan dalam gambar. Arahkan wayar untuk menyambungkan pin sensor 12 melalui bahagian belakang papan serpihan.
  • Sambungkan pin kawalan pemancar (WALAUPUN) ke pin Teensy 30.
  • Sambungkan semua pin sensor ganjil (15, 13, 11, 9, 7, 5, 3, 1) seperti yang ditunjukkan dalam gambar.
  • Sambungkan kapasitor elektrolitik 470uF merentasi Vcc dan Gnd.

Sekiranya anda memerhatikan pin sensor garis dan pin header yang sesuai di perboard, anda akan melihat bahawa baris atas sensor garis memetakan ke baris bawah tajuk di perboard dan sebaliknya. Ini kerana apabila kita menyambungkan sensor garis ke papan wangi menggunakan header bersudut tegak dua baris, baris akan sejajar dengan betul. Saya memerlukan sedikit masa untuk mengetahui perkara ini dan membetulkan penugasan pin dalam program ini.

Langkah 8: Prototaip - Motor Gear Mikro dan Pengekod

Prototaip - Motor Gear Mikro dan Pengekod
Prototaip - Motor Gear Mikro dan Pengekod
  • Betulkan motor gear logam mikro dengan pengekod menggunakan pelekap motor N20.
  • Sambungkan wayar motor dan pengekod seperti yang ditunjukkan dalam gambar.
  • Pengekod kiri - Pin Teensy 4 & 0
  • Pengekod kanan - Pin Teensy 9 & 27

Langkah 9: Prototaip - LED

Prototaip - LED
Prototaip - LED
Prototaip - LED
Prototaip - LED

Kedua-dua LED menunjukkan sama ada robot telah mengesan putaran atau tidak. Saya telah menggunakan perintang siri 470-ohm untuk menyambungkan LED ke Teensy.

  • Anod LED kiri ke pin Teensy 6
  • Anod LED kanan ke pin Teensy 8

Langkah 10: Prototaip - Pelarian

Image
Image
Prototaip - Pelarian
Prototaip - Pelarian

Sekarang setelah kita menyelesaikan semua pematerian pada papan wangi, kita dapat memotong dengan hati-hati di sepanjang sempadan yang tertera di papan wangi dan mengeluarkan kepingan tambahan papan wangi. Juga, pasangkan dua roda dan roda kastor.

Masukkan semua papan pelindung di soket masing-masing. Untuk memasukkan pelarian FFC-DIP dan untuk memperbaiki sensor garis QTRX-MD-16A, rujuk video.

Langkah 11: Gambaran Keseluruhan Perpustakaan Perisian

Tinjauan Perpustakaan Perisian
Tinjauan Perpustakaan Perisian

Kami akan memprogram Teensy di Arduino IDE. Kami memerlukan beberapa perpustakaan sebelum memulakannya. Perpustakaan yang akan kami gunakan adalah:

  • Pengekod
  • Pandangan Teensy
  • EEPROM
  • ADC
  • NXPMotionSense

Dan beberapa yang ditulis khusus untuk robot ini,

  • Tekan butang
  • Sensor Line
  • TeensyviewMenu
  • Motor

Perpustakaan khusus untuk robot ini dibincangkan secara terperinci dan boleh dimuat turun pada langkah seterusnya.

Langkah 12: Perpustakaan Dijelaskan - PushButton

Perpustakaan ini adalah untuk menghubungkan papan pemecah butang dengan Teensy. Fungsi yang digunakan adalah

PushButton (int kiriButtonPin, int centreButtonPin, int kananButtonPin);

Memanggil konstruktor ini dengan membuat objek mengkonfigurasi pin butang tekan ke mod INPUT_PULLUP.

int8_t waitingForButtonPress (tidak sah);

Fungsi ini menunggu sehingga butang ditekan dan dilepaskan dan mengembalikan kod kunci.

int8_t getSingleButtonPress (tidak sah);

Fungsi ini memeriksa apakah butang ditekan dan dilepaskan. Sekiranya ya, mengembalikan kod kunci yang lain akan mengembalikan sifar.

Langkah 13: Penjelasan Perpustakaan - Line Sensor

LineSensor adalah perpustakaan untuk menghubungkan array sensor baris dengan Teensy. Berikut adalah fungsi yang digunakan.

LineSensor (tidak sah);

Memanggil konstruktor ini dengan membuat objek menginisialisasi ADC0 dan ADC1, membaca ambang, nilai minimum dan maksimum dari EEPROM dan mengkonfigurasi pin sensor ke mod input dan pin kawalan pemancar ke mod output.

kalibrasi tidak sah (uint8_t calibrationMode);

Fungsi ini menentukur sensor garis. CalibrationMode boleh menjadi MIN_MAX atau MEDIAN_FILTER. Fungsi ini dijelaskan secara terperinci pada langkah selanjutnya.

batal getSensorsAnalog (uint16_t * sensorValue, mod uint8_t);

Membaca array sensor dalam salah satu daripada tiga mod yang disertakan sebagai argumen. Mod adalah keadaan pemancar dan boleh DIHIDUPKAN, MATI atau BERGANDA. Mod TOGGLE mengimbangi bacaan pantulan sensor kerana cahaya persekitaran. Sensor yang disambungkan ke ADC0 dan ADC1 dibaca secara serentak.

int getLinePosition (uint16_t * sensorValue);

Mengira kedudukan array sensor di atas garis dengan kaedah purata berwajaran.

uint16_t getSensorsBinary (uint16_t * sensorValue);

Mengembalikan perwakilan 16-bit keadaan sensor. Yang binari menunjukkan bahawa sensor berada di atas garisan dan sifar binari menunjukkan bahawa sensor berada di luar talian.

uint8_t countBinary (uint16_t binaryValue);

Menyerahkan perwakilan 16-bit nilai sensor ke fungsi ini mengembalikan bilangan sensor yang melebihi garis.

batal getSensorsNormalized (nilai uint16_t * sensor, mod uint8_t);

Membaca nilai sensor dan mengekang setiap nilai sensor ke nilai min dan maksimumnya yang sepadan. Nilai sensor kemudian dipetakan dari julat min ke julat maksimum hingga julat 0 hingga 1000.

Langkah 14: Perpustakaan Dijelaskan - TeensyviewMenu

TeensyviewMenu adalah perpustakaan di mana fungsi untuk menu paparan dapat diakses. Berikut adalah fungsi yang digunakan.

TeensyViewMenu (tidak sah);

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

intro void (kekosongan);

Ini untuk menavigasi menu.

ujian batal (kekosongan);

Ini dipanggil secara dalaman dalam menu ketika nilai sensor garis akan ditampilkan di Teensyview untuk diuji.

Langkah 15: Perpustakaan Dijelaskan - Motor

Motors adalah perpustakaan yang digunakan untuk memandu dua motor. Berikut adalah fungsi yang digunakan.

Motor (kekosongan);

Memanggil konstruktor ini dengan membuat objek mengkonfigurasi kawalan arah motor dan pin kawalan PWM ke mod output.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

Memanggil fungsi ini mendorong dua motor pada kelajuan yang dilalui sebagai argumen. Nilai kelajuan boleh berkisar antara -255 hingga +255 dengan tanda negatif yang menunjukkan bahawa arah putaran terbalik.

Langkah 16: Ujian - Encoder Odometry

Kami akan menguji pengekod roda magnet dan memaparkan kedudukan dan jarak yang diliputi oleh robot.

Muat naik DualEncoderTeensyview.ino. Program ini memaparkan tanda pengekod di Teensyview. Pengekod menandakan kenaikan jika anda menggerakkan robot ke hadapan dan penurunan jika anda menggerakkannya ke belakang.

Sekarang muat naik EncoderOdometry.ino. Program ini memaparkan kedudukan robot dari segi koordinat x-y, memaparkan jumlah jarak yang diliputi dalam sentimeter dan sudut berubah dalam darjah.

Saya telah merujuk Implementing Dead Reckoning oleh Odometry pada Robot dengan R / C Servo Differential Drive oleh Seattle Robotics Society untuk menentukan kedudukan dari kod pengekod.

Langkah 17: Ujian - Sensor Gerak Prop Shield

Pastikan anda telah mengkalibrasi sensor gerakan dengan mengikuti langkah-langkah yang disebutkan di sini.

Sekarang muat naik PropShieldTeensyView.ino. Anda seharusnya dapat melihat nilai pecutan, giro dan magnetometer ketiga-tiga paksi pada Teensyview.

Langkah 18: Gambaran Keseluruhan Program

Program untuk pengikut baris lanjutan ditulis dalam Arduino IDE. Program ini berfungsi mengikut urutan berikut yang dijelaskan di bawah.

  • Nilai yang disimpan di EEPROM dibaca dan menu dipaparkan.
  • Semasa menekan PELANCARAN, program memasuki gelung.
  • Nilai sensor garis dinormalisasi dibaca.
  • Nilai binari kedudukan garis diperoleh menggunakan nilai sensor yang dinormalisasi.
  • Kiraan bilangan sensor yang berada di atas garisan dikira dari nilai binari kedudukan garis.
  • Tanda pengekod dikemas kini dan jumlah jarak yang diliputi, koordinat x-y dan sudut dikemas kini.
  • Untuk nilai kiraan binari yang berbeza antara 0 hingga 16, satu set arahan dilaksanakan. Sekiranya kiraan binari berada dalam julat 1 hingga 5 dan jika sensor yang berada di atas talian bersebelahan satu sama lain, rutin PID dipanggil. Putaran dilakukan dalam kombinasi lain dari nilai binari dan kiraan binari.
  • Dalam rutin PID (yang merupakan rutin PD), motor digerakkan pada kelajuan yang dikira berdasarkan ralat, perubahan kesalahan, nilai Kp dan Kd.

Program pada masa ini tidak mengukur nilai orientasi dari pelindung prop. Ini sedang dijalankan dan sedang dikemas kini.

Muat naik TestRun20.ino. Kami akan melihat bagaimana menavigasi menu, menyesuaikan tetapan dan bagaimana mengkalibrasi sensor garis pada langkah-langkah seterusnya yang akan kami uji robot kami.

Langkah 19: Menavigasi Menu dan Tetapan

Menu mempunyai tetapan berikut yang dapat dinavigasi menggunakan tombol tekan kiri dan kanan dan dipilih menggunakan tombol tekan tengah. Tetapan dan fungsinya dijelaskan di bawah.

  1. KALIBRAT: Untuk menentukur sensor garis.
  2. UJIAN: Untuk memaparkan nilai sensor garis.
  3. PELANCARAN: Untuk memulakan baris berikut.
  4. KECEPATAN MAX: Untuk menetapkan had atas kelajuan robot.
  5. ROTATE SPEED: Untuk menetapkan had atas kelajuan robot ketika melakukan putaran iaitu ketika kedua roda berpusing pada kecepatan yang sama pada arah yang berlawanan.
  6. KP: Pemalar berkadar.
  7. KD: Pemalar terbitan.
  8. RUN MODE: Untuk memilih antara dua mod operasi - NORMAL dan ACCL. Dalam mod NORMAL, robot berjalan pada kelajuan yang telah ditentukan sesuai dengan nilai kedudukan garis. Dalam mod ACCL, MAX SPEED robot digantikan oleh ACCL SPEED pada tahap trek yang telah ditentukan. Ini dapat digunakan untuk mempercepat robot di bahagian lurus trek. Tetapan berikut dapat diakses hanya jika RUN MODE ditetapkan sebagai ACCL.
  9. Jarak LAP: Untuk menetapkan panjang keseluruhan trek perlumbaan.
  10. ACCL SPEED: Untuk menetapkan kelajuan robot. Kelajuan ini menggantikan MAX SPEED pada tahap trek yang berbeza seperti yang ditentukan di bawah.
  11. TIADA. PERINGKAT: Untuk menetapkan bilangan peringkat di mana ACCL SPEED digunakan.
  12. TAHAP 1: Untuk menetapkan jarak awal dan akhir tahap di mana MAX SPEED diganti dengan ACCL SPEED. Untuk setiap peringkat, jarak permulaan dan akhir dapat ditetapkan secara berasingan.

Langkah 20: Penentukuran Sensor Garis

Image
Image

Kalibrasi sensor garis adalah proses di mana nilai ambang setiap 16 sensor ditentukan. Nilai ambang ini digunakan untuk menentukan sama ada sensor tertentu berada di atas talian atau tidak. Untuk menentukan nilai ambang 16 sensor, kami menggunakan salah satu daripada dua kaedah tersebut.

FILTER MEDIAN: Dalam kaedah ini, sensor garis diletakkan di atas permukaan putih dan jumlah bacaan sensor yang telah ditentukan diambil untuk semua 16 sensor. Nilai median dari semua 16 sensor ditentukan. Proses yang sama diulang setelah meletakkan sensor garis di atas permukaan hitam. Nilai ambang adalah purata nilai median permukaan hitam dan putih.

MIN MAX: Dalam kaedah ini, nilai sensor dibaca berulang kali sehingga pengguna meminta berhenti. Nilai maksimum dan minimum yang dihadapi oleh setiap sensor disimpan. Nilai ambang adalah purata nilai minimum dan maksimum.

Nilai ambang yang diperoleh dipetakan ke julat 0 hingga 1000.

Penentukuran sensor garis dengan kaedah MIN MAX ditunjukkan dalam video. Setelah menentukur sensor garis, data dapat dilihat seperti yang ditunjukkan dalam gambar. Maklumat berikut dipaparkan.

  • Perwakilan binari 16-bit kedudukan garis dengan binari 1 menunjukkan bahawa sensor garis yang sesuai berada di atas garisan dan binari 0 yang menunjukkan bahawa sensor garis berada di luar garisan.
  • Kiraan jumlah sensor yang berada di atas talian.
  • Nilai minimum, maksimum dan sensor (mentah dan dinormalisasi) dari 16 sensor, satu sensor pada satu masa.
  • Kedudukan garis dalam julat -7500 hingga +7500.

Nilai sensor garis minimum dan maksimum kemudian disimpan di EEPROM.

Langkah 21: Jalankan Ujian

Image
Image

Video ini dijalankan dalam ujian di mana robot diprogram untuk berhenti setelah selesai satu pusingan.

Langkah 22: Pemikiran dan Penambahbaikan Akhir

Peraduan Robot
Peraduan Robot

Perkakasan yang disatukan untuk membangun robot ini tidak digunakan sepenuhnya oleh program yang menjalankannya. Banyak penambahbaikan dapat dilakukan pada bahagian program. Sensor gerakan pelindung prop tidak digunakan pada masa ini untuk menentukan kedudukan dan orientasi. Data odometri dari pengekod dapat digabungkan dengan data orientasi dari perisai prop untuk menentukan kedudukan dan arah robot dengan tepat. Data ini kemudian dapat digunakan untuk memprogram robot untuk mempelajari trek dalam beberapa pusingan. Saya mendorong anda untuk bereksperimen pada bahagian ini dan berkongsi hasil anda.

Semoga berjaya.

Peraduan Robot
Peraduan Robot

Hadiah Kedua dalam Peraduan Robot

Disyorkan: