Daftar Isi:

UMPAN BALIK SONIC LED: 7 Langkah (dengan Gambar)
UMPAN BALIK SONIC LED: 7 Langkah (dengan Gambar)

Video: UMPAN BALIK SONIC LED: 7 Langkah (dengan Gambar)

Video: UMPAN BALIK SONIC LED: 7 Langkah (dengan Gambar)
Video: THẦN ĐỒNG YOYO VIỆT NAM !! 2024, Juli
Anonim
UMPAN BALIK SONIC LED
UMPAN BALIK SONIC LED
UMPAN BALIK SONIC LED
UMPAN BALIK SONIC LED
UMPAN BALIK SONIC LED
UMPAN BALIK SONIC LED

Halo lagi, Benci bahwa robot Anda menabrak segalanya? Ini akan memperbaiki masalah itu. Dengan 8 sensor sonik ini terlihat rumit…tetapi sebenarnya saya membuatnya sangat mudah. Saya mencoba memposting proyek yang membantu Anda belajar tentang Arduino dan menunjukkan konsep 'di luar kotak'. Posting ini akan membantu Anda memahami 595 switching, pro-mini sebagai sensor yang dapat diprogram, dan penggunaan besar dari umpan balik yang dipimpin waktu nyata. Jika Anda menikmati Arduino sebagai 'salin dan tempel dan plug-in', Anda mungkin melewatkan ini.

Saya suka menggunakan pro-minis. Harganya sekitar $2,50, berfungsi sebagai uno penuh, dan memasang header membuatnya sangat fleksibel. Digunakan sebagai mikro sensor, Anda dapat membuatnya 'melakukan apa yang Anda inginkan' alih-alih apa yang ditentukan oleh sensor yang dibeli. Dengan I2C hanya menggunakan 2 kabel, mereka dapat diikat menjadi satu dalam satu jalur. Jadi pindah MEGA saya dapat memiliki 4 minis menjalankan 4 baris kode yang terpisah semua pada waktu yang sama, hanya dengan $10,00. Di sini saya menggunakan mini untuk mengeluarkan sensor sonik melalui 595 dan menunjukkan jarak led waktu nyata. Kemudian cukup bagikan data 8bit dengan motherboard. Ini menghilangkan beban dari motherboard dan membuat kodenya sangat sederhana.

Ada masalah dengan sensor sonik…tidak ada umpan balik visual. Anda tidak pernah tahu apakah sensor itu hanya bobot mati atau berfungsi! Saya percaya siapa yang pernah datang dengan 'BLINK' lebih pintar dari Einstine. Hanya SATU yang dipimpin dan dunia informasi disampaikan dengan berkedip. Jadi sensor sonik membutuhkan umpan balik waktu nyata. Di sini saya menggunakan serangkaian led untuk memantau setiap sensor. Anda tidak membutuhkannya, cukup buat sensor tanpa led. Tetapi memiliki led pada PCB sangat membantu.

Langkah 1: MEMBUAT PCB

MEMBUAT PCB
MEMBUAT PCB
MEMBUAT PCB
MEMBUAT PCB
MEMBUAT PCB
MEMBUAT PCB
MEMBUAT PCB
MEMBUAT PCB

membuat PCB dan mengisi. PERHATIAN…Saya membuat kesalahan pada PCB pada sambungan 4 pin untuk memasang sensor sonik. ECHO dan TRIGGER Vcc dan ground akan dicolokkan ke pcb. Tidak ada cukup ruang untuk konektor jadi saya hanya membuat PCB dengan pin-out. Jadi Anda dapat menyolder konektor kabel ke PCB dan menyambungkannya ke sensor sonik yang sebenarnya. Sedangkan untuk led saya pasang led kuning di tepi bagian dalam dan merah di bagian luar. ini membantu Anda melihat dari kejauhan apakah sensor mengukur dengan benar.

Ini adalah salah satu dari BEBERAPA PCB 2sisi yang pernah saya buat. Saya lebih suka membuat 2 ea satu sisi dan menjalankan jumper. Tetapi untuk mendapatkan tampilan yang dipimpin, Anda memerlukan setidaknya PCB atas. Saya memisahkan tata letak di unduhan.

PCB untuk pro-mini dengan A4-A5 di dalam header tepi. Apa pun caranya, cukup sambungkan A4-A5 ke Master A4-A5. Jangan lupa Vcc dan Groundnya juga.

Langkah 2: BANYAK KESALAHAN

BANYAK KESALAHAN
BANYAK KESALAHAN

Sekarang untuk kesalahan saya … Saya mencoba untuk memunculkan Pemicu sekaligus (semua terikat bersama-sama) dan semacam ini bekerja dengan baik tetapi beberapa interaksi terjadi. Jadi sekarang semua ECHOS pergi ke mikro (8) dan TRIGGERS diatur oleh 595. Tiga pin lagi (3). Adapun led, multiplexing tidak akan bekerja. Anda membutuhkan waktu ON penuh untuk setiap led. Ini berarti setiap baris dari 7 led harus memiliki 595 sendiri. Setelah Anda memperbarui 595, led akan tetap menyala hingga pembaruan berikutnya. Di mana multiplexing led hanya menyala selama sepersepuluh detik. Ini bekerja dengan baik di pembaca saya dan membutuhkan mikro khusus. Tidak ada waktu untuk memindai 8 sensor sonik dan mengukur jarak. Saya mencoba dan mendapatkan hasil yang sangat buruk. Multiplexing leds juga berarti grid baris + kolom dan itu berarti sekitar 64+ feed through di PCB.

Saya hanya menggunakan 7 output dari 595 karena kekacauan pada PCB. Di kejauhan Anda tidak dapat mengetahui apakah ada 7 atau 8 led hanya gerakannya. Anda mungkin tergoda untuk mengikat semua led ke satu resistor dan ini berfungsi, tetapi kecerahan array berubah dengan jumlah led yang ringan. Jadi satu resistor per led adalah yang terbaik. Saya suka 595 tetapi jika mereka hanya memindahkan pin Vcc dan 0-out atau membuat ic 18 pin dengan SEMUA output di sisi yang sama… menghubungkan kedelapan output akan sangat mudah. Tapi kemudian itu tidak akan dijual kurang dari 30 sen.

Langkah 3: PASANG SENSOR

PASANG SENSOR
PASANG SENSOR
PASANG SENSOR
PASANG SENSOR
PASANG SENSOR
PASANG SENSOR
PASANG SENSOR
PASANG SENSOR

Rekatkan sensor sonik ke tutup kopi. jack laki-laki perlu ditekuk ke dalam pada setiap sensor. Ini bekerja lebih baik jika Anda menekuk satu pin pada satu waktu. Saya menggunakan pita busa 2 sisi hanya agar getarannya lebih sedikit. Sensor saya terlalu dekat dan mereka membutuhkan ruang 1/4 inci untuk mencocokkan PCB dengan lebih baik. Saya telah menggunakan sensor sonik sebelumnya dan terkadang seseorang gagal mengukur secara akurat dan Anda perlu mengingat hal ini. Jadi jangan LEM mereka semua secara permanen.

Ini juga membantu untuk menjalankan tes jarak cepat pada masing-masing sebelum Anda menggunakannya. Saya mendapatkan sekitar satu sensor dengan pembacaan yang buruk dalam jumlah 20. Tidak buruk untuk harga yang saya bayar.

Langkah 4: KAWAT KERAS

KABEL KERAS
KABEL KERAS

Saya pikir akan ada ruang untuk jack dan colokan dari PC ke

pin sonic tapi aku kehabisan kamar. Jadi saya memasang kabel ujung PCB dan hanya membuat gema dan kabel pemicu dengan jack perempuan (8ea). Saya mengikat dasar 8ea Vcc dan 8ea dari sensor bersama-sama sehingga ini hanya membuat 2 koneksi ke PCB untuk mereka.

Dengan 8 sensor dan 8.595, uno atau pro-mini TIDAK BISA menyalakan ini. Harus ada sumber yang diatur 5v sebagai bagian dari proyek ini. Robot saya memiliki 7805 @ 1amp sederhana dari baterai. Ini terkait dengan semua Vcc 5v untuk semua perangkat. 7805 turun sekitar satu volt sehingga Anda memerlukan setidaknya 6,5 volt untuk memberinya makan. Itu adalah 2 baterai lithium pada 3.3v. Robot saya memiliki nicad lama dari paket bor bekas dan 8 nicad menjalankan motor 12v khas China dalam sasis tipe tangki $ 20.

Langkah 5: UNDUH SKETSA SONIC

UNDUH SKETSA SONIC
UNDUH SKETSA SONIC

Unduh sketsa dan instal. Ada banyak cara untuk berbicara dengan

uno lain tapi saya suka I2c. kebingungannya adalah pengalamatan dan master/slave. Seperti kebanyakan sensor (pikirkan mini ke-2 sebagai sensor) Anda menangani sensor dan meminta x jumlah byte. hal yang sama di sini. Di mini ke-2 Anda menyisihkan x jumlah byte yang ingin Anda kirim. Kebingungannya adalah nama tidak penting. Ini hanya membantu ANDA mengingat jika Anda membagikan nama. Jadi dalam sketsa saya mengirim 8 pengukuran jarak sonik dalam cm sebagai sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Master hanya mendapat 8 byte jika data dan Anda dapat memanggil byte itu apa pun yang Anda inginkan. Saya membacanya sebagai gotR1, gotR2, got….. Urutan byte yang dikirim adalah sama. Jadi byte A, B, C….. jangan berpikir dengan mengubah nama akan memberikan data yang berbeda. Dan tangkapan lainnya, Anda hanya dapat menerima data yang diperintahkan untuk dikirim. Jadi jika Anda ingin data lain Anda harus mengubah KEDUA master dan slave.

Langkah 6: KOMUNIKASI

KOMUNIKASI
KOMUNIKASI

Anda dapat melewati ini jika Anda tahu cara mengatur 2 Uno untuk berbicara satu sama lain. Saya punya beberapa informasi menarik di akhir. Untuk memudahkan saya akan memanggil uno di basis robot M1 dan sensor sonic sebagai S2. Hubungkan Vcc, ground, A4, A5 satu sama lain.

Dalam sketsa untuk S2 dimulai dengan #include

Kemudian buat 8 byte untuk dikirim. byte R1, byte R2, byte L1 dll. Uno adalah mikro 8bit sehingga mereka mengirim 1byte sekaligus menggunakan 'byte' alih-alih 'int' benar.

Di 'setup()' tambahkan 'Wire.begin(address)' ini memberi tahu I2c perangkat mana ini. Alamatnya biasanya angka apa saja yang Anda suka antara 4 - 200. ukuran satu byte. Di sini saya menggunakan nomor 10. Jadi untuk berbicara dengan sensor S2 ini, master harus memanggil Wire.requestFrom(10, 8). Ini adalah alamat 10 dan 8 adalah berapa banyak byte yang diinginkan. Juga di 'setup()' tambahkan Wire.onRequest(isr anyName). Ketika M1 memanggil permintaan, sensor S2 bereaksi dengan interupsi. Ini hanya memanggil fungsi anyName. Jadi fungsi anyName ini perlu dibuat. Lihat sketsa dan lihat fungsi 'sendThis()' Di sinilah byte sebenarnya dikirim ke M1. Bytes saja pergi dan BUKAN nama dan dalam urutan yang dikirim. Di sinilah ukuran dan jumlah data yang akan dikirim dimulai. Dalam format byte yang mudah ini, pengiriman dan penerimaan harus cocok. Di sini 8 byte dikirim dan 8 byte diterima. Satu catatan di sini adalah memanggil suatu fungsi memerlukan (). Seperti delay(), millis(), Serial.print(). Saat menggunakan ISR (rutin layanan interupsi) memanggil fungsi menjatuhkan (). Jadi Wire.onRequest(sendThis) bukan Wire.onRequest(sendThis()).

Kebingungan yang saya miliki adalah masalah master/slave. Pada awalnya saya pikir master adalah SELALU master. Tetapi di dalam sketsa Anda dapat mengganti master/slave untuk meminta dari mikro lain atau mengirim ke mikro lain. Selama Anda mengikuti format dasar yang diuraikan di atas. Ingat… Anda HANYA membagikan data yang telah ditetapkan.

Dua dari dinding tid bit. Interupsi isr hanya menyela antara garis sketsa. Jika Anda terkunci dalam loop 'sementara atau untuk', tidak ada yang terjadi sampai loop keluar. BUKAN masalah besar karena ini mungkin beberapa mikrodetik dan datanya sudah tua.

Masalah lainnya adalah, 'di dalam' mikro ada perhitungan bebas kesalahan 100%. Setiap komunikasi 'luar' (kabel) dapat mengalami kesalahan. Ada banyak cara untuk memeriksa apakah data yang dikirimkan bebas kesalahan dan cocok dengan sumbernya. Cara termudah adalah dengan checksum. Cukup tambahkan total byte pengiriman (nilai aktual) dan kirim totalnya dan di sisi penerima tambahkan totalnya dan lihat apakah cocok. Jika cocok atau lempar kumpulan data itu jika tidak. Tentu saja ini melibatkan pengiriman nilai integer dan bukan byte. Jadi Anda hanya membagi bilangan bulat menjadi byte HI dan LO byte dan mengirim sebagai byte terpisah. Kemudian disatukan di penerima.

MUDAH:

int x = 5696; (nilai int apa pun yang valid, maks adalah 65k atau 32k negatif)

byte hi = x >>8; (22)

byte lo = x; (64)

kirim byte dan gabungkan di ujung yang lain ….

byte hi = Wire.read();

byte lo = Wire.read();

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

Langkah 7: PENUTUP

PENUTUPAN
PENUTUPAN
PENUTUPAN
PENUTUPAN
PENUTUPAN
PENUTUPAN
PENUTUPAN
PENUTUPAN

Untuk menutup, sensor sonik ini memberikan data jarak mentah pada motherboard secara real time. Ini membebaskan mikro dan membuat sketsa jauh lebih mudah. Mikro sekarang dapat membuat keputusan yang baik untuk memperlambat, berbelok, berhenti, atau mundur berdasarkan data yang baik, bukan tebakan acak. Lihat posting saya yang lain tentang bluetooth IDE untuk mengunggah sketsa tanpa kabel dan harus menghubungkan robot Anda setiap saat hanya untuk perubahan cepat dalam sketsa Anda. Terima kasih telah melihat ini. oldmaninsc.

Direkomendasikan: