Përmbajtje:

INFRA RED Remote Controlled ROBOCAR USING AVR (ATMEGA32) MCU: 5 hapa
INFRA RED Remote Controlled ROBOCAR USING AVR (ATMEGA32) MCU: 5 hapa

Video: INFRA RED Remote Controlled ROBOCAR USING AVR (ATMEGA32) MCU: 5 hapa

Video: INFRA RED Remote Controlled ROBOCAR USING AVR (ATMEGA32) MCU: 5 hapa
Video: IR remote controlled vehicle robot with ATmega32 2024, Korrik
Anonim
INFRA RED Remote Controlled ROBOCAR USING AVR (ATMEGA32) MCU
INFRA RED Remote Controlled ROBOCAR USING AVR (ATMEGA32) MCU

PROJEKTI i tanishëm përshkruan një dizajn dhe zbatim të një RoboCar me telekomandë me rreze infra të kuqe (IR) e cila mund të përdoret për aplikime të ndryshme të automatizuara të kontrollit pa pilot. Unë kam projektuar RoboCar me telekomandë (lëvizje majtas-djathtas/para-mbrapa). I gjithë sistemi bazohet në mikrokontrollues (Atmega32) që e bën sistemin e kontrollit më të zgjuar dhe të lehtë për tu modifikuar për aplikacione të tjera. Ai i mundëson përdoruesit të operojë ose kontrollojë një RoboCar dhe të përdorë çelësin e energjisë nga rreth 5 metra larg.

Fjalët kyçe: Dekoder IR, AVR (Atmega32) Mikrokontrollues, Telekomandë TV, Komunikim pa tela

_

Hapi 1: Komunikimi IntraRed

Komunikimi IntraRed
Komunikimi IntraRed

Parimi i komunikimit IR:

a) transmetimi IR

Transmetuesi i një LED IR brenda qarkut të tij, i cili lëshon dritë infra të kuqe për çdo impuls elektrik që i është dhënë. Ky impuls gjenerohet kur shtypet një buton në telekomandë, duke përfunduar kështu qarkun, duke siguruar paragjykim ndaj LED. LED duke qenë i njëanshëm lëshon dritë me gjatësi vale 940 nm si një seri impulse, që korrespondojnë me butonin e shtypur. Megjithatë meqenëse së bashku me IR LED shumë burime të tjera të dritës infra të kuqe si ne qeniet njerëzore, llamba, dielli, etj, informacioni i transmetuar mund të ndërhyhet. Një zgjidhje për këtë problem është me modulim. Sinjali i transmetuar modulohet duke përdorur një frekuencë bartëse prej 38 KHz (ose ndonjë frekuencë tjetër midis 36 dhe 46 KHz). LED IR është bërë që të lëkundet në këtë frekuencë për kohëzgjatjen e pulsit. Informacioni ose sinjalet e dritës modulohen në gjerësinë e impulsit dhe përmbahen në frekuencën 38 KHz. Transmetimi infra të kuqe i referohet energjisë në rajonin e spektrit të rrezatimit elektromagnetik në gjatësi vale më të gjatë se ato të dritës së dukshme, por më të shkurtër se ato të valëve të radios. Në përputhje me rrethanat, frekuencat infra të kuqe janë më të larta se ato të mikrovalëve, por më të ulëta se ato të dritës së dukshme. Shkencëtarët ndajnë spektrin e rrezatimit infra të kuqe (IR) në tre rajone. Gjatësia e valës përcaktohet në mikron (simbolizohet μ, ku 1 µ = 10-6 metër) ose në nanometra (shkurtuar nm, ku 1 nm = 10-9 metër = 0.001 5). Brezi afër IR përmban energji në rangun e gjatësisë së valës më të afërt me të dukshmen, nga afërsisht 0.750 në 1.300 5 (750 në 1300 nm). Brezi IR i ndërmjetëm (i quajtur edhe brezi i mesëm IR) përbëhet nga energjia në rangun 1.300 deri 3.000 5 (1300 deri 3000 nm). Brezi IR i largët shtrihet nga 2.000 në 14.000 5 (3000 nm në 1.4000 x 104nm).

b) Pritja IR

Marrësi përbëhet nga një detektor fotografie i cili zhvillon një sinjal elektrik dalës ndërsa drita bie mbi të. Dalja e detektorit filtrohet duke përdorur një filtër me brez të ngushtë që hedh të gjitha frekuencat nën ose mbi frekuencën e bartësit (38 KHz në këtë rast). Dalja e filtruar më pas i jepet pajisjes së përshtatshme si një Mikrokontrollues ose një Mikroprocesor i cili kontrollon pajisjet si një PC ose një Robot. Dalja nga filtrat gjithashtu mund të lidhet me Osciloskopin për të lexuar impulset.

Aplikimet e IR:

Infrared përdoret në një shumëllojshmëri të komunikimeve pa tel, monitorimit dhe aplikimeve të kontrollit. Ketu jane disa shembuj:

· Kuti të telekomandës për argëtim në shtëpi

· Wireless (rrjetet lokale)

· Lidhjet midis kompjuterëve notebook dhe kompjuterëve desktop

· Modem pa kabllo

· Detektorë ndërhyrje

· Detektorë lëvizjeje

· Sensorë zjarri

· Sistemet e shikimit të natës

· Pajisjet diagnostike mjekësore

· Sistemet e drejtimit të raketave

· Pajisjet e monitorimit gjeologjik

Transmetimi i të dhënave IR nga një pajisje në tjetrën nganjëherë quhet rreze.

Hapi 2: Sensori IR & NEC Protocol Fromat

Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat
Sensori IR & Protokolli Nomat Fromat

Sensorë IR (Fig1)

TSOP1738, SFH-5110-38 (38kHz)

Karakteristikat e sensorëve TSOP:

  • Para -përforcuesi dhe detektori i fotografisë janë të dy në një paketë të vetme
  • Filtër i brendshëm për frekuencën PCM
  • Mbrojtje e përmirësuar kundër shqetësimit të fushës elektrike
  • Përputhshmëria TTL dhe CMOS
  • Dalja aktive e ulët Konsumi i ulët i energjisë
  • Imunitet i lartë ndaj dritës së ambientit
  • Transmetimi i vazhdueshëm i të dhënave është i mundur

Protokolli NEC:

Protokolli i transmetimit NEC IR përdor kodimin e distancës së impulsit të bitëve të mesazhit. Çdo shpërthim i pulsit është 562.5µs në gjatësi, me një frekuencë bartëse prej 38kHz (26.3µs). Bitet logjike transmetohen si më poshtë (Fig2):

  • Logjike '0' - një shpërthim pulsi 562.5µs i ndjekur nga një hapësirë 562.5µs, me një kohë totale transmetimi prej 1.125ms
  • Logjike '1' - një shpërthim pulsi 562.5µs i ndjekur nga një hapësirë 1.6875ms, me një kohë totale transmetimi prej 2.25ms

Pulsi bartës përbëhet nga 21 cikle në 38kHz. Pulset zakonisht kanë një raport shenjë/hapësirë 1: 4, për të zvogëluar konsumin aktual:

(Fig3)

Çdo sekuencë e kodit fillon me një impuls 9ms, i njohur si impuls AGC. Kjo pasohet nga një heshtje prej 4.5 ms:

(Fig4)

Të dhënat pastaj përbëhen nga 32 bit, një adresë 16-bit e ndjekur nga një komandë 16-bit, e treguar në rendin në të cilin ato transmetohen (nga e majta në të djathtë):

(Fig5)

Katër bajtët e bitëve të të dhënave dërgohen secili së pari pak më pak i rëndësishëm. Figura 1 ilustron formatin e një kornize transmetimi IR NEC, për një adresë 00h (00000000b) dhe një komandë të ADh (10101101b).

Një total prej 67.5ms kërkohet për të transmetuar një kornizë mesazhi. I duhen 27ms për të transmetuar 16 bitët e adresës (adresa + inversi) dhe 16 bitët e komandës (komanda + inversi).

(Fig6)

Koha e nevojshme për transmetimin e kornizës:

16 bit për adresën (adresa + inversi) kërkojnë 27ms për të transmetuar kohën. Dhe 16 bitët për komandën (komanda + inversi) gjithashtu kërkojnë 27ms për të transmetuar kohën. sepse (adresa + adresa anasjelltas) ose (komanda + komanda anasjelltas) gjithmonë do të përmbajë 8 '0 dhe 8' 1 kështu (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. sipas kësaj kohe totale të kërkuar për të transmetuar kuadrin është (9ms +4.5ms +27ms +27ms) = 67.5 ms.

KODET E RIPERSHTIMIT: Nëse çelësi në telekomandë mbahet i shtypur, do të lëshohet një kod i përsëritur, zakonisht rreth 40ms pas shpërthimit të pulsit që nënkuptonte fundin e mesazhit. Një kod i përsëritur do të vazhdojë të dërgohet në intervale prej 108ms, derisa çelësi të lirohet përfundimisht. Kodi i përsëritjes përbëhet nga sa vijon, sipas radhës:

  • një shpërthim i pulsit kryesor 9ms
  • një hapësirë prej 2.25ms
  • një impuls 562.5µs shpërtheu për të shënuar fundin e hapësirës (dhe kështu fundin e kodit të përsëritur të transmetuar).

(Fig7)

Llogaritja e vonesës (1 ms):

Frekuenca e orës = 11.0592 Mhz

Cikli i Makinës = 12

Vonesa = 1 ms

TimerValue = 65536 - ((Vonesa * ClockFreq)/Cikli i makinës) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

Hapi 3: Kontrolli i motorit DC duke përdorur L293D

Kontrolli i motorit DC duke përdorur L293D
Kontrolli i motorit DC duke përdorur L293D

Motor DC

Një motor DC konverton energjinë elektrike në energji mekanike që mund të përdoret për të bërë shumë punë të dobishme. Mund të prodhojë lëvizje mekanike si Go Forward/Backword of my RoboCar. Motorët DC vijnë në vlerësime të ndryshme si 6V dhe 12V. Ka dy tela ose kunja. Ne mund të përmbysim drejtimin e rrotullimit duke përmbysur polaritetin e hyrjes.

Këtu preferojmë L293D pasi një vlerësim prej 600mA është i mirë për drejtimin e motorëve të vegjël DC dhe diodat e mbrojtjes përfshihen në vetë IC. Përshkrimi i secilës kunj është si më poshtë: Aktivizo kunjat: Këto janë pin nr. 1 dhe pin nr. 9. Pin nr. 1 përdoret për të mundësuar drejtuesin Half-H 1 dhe 2. (Ura H në anën e majtë). Pin nr. 9 përdoret për të mundësuar drejtuesin e urës H 3 dhe 4. (Ura H në anën e djathtë).

Koncepti është i thjeshtë, nëse doni të përdorni një urë të veçantë H duhet t'i jepni një logjikë të lartë kunjave përkatës të aktivizimit së bashku me furnizimin me energji në IC. Ky kunj mund të përdoret gjithashtu për të kontrolluar shpejtësinë e motorit duke përdorur teknikën PWM. VCC1 (Pin 16): Kunja e furnizimit me energji elektrike. Lidheni atë me furnizimin me 5V. VCC2 (Pin 8): Furnizimi me energji për motorin. Aplikoni +ve tension në të sipas vlerësimit të motorit. Nëse doni të drejtoni motorin tuaj në 12V, aplikoni 12V në këtë kunj.

Shtë gjithashtu e mundur të drejtoni motorin drejtpërdrejt në një bateri, përveç atij që përdoret për furnizimin me energji të qarkut, Thjesht lidhni terminalin +e asaj baterie me pin VCC2 dhe bëni GND të dy baterive të zakonshme. (Tensioni MAX në këtë kunj është 36V sipas fletës së të dhënave). GND (Kunjat 4, 5, 12, 13): Lidhini ato me GND të zakonshme të qarkut. Hyrjet (Kunjat 2, 7, 10, 15):

Këto janë kunja hyrëse përmes të cilave sinjalet e kontrollit jepen nga mikrokontrolluesit ose qarqet/IC -të e tjera. Për shembull, nëse në kunjin 2 (Hyrja e shoferit të gjysmës H të parë) japim Logic 1 (5V), do të marrim një tension të barabartë me VCC2 në pinin dalës përkatës të drejtuesit të gjysmës së parë H dmth. Pin nr. 3. Në mënyrë të ngjashme për Logic 0 (0V) në Pin 2, shfaqet 0V në Pin 3. Daljet (Pin 3, 6, 11, 14): Nxjerr kunjat. Sipas sinjalit hyrës sinjali i daljes vjen.

Lëvizjet motorike A B

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

…………… Ndalesa: E ulët: E ulët

…… Në drejtim të akrepave të orës: E ulët: E lartë

Në drejtim të kundërt të orës: E lartë: E ulët

……………. Ndalesa: E lartë: E lartë

Hapi 4: Diagramet e qarkut për drejtuesin motorik dhe sensorin IR

Diagramet e qarkut për drejtuesin e motorit dhe sensorin IR
Diagramet e qarkut për drejtuesin e motorit dhe sensorin IR
Diagramet e qarkut për drejtuesin e motorit dhe sensorin IR
Diagramet e qarkut për drejtuesin e motorit dhe sensorin IR
Diagramet e qarkut për drejtuesin e motorit dhe sensorin IR
Diagramet e qarkut për drejtuesin e motorit dhe sensorin IR

ATmega32 është një mikrokontrollues CMOS 8-bit me fuqi të ulët i bazuar në arkitekturën RIS të përmirësuar AVR. Duke ekzekutuar udhëzime të fuqishme në një cikël të vetëm të orës, ATmega32 arrin prurje që i afrohen 1 MIPS për MHz duke lejuar projektuesin e sistemit të zgjedh konsumin e energjisë kundrejt shpejtësisë së përpunimit.

Bërthama AVR kombinon një grup udhëzimesh të pasur me 32 regjistra pune me qëllime të përgjithshme. Të gjithë regjistrat the32 janë të lidhur drejtpërdrejt me Njësinë Logjike Aritmetike (ALU), duke lejuar qasjen në dy regjistra të pavarur në një udhëzim të vetëm të ekzekutuar në një cikël të orës. Arkitektura që rezulton është më efikase në kod ndërsa arrin dalje deri në dhjetë herë më shpejt se mikrokontrolluesit konvencionalë CISC.

ATmega32 ofron karakteristikat e mëposhtme:

  • 32 Kbajt memorie të programit Flash të programueshëm në sistem me aftësi Lexo-Ndërsa-Shkruaj,
  • 1024 bajt EEPROM, 2K bajt SRAM,
  • 32 linja I/O me qëllim të përgjithshëm,
  • 32 regjistra pune me qëllim të përgjithshëm,
  • një ndërfaqe JTAG për Boundaryscan,
  • Mbështetje dhe programim i korrigjimit në çip, tre Kohëmatës/Numërues fleksibël me mënyra krahasimi, Ndërprerje të Brendshme dhe të Jashtme, një USART serial i programueshëm, një ndërfaqe seriale me dy tela të orientuar nga bajti, një 8-kanalësh,
  • ADC 10-bit me fazë opsionale të hyrjes diferenciale me përfitim të programueshëm (vetëm paketa TQFP),
  • një kohëmatës i programueshëm me mbikëqyrës të brendshëm,
  • një port serial SPI, dhe
  • gjashtë mënyra të zgjedhjes së softuerit për kursimin e energjisë.

    • Mënyra Idle ndalon CPU -në ndërsa lejon USART,
    • Ndërfaqe me dy tela, konvertues A/D,
    • SRAM,
    • Kohëmatësi/numëruesit,
    • Porti SPI, dhe
    • ndërpres sistemin për të vazhduar funksionimin.
    • Modaliteti Power-down ruan përmbajtjen e regjistrit, por ngrin Oshilatorin, duke çaktivizuar të gjitha funksionet e tjera të çipit deri në Ndërprerjen e Jashtme ose Rivendosjen e Pajisjeve.
    • Në modalitetin e kursimit të energjisë, Kohëmatësi Asinkron vazhdon të funksionojë, duke lejuar përdoruesin të ruajë një bazë kohëmatës ndërsa pjesa tjetër e pajisjes është në gjumë.
    • Mënyra e zvogëlimit të zhurmës ADC ndal CPU dhe të gjitha modulet I/O përveç Timer Asinkron dhe ADC, për të minimizuar zhurmën e ndërrimit gjatë konvertimeve ADC
    • Në modalitetin e gatishmërisë, oshilatori kristal/rezonator po funksionon ndërsa pjesa tjetër e pajisjes është në gjumë. Kjo lejon fillimin shumë të shpejtë të kombinuar me konsum të ulët të energjisë.
    • Në modalitetin e gatishmërisë së zgjeruar, të dy oshilatorët kryesorë dhe kohëmatësi asinkron vazhdojnë të funksionojnë.

Të gjitha qarqet e lidhura jepen këtu dhe jepet edhe qarku kryesor (atmega32).

Hapi 5: Programet Avr

Programet Avr
Programet Avr
Programet Avr
Programet Avr

1. Për "sensorin e largët":

#përfshi #përfshi

#përfshi "distanca.h"

// Globale të paqëndrueshme të panënshkruara int Koha; // Kohëmatësi kryesor, ruan kohën në 10us, // Përditësuar nga ISR (TIMER0_COMP) karbon i paqëndrueshëm i panënshkruar BitNo; // Pozicionet e BIT -it të ardhshëm të paqëndrueshëm të nënshkrueshëm char ByteNo; // Pozat e bajtit aktual

char i paqëndrueshëm i panënshkruar IrData [4]; // Katër bajtët e të dhënave të Paketës Ir // Adresa 2-Byte 2-Bajt Të dhëna të paqëndrueshme të panënshkruara IrCmdQ [QMAX]; // Komanda Finale e Marrë (Tampon)

char i paqëndrueshëm i panënshkruar PrevCmd; // Përdoret për përsëritje

// Ndryshoret e përdorura për të filluar të përsëriten vetëm pasi një tast të jetë shtypur për një kohë të caktuar

char i paqëndrueshëm i panënshkruar Përsëriteni; // 1 = po 0 = jo karikaturë e paqëndrueshme pa shenjë RCount; // Numërimi i përsëritur

karbon i paqëndrueshëm QFront = -1, QEnd = -1;

gjendje e paqëndrueshme e nënshkruar char; // Gjendja e marrësit

i paqëndrueshëm char nënshkrueshëm Edge; // Buzë e ndërprerjes [RISHT = 1 APO Rënie = 0]

i ndalur i paqëndrueshëm int stop;

/********************************************* ****************************************** / /*FUNCTIONSSTARTS* / / ******************************************** ******************************************/

void RemoteInit () {

char i; për (i = 0; i <4; i ++) IrData = 0;

ndal = 0; Gjendja = IR_VALIDATE_LEAD_HIGH; Buzë = 0; Përsëriteni = 0;

// Vendosja e kohëmatësit1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Vendosni Vlerën e Krahasimit

char pa shenjë GetRemoteCmd (char char) {pa shenjë char cmd;

nëse (prisni) ndërsa (QFront ==-1); përndryshe nëse (QFront ==-1) kthehet (RC_NONE);

cmd = IrCmdQ [QFront];

nëse (QFront == QEnd) QFront = QEnd = -1; tjetër {if (QFront == (QMAX-1)) QFront = 0; tjetër QFront ++; }

kthehu cmd;

}

2. kryesore ():

int kryesore (e pavlefshme) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

ndërsa (1) // Lak i pafund në sensorin IR aktiv {

cmd = GetRemoteCmd (1);

kaloni (cmd) {

rasti xx: {// BOT Lëviz përpara // Ch+ btn përparamotor ();

pushim; // Të dy Motorët në Drejtimin Përpara

}

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

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

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

parazgjedhje: PORTC = 0x00; pushim; // Motorët e majtë dhe të djathtë ndalojnë}

}

}/*Fundi kryesor*/

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

// ashtë një model bazë, por unë mund ta përdor atë në modalitetin PWM.

// ………………………………………….. Argëtohuni …………………………………………………… //

Recommended: