instructables Kawalan Kelajuan Motor VHDL Tentukan Arah dan Kelajuan Pengawal Kelajuan Kiri dan Kanan
NOTA: Halaman ini adalah satu bahagian daripada binaan yang lebih besar. Sila pastikan anda bermula di SINI, supaya anda memahami di mana perkara berikut sesuai dalam projek yang lebih besar
Berakhirview
Kawalan kelajuan dan arah motor adalah salah satu daripada dua bahagian utama dalam robot pengesan foto, yang satu lagi ialah bahagian pengesan foto atau pengesan cahaya. Manakala bahagian pengesan foto memfokuskan pada penglihatan robot, bahagian kawalan kelajuan dan arah motor pula memfokuskan kepada pergerakan robot. Data proses kawalan kelajuan dan arah motor yang diberikan daripada bahagian photodetector dan memberikan output fizikal dalam bentuk pergerakan motor.
Tujuan pembahagian ini adalah untuk mengawal kelajuan dan arah kedua-dua motor kiri dan kanan robot pencari cahaya. Untuk menentukan nilai ini, anda memerlukan saiz dan kedudukan cahaya yang telah ditangkap oleh kamera dan diproses dengan ambang. Anda juga memerlukan kelajuan yang diukur pada setiap motor. Daripada input ini, anda akan dapat mengeluarkan nilai PWM (Pulse-Width Modulation) untuk setiap motor.
Untuk mencapai matlamat ini, anda perlu membuat modul VHDL ini (juga dipautkan di bawah):
- Kawalan
- Pengiraan ralat
- Penukaran binari
- Ketiadaan sumber cahaya
Anda boleh melihat kod VHDL untuk bahagian ini di sini.
Bekalan
Kami mengesyorkan untuk membuat kod dengan ISE Design Suite 14.7 kerana ia juga boleh digunakan untuk menguji kod dalam VHDL. Walau bagaimanapun, untuk memuat naik kod ke dalam BASYS 3, anda perlu memasang Vivado (ver. 2015.4 atau 2016.4) dan tulis kekangan dengan sambungan .xdc.
Kawalan Kelajuan Motor VHDL: Tentukan Arah dan Kelajuan, Pengawal Kelajuan Kiri dan Kanan: Halaman 1
LANGKAH ARAHAN
Langkah 1: Kawalan
Untuk memahami cara mengawal kelakuan robot mencari cahaya, kami akan menerangkan kelakuan robot yang dikehendaki apabila ia melihat sumber cahaya. Tingkah laku ini akan dikawal mengikut kedudukan dan saiz sumber cahaya.
Algoritma yang digunakan adalah serupa dengan pengawal robot RC, dengan satu tuil yang boleh dipusing ke kiri atau kanan, dan satu lagi tuil yang boleh dipusing ke hadapan atau ke belakang.
Untuk mencari cahaya, anda mahu robot ini bergerak dalam garis lurus jika kedudukan sumber cahaya betul-betul di hadapan robot. Untuk melakukan itu, anda mahukan kelajuan yang sama pada kedua-dua motor kiri dan kanan. Jika lampu terletak di sebelah kiri robot, anda mahu motor kanan bergerak lebih laju daripada motor kiri supaya robot boleh berpusing ke kiri ke arah cahaya. Sebaliknya, jika lampu terletak di sebelah kanan robot, anda mahu motor kiri bergerak lebih laju daripada motor kanan supaya robot boleh berpusing ke kanan ke arah cahaya. Ini serupa dengan tuil kiri pengawal RC, di mana anda boleh mengawal sama ada anda mahu menggerakkan robot ke kiri, kanan atau lurus.
Kemudian, anda mahu robot bergerak ke hadapan jika sumber cahaya berada jauh (sumber cahaya kecil), atau bergerak ke belakang jika sumber cahaya yang dikesan terlalu dekat (sumber cahaya besar). Anda juga mahu bahawa semakin jauh robot dari sumber cahaya, semakin cepat robot itu bergerak. Ini adalah sama dengan tuil kanan pengawal RC, di mana anda boleh mengawal sama ada anda mahu bergerak ke hadapan atau ke belakang, dan seberapa pantas anda mahu ia bergerak.
Anda kemudiannya boleh memperoleh formula matematik untuk kelajuan setiap motor, dan kami memilih julat kelajuan antara -255 hingga 255. Nilai negatif bermakna motor akan berpusing ke belakang, manakala nilai positif bermakna motor akan berpusing ke hadapan.
Itulah algoritma asas untuk pergerakan robot ini. Untuk mengetahui lebih lanjut mengenai modul ini, klik di sini.
Langkah 2: Pengiraan Ralat
Memandangkan anda sudah mempunyai kelajuan dan arah matlamat untuk motor, anda juga ingin mengambil kira kelajuan dan arah motor yang diukur. Jika ia telah mencapai matlamat kelajuan, kami mahu motor bergerak mengikut momentumnya sahaja. Kalau belum, kita nak tambah lagi kelajuan motor. Dalam teori Kawalan, ini dikenali sebagai sistem kawalan maklum balas gelung tertutup.
Untuk mengetahui lebih lanjut mengenai modul ini, klik di sini.
Langkah 3: Penukaran Binari
Daripada pengiraan sebelumnya, anda sudah mengetahui tindakan yang diperlukan untuk setiap motor. Walau bagaimanapun, pengiraan dilakukan menggunakan binari yang ditandatangani. Tujuan modul ini adalah untuk menukar nilai yang ditandatangani ini kepada nilai yang boleh dibaca oleh penjana PWM, iaitu arah (sama ada mengikut arah jam atau lawan jam) dan kelajuan (julat antara 0 hingga 255). Juga, memandangkan maklum balas daripada motor diukur dalam binari yang tidak ditandatangani, modul lain diperlukan untuk menukar nilai yang tidak ditandatangani (arah dan kelajuan) kepada nilai yang ditandatangani yang boleh dikira oleh modul pengiraan ralat. Untuk mengetahui lebih lanjut mengenai modul ini, klik di sini.
Langkah 4: Ketiadaan Sumber Cahaya
Anda telah membuat robot yang bergerak untuk mencari cahaya apabila cahaya dikesan oleh robot. Tetapi apa yang berlaku apabila robot tidak mengesan cahaya? Tujuan modul ini adalah untuk menentukan apa yang perlu dilakukan apabila keadaan sedemikian wujud.
Cara paling mudah untuk mencari dan mencari sumber cahaya adalah dengan robot berputar di tempatnya. Selepas berputar selama beberapa saat yang ditetapkan, jika robot masih belum menemui sumber cahaya, anda mahu robot berhenti bergerak, untuk menjimatkan kuasa. Selepas satu set beberapa saat lagi, robot harus berputar di tempat semula untuk mencari cahaya. Untuk mengetahui lebih lanjut mengenai modul ini, klik di sini.
Langkah 5: Cara Ia Berfungsi
Boleh rujuk gambar di atas untuk penerangan ini. Seperti yang dinyatakan pada permulaan pengajaran ini, anda memerlukan input "saiz" dan "kedudukan" dari bahagian ambang. Untuk memastikan bahawa input ini sah (contohnyaampOleh itu, apabila anda menerima saiz = 0, saiz benar-benar sifar kerana kamera tidak mengesan cahaya, dan bukan kerana kamera masih dimulakan) anda juga memerlukan beberapa jenis penunjuk, yang kami panggil "SEDIA". Data ini akan diproses oleh kawalan (Ctrl. vhd) untuk menentukan kelajuan matlamat setiap motor (9 bit, ditandatangani).
Untuk output yang lebih stabil pada motor, anda ingin menggunakan maklum balas dalam sistem gelung tertutup. Ini memerlukan input "arah" dan "kelajuan" setiap motor dari bahagian pengukuran kelajuan motor. Memandangkan anda ingin memasukkan input ini pada pengiraan anda, anda perlu menukar nilai yang tidak ditandatangani ini kepada binari bertanda 9-bit. Ini dilakukan oleh penukar binari yang tidak ditandatangani (US2S.vhd).
Apa yang dilakukan oleh pengiraan ralat (ralat. vhd) ialah menolak kelajuan yang diukur daripada kelajuan gol untuk menentukan tindakan bagi setiap motor. Ini bermakna apabila kedua-duanya mempunyai nilai yang sama, penolakan menjadi sifar dan motor akan bergerak semata-mata pada momentumnya. Anda juga boleh menambah faktor pendaraban supaya robot boleh mencapai kelajuan matlamat dengan lebih cepat.
Memandangkan pengawal motor memerlukan kelajuan dan arah setiap motor, anda perlu menterjemahkan nilai tindakan yang ditandatangani kepada dua nilai yang tidak ditandatangani berasingan: kelajuan (1 bit) dan arah (8 bit). Ini dilakukan oleh penukar binari yang ditandatangani kepada tidak ditandatangani (S2US.vhd), dan akan menjadi input kepada bahagian kawalan motor.
Kami juga menambah modul untuk menentukan perkara yang perlu dilakukan apabila cahaya tidak dikesan (tiada pembilang cahaya. Bhd). Oleh kerana modul ini pada asasnya adalah kaunter, ia akan mengira berapa lama robot perlu sama ada berputar atau kekal di tempatnya. Ini akan memastikan robot "melihat" persekitarannya dan bukannya hanya apa yang ada di hadapannya, dan menjimatkan kuasa bateri apabila tiada sumber cahaya benar-benar tersedia.
Langkah 6: Gabungkan Files
Untuk menggabungkan files, anda perlu menyambungkan isyarat daripada setiap modul. Untuk melakukan itu, anda perlu membuat modul peringkat atasan baharu file. Masukkan input dan output modul sebelumnya sebagai komponen, tambah isyarat untuk sambungan dan tetapkan setiap port kepada pasangan yang sepadan. Anda boleh merujuk kepada sambungan pada ilustrasi di atas, dan lihat kod di sini.
Langkah 7: Uji Ia
Selepas anda selesai dengan keseluruhan kod, anda perlu tahu sama ada kod anda berfungsi sebelum anda memuat naiknya ke papan, terutamanya kerana bahagian kod mungkin dibuat oleh orang yang berbeza. Ini memerlukan meja ujian, di mana anda akan memasukkan nilai tiruan dan melihat sama ada kod itu berkelakuan seperti yang kita mahukan. Anda boleh berehat bermula dengan menguji setiap modul, dan jika semuanya berfungsi dengan betul, anda kemudian boleh menguji modul peringkat teratas.
Langkah 8: Cubalah pada Perkakasan
Selepas kod anda telah diuji pada komputer anda, anda boleh menguji kod pada perkakasan sebenar. Anda perlu membuat kekangan file pada Vivado (.xdc file untuk BASYS 3) untuk mengawal input dan output yang pergi ke port mana.
PETUA PENTING: Kami mempelajari cara yang sukar bahawa komponen elektrik mungkin mempunyai nilai maksimum arus atau voltages. Pastikan anda merujuk kepada lembaran data untuk nilai. Untuk PMOD HB5, pastikan anda menetapkan voltage dari sumber kuasa pada 12 volt (kerana ini adalah voltage untuk motor), dan arus serendah yang diperlukan untuk motor bergerak.
Langkah 9: Gabungkannya Dengan Bahagian Lain
Jika langkah sebelumnya berjaya, gabungkan kod dengan kumpulan lain untuk kod akhir dimuat naik ke dalam robot. Kemudian, voila! Anda telah berjaya membuat robot mencari cahaya.
Langkah 10: Penyumbang
Dari kiri ke kanan:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto
Sangat bagus: Kawalan Kelajuan Motor VHDL: Tentukan Arah dan Kelajuan, Pengawal Kelajuan Kiri dan Kanan: Halaman 6
Terima kasih kerana semulaviewing! Projek ini sebenarnya hanya satu bahagian daripada projek kelas (Robot Mencari Cahaya dengan papan BASYS 3 dan kamera OV7670), jadi saya akan menambah pautan kepada pengajaran kelas tidak lama lagi!
Hebat: Saya tidak sabar untuk melihat segala-galanya disatukan.
Dokumen / Sumber
![]() |
instructables Kawalan Kelajuan Motor VHDL Tentukan Arah dan Kelajuan Pengawal Kelajuan Kiri dan Kanan [pdf] Arahan Kawalan Kelajuan Motor VHDL Tentukan Arah dan Kelajuan Pengawal Kelajuan Kiri dan Kanan, Kelajuan Motor VHDL, Kawalan Tentukan Arah dan Kelajuan Pengawal Kelajuan Kiri dan Kanan |