Sisukord:

INFRA PUNANE KAUGITAV ROBOKAR AVR (ATMEGA32) MCU abil: 5 sammu
INFRA PUNANE KAUGITAV ROBOKAR AVR (ATMEGA32) MCU abil: 5 sammu

Video: INFRA PUNANE KAUGITAV ROBOKAR AVR (ATMEGA32) MCU abil: 5 sammu

Video: INFRA PUNANE KAUGITAV ROBOKAR AVR (ATMEGA32) MCU abil: 5 sammu
Video: Enter into your red hair era 🔥. #manicpanic #redhair #haircolor #diyhair #diyhaircolor 2024, Juuli
Anonim
INFRA PUNANE KAUGI JUHTITAV ROBOCAR AVR (ATMEGA32) MCU abil
INFRA PUNANE KAUGI JUHTITAV ROBOCAR AVR (ATMEGA32) MCU abil

Käesolev PROJEKT kirjeldab infrapuna (IR) kaugjuhtimisega RoboCari disaini ja teostust, mida saab kasutada mitmesuguste automatiseeritud mehitamata juhtimisrakenduste jaoks. Olen kujundanud kaugjuhtimisega RoboCari (vasak-parem/ees-taga liikumine). Kogu süsteem põhineb mikrokontrolleril (Atmega32), mis muudab juhtimissüsteemi nutikamaks ja hõlpsasti muudetavaks teiste rakenduste jaoks. See võimaldab kasutajal juhtida või juhtida RoboCar'i ja toitelülitit umbes 5 meetri kauguselt.

Märksõnad: IR -dekooder, AVR (Atmega32) mikrokontroller, teleri kaugjuhtimispult, traadita side

_

Samm: sisemine suhtlus

IntraRed kommunikatsioon
IntraRed kommunikatsioon

IR -side põhimõte:

a) IR -ülekanne

Infrapuna LED -saatja oma vooluringis, mis kiirgab infrapunavalgust iga talle antud elektrilise impulsi kohta. See impulss genereeritakse, kui vajutatakse kaugjuhtimispuldi nuppu, lõpetades sellega vooluringi, pakkudes LED -ile eelarvamusi. Lülitatud LED kiirgab 940 nm lainepikkusega valgust impulsside seeriana, mis vastab nupule vajutamisele. Kuna aga koos IR -LED -iga on ka palju teisi infrapunavalguse allikaid, nagu meie, inimesed, lambipirnid, päike jne, võib edastatav teave olla häiritud. Selle probleemi lahendus on modulatsioon. Edastatud signaali moduleeritakse, kasutades kandesagedust 38 KHz (või mis tahes muud sagedust vahemikus 36 kuni 46 KHz). IR -valgusdiood pannakse sellel sagedusel võnkuma impulsi aja jooksul. Teavet või valgussignaale moduleeritakse impulsi laiusega ja need sisalduvad 38 KHz sagedusel. Infrapunaülekanne viitab energiale elektromagnetilise kiirguse spektri piirkonnas lainepikkustel, mis on pikemad kui nähtav valgus, kuid lühemad kui raadiolained. Vastavalt sellele on infrapunasagedused mikrolainete omadest kõrgemad, kuid nähtava valguse omadest madalamad. Teadlased jagavad infrapunakiirguse (IR) spektri kolmeks piirkonnaks. Lainepikkused on täpsustatud mikronites (sümboliseeritud µ, kus 1 µ = 10–6 meetrit) või nanomeetrites (lühendatud nm, kus 1 nm = 10–9 meetrit = 0,001 5). Lähedane IR -riba sisaldab energiat nähtavale lähimate lainepikkuste vahemikus, ligikaudu 0,750 kuni 1,300 5 (750 kuni 1300 nm). Vahepealne IR -riba (nimetatakse ka keskmiseks IR -ribaks) koosneb energiast vahemikus 1.300 kuni 3.000 5 (1300 kuni 3000 nm). Kaug IR -riba ulatub vahemikus 2000 kuni 14 000 5 (3000 nm kuni 1,4000 x 104 nm).

b) IR -vastuvõtt

Vastuvõtja koosneb fotodetektorist, mis arendab valgussignaali tekkides välja elektrisignaali. Detektori väljund filtreeritakse kitsaribalise filtri abil, mis kõrvaldab kõik sagedused kandesagedusest alla või üle selle (antud juhul 38 KHz). Filtreeritud väljund antakse seejärel sobivale seadmele, näiteks mikrokontrollerile või mikroprotsessorile, mis juhib selliseid seadmeid nagu arvuti või robot. Filtrite väljundi saab impulsside lugemiseks ühendada ka ostsilloskoobiga.

IR rakendused:

Infrapunaühendust kasutatakse mitmesugustes traadita side-, seire- ja juhtimisrakendustes. siin on mõned näidised:

· Koduse meelelahutuse kaugjuhtimispuldid

· Traadita (kohtvõrgud)

· Lingid sülearvutite ja lauaarvutite vahel

· Juhtmeta modem

· Sissetungimisandurid

· Liikumisandurid

· Tulekahjuandurid

· Öönägemise süsteemid

· Meditsiinilised diagnostikaseadmed

· Rakettide juhtimissüsteemid

· Geoloogilised jälgimisseadmed

IR -andmete edastamist ühest seadmest teise nimetatakse mõnikord kiirguseks.

2. samm: IR -andur ja NEC -protokoll Fromat

IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat
IR -andur ja NEC -protokoll Fromat

IR -andurid (joonis 1)

TSOP1738, SFH-5110-38 (38 kHz)

TSOP andurite omadused:

  • Nii eelvõimendi kui ka fotodetektor on ühes pakendis
  • Sisemine filter PCM sagedusele
  • Parem kaitse elektrivälja häirete eest
  • TTL ja CMOS ühilduvus
  • Väljund aktiivne madal Madal energiatarve
  • Kõrge immuunsus ümbritseva valguse suhtes
  • Võimalik pidev andmeedastus

NEC protokoll:

NEC IR edastusprotokoll kasutab sõnumibittide impulsskauguse kodeerimist. Iga impulssipurske pikkus on 562,5 µs, kandesagedusel 38 kHz (26,3 µs). Loogilised bitid edastatakse järgmiselt (joonis 2):

  • Loogiline '0' - 562,5 µs impulssipurse, millele järgneb 562,5 µs ruum, kogu edastusaeg 1,125 ms
  • Loogiline '1' - 562,5 µs impulssipurse, millele järgneb 1,6875 ms ruum, kogu edastusaeg 2,25 ms

Kandjaimpulss koosneb 21 tsüklist sagedusel 38 kHz. Voolutarbimise vähendamiseks on impulsside märgi ja ruumi suhe tavaliselt 1: 4:

(Joonis 3)

Iga koodijada algab 9 ms impulsiga, mida tuntakse kui AGC impulssi. Sellele järgneb 4,5 ms vaikus:

(Joonis 4)

Andmed koosnevad seejärel 32 bitist, 16-bitisest aadressist, millele järgneb 16-bitine käsk, mis on näidatud nende edastamise järjekorras (vasakult paremale):

(Joonis 5)

Neli baiti andmebitte saadetakse kõigepealt kõige vähem oluliseks bitiks. Joonis 1 illustreerib NEC IR edastusraami vormingut aadressi 00h (00000000b) ja käsu ADh (10101101b) jaoks.

Sõnumi raami edastamiseks on vaja kokku 67,5 ms. See vajab 27 ms, et edastada 16 bitti aadressi (aadress + pöördvõrdeline) ja 16 käsu bitti (käsk + vastupidine).

(Joonis 6)

Raami edastamiseks kuluv aeg:

16 bitti aadressi jaoks (aadress + pöördvõrdeline) vajavad aja edastamiseks 27 ms. Ja 16 bitti käsu jaoks (käsk + pöördvõrdeline) vajavad aja edastamiseks ka 27 ms. sest (aadress + aadressi pöördvõrdeline) või (käsk + käsk vastupidine) sisaldab alati 8 '0 ja 8' 1, nii (8 * 1,125 ms) + (8 * 2,25 ms) == 27 ms. vastavalt sellele kaadri edastamiseks kuluv kogu aeg on (9ms +4,5ms +27ms +27ms) = 67,5 ms.

KORDUSKOODID: Kui kaugjuhtimispuldi klahvi hoitakse all, väljastatakse korduskood, tavaliselt umbes 40 ms pärast sõnumi lõppu tähistavat impulsi. Korduskoodi saadetakse edasi 108 ms intervalliga, kuni võti lõpuks vabastatakse. Korduskood koosneb järgmisest järjestuses:

  • 9 ms juhtiv pulss
  • ruumi 2,25 ms
  • 562,5 µs impulss lõhkes, et märkida tühimiku lõpp (ja seega ka edastatud korduskoodi lõpp).

(Joonis 7)

Viivituse arvutamine (1 ms):

Kella sagedus = 11,0592 Mhz

Masina tsükkel = 12

Viivitus = 1 ms

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

= 65536 - 921 = 0xFC67

Samm 3: alalisvoolumootori juhtimine L293D abil

Alalisvoolumootori juhtimine L293D abil
Alalisvoolumootori juhtimine L293D abil

Alalisvoolumootor

Alalisvoolumootor muudab elektrienergia mehaaniliseks energiaks, mida saab kasutada paljude kasulike tööde tegemiseks. See võib tekitada mehaanilist liikumist, näiteks minu RoboCari edasi/tagasi. Alalisvoolumootorid on saadaval erinevates nimiväärtustes, näiteks 6V ja 12V. Sellel on kaks traati või tihvti. Me saame pöörata pöörlemissuunda, muutes sisendi polaarsust.

Siin eelistame L293D, kuna reiting 600mA sobib hästi väikeste alalisvoolumootorite juhtimiseks ja kaitsedioodid on integreeritud IC -sse. Iga tihvti kirjeldus on järgmine: Luba tihvtid: Need on tihvtid nr. 1 ja tihvt nr. 9. Tihvt nr. 1 kasutatakse Half-H juhi 1 ja 2 lubamiseks (H-sild vasakul). Tihvt nr. 9 kasutatakse H-silla juhi 3 ja 4 lubamiseks (H-sild paremal).

Kontseptsioon on lihtne, kui soovite kasutada konkreetset H -silda, peate andma kõrgele loogikale vastavad lubatud tihvtid koos toiteallikaga IC -le. Seda tihvti saab kasutada ka mootori kiiruse reguleerimiseks, kasutades PWM -tehnikat. VCC1 (tihvt 16): toitepinge. Ühendage see 5V toitega. VCC2 (tihvt 8): mootori toiteallikas. Rakendage sellele +ve pinge vastavalt mootori reitingule. Kui soovite oma mootorit 12 V toitega juhtida, rakendage sellele tihvtile 12 V.

Mootorit on võimalik juhtida ka otse akult, välja arvatud see, mida kasutatakse vooluahela toiteks. Lihtsalt ühendage selle aku +ve klemm VCC2 tihvtiga ja muutke mõlema aku GND ühiseks. (Selle pin -i MAX -pinge on selle andmelehe järgi 36V). GND (tihvtid 4, 5, 12, 13): ühendage need vooluahela tavalise GND -ga. Sisendid (tihvtid 2, 7, 10, 15):

Need on sisendpoldid, mille kaudu mikrokontrollerid või muud ahelad/IC -d edastavad juhtsignaale. Näiteks kui tihvti 2 (esimese poole H juhi sisend) puhul anname loogika 1 (5 V), saame pinge, mis on võrdne VCC2 -ga esimese poole H draiveri vastaval väljundpoldil, st tihvti nr. 3. Sarnaselt loogika jaoks 0 (0V) pin 2, kuvatakse 0V pin 3 -l. Väljundid (pin 3, 6, 11, 14): väljundid. Vastavalt sisendsignaalile tuleb väljundsignaal.

Mootori liigutused A B

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

…………… Peatus: madal: madal

…… päripäeva: madal: kõrge

Vastupäeva: kõrge: madal

……………. Peatus: kõrge: kõrge

Samm: mootorsõiduki juhi ja IR -anduri vooluahela skeemid

Mootori juhi ja IR -anduri vooluahelad
Mootori juhi ja IR -anduri vooluahelad
Mootori juhi ja IR -anduri vooluahelad
Mootori juhi ja IR -anduri vooluahelad
Mootori juhi ja IR -anduri vooluahelad
Mootori juhi ja IR -anduri vooluahelad

ATmega32 on väikese võimsusega 8-bitine CMOS-i mikrokontroller, mis põhineb AVR-i täiustatud RISCarchitecture'il. Täites võimsaid juhiseid ühe taktsükli jooksul, saavutab ATmega32 läbilaskevõime 1 MIPS / MHz, mis võimaldab süsteemi disaineril optimeerida energiatarbimist töötlemiskiiruse suhtes.

AVR tuum ühendab rikkaliku juhendikomplekti 32 üldotstarbelise tööregistriga. Kõik 32 registrit on otseselt ühendatud aritmeetilise loogikaüksusega (ALU), mis võimaldab juurdepääsu kahele sõltumatule registrile ühe käsuga, mis täidetakse ühe tsükli jooksul. Saadud arhitektuur on kooditõhusam, saavutades samal ajal läbilaskevõime kuni kümme korda kiiremini kui tavalised CISC -mikrokontrollerid.

ATmega32 pakub järgmisi funktsioone:

  • 32 kbaiti süsteemisisest programmeeritavat välkprogrammi mälu koos lugemis-kirjutamise võimalustega,
  • 1024 baiti EEPROM, 2K baiti SRAM,
  • 32 üldotstarbelist I/O liini,
  • 32 üldotstarbelist tööregistrit,
  • JTAG -liides Boundaryscanile,
  • Kiibil silumise tugi ja programmeerimine, kolm paindlikku taimerit/loendurit võrdlusrežiimidega, sisemised ja välised katkestused, seeriaprogrammeeritav USART, baitidele orienteeritud kahejuhtmeline jadaliides, 8-kanaliline,
  • 10-bitine ADC koos valikulise diferentsiaalse sisendastega ja programmeeritava võimendusega (ainult TQFP pakett),
  • programmeeritav valvekoer, millel on sisemine ostsillaator,
  • SPI jadaport ja
  • kuus tarkvaravalikulist energiasäästurežiimi.

    • Ooterežiim peatab protsessori, lubades samal ajal USART -i,
    • Kahe juhtmega liides, A/D muundur,
    • SRAM,
    • Taimer/loendurid,
    • SPI port ja
    • katkestage süsteem, et see töötaks.
    • Väljalülitusrežiim salvestab registri sisu, kuid külmutab ostsillaatori, keelates kõik muud kiibifunktsioonid kuni järgmise välise katkestuse või riistvara lähtestamiseni.
    • Energiasäästurežiimis töötab asünkroonne taimer jätkuvalt, võimaldades kasutajal säilitada taimeribaasi, kui ülejäänud seade magab.
    • ADC müravähendusrežiim peatab protsessori ja kõik I/O moodulid, välja arvatud asünkroonne taimer ja ADC, et minimeerida lülitusmüra ADC teisendamise ajal
    • Ooterežiimis töötab kristalli/resonaatori ostsillaator, kui ülejäänud seade magab. See võimaldab väga kiiret käivitamist koos väikese energiatarbega.
    • Laiendatud ooterežiimis töötavad nii põhiostsillaator kui ka asünkroonne taimer.

Siin on toodud kõik seotud ahelad ja antud on ka põhiahel (atmega32).

Samm: Avr -programmid

Avr programmid
Avr programmid
Avr programmid
Avr programmid

1. Kauganduri puhul:

#kaasama #kaasama

#include "remote.h"

// Globaalid lenduvad unsigned int Time; // Põhitaimer, salvestab aja 10us, // Värskendas ISR (TIMER0_COMP) lenduv allkirjastamata sümbol BitNo; // Pos järgmise BIT lenduva allkirjastamata char ByteNo; // praeguse baidi pos

lenduv allkirjastamata süsinik IrData [4]; // Neli andmebaiti Ir-paketti // 2-baitiline aadress 2-baidine Andmed lenduvad allkirjastamata märgid IrCmdQ [QMAX]; // Lõplik käsk on vastu võetud (puhver)

lenduv allkirjastamata sümbol PrevCmd; // Kasutatakse kordamiseks

// Muutujad, mida kasutatakse kordamiseks alles pärast klahvi teatud ajavajutust

lenduv allkirjastamata sümbol Korda; // 1 = jah 0 = ei ole lenduvat allkirjastamata sümbolit RCount; // Korda loendamist

lenduv süsi QFront = -1, QEnd = -1;

lenduv allkirjastamata sümbol; // Vastuvõtja olek

lenduv allkirjastamata märk Edge; // Katkestuse serv [RISING = 1 OR FALLING = 0]

lenduv allkirjastamata int stop;

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

tühine RemoteInit () {

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

peatus = 0; Olek = IR_VALIDATE_LEAD_HIGH; Serv = 0; Korda = 0;

// Seadistustaimer1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Määra võrdlusväärtus

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

if (oota) samas (QFront ==-1); else if (QFront ==-1) return (RC_NONE);

cmd = IrCmdQ [QFront];

kui (QFront == QEnd) QFront = QEnd = -1; else {kui (QFront == (QMAX-1)) QFront = 0; muidu QFront ++; }

tagasta cmd;

}

2. peamine ():

int main (tühine) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Infinite Loop kuni aktiivne IR-andur {

cmd = GetRemoteCmd (1);

lüliti (cmd) {

case xx: {// BOT Liigub edasi // Ch+ btn forwardmotor ();

murda; // Mõlemad mootorid edasi

}

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

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

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

vaikimisi: PORTC = 0x00; break; // Nii vasak kui ka parem mootor seisavad}

}

}/*Peamine lõpp*/

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

// See on põhimudel, kuid ma saan seda kasutada PWM -režiimis.

//…………………………………………….. Lõbutse hästi……………………………………………………//

Soovitan: