Talaan ng mga Nilalaman:

INFRA RED Remote CONTROLLED ROBOCAR GAMIT ANG AVR (ATMEGA32) MCU: 5 Hakbang
INFRA RED Remote CONTROLLED ROBOCAR GAMIT ANG AVR (ATMEGA32) MCU: 5 Hakbang

Video: INFRA RED Remote CONTROLLED ROBOCAR GAMIT ANG AVR (ATMEGA32) MCU: 5 Hakbang

Video: INFRA RED Remote CONTROLLED ROBOCAR GAMIT ANG AVR (ATMEGA32) MCU: 5 Hakbang
Video: Car Key Remote Control App - KeyConnect App 2024, Hulyo
Anonim
INFRA RED Remote CONTROLLED ROBOCAR GAMIT ANG AVR (ATMEGA32) MCU
INFRA RED Remote CONTROLLED ROBOCAR GAMIT ANG AVR (ATMEGA32) MCU

Inilalarawan ng kasalukuyang PROJECT ang isang disenyo at pagpapatupad ng isang infrared (IR) na remote control RoboCar na maaaring magamit para sa iba't ibang mga awtomatikong unmanned control application. Dinisenyo ko ang remote control RoboCar (kaliwa-kanan / harap-likod na paggalaw). Ang buong sistema ay batay sa microcontroller (Atmega32) na ginagawang mas matalinong at madaling mabago ang control system para sa iba pang mga application. Pinapayagan nito ang gumagamit na patakbuhin o kontrolin ang isang RoboCar at patakbuhin ang switch ng kapangyarihan ng mains mula sa halos 5 metro ang layo.

Mga pangunahing salita: IR Decoder, AVR (Atmega32) Microcontroller, TV remote Controller, Wireless na komunikasyon

_

Hakbang 1: IntraRed Communication

Komunikasyon sa IntraRed
Komunikasyon sa IntraRed

Prinsipyo sa IR Communication:

a) paghahatid ng IR

Ang transmiter ng isang IR LED sa loob ng circuit nito, na nagpapalabas ng infrared light para sa bawat electric pulse na ibinigay dito. Ang pulso na ito ay nabuo bilang isang pindutan sa remote na pinindot, sa gayon pagkumpleto ng circuit, na nagbibigay ng bias sa LED. Ang LED sa pagiging kampi ay naglalabas ng ilaw ng haba ng daluyong ng 940nm bilang isang serye ng mga pulso, naaayon sa pindutang pinindot. Gayunpaman dahil kasama ang IR LED maraming iba pang mga mapagkukunan ng infrared light tulad ng sa amin na mga tao, mga bombilya, araw, atbp, maaaring makagambala ang naihatid na impormasyon. Ang isang solusyon sa problemang ito ay sa pamamagitan ng modulasyon. Ang transmitted signal ay binago gamit ang dalas ng carrier ng 38 KHz (o anumang iba pang dalas sa pagitan ng 36 hanggang 46 KHz). Ang IR LED ay ginawa upang mag-oscillate sa dalas na ito para sa tagal ng oras ng pulso. Ang impormasyon o ang ilaw na signal ay pulso lapad ng pulso na naka-modulate at nakapaloob sa dalas ng 38 KHz. Ang infrared transmission ay tumutukoy sa enerhiya sa rehiyon ng electromagnetic radiation spectrum sa haba ng haba ng haba ng haba kaysa sa mga nakikitang ilaw, ngunit mas maikli kaysa sa mga alon ng radyo. Katulad nito, ang mga infrared frequency ay mas mataas kaysa sa mga microwave, ngunit mas mababa kaysa sa mga nakikitang ilaw. Hinahati ng mga siyentista ang infrared radiation (IR) spectrum sa tatlong mga rehiyon. Ang mga haba ng daluyong ay tinukoy sa mga micron (sinisimbolo µ, kung saan 1 µ = 10-6 metro) o sa mga nanometro (dinaglat na nm, kung saan 1 nm = 10-9 meter = 0.001 5). Ang malapit na IR band ay naglalaman ng enerhiya sa saklaw ng mga haba ng daluyong na pinakamalapit sa nakikita, mula sa humigit-kumulang na 0.750 hanggang 1.300 5 (750 hanggang 1300 nm). Ang intermediate IR band (tinatawag ding gitnang IR band) ay binubuo ng enerhiya sa saklaw na 1.300 hanggang 3.000 5 (1300 hanggang 3000 nm). Ang malayong IR band ay umaabot mula 2.000 hanggang 14.000 5 (3000 nm hanggang 1.4000 x 104nm).

b) Pagtanggap ng IR

Ang tatanggap ay binubuo ng isang detektor ng larawan na bumubuo ng isang output signal ng elektrisidad dahil ang ilaw ay insidente dito. Ang output ng detector ay nasala gamit ang isang makitid na filter ng banda na nagtatapon ng lahat ng mga frequency sa ibaba o sa itaas ng dalas ng carrier (38 KHz sa kasong ito). Pagkatapos ay ang na-filter na output ay ibinibigay sa naaangkop na aparato tulad ng isang Microcontroller o isang Microprocessor na kumokontrol sa mga aparato tulad ng isang PC o isang Robot. Ang output mula sa mga filter ay maaari ring maiugnay sa Oscilloscope upang mabasa ang mga pulso.

Mga aplikasyon ng IR:

Ginagamit ang Infrared sa iba't ibang mga wireless na komunikasyon, pagsubaybay, at mga aplikasyon ng kontrol. Narito ang ilang mga halimbawa:

· Mga kahon sa remote-control ng home-entertainment

· Wireless (mga network ng lokal na lugar)

· Mga link sa pagitan ng mga notebook computer at desktop computer

· Cordless modem

· Mga detector ng panghihimasok

· Mga detector ng paggalaw

· Mga sensor ng sunog

· Mga sistema ng night-vision

· Kagamitan sa medikal na diagnostic

· Mga system ng patnubay ng misayl

· Mga aparato sa pagsubaybay sa geological

Ang paglilipat ng data ng IR mula sa isang aparato patungo sa iba pa ay minsang tinutukoy bilang pag-iilaw.

Hakbang 2: IR Sensor & NEC Protocol Fromat

IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat
IR Sensor at NEC Protocol Fromat

Mga IR sensor (Fig1)

TSOP1738, SFH-5110-38 (38kHz)

Mga Tampok ng TSOP sensor:

  • Ang preamplifier at photo detector ay pareho sa iisang package
  • Panloob na filter para sa dalas ng PCM
  • Pinahusay na panangga laban sa kaguluhan sa larangan ng elektrisidad
  • Pagkakatugma ng TTL at CMOS
  • Output na aktibo mababa Mababang pagkonsumo ng kuryente
  • Mataas na kaligtasan sa sakit laban sa ilaw sa paligid
  • Posible ang patuloy na paghahatid ng data

NEC Protocol:

Ang NEC IR transmission protocol ay gumagamit ng pulse distance encoding ng mga message bit. Ang bawat pulso pumutok ay 562.5µs ang haba, sa dalas ng carrier ng 38kHz (26.3µs). Ang mga lohikal na piraso ay ipinapadala tulad ng sumusunod (Fig2):

  • Lohikal na '0' - isang 562.5µs pulso ang sumabog na sinusundan ng isang puwang na 562.5µs, na may kabuuang oras ng paghahatid na 1.125ms
  • Lohikal na '1' - isang 562.5µs pulso sumabog na sinusundan ng isang 1.6875ms space, na may kabuuang oras ng pagpapadala ng 2.25ms

Ang carrier pulse ay binubuo ng 21 cycle sa 38kHz. Ang mga pulso ay karaniwang may marka / ratio ng space na 1: 4, upang mabawasan ang kasalukuyang pagkonsumo:

(Fig3)

Ang bawat pagkakasunud-sunod ng code ay nagsisimula sa isang 9ms pulse, na kilala bilang AGC pulse. Sinundan ito ng isang 4.5ms na katahimikan:

(Fig4)

Ang data pagkatapos ay binubuo ng 32 bits, isang 16-bit na address na sinusundan ng isang 16-bit na utos, na ipinakita sa pagkakasunud-sunod ng paglipat ng mga ito (kaliwa pakanan):

(Fig5)

Ang apat na byte ng data bits ay bawat isa ay pinadalhan ng hindi gaanong makabuluhang kaunting una. Ang larawan 1 ay naglalarawan ng format ng isang frame ng paghahatid ng NEC IR, para sa isang address na 00h (00000000b) at isang utos ng ADh (10101101b).

Isang kabuuang 67.5ms ang kinakailangan upang magpadala ng isang frame ng mensahe. Kailangan nito ng 27ms upang maipadala ang 16 piraso ng address (address + kabaligtaran) at ang 16 na piraso ng utos (utos + kabaligtaran).

(Fig6)

Kinakailangan ng oras upang maipadala ang frame:

Ang 16 na piraso para sa address (address + kabaligtaran) ay nangangailangan ng 27ms upang magpadala ng oras.at ang 16 na bit para sa utos (utos + pabaliktad) ay nangangailangan din ng 27ms upang magpadala ng oras. dahil (address + address inverse) o (command + command inverse) ay laging maglalaman ng 8 '0's at 8' 1's kaya (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. ayon sa kabuuang oras na kinakailangan upang maipadala ang frame ay (9ms + 4.5ms + 27ms + 27ms) = 67.5 ms.

REPEAT CODES: Kung ang susi sa remote Controller ay pinananatiling nalulumbay, isang paulit-ulit na code ang ilalabas, karaniwang sa paligid ng 40ms pagkatapos ng pagsabog ng pulso na nangangahulugan ng pagtatapos ng mensahe. Ang isang paulit-ulit na code ay magpapatuloy na maipadala sa mga pagitan ng 108ms, hanggang sa maipalabas ang susi. Ang paulit-ulit na code ay binubuo ng mga sumusunod, sa pagkakasunud-sunod:

  • isang 9ms nangungunang pulso ang sumabog
  • isang 2.25ms space
  • isang pulso na 562.5µs ang pumutok upang markahan ang dulo ng puwang (at kung gayon katapusan ng naihatid na paulit-ulit na code).

(Fig7)

Pagkaantala sa Pagkalkula (1ms):

Clock Freq = 11.0592 Mhz

Machine Cycle = 12

Pagkaantala = 1ms

TimerValue = 65536 - ((Delay * ClockFreq) / Machine Cycle) = 65536 - ((1ms * 11.0592Mhz) / 12)

= 65536 - 921 = 0xFC67

Hakbang 3: DC Motor Control Gamit ang L293D

DC Motor Control Gamit ang L293D
DC Motor Control Gamit ang L293D

DC Motor

Ang isang DC-motor ay binago ang elektrikal na enerhiya sa mekanikal na enerhiya na maaaring magamit upang makagawa ng maraming mga kapaki-pakinabang na gawa. Maaari itong makagawa ng paggalaw ng makina tulad ng Go Forward / Backword ng aking RoboCar. Ang DC motors ay may iba't ibang mga rating tulad ng 6V at 12V. Mayroon itong dalawang wires o pin. Maaari nating baligtarin ang direksyon ng pag-ikot sa pamamagitan ng pag-reverse ng polarity ng input.

Dito mas gusto namin ang L293D bilang isang rating na 600mA ay mabuti para sa pagmamaneho ng maliliit na DC motor at ang mga diode ng proteksyon ay kasama sa mismong IC. Ang paglalarawan ng bawat pin ay ang mga sumusunod: Paganahin ang mga pin: Ito ang mga pin no. 1 at i-pin ang. 9. Pin no. Ginagamit ang 1 upang paganahin ang Half-H driver na 1 at 2. (H tulay sa Kaliwang bahagi). Pin no. Ginagamit ang 9 upang paganahin ang H-bridge driver 3 at 4. (H bridge sa kanang bahagi).

Ang konsepto ay simple, kung nais mong gumamit ng isang partikular na tulay ng H kailangan mong magbigay ng isang mataas na lohika upang kaukulang paganahin ang mga pin kasama ang power supply sa IC. Maaari ding magamit ang pin na ito upang makontrol ang bilis ng motor gamit ang diskarteng PWM. VCC1 (Pin 16): Power supply pin. Ikonekta ito sa 5V supply. VCC2 (Pin 8): supply ng kuryente para sa motor. Mag-apply ng boltahe + dito bilang bawat rating ng motor. Kung nais mong himukin ang iyong motor sa 12V, ilapat ang 12V sa pin na ito.

Posible rin na direktang magmaneho ng motor sa isang baterya, maliban sa ginamit para sa pagbibigay ng lakas sa circuit, Ikonekta lamang ang terminal ng baterya na iyon sa VCC2 pin at gawing karaniwan ang GND ng parehong mga baterya. (MAX boltahe sa pin na ito ay 36V ayon sa datasheet nito). GND (Pins 4, 5, 12, 13): Ikonekta ang mga ito sa karaniwang GND ng circuit. Mga input (Pins 2, 7, 10, 15):

Ito ang mga input pin kung saan ang mga signal ng control ay ibinibigay ng mga microcontroller o iba pang mga circuit / ICs. Halimbawa, kung sa pin 2 (Input ng 1st half H driver) binibigyan namin ang Logic 1 (5V), makakakuha kami ng boltahe na katumbas ng VCC2 sa kaukulang output pin ng 1st half H driver na pin no. 3. Katulad din para sa Logic 0 (0V) sa Pin 2, 0V sa Pin 3 ay lilitaw. Mga Output (Pin 3, 6, 11, 14): Mga pin ng output. Ayon sa input signal output signal ay dumating.

Mga Kilusang Motor A B

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

…………… Itigil: Mababa: Mababa

…… Clockwise: Mababa: Mataas

Anticlockwise: Mataas: Mababa

……………. Stop: Mataas: Mataas

Hakbang 4: Mga Diagram ng Circuit para sa Motor Driver at IR Sensor

Mga Circuit Diagram para sa Motor Driver at IR Sensor
Mga Circuit Diagram para sa Motor Driver at IR Sensor
Mga Circuit Diagram para sa Motor Driver at IR Sensor
Mga Circuit Diagram para sa Motor Driver at IR Sensor
Mga Circuit Diagram para sa Motor Driver at IR Sensor
Mga Circuit Diagram para sa Motor Driver at IR Sensor

Ang ATmega32 ay isang mababang-kapangyarihan na CMOS 8-bit microcontroller batay sa pinahusay na AVR na RISCarchitecture. Sa pamamagitan ng pagpapatupad ng malakas na mga tagubilin sa isang solong cycle ng orasan, nakakamit ng ATmega32 ang mga throughput na papalapit sa 1 MIPS bawat MHz na pinapayagan ang taga-disenyo ng system na i-optimize ang pagkonsumo ng kuryente kumpara sa bilis ng pagproseso.

Pinagsasama ng core ng AVR ang isang rich set ng pagtuturo na may 32 pangkalahatang layunin na mga rehistro sa pagtatrabaho. Ang lahat ng mga rehistro ng the32 ay direktang konektado sa Arithmetic Logic Unit (ALU), na pinapayagan ang dalawang independiyenteng rehistro na ma-access sa isang solong tagubilin na naisakatuparan sa isang ikot ng orasan. Ang nagreresultang arkitektura ay mas mahusay ang code habang nakakamit ang mga throughput hanggang sampung beses na mas mabilis kaysa sa maginoo na CISC microcontrollers.

Nagbibigay ang ATmega32 ng mga sumusunod na tampok:

  • 32 Kbytes ng In-System Programmable Flash Program memory na may mga kakayahan na Basahin-Habang-Sumulat,
  • 1024 bytes EEPROM, 2K byte SRAM,
  • 32 pangkalahatang layunin ng mga linya ng I / O,
  • 32 pangkalahatang layunin na nagtatrabaho mga rehistro,
  • isang interface ng JTAG para sa Boundaryscan,
  • Suporta sa on-chip na pag-debug at pagprograma, tatlong may kakayahang umangkop na Timer / Counters na may mga mode na ihambing, Panloob at Panlabas na Mga Pagkagambala, isang serial na ma-program na USART, isang byte na nakatuon sa Dalawang-wire na Serial Interface, isang 8-channel,
  • 10-bit ADC na may opsyonal na pagkakaiba-iba na yugto ng pag-input na may programmable na nakuha (TQFP package lamang),
  • isang programmable na Watchdog Timer na may Panloob na Oscillator,
  • isang serial port ng SPI, at
  • anim na mapipiling mode ng pag-save ng kuryente ng software.

    • Pinahinto ng Idle mode ang CPU habang pinapayagan ang USART,
    • Dalawang-wire interface, A / D Converter,
    • SRAM,
    • Timer / counter,
    • SPI port, at
    • makagambala sa system upang magpatuloy sa paggana.
    • Sine-save ng mode na Power-down ang mga nilalaman ng rehistro ngunit nag-freeze ang Oscillator, pinapagana ang lahat ng iba pang mga pagpapaandar ng maliit na tilad hanggang sa susunod na Panlabas na Nakagambala o Pag-reset ng Hardware.
    • Sa Power-save mode, patuloy na tumatakbo ang Asynchronous Timer, na pinapayagan ang gumagamit na mapanatili ang isang base ng timer habang natutulog ang natitirang aparato.
    • Ang mode ng ADC Noise Reduction ay tumitigil sa CPU at lahat ng mga module na I / O maliban sa Asynchronous Timer at ADC, upang mabawasan ang paglipat ng ingay sa panahon ng mga conversion ng ADC
    • Sa Standby mode, tumatakbo ang kristal / resonator Oscillator habang natutulog ang natitirang aparato. Pinapayagan nito ang napakabilis na pagsisimula na sinamahan ng pagkonsumo ng mababang lakas.
    • Sa Extended Standby mode, ang parehong pangunahing Oscillator at ang Asynchronous Timer ay patuloy na tumatakbo.

Ang lahat ng mga kaugnay na circuit ay ibinibigay dito at ang pangunahing circuit (atmega32) ay ibinigay din.

Hakbang 5: Mga Avr Program

Mga Program sa Avr
Mga Program sa Avr
Mga Program sa Avr
Mga Program sa Avr

1. Para sa "remote sensor":

# isama ang # isama

# isama ang "remote.h"

// Globals pabagu-bago ng unsigned int Oras; // Pangunahing timer, nag-iimbak ng oras sa 10us, // Nai-update ng ISR (TIMER0_COMP) pabagu-bago ng unsigned char BitNo; // Pos ng susunod na BIT pabagu-bago ng unsigned char ByteNo; // Pos ng kasalukuyang Byte

pabagu-bago ng unsigned char IrData [4]; // Ang apat na data Bytes ng Ir Packet // 2-Byte Address 2-Byte Data pabagu-bago na hindi naka-sign char na IrCmdQ [QMAX]; // Final Command Natanggap (Buffer)

pabagu-bago ng unsigned char PrevCmd; // Ginamit para ulitin

// Mga variable na ginamit para simulang ulitin lamang pagkatapos ang isang key ay pinindot para sa ilang oras

pabagu-bago ng unsigned char Ulitin; // 1 = yes 0 = walang pabagu-bago ng unsigned char RCount; // Ulitin ang bilang

pabagu-bago ng isip QFront = -1, QEnd = -1;

pabagu-bago ng unsigned char State; // Estado ng tatanggap

pabagu-bago ng unsigned char Edge; // Edge of interrupt [RISING = 1 O FALLING = 0]

pabagu-bago ng unsigned int stop;

/ ***** ***** / / ***** *****

walang bisa ang RemoteInit () {

char i; para sa (i = 0; i <4; i ++) IrData = 0;

huminto = 0; Estado = IR_VALIDATE_LEAD_HIGH; Edge = 0; Ulitin = 0;

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

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Itakda ang Halaga ng Paghambing

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

kung (maghintay) habang (QFront == - 1); kung hindi man kung (QFront == - 1) bumalik (RC_NONE);

cmd = IrCmdQ [QFront];

kung (QFront == QEnd) QFront = QEnd = -1; iba pa {kung (QFront == (QMAX-1)) QFront = 0; iba pa QFront ++; }

bumalik cmd;

}

2. pangunahing ():

int main (walang bisa) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

habang (1) // Infinite Loop sa aktibong IR-sensor {

cmd = GetRemoteCmd (1);

switch (cmd) {

case xx: {// BOT Gumalaw pasulong // Ch + btn forwardmotor ();

pahinga; // Parehong Mga Motors sa Forward Direction

}

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

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

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

default: PORTC = 0x00; break; // Parehong natira at kanang mga motor ang huminto}

}

} / * Wakas ng pangunahing * /

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

// Ito ay isang pangunahing modelo, ngunit maaari ko itong magamit sa PWM mode.

//…………………………………………….. Magsaya …………………………………………………… //

Inirerekumendang: