Daftar Isi:

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

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

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

PROJECT ini menjelaskan desain dan implementasi RoboCar dengan kendali jarak jauh inframerah (IR) yang dapat digunakan untuk berbagai aplikasi kendali tak berawak otomatis. Saya telah merancang RoboCar yang dikendalikan dari jarak jauh (gerakan kiri-kanan/depan-belakang). Seluruh sistem berbasis mikrokontroler (Atmega32) yang membuat sistem kontrol lebih cerdas dan mudah dimodifikasi untuk aplikasi lain. Ini memungkinkan pengguna untuk mengoperasikan atau mengontrol RoboCar dan mengoperasikan sakelar daya utama dari jarak sekitar 5 meter.

Kata kunci: IR Decoder, Mikrokontroler AVR (Atmega32), Remote Kontrol TV, Komunikasi nirkabel

_

Langkah 1: Komunikasi IntraRed

Komunikasi IntraRed
Komunikasi IntraRed

Prinsip Komunikasi IR:

a) transmisi IR

Pemancar LED IR di dalam sirkuitnya, yang memancarkan cahaya inframerah untuk setiap pulsa listrik yang diberikan padanya. Pulsa ini dihasilkan saat tombol pada remote ditekan, sehingga melengkapi rangkaian, memberikan bias ke LED. LED yang dibias memancarkan cahaya dengan panjang gelombang 940nm sebagai rangkaian pulsa, sesuai dengan tombol yang ditekan. Namun karena bersama dengan LED IR banyak sumber cahaya inframerah lainnya seperti kita manusia, bola lampu, matahari, dll, informasi yang dikirimkan dapat terganggu. Solusi untuk masalah ini adalah dengan modulasi. Sinyal yang ditransmisikan dimodulasi menggunakan frekuensi pembawa 38 KHz (atau frekuensi lain antara 36 hingga 46 KHz). LED IR dibuat untuk berosilasi pada frekuensi ini selama durasi waktu pulsa. Informasi atau sinyal cahaya dimodulasi lebar pulsa dan terkandung dalam frekuensi 38 KHz. Transmisi inframerah mengacu pada energi di wilayah spektrum radiasi elektromagnetik pada panjang gelombang lebih panjang daripada cahaya tampak, tetapi lebih pendek dari gelombang radio. Sejalan dengan itu, frekuensi inframerah lebih tinggi daripada gelombang mikro, tetapi lebih rendah daripada cahaya tampak. Para ilmuwan membagi spektrum radiasi 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). Pita IR dekat mengandung energi dalam kisaran panjang gelombang yang paling dekat dengan yang terlihat, dari sekitar 0,750 hingga 1,300 5 (750 hingga 1300 nm). Pita IR menengah (juga disebut pita IR tengah) terdiri dari energi dalam kisaran 1.300 hingga 3.000 5 (1300 hingga 3000 nm). Pita IR jauh memanjang dari 2.000 hingga 14.000 5 (3000 nm hingga 1,4000 x 104nm).

b) Penerimaan IR

Penerima terdiri dari detektor foto yang mengembangkan sinyal listrik keluaran saat cahaya datang di atasnya. Output detektor disaring menggunakan filter pita sempit yang membuang semua frekuensi di bawah atau di atas frekuensi pembawa (38 KHz dalam kasus ini). Output yang disaring kemudian diberikan ke perangkat yang sesuai seperti Mikrokontroler atau Mikroprosesor yang mengontrol perangkat seperti PC atau Robot. Output dari filter juga dapat dihubungkan ke Osiloskop untuk membaca pulsa.

Aplikasi IR:

Inframerah digunakan dalam berbagai komunikasi nirkabel, pemantauan, dan aplikasi kontrol. Berikut beberapa contohnya:

· Kotak remote control hiburan rumah

· Nirkabel (jaringan area lokal)

· Hubungan antara komputer notebook dan komputer desktop

· Modem tanpa kabel

· Detektor intrusi

· Detektor gerak

· Sensor api

· Sistem penglihatan malam

· Peralatan diagnostik medis

· Sistem panduan rudal

· Perangkat pemantauan geologi

Mengirimkan data IR dari satu perangkat ke perangkat lain kadang-kadang disebut sebagai beaming.

Langkah 2: Sensor IR & Protokol NEC Dari

Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat
Sensor IR & Protokol NEC Dariat

Sensor IR (Gbr1)

TSOP1738, SFH-5110-38 (38kHz)

Fitur sensor TSOP:

  • Preamplifier dan detektor foto keduanya dalam satu paket
  • Filter internal untuk frekuensi PCM
  • Peningkatan perisai terhadap gangguan medan listrik
  • Kompatibilitas TTL dan CMOS
  • Output aktif rendah Konsumsi daya rendah
  • Kekebalan tinggi terhadap cahaya sekitar
  • Transmisi data berkelanjutan dimungkinkan

Protokol NEC:

Protokol transmisi NEC IR menggunakan pengkodean jarak pulsa dari bit pesan. Setiap ledakan pulsa memiliki panjang 562,5µs, pada frekuensi pembawa 38kHz (26,3µs). Bit logis ditransmisikan sebagai berikut (Gbr2):

  • Logis '0' – ledakan pulsa 562,5µs diikuti oleh ruang 562,5s, dengan total waktu transmisi 1,125ms
  • Logis '1' – ledakan pulsa 562,5µs diikuti oleh ruang 1,6875ms, dengan total waktu transmisi 2,25ms

Pulsa pembawa terdiri dari 21 siklus pada 38kHz. Pulsa biasanya memiliki rasio mark/spasi 1:4, untuk mengurangi konsumsi arus:

(Gbr3)

Setiap urutan kode dimulai dengan pulsa 9ms, yang dikenal sebagai pulsa AGC. Ini diikuti oleh keheningan 4,5 ms:

(Gbr4)

Data kemudian terdiri dari 32 bit, alamat 16-bit diikuti oleh perintah 16-bit, ditunjukkan dalam urutan pengiriman (kiri ke kanan):

(Gbr5)

Empat byte bit data masing-masing dikirim bit paling tidak signifikan terlebih dahulu. Gambar 1 mengilustrasikan format kerangka transmisi IR NEC, untuk alamat 00h(00000000b) dan perintah ADh (10101101b).

Total 67,5 ms diperlukan untuk mengirimkan bingkai pesan. Diperlukan 27 ms untuk mengirimkan 16 bit alamat (alamat + terbalik) dan 16 bit perintah (perintah + terbalik).

(Gbr6)

Waktu yang dibutuhkan untuk mengirimkan frame:

16 bit untuk alamat (alamat + invers) membutuhkan 27 ms untuk mengirimkan waktu.dan 16 bit untuk perintah (perintah + invers) juga membutuhkan 27 ms untuk mengirimkan waktu. karena (address + address inverse) atau (command+command inverse) akan selalu berisi 8 '0's dan 8 '1's so (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. menurut ini total waktu yang dibutuhkan untuk mengirimkan frame adalah (9ms +4.5ms +27ms+27ms) = 67.5ms.

KODE REPEAT: Jika tombol pada remote kontrol terus ditekan, kode ulangi akan dikeluarkan, biasanya sekitar 40 ms setelah pulsa meledak yang menandakan akhir dari pesan. Kode pengulangan akan terus dikirim pada interval 108 ms, hingga kunci akhirnya dilepaskan. Kode ulangi terdiri dari yang berikut, dalam urutan:

  • ledakan pulsa 9ms terkemuka
  • ruang 2,25 ms
  • pulsa 562,5's meledak untuk menandai akhir ruang (dan karenanya akhir dari kode ulangi yang ditransmisikan).

(Gbr7)

Perhitungan Penundaan (1ms):

Frekuensi Jam = 11,0592 Mhz

Siklus Mesin = 12

Penundaan=1ms

Nilai Timer= 65536 - ((Delay * ClockFreq)/Siklus Mesin)=65536-((1ms * 11.0592Mhz)/12)

= 65536 - 921= 0xFC67

Langkah 3: Kontrol Motor DC Menggunakan L293D

Kontrol Motor DC Menggunakan L293D
Kontrol Motor DC Menggunakan L293D

Motor DC

Motor DC mengubah energi listrik menjadi energi mekanik yang dapat digunakan untuk melakukan banyak pekerjaan yang bermanfaat. Ini dapat menghasilkan gerakan mekanis seperti Go Forward/Backword dari RoboCar saya. Motor DC hadir dalam berbagai peringkat seperti 6V dan 12V. Ini memiliki dua kabel atau pin. Kita dapat membalikkan arah rotasi dengan membalikkan polaritas input.

Di sini kami lebih memilih L293D karena peringkat 600mA baik untuk menggerakkan motor DC kecil dan dioda pelindung disertakan dalam IC itu sendiri. Deskripsi masing-masing pin adalah sebagai berikut: Aktifkan pin: Ini adalah pin no. 1 dan nomor pin. 9. nomor pin. 1 digunakan untuk mengaktifkan driver Half-H 1 dan 2. (jembatan H di sisi kiri). nomor pin 9 digunakan untuk mengaktifkan driver H-bridge 3 dan 4. (H bridge di sisi kanan).

Konsepnya sederhana, jika Anda ingin menggunakan jembatan H tertentu Anda harus memberikan logika tinggi untuk mengaktifkan pin yang sesuai bersama dengan catu daya ke IC. Pin ini juga dapat digunakan untuk mengatur kecepatan motor menggunakan teknik PWM. VCC1 (Pin 16): Pin power supply. Hubungkan ke suplai 5V. VCC2 (Pin 8): Catu daya untuk motor. Terapkan tegangan +ve untuk itu sesuai peringkat motor. Jika Anda ingin menggerakkan motor Anda pada 12V, gunakan 12V pada pin ini.

Dimungkinkan juga untuk menggerakkan motor secara langsung pada baterai, selain yang digunakan untuk memasok daya ke sirkuit, Cukup sambungkan terminal +ve baterai itu ke pin VCC2 dan buat GND kedua baterai menjadi umum. (Tegangan MAX pada pin ini adalah 36V sesuai lembar datanya). GND (Pin 4, 5, 12, 13): Hubungkan ke GND umum dari rangkaian. Input (Pin 2, 7, 10, 15):

Ini adalah pin input di mana sinyal kontrol diberikan oleh mikrokontroler atau sirkuit/IC lainnya. Sebagai contoh, jika pada pin 2 (Input driver paruh pertama H) kita berikan Logika 1 (5V), kita akan mendapatkan tegangan yang sama dengan VCC2 pada pin output yang sesuai dari driver paruh pertama H yaitu pin no. 3. Demikian pula untuk Logika 0 (0V) pada Pin 2, 0V pada Pin 3 muncul. Keluaran (Pin 3, 6, 11, 14): Keluaran pin. Menurut sinyal input sinyal output datang.

Gerakan Motor A B

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

…………… Berhenti: Rendah: Rendah

……Searah jarum jam: Rendah: Tinggi

Berlawanan arah jarum jam: Tinggi: Rendah

……………. Berhenti: Tinggi: Tinggi

Langkah 4: Diagram Sirkuit untuk Driver Motor dan Sensor IR

Diagram Sirkuit untuk Driver Motor dan Sensor IR
Diagram Sirkuit untuk Driver Motor dan Sensor IR
Diagram Sirkuit untuk Driver Motor dan Sensor IR
Diagram Sirkuit untuk Driver Motor dan Sensor IR
Diagram Sirkuit untuk Driver Motor dan Sensor IR
Diagram Sirkuit untuk Driver Motor dan Sensor IR

ATmega32 adalah mikrokontroler CMOS 8-bit berdaya rendah berdasarkan arsitektur RISC yang ditingkatkan AVR. Dengan mengeksekusi instruksi yang kuat dalam satu siklus clock, ATmega32 mencapai throughput mendekati 1 MIPS per MHz yang memungkinkan perancang sistem untuk mengoptimalkan konsumsi daya versus kecepatan pemrosesan.

Inti AVR menggabungkan set instruksi yang kaya dengan 32 register kerja tujuan umum. Semua 32 register terhubung langsung ke Arithmetic Logic Unit (ALU), memungkinkan dua register independen untuk diakses dalam satu instruksi tunggal yang dieksekusi dalam satu siklus clock. Arsitektur yang dihasilkan lebih efisien kode sambil mencapai throughput hingga sepuluh kali lebih cepat daripada mikrokontroler CISC konvensional.

ATmega32 menyediakan fitur-fitur berikut:

  • 32 Kbytes memori Program Flash yang Dapat Diprogram Dalam Sistem dengan kemampuan Baca-Sementara-Tulis,
  • 1024 byte EEPROM, 2K byte SRAM,
  • 32 jalur I/O tujuan umum,
  • 32 register kerja tujuan umum,
  • antarmuka JTAG untuk Boundaryscan,
  • Dukungan dan pemrograman Debugging On-chip, tiga Timer/Counter fleksibel dengan mode perbandingan, Interupsi Internal dan Eksternal, USART serial yang dapat diprogram, Antarmuka Serial Dua-kawat yang berorientasi byte, 8 saluran,
  • ADC 10-bit dengan tahap input diferensial opsional dengan penguatan yang dapat diprogram (hanya paket TQFP),
  • Pengatur Waktu Pengawas yang dapat diprogram dengan Osilator Internal,
  • port serial SPI, dan
  • enam mode hemat daya yang dapat dipilih perangkat lunak.

    • Mode Idle menghentikan CPU sambil mengizinkan USART,
    • Antarmuka dua kabel, Konverter A/D,
    • SRAM,
    • Timer/Penghitung,
    • pelabuhan SPI, dan
    • mengganggu sistem untuk terus berfungsi.
    • Mode Power-down menyimpan isi register tetapi membekukan Oscillator, menonaktifkan semua fungsi chip lainnya hingga Interupsi Eksternal atau Reset Perangkat Keras berikutnya.
    • Dalam mode hemat daya, Pengatur Waktu Asinkron terus berjalan, memungkinkan pengguna untuk mempertahankan basis pengatur waktu saat perangkat lainnya sedang tidur.
    • Mode Pengurangan Noise ADC menghentikan CPU dan semua modul I/O kecuali Asynchronous Timer dan ADC, untuk meminimalkan noise switching selama konversi ADC
    • Dalam mode Siaga, Osilator kristal/resonator berjalan saat perangkat lainnya sedang tidur. Hal ini memungkinkan start-up yang sangat cepat dikombinasikan dengan konsumsi daya yang rendah.
    • Dalam mode Extended Standby, Osilator utama dan Timer Asinkron terus berjalan.

Semua sirkuit terkait diberikan di sini dan sirkuit utama (atmega32) juga diberikan.

Langkah 5: Program avr

Program avr
Program avr
Program avr
Program avr

1. Untuk "sensor jarak jauh":

#sertakan #sertakan

#sertakan "remote.h"

//Global volatil unsigned int Waktu; //Pengatur waktu utama, menyimpan waktu dalam 10us, //Diperbarui oleh ISR(TIMER0_COMP) volatil unsigned char BitNo; //Pos dari BIT berikutnya volatil unsigned char ByteNo; //Pos dari Byte saat ini

volatil unsigned char IrData[4]; //Keempat Byte Data dari Ir Packet //2-Byte Address 2-Byte Data volatile unsigned char IrCmdQ[QMAX];//Final Command Received (Buffer)

volatil unsigned char PrevCmd; //Digunakan untuk mengulang

//Variabel yang digunakan untuk memulai pengulangan hanya setelah tombol ditekan selama waktu tertentu

volatil unsigned char Ulangi; //=ya 0=tidak ada char unsigned volatil RCount; //Ulangi hitungan

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

volatil unsigned char State; //Status penerima

Tepi char unsigned yang mudah menguap; //Tepi interupsi [RISING=1 OR FALLING=0]

volatil unsigned int stop;

/************************************************ *********************************************/ /* FUNCTIONSMULAI * / /************************************************ *************************************************/

batal RemoteInit() {

karakter saya; untuk(i=0;i<4;i++) IrData=0;

berhenti=0; Status=IR_VALIDATE_LEAD_HIGH; Tepi = 0; Ulangi=0;

//Pengaturan Timer1 //------------ TCCR0|=((1<

TIMSK|=(1<

OCR0=TIMER_COMP_VAL; //Tetapkan Nilai Perbandingan

unsigned char GetRemoteCmd(char tunggu) { unsigned char cmd;

if(tunggu) while(QFront==-1); else if(QFront==-1) kembali (RC_NONE);

cmd=IrCmdQ[QFront];

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

kembali cmd;

}

2. utama():

int utama(kosong){

uint8_t cmd=0; DDRB=0x08;

DDRD=0x80;

DDRC=0x0f; PORTC=0x00;

while (1) //Loop Tak Terbatas ke sensor IR aktif {

cmd=GetRemoteCmd(1);

beralih (cmd) {

case xx: { //BOT Bergerak maju //Ch+ btn forwardmotor();

merusak; // Kedua Motor dalam Arah Maju

}

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

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

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

default: PORTC=0x00;break; // Motor kiri dan kanan berhenti }

}

}/*Akhir dari main*/

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

// Ini model dasar, tapi saya bisa menggunakannya dalam mode PWM.

//…………………………………………….. Selamat bersenang-senang……………………………………………………//

Direkomendasikan: