Sisukord:
- Samm: sisemine suhtlus
- 2. samm: IR -andur ja NEC -protokoll Fromat
- Samm 3: alalisvoolumootori juhtimine L293D abil
- Samm: mootorsõiduki juhi ja IR -anduri vooluahela skeemid
- Samm: Avr -programmid
Video: INFRA PUNANE KAUGITAV ROBOKAR AVR (ATMEGA32) MCU abil: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
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
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 -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
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
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
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:
DIY komplekt tuuleveski kujuga punane vilkuv tuli: 6 sammu (piltidega)
DIY komplekt tuuleveski kujuga punane LED -välklamp: Kirjeldus: See on DIY MCU disainiõpetus Elektroonilised tuuleveskite komplektid jootmiseks. Lihtne kokku panna: see toode on teile saadaval, komponendikomplekt tuleb paigaldada jahedasse moodulisse nagu tuuleveski. Komplekti komponentide markeri nimi oli
Sõlm-PUNANE: RS485 Raspberry Pi Õpetus: 8 sammu
Node-RED: RS485 Raspberry Pi õpetus: voolupõhine visuaalse programmeerimise tööriist Node-RED muutub Raspberry Pi arendajate jaoks üha populaarsemaks. See juhend annab teile teada, kuidas kasutada meie isoleeritud RS422 / RS485 jadakaablit sõlmepunase all lihtsa RS485-side ja MODBUS-i jaoks
Traadita vibratsiooni ja temperatuuri andmete saatmine Google'i arvutustabelitele sõlme-PUNANE abil: 37 sammu
Juhtmeta vibratsiooni ja temperatuuri andmete saatmine Google'i lehtedele Node-RED abil: tutvustame NCD kaugjuhtimispuldi IoT Industrial traadita vibratsiooni- ja temperatuuriandurit, mille traadita võrgusilma kasutamine on kuni 2 miili ulatuses. See seade sisaldab täpset 16-bitist vibratsiooni- ja temperatuuriandurit
Kella tegemine M5stick C abil Arduino IDE abil RTC reaalajas kell M5stack M5stick-C abil: 4 sammu
Kella tegemine M5stick C abil, kasutades Arduino IDE | RTC reaalajas kell koos M5stack M5stick-C-ga: Tere, selles juhendis olevad poisid, me õpime, kuidas Arduino IDE abil kella m5stick-C arendusplaadiga teha. Nii kuvab m5stick kuupäeva, kellaaja ja amp; kuunädal ekraanil
E-posti märguanded vibratsiooni ja temperatuuri kohta sõlme-PUNANE abil: 33 sammu
Vibratsiooni ja temperatuuri hoiatused e-posti teel, kasutades Node-RED-i: tutvustame NCD kaugjuhtimispuldi IoT Industrial traadita vibratsiooni- ja temperatuuriandurit, mille traadita võrgusilma kasutamine on kuni 2 miili ulatuses. See seade sisaldab täpset 16-bitist vibratsiooni- ja temperatuuriandurit