Isi kandungan:

INFRA RED REMOTE CONTROLLED ROBOCAR MENGGUNAKAN AVR AVR (ATMEGA32): 5 Langkah
INFRA RED REMOTE CONTROLLED ROBOCAR MENGGUNAKAN AVR AVR (ATMEGA32): 5 Langkah

Video: INFRA RED REMOTE CONTROLLED ROBOCAR MENGGUNAKAN AVR AVR (ATMEGA32): 5 Langkah

Video: INFRA RED REMOTE CONTROLLED ROBOCAR MENGGUNAKAN AVR AVR (ATMEGA32): 5 Langkah
Video: IR remote controlled vehicle robot with ATmega32 2024, Julai
Anonim
INFRA RED REMOTE ROBOCAR DIKENDALIKAN MENGGUNAKAN MCU AVR (ATMEGA32)
INFRA RED REMOTE ROBOCAR DIKENDALIKAN MENGGUNAKAN MCU AVR (ATMEGA32)

PROJEK ini menjelaskan reka bentuk dan pelaksanaan RoboCar kawalan jauh inframerah (IR) yang dapat digunakan untuk berbagai aplikasi kawalan tanpa pemandu automatik. Saya telah merancang RoboCar kawalan jauh (gerakan kiri-kanan / depan-belakang). Keseluruhan sistem berdasarkan mikrokontroler (Atmega32) yang menjadikan sistem kawalan lebih pintar dan mudah diubah suai untuk aplikasi lain. Ia membolehkan pengguna mengendalikan atau mengawal RoboCar dan mengendalikan suis kuasa utama dari jarak kira-kira 5 meter.

Kata kunci: IR Decoder, AVR (Atmega32) Mikrokontroler, Alat kawalan jauh TV, Komunikasi tanpa wayar

_

Langkah 1: Komunikasi IntraRed

Komunikasi IntraRed
Komunikasi IntraRed

Prinsip Komunikasi IR:

a) Penghantaran IR

Pemancar LED IR di dalam litarnya, yang memancarkan cahaya inframerah untuk setiap nadi elektrik yang diberikan kepadanya. Nadi ini dihasilkan apabila butang pada alat ditekan ditekan, sehingga melengkapkan litar, memberikan bias pada LED. LED pada keadaan berat sebelah memancarkan cahaya dengan panjang gelombang 940nm sebagai rangkaian denyutan, sesuai dengan butang yang ditekan. Tetapi kerana bersamaan dengan LED IR banyak sumber cahaya inframerah lain seperti kita manusia, lampu, cahaya matahari, dan lain-lain, maklumat yang dihantar dapat diganggu. Penyelesaian untuk masalah ini adalah dengan modulasi. Sinyal yang dihantar dimodulasi menggunakan frekuensi pembawa 38 KHz (atau frekuensi lain antara 36 hingga 46 KHz). LED IR dibuat untuk berayun pada frekuensi ini untuk jangka masa nadi. Maklumat atau isyarat cahaya dimodulasi lebar nadi dan terkandung dalam frekuensi 38 KHz. Transmisi inframerah merujuk kepada tenaga di kawasan spektrum radiasi elektromagnetik pada panjang gelombang lebih panjang daripada cahaya yang dapat dilihat, tetapi lebih pendek daripada gelombang radio. Sejajar dengan itu, frekuensi inframerah lebih tinggi daripada gelombang mikro, tetapi lebih rendah daripada frekuensi cahaya yang dapat dilihat. Para saintis membahagikan spektrum sinaran inframerah (IR) menjadi tiga wilayah. Panjang gelombang ditentukan dalam mikron (dilambangkan µ, di mana 1 µ = 10-6 meter) atau dalam nanometer (disingkat nm, di mana 1 nm = 10-9 meter = 0,001 5). Jalur IR yang berdekatan mengandungi tenaga dalam jarak panjang gelombang yang paling dekat dengan yang dapat dilihat, dari sekitar 0.750 hingga 1.300 5 (750 hingga 1300 nm). Jalur IR perantaraan (juga disebut jalur IR tengah) terdiri daripada tenaga dalam lingkungan 1.300 hingga 3.000 5 (1300 hingga 3000 nm). Jalur IR jauh bermula dari 2.000 hingga 14.000 5 (3000 nm hingga 1.4000 x 104nm).

b) Penerimaan IR

Penerima terdiri daripada pengesan foto yang mengembangkan isyarat elektrik keluaran kerana cahaya berada di atasnya. Keluaran pengesan disaring menggunakan penapis jalur sempit yang membuang semua frekuensi di bawah atau di atas frekuensi pembawa (38 KHz dalam kes ini). Output yang disaring kemudian diberikan kepada peranti yang sesuai seperti Mikrokontroler atau Mikroprosesor yang mengawal peranti seperti PC atau Robot. Keluaran dari penapis juga dapat dihubungkan ke Osiloskop untuk membaca denyutan.

Aplikasi IR:

Inframerah digunakan dalam berbagai aplikasi komunikasi, pemantauan, dan kawalan tanpa wayar. Berikut adalah beberapa contoh:

· Kotak kawalan jauh hiburan rumah

· Tanpa wayar (rangkaian kawasan tempatan)

· Pautan antara komputer notebook dan komputer desktop

· Modem tanpa wayar

· Pengesan pencerobohan

· Pengesan gerakan

· Sensor kebakaran

· Sistem penglihatan malam

· Peralatan diagnostik perubatan

· Sistem bimbingan peluru berpandu

· Peranti pemantauan geologi

Memancarkan data IR dari satu peranti ke peranti lain kadang-kadang disebut sebagai pancaran.

Langkah 2: IR Sensor & NEC Protocol Fromat

Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat
Sensor IR & Protokol NEC Fromat

Sensor IR (Gamb1)

TSOP1738, SFH-5110-38 (38kHz)

Ciri-ciri sensor TSOP:

  • Pramplifier dan pengesan foto keduanya ada dalam satu paket
  • Penapis dalaman untuk frekuensi PCM
  • Perisai yang lebih baik terhadap gangguan medan elektrik
  • Keserasian TTL dan CMOS
  • Output aktif rendah Penggunaan kuasa rendah
  • Kekebalan tinggi terhadap cahaya persekitaran
  • Kemungkinan penghantaran data berterusan

Protokol NEC:

Protokol penghantaran NEC IR menggunakan pengekodan jarak nadi bit mesej. Setiap denyutan nadi panjangnya 562.5µs, pada frekuensi pembawa 38kHz (26.3µs). Bit logik dihantar seperti berikut (Gambar 2):

  • Logik '0' - pecah nadi 562.5µs diikuti dengan ruang 562.5µs, dengan jumlah masa penghantaran 1.125ms
  • Logik '1' - letupan denyut 562.5µs diikuti dengan ruang 1.6875ms, dengan jumlah masa penghantaran 2.25ms

Nadi pembawa terdiri daripada 21 kitaran pada 38kHz. Nadi biasanya mempunyai nisbah tanda / ruang 1: 4, untuk mengurangkan penggunaan semasa:

(Gamb3)

Setiap urutan kod bermula dengan nadi 9ms, yang dikenali sebagai denyut AGC. Ini diikuti dengan keheningan 4.5ms:

(Gamb4)

Data kemudian terdiri dari 32 bit, alamat 16-bit diikuti dengan perintah 16-bit, ditunjukkan dalam urutan di mana ia dihantar (kiri ke kanan):

(Gamb5)

Empat bait bit data masing-masing dihantar paling sedikit signifikan terlebih dahulu. Gambar 1 menggambarkan format bingkai transmisi IR NEC, untuk alamat 00h (00000000b) dan perintah ADh (10101101b).

Sebanyak 67.5ms diperlukan untuk menghantar bingkai mesej. Ia memerlukan 27ms untuk menghantar 16 bit alamat (alamat + terbalik) dan 16 bit arahan (perintah + terbalik).

(Gamb6)

Masa yang diperlukan untuk menghantar bingkai:

16 bit untuk alamat (address + inverse) memerlukan 27ms untuk menghantar masa. Dan 16 bit untuk arahan (command + inverse) juga memerlukan 27ms untuk menghantar waktu. kerana (alamat + alamat terbalik) atau (arahan + arahan terbalik) akan selalu mengandungi 8 '0's dan 8' 1's jadi (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. mengikut jumlah masa yang diperlukan untuk menghantar bingkai adalah (9ms + 4.5ms + 27ms + 27ms) = 67.5 ms.

REPEAT CODES: Sekiranya kunci pada alat kawalan jauh terus tertekan, kod berulang akan dikeluarkan, biasanya sekitar 40ms selepas pecah nadi yang menandakan berakhirnya mesej. Kod berulang akan terus dihantar pada selang waktu 108ms, sehingga kunci akhirnya dilepaskan. Kod ulangan terdiri daripada yang berikut, mengikut urutan:

  • pecah nadi terkemuka 9ms
  • ruang 2.25ms
  • denyutan nadi 562.5µs untuk menandakan akhir ruang (dan oleh itu akhir kod ulangan yang dihantar).

(Gamb7)

Pengiraan Kelewatan (1ms):

Frekuensi Jam = 11.0592 Mhz

Kitaran Mesin = 12

Kelewatan = 1ms

TimerValue = 65536 - ((Delay * ClockFreq) / Kitaran Mesin) = 65536 - ((1ms * 11.0592Mhz) / 12)

= 65536 - 921 = 0xFC67

Langkah 3: Kawalan Motor DC Menggunakan L293D

Kawalan Motor DC Menggunakan L293D
Kawalan Motor DC Menggunakan L293D

Motor DC

Motor DC menukar tenaga elektrik menjadi tenaga mekanikal yang boleh digunakan untuk melakukan banyak kerja berguna. Ia dapat menghasilkan pergerakan mekanikal seperti Go Forward / Backword dari RoboCar saya. Motor DC terdapat dalam pelbagai penilaian seperti 6V dan 12V. Ia mempunyai dua wayar atau pin. Kita boleh membalikkan arah putaran dengan membalikkan polaritas input.

Di sini kami lebih suka L293D kerana penilaian 600mA baik untuk menggerakkan motor DC kecil dan diod perlindungan disertakan dalam IC itu sendiri. Gambaran setiap pin adalah seperti berikut: Aktifkan pin: Ini adalah pin no. 1 dan pin no. 9. Pin no. 1 digunakan untuk membolehkan pemandu Half-H 1 dan 2. (Jambatan H di sebelah kiri). Pin no. 9 digunakan untuk membolehkan pemandu H-bridge 3 dan 4. (Jambatan H di sebelah kanan).

Konsepnya mudah, jika anda ingin menggunakan jambatan H tertentu, anda harus memberikan logik yang tinggi pada pin pengaktifan yang sesuai dengan bekalan kuasa ke IC. Pin ini juga dapat digunakan untuk mengawal kelajuan motor menggunakan teknik PWM. VCC1 (Pin 16): Pin bekalan kuasa. Sambungkannya ke bekalan 5V. VCC2 (Pin 8): Bekalan kuasa untuk motor. Terapkan voltan + ve kepadanya mengikut peringkat motor. Sekiranya anda mahu menggerakkan motor anda pada 12V, pasangkan 12V pada pin ini.

Anda juga boleh menggerakkan motor secara langsung pada bateri, selain yang digunakan untuk membekalkan kuasa ke litar, Sambungkan terminal + ve bateri itu ke pin VCC2 dan buat GND kedua-dua bateri menjadi umum. (Voltan MAX pada pin ini adalah 36V mengikut lembaran data). GND (Pin 4, 5, 12, 13): Sambungkannya ke litar GND biasa. Input (Pin 2, 7, 10, 15):

Ini adalah pin input di mana isyarat kawalan diberikan oleh pengawal mikro atau litar / IC lain. Sebagai contoh, jika pada pin 2 (Input pemacu separuh pertama H) kita memberikan Logik 1 (5V), kita akan mendapat voltan sama dengan VCC2 pada pin output sepadan pemacu separuh H pertama iaitu pin no. 3. Begitu juga untuk Logik 0 (0V) pada Pin 2, 0V pada Pin 3 muncul. Keluaran (Pin 3, 6, 11, 14): Pin output. Menurut isyarat input, isyarat datang.

Pergerakan Motor A B

-----------------------------------------------------------------------------------------

…………… Berhenti: Rendah: Rendah

…… mengikut arah jam: Rendah: Tinggi

Berlawanan arah jam: Tinggi: Rendah

……………. Hentikan: Tinggi: Tinggi

Langkah 4: Gambarajah Litar untuk Pemandu Motor dan Sensor IR

Gambarajah Litar untuk Pemacu Motor dan Sensor IR
Gambarajah Litar untuk Pemacu Motor dan Sensor IR
Gambarajah Litar untuk Pemacu Motor dan Sensor IR
Gambarajah Litar untuk Pemacu Motor dan Sensor IR
Gambarajah Litar untuk Pemacu Motor dan Sensor IR
Gambarajah Litar untuk Pemacu Motor dan Sensor IR

ATmega32 adalah mikrokontroler CMOS 8-bit berkuasa rendah berdasarkan RISCarchitecture yang disempurnakan AVR. Dengan melaksanakan arahan yang kuat dalam satu pusingan jam, ATmega32 mencapai throughput mendekati 1 MIPS per MHz yang membolehkan pereka sistem mengoptimumkan penggunaan kuasa berbanding kelajuan pemprosesan.

Inti AVR menggabungkan set arahan kaya dengan 32 daftar kerja tujuan umum. Semua register32 dihubungkan secara langsung ke Arithmetic Logic Unit (ALU), yang membolehkan dua register bebas diakses dalam satu arahan tunggal yang dilaksanakan dalam satu pusingan jam. Senibina yang dihasilkan lebih cekap kod sambil mencapai throughput hingga sepuluh kali lebih pantas daripada mikrokontroler CISC konvensional.

ATmega32 menyediakan ciri berikut:

  • Memori 32 Kbytes Program Flash yang Dapat Diprogram Dalam Sistem dengan kemampuan Baca-Semasa-Tulis,
  • 1024 bait EEPROM, SRAM 2K bait,
  • 32 garis I / O tujuan umum,
  • 32 daftar kerja tujuan am,
  • antara muka JTAG untuk Boundaryscan,
  • Sokongan dan pengaturcaraan Debugging On-chip, tiga Pemasa / Kaunter fleksibel dengan mod perbandingan, Gangguan Dalaman dan Luaran, USART bersiri yang dapat diprogramkan, Antarmuka Serial Dua wayar berorientasikan bait, 8 saluran,
  • 10-bit ADC dengan tahap input pembezaan pilihan dengan keuntungan yang dapat diprogramkan (hanya pakej TQFP),
  • Pemasa Pengawas yang boleh diprogramkan dengan Pengayun Dalaman,
  • port bersiri SPI, dan
  • enam mod penjimatan kuasa yang boleh dipilih perisian.

    • Mod Idle menghentikan CPU sambil membenarkan USART,
    • Antara muka dua wayar, Penukar A / D,
    • SRAM,
    • Pemasa / Pembilang,
    • Pelabuhan SPI, dan
    • mengganggu sistem untuk terus berfungsi.
    • Mod Power-down menyimpan kandungan register tetapi membekukan Oscillator, melumpuhkan semua fungsi cip lain sehingga gangguan luaran atau tetapan semula perkakasan seterusnya.
    • Dalam mod Jimat Kuasa, Pemasa Asinkron terus berjalan, membolehkan pengguna mengekalkan pangkalan pemasa semasa peranti selebihnya sedang tidur.
    • Mod Pengurangan Kebisingan ADC menghentikan CPU dan semua modul I / O kecuali Asynchronous Timer dan ADC, untuk meminimumkan pertukaran bunyi semasa penukaran ADC
    • Dalam mod Sedia, pengayun kristal / resonator sedang berjalan semasa peranti selebihnya sedang tidur. Ini membolehkan permulaan yang sangat cepat digabungkan dengan penggunaan kuasa rendah.
    • Dalam mod Sambungan Lanjutan, kedua-dua Oscillator utama dan Pemasa Asinkron terus berjalan.

Semua litar yang berkaitan diberikan di sini dan litar utama (atmega32) juga diberikan.

Langkah 5: Program Avr

Program Avr
Program Avr
Program Avr
Program Avr

1. Untuk "sensor jarak jauh":

#sertakan #sertakan

#masuk "remote.h"

// Globals tidak stabil pada masa yang tidak ditandatangani; // Pemasa utama, menyimpan waktu dalam 10us, // Dikemas kini oleh ISR (TIMER0_COMP) char tidak bertanda tidak stabil BitNo; // Pos BIT seterusnya tidak ditandatangani char ByteNo; // Pos Byte semasa

char IrData yang tidak menentu yang tidak menentu [4]; // Empat bait data dari Ir Packet // Alamat 2-Byte Data 2-Byte tidak dapat ditandakan char IrCmdQ [QMAX]; // Perintah Akhir Diterima (Penyangga)

char tidak bertanda yang tidak menentu PrevCmd; // Digunakan untuk ulangan

// Pemboleh ubah yang digunakan untuk mula berulang hanya setelah kekunci ditekan untuk waktu tertentu

Pengulangan char tidak bertanda yang tidak menentu; // 1 = ya 0 = tidak ada karat yang tidak ditandatangani RCount; // Kira ulangan

char volatile QFront = -1, QEnd = -1;

Negara char tidak bertanda yang tidak menentu; // Keadaan penerima

char Edge yang tidak menentu; // Tepi gangguan [RISING = 1 ATAU JATUH = 0]

perhentian int yang tidak menentu;

/ ************************************************* ********************************************* / / * FUNGSI MULA * / / ************************************************ ********************************************** /

batal RemoteInit () {

char i; untuk (i = 0; i <4; i ++) IrData = 0;

berhenti = 0; Nyatakan = IR_VALIDATE_LEAD_HIGH; Tepi = 0; Ulangi = 0;

// Tetapkan Pemasa1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Tetapkan Nilai Bandingkan

char tidak bertanda GetRemoteCmd (char waiting) {char cmd yang tidak ditandatangani;

jika (tunggu) sementara (QFront == - 1); lain jika (QFront == - 1) kembali (RC_NONE);

cmd = IrCmdQ [QFront];

jika (QFront == QEnd) QFront = QEnd = -1; lain {if (QFront == (QMAX-1)) QFront = 0; lain QFront ++; }

pulangkan cmd;

}

2. utama ():

int utama (tidak sah) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

sementara (1) // Gelung Tak Terbatas ke sensor IR aktif {

cmd = GetRemoteCmd (1);

tukar (cmd) {

kes xx: {// BOT Melangkah ke hadapan // Chm btn forwardmotor ();

rehat; // Kedua-dua Motor dalam Arah Ke Depan

}

………………………………………………….

………………………………………………….

………………………………………………….

lalai: PORTC = 0x00; rehat; // Kedua-dua motor kiri dan kanan berhenti}

}

} / * Akhir utama * /

……………………………………………………………………………………………………………………

// Ini model asas, tetapi saya dapat menggunakannya dalam mod PWM.

//…………………………………………….. Berseronok……………………………………………………//

Disyorkan: