Isi kandungan:

MAKLUM BALAS LED SONIC: 7 Langkah (dengan Gambar)
MAKLUM BALAS LED SONIC: 7 Langkah (dengan Gambar)

Video: MAKLUM BALAS LED SONIC: 7 Langkah (dengan Gambar)

Video: MAKLUM BALAS LED SONIC: 7 Langkah (dengan Gambar)
Video: Fuh ingat adik ni Joki ysuku rupanya basikal dar 2024, November
Anonim
MAKLUM BALAS LED SONIC
MAKLUM BALAS LED SONIC
MAKLUM BALAS LED SONIC
MAKLUM BALAS LED SONIC
MAKLUM BALAS LED SONIC
MAKLUM BALAS LED SONIC

Hai lagi, Benci robot anda menghadapi segalanya? Ini akan menyelesaikan masalah itu. Dengan 8 sensor sonik ini kelihatan rumit… tetapi sebenarnya saya membuatnya sangat mudah. Saya cuba menghantar projek yang membantu anda mengetahui mengenai Arduino dan menunjukkan konsep 'di luar kotak'. Catatan ini akan membantu anda memahami peralihan 595, pro-minis sebagai sensor yang dapat diprogramkan, dan penggunaan maklum balas masa nyata yang banyak. Sekiranya anda menikmati Arduino sebagai 'copy and paste and plug-in', anda mungkin akan melewatkannya.

Saya suka menggunakan pro-minis. Harganya sekitar $ 2,50, berfungsi sebagai uno sepenuhnya, dan memasang header menjadikannya sangat fleksibel. Digunakan sebagai mikro sensor, anda boleh memilikinya 'melakukan apa yang anda mahukan' dan bukannya apa yang ditentukan oleh sensor yang dibeli. Dengan hanya menggunakan 2 wayar I2C mereka dapat diikat bersama-sama semuanya dalam satu talian. Oleh itu, pindah ke MEGA Saya boleh mempunyai 4 minis yang menjalankan 4 baris kod yang berasingan pada masa yang sama, dengan harga hanya $ 10.00. Di sini saya menggunakan mini untuk memasang sensor sonik melalui 595 dan menunjukkan jarak masa nyata. Kemudian kongsi 8 bit data dengan papan induk. Ini mengambil beban dari papan induk dan membuat kodnya sangat mudah.

Terdapat masalah dengan sensor sonik … tiada maklum balas visual. Anda tidak pernah tahu sama ada sensor itu hanya berat badan yang mati atau berfungsi! Saya percaya siapa yang tampil dengan 'BLINK' lebih pintar daripada Einstine. Hanya SATU yang dipimpin dan dunia maklumat disiarkan dengan sekelip mata. Jadi sensor sonik memerlukan maklum balas masa nyata. Di sini saya menggunakan pelbagai led untuk memantau setiap sensor. Anda tidak memerlukannya, buat sensor tanpa lampu. Tetapi untuk memimpin PCB sangat berguna.

Langkah 1: BUAT PCB

BUAT PCB
BUAT PCB
BUAT PCB
BUAT PCB
BUAT PCB
BUAT PCB
BUAT PCB
BUAT PCB

buat PCB dan isi. PERHATIAN … Saya membuat kesilapan pada PCB pada sambungan 4 pin untuk dipasang oleh sensor sonik. ECHO dan TRIGGER Vcc dan perkakas akan dipasang ke komputer. Tidak ada ruang yang cukup untuk penyambung jadi saya hanya membuat PCB dengan pin-out. Oleh itu, anda boleh memasangkan penyambung wayar ke PCB dan pasangkan ke sensor sonik sebenarnya. Adapun led saya meletakkan led kuning di tepi dalam dan merah di bahagian luar. ini membantu anda melihat dari jarak jauh jika sensor mengukur dengan betul.

Ini adalah salah satu daripada sedikit PCB 2side yang pernah saya buat. Saya lebih suka membuat 2 ea satu sisi dan berlari penerjun. Tetapi untuk mendapatkan paparan led anda memerlukan sekurang-kurangnya pcb teratas. Saya memisahkan susun atur dalam muat turun.

PCB adalah untuk pro-mini dengan A4-A5 di dalam header tepi. Mana tidaknya, sambungkan A4-A5 ke Master A4-A5. Jangan lupa juga Vcc dan Grounds.

Langkah 2: BANYAK KESALAHAN

BANYAK KESALAHAN
BANYAK KESALAHAN

Sekarang untuk kesilapan saya … Saya cuba memunculkan Pencetus sekaligus (semua terikat bersama) dan ini agak baik tetapi beberapa interaksi berlaku. Jadi sekarang semua ECHOS pergi ke mikro (8) dan TRIGGERS ditetapkan oleh 595. Tiga lagi pin (3). Bagi LED, multiplexing tidak akan berfungsi. Anda memerlukan masa ON sepenuhnya untuk setiap led. Ini bermaksud setiap baris 7 led mesti mempunyai 595 sendiri. Setelah anda mengemas kini 595 led akan menyala sehingga kemas kini seterusnya. Di mana multiplexing lampu led hanya sepersepuluh saat. Ini berfungsi dengan baik dalam pembaca saya dan memerlukan mikro khusus. Tiada masa untuk mengimbas 8 sensor sonik dan mengukur jarak. Saya mencuba dan mendapat keputusan yang sangat buruk. Melipatgandakan led juga bermaksud grid baris + lajur dan itu bermaksud sekitar 64+ umpan melalui PCB.

Saya hanya menggunakan 7 output dari 595 kerana kekacauan pada PCB. Anda tidak dapat mengetahui sama ada terdapat 7 atau 8 led hanya pada jarak yang jauh. Anda mungkin tergoda untuk mengikat semua led ke satu perintang dan ini berfungsi, tetapi kecerahan susunan berubah dengan jumlah led yang ringan. Jadi satu perintang setiap led adalah yang terbaik. Saya suka 595 tetapi jika mereka hanya menggerakkan pin Vcc dan 0-out atau membuat ic 18 pin dengan SEMUA output di sisi yang sama … menghubungkan semua lapan output akan menjadi sangat mudah. Tetapi ia tidak akan dijual dengan harga kurang dari 30 sen.

Langkah 3: PUNCA SENSOR

PUNCA SENSOR
PUNCA SENSOR
PUNCA SENSOR
PUNCA SENSOR
PUNCA SENSOR
PUNCA SENSOR
PUNCA SENSOR
PUNCA SENSOR

Lekatkan sensor sonik ke penutup kopi. bicu lelaki perlu dibengkokkan ke dalam pada setiap sensor. Ini berfungsi lebih baik jika anda membengkokkan satu pin pada satu masa. Saya menggunakan pita busa 2 sisi supaya getarannya kurang. Sensor saya terlalu dekat dan mereka memerlukan ruang 1/4 inci untuk memadankan PCB dengan lebih baik. Saya telah menggunakan sensor sonik sebelum dan kadang-kadang salah satu yang gagal diukur dengan tepat dan anda perlu ingat ini. Oleh itu, jangan Lekatkan semuanya secara kekal.

Ia juga membantu menjalankan ujian jarak cepat pada setiap ujian sebelum anda menggunakannya. Saya mendapat kira-kira satu sensor dengan bacaan yang lemah dalam kumpulan 20. Tidak buruk dengan harga yang saya bayar.

Langkah 4: KAWASAN KERAS

KAWASAN KERAS
KAWASAN KERAS

Saya fikir akan ada ruang untuk bicu dan palam dari PC ke

pin sonik tetapi saya kehabisan bilik. Oleh itu, saya memasang kabel pcb dan membuat wayar gema dan pencetus dengan bicu wanita (8ea). Saya mengikat landasan sensor 8ea Vcc dan 8ea sehingga ini hanya membuat 2 sambungan ke PCB untuk mereka.

Dengan 8 sensor dan 8 595s, uno atau pro-mini TIDAK BOLEH menghidupkannya. Pasti ada sumber yang dikawal selia 5v sebagai sebahagian daripada projek ini. Robot saya mempunyai 7805 @ 1amp sederhana dari bateri. Ini berkaitan dengan semua Vcc 5v untuk semua peranti. 7805 jatuh kira-kira satu volt sehingga anda memerlukan sekurang-kurangnya 6.5 volt untuk memberi makan. Iaitu 2 bateri litium pada 3.3v. Robot saya mempunyai nicad lama dari pek gerudi terpakai dan 8 nicad menjalankan motor 12v khas China di casis jenis tangki $ 20.

Langkah 5: MUAT TURUN SONIC SKETCH

DOWNLOAD SONIC SKETCH
DOWNLOAD SONIC SKETCH

Muat turun lakaran dan pasang. Terdapat banyak cara untuk bercakap

uno lain tapi saya suka I2c. kekeliruan adalah menangani dan tuan / hamba. Seperti kebanyakan sensor (anggap mini ke-2 sebagai sensor) anda menghubungi sensor dan meminta x jumlah bait. perkara yang sama di sini. Pada mini ke-2 anda mengetepikan x jumlah bait yang ingin anda hantar. Kekeliruan adalah nama tidak penting. Ini hanya membantu ANDA mengingati jika anda berkongsi namanya. Jadi dalam lakaran saya menghantar 8 ukuran jarak sonik dalam cm seperti sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Master hanya mendapat 8 bait jika data dan anda boleh memanggil bait itu apa sahaja yang anda mahukan. Saya membacanya sebagai gotR1, gotR2, mendapat….. Urutan bait yang dihantar adalah sama. Jadi byte A, B, C….. jangan berfikir dengan menukar nama akan memberi anda data yang berbeza. Dan tangkapan lain, anda hanya dapat menerima data yang disuruh dihantar. Oleh itu, jika anda mahukan data lain, anda mesti menukar KEDUA tuan dan hamba.

Langkah 6: KOMUNIKASI

KOMUNIKASI
KOMUNIKASI

Anda boleh melangkau ini jika anda tahu cara mengatur 2 Uno untuk bercakap antara satu sama lain. Saya mempunyai sedikit maklumat di akhir. Untuk memudahkan saya akan memanggil uno di pangkalan robot M1 dan sensor sonik sebagai S2. Sambungkan Vcc, ground, A4, A5 antara satu sama lain.

Dalam lakaran untuk S2 ia dimulakan dengan #include

Kemudian buat 8 bait untuk dihantar. byte R1, byte R2, byte L1 dll. Uno adalah mikro 8bit sehingga mereka menghantar 1byte pada satu masa menggunakan 'byte' dan bukannya 'int' adalah betul.

Dalam 'setup ()' add 'Wire.begin (address)' ini memberitahu I2c peranti mana ini. Alamatnya biasanya ada nombor yang anda suka antara 4 - 200. ukuran satu bait. Di sini saya menggunakan nombor 10. Oleh itu, untuk bercakap dengan sensor S2 ini, tuan mesti memanggil Wire.requestFrom (10, 8). Ini adalah alamat 10 dan 8 adalah berapa banyak bait yang diinginkan. Juga dalam 'setup ()' tambah Wire.onRequest (isr anyName). Apabila M1 memanggil permintaan, sensor S2 bertindak balas dengan gangguan. Ini hanya memanggil fungsi anyName. Oleh itu, fungsi anyName ini perlu dibuat. Lihat lakaran dan lihat fungsi 'sendThis ()' Di sinilah byte sebenarnya dihantar ke M1. Byte sahaja pergi dan BUKAN nama dan mengikut pesanan yang dihantar. Dari sinilah ukuran dan jumlah data yang hendak dihantar bermula. Dalam format mudah byte ini, hantar dan terima harus sepadan. Di sini 8 bait dihantar dan 8 bait diterima. Satu catatan di sini ialah memanggil fungsi memerlukan (). Seperti kelewatan (), milis (), Cetakan bersiri (). Semasa menggunakan ISR (rutin perkhidmatan gangguan) memanggil fungsi menjatuhkan (). Jadi Wire.onRequest (sendThis) bukan Wire.onRequest (sendThis ()).

Kekeliruan yang saya alami adalah perkara tuan / hamba. Pada mulanya saya menyangka bahawa tuan adalah SELURUH tuan. Tetapi dalam lakaran anda boleh menukar tuan / hamba untuk meminta dari mikro lain atau menghantar ke mikro lain. Selagi anda mengikuti format asas yang dinyatakan di atas. Ingat … anda HANYA berkongsi data yang telah ditetapkan.

Dua dari bahagian pasang dinding. Gangguan isr hanya mengganggu antara garis lakaran. Sekiranya anda terkunci dalam gelung 'sementara atau untuk', tidak ada yang akan berlaku sehingga gelung itu keluar. TIADA masalah besar kerana ini mungkin beberapa mikrodetik dan data sudah lama.

Masalah lain adalah, 'di dalam' mikro terdapat 100% pengiraan ralat. Sebarang komunikasi 'luar' (wayar) boleh berlaku ralat. Terdapat banyak cara untuk memastikan bahawa data yang dihantar bebas daripada kesalahan dan sesuai dengan sumbernya. Cara paling mudah adalah dengan checksum. Cukup tambahkan jumlah bait pengirim (nilai sebenar) dan hantarkan jumlahnya dan di hujung penerima tambahkan jumlah dan lihat apakah sesuai. Sekiranya mereka sepadan dengan ok atau membuang set data itu jika tidak. Sudah tentu ini melibatkan menghantar nilai integer dan bukan bait. Oleh itu, anda hanya membahagi bilangan bulat menjadi bait HI dan bait LO dan hantar sebagai bait berasingan. Kemudian pasangkan pada penerima.

MUDAH:

int x = 5696; (sebarang nilai int yang sah, maksimum 65k atau 32k negatif)

byte hi = x >> 8; (22)

bait lo = x; (64)

hantar bait dan gabungkan di hujung yang lain….

byte hi = Wire.read ();

byte lo = Wire.read ();

int newx = (hai << 8) + lo; (5696)

Langkah 7: PENUTUP

PENUTUP
PENUTUP
PENUTUP
PENUTUP
PENUTUP
PENUTUP
PENUTUP
PENUTUP

Sebagai penutup, sensor sonik ini memberikan data jarak mentah papan induk dalam masa nyata. Ini membebaskan mikro dan membuat lakaran menjadi lebih rumit. Mikro kini dapat membuat keputusan yang baik untuk lambat, putar, berhenti, atau terbalik berdasarkan data yang baik dan bukannya tekaan rawak. Lihat catatan saya yang lain mengenai bluetooth IDE untuk memuat naik lakaran tanpa wayar dan harus menghubungkan robot anda sepanjang masa untuk perubahan pantas dalam lakaran anda. Terima kasih kerana melihat ini. oldmaninsc.

Disyorkan: