Tartalomjegyzék:
- 1. lépés: IntraRed kommunikáció
- 2. lépés: IR érzékelő és NEC protokoll Fromat
- 3. lépés: Az egyenáramú motor vezérlése az L293D használatával
- 4. lépés: A motorvezérlő és az infravörös érzékelő áramköri diagramjai
- 5. lépés: Avr programok
Videó: INFRA VÖRÖS TÁVIRÁNYÍTOTT ROBOKAR AVR (ATMEGA32) MCU használatával: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Ez a PROJEKT egy infravörös (IR) távirányítású RoboCar tervezését és megvalósítását írja le, amely különféle automatizált, pilóta nélküli vezérlő alkalmazásokhoz használható. Távirányítású RoboCar-t terveztem (bal-jobb/elöl-hátul mozgás). A teljes rendszer mikrokontrollerre (Atmega32) épül, amely intelligensebbé és könnyen módosíthatóvá teszi a vezérlőrendszert más alkalmazásokhoz. Lehetővé teszi a felhasználó számára a RoboCar kezelését vagy vezérlését, valamint a hálózati kapcsoló működtetését körülbelül 5 méter távolságból.
Kulcsszavak: IR dekóder, AVR (Atmega32) mikrokontroller, TV távirányító, vezeték nélküli kommunikáció
_
1. lépés: IntraRed kommunikáció
Az IR kommunikáció elve:
a) IR átvitel
Az IR LED jeladója az áramkörében, amely infravörös fényt bocsát ki minden kapott elektromos impulzusra. Ez az impulzus a távirányító gombjának megnyomásakor keletkezik, ezzel befejezve az áramkört, torzítást biztosítva a LED -nek. Az előfeszített LED 940 nm hullámhosszú fényt bocsát ki impulzusok sorozataként, a gomb megnyomásának megfelelően. Mivel azonban az infravörös LED mellett sok más infravörös fényforrás, például mi, emberek, izzók, nap stb., Az átvitt információk zavarhatók. Erre a problémára a moduláció a megoldás. Az átvitt jelet 38 KHz (vagy bármely más, 36 és 46 KHz közötti frekvencia) vivőfrekvenciával modulálják. Az IR LED ezen a frekvencián oszcillál az impulzus időtartamára. Az információ vagy a fényjel impulzusszélesség modulált, és a 38 KHz -es frekvencia tartalmazza. Az infravörös átvitel az elektromágneses sugárzási tartományban lévő energiára vonatkozik, a látható fénynél hosszabb, de a rádióhullámoknál rövidebb hullámhosszon. Ennek megfelelően az infravörös frekvencia magasabb, mint a mikrohullámoké, de alacsonyabb, mint a látható fényé. A tudósok az infravörös sugárzás (IR) spektrumát három régióra osztják. A hullámhosszakat mikronban (szimbolizálva µ, ahol 1 µ = 10-6 méter) vagy nanométerben (rövidítve nm, ahol 1 nm = 10-9 méter = 0,001 5) határozzák meg. A közeli infravörös sáv a láthatóhoz legközelebb eső hullámhossztartományban tartalmaz energiát, körülbelül 0,750 és 1,300 5 között (750-1300 nm). A köztes IR -sáv (más néven középső IR -sáv) az 1.300 és 3.000 5 közötti (1300-3000 nm) tartományú energiából áll. A távoli IR -sáv 2000 és 14 000 5 között van (3000 nm és 1,4000 x 104 nm között).
b) IR vétel
A vevőegység egy fotóérzékelőből áll, amely fénykibocsátáskor elektromos jelet ad ki. Az érzékelő kimenetét keskeny sávú szűrővel szűrjük, amely elveti az összes frekvenciát a vivőfrekvencia alatt vagy felett (ebben az esetben 38 KHz). A szűrt kimenetet ezután a megfelelő eszköz kapja meg, például egy mikrokontroller vagy egy mikroprocesszor, amely olyan eszközöket vezérel, mint egy számítógép vagy egy robot. A szűrők kimenete az oszcilloszkóphoz is csatlakoztatható az impulzusok leolvasásához.
Az IR alkalmazásai:
Az infravörös technológiát számos vezeték nélküli kommunikációs, megfigyelési és vezérlési alkalmazásban használják. Íme néhány példa:
· Otthoni szórakoztató távirányító dobozok
· Vezeték nélküli (helyi hálózatok)
· Kapcsolatok notebook számítógépek és asztali számítógépek között
· Vezeték nélküli modem
· Behatolásjelzők
· Mozgásérzékelők
· Tűzérzékelők
· Éjjellátó rendszerek
· Orvosi diagnosztikai berendezés
· Rakétairányító rendszerek
· Geológiai megfigyelő eszközök
Az infravörös adatok egyik eszközről a másikra történő továbbítását néha sugárzásnak nevezik.
2. lépés: IR érzékelő és NEC protokoll Fromat
IR érzékelők (1. ábra)
TSOP1738, SFH-5110-38 (38 kHz)
TSOP érzékelők Jellemzők:
- Az előerősítő és a fényérzékelő egy csomagban található
- Belső szűrő a PCM frekvenciához
- Javított árnyékolás az elektromos mező zavaraival szemben
- TTL és CMOS kompatibilitás
- Kimenet aktív alacsony Alacsony energiafogyasztás
- Magas immunitás a környezeti fény ellen
- Folyamatos adatátvitel lehetséges
NEC protokoll:
A NEC IR átviteli protokoll az üzenetbitek impulzus távolság kódolását használja. Minden impulzus sorozat 562,5 µs hosszú, 38 kHz (26,3 µs) vivőfrekvenciával. A logikai bitek továbbítása a következőképpen történik (2. ábra):
- Logikai "0" - 562,5 µs impulzus tört, majd 562,5 µs tér, teljes átviteli idővel 1,125 ms
- Logikai '1' - 562,5 µs impulzus tört, majd 1,6875 ms tér, teljes átviteli idővel 2,25 ms
A hordozó impulzus 21 ciklusból áll 38 kHz -en. Az impulzusok jel/tér aránya általában 1: 4, hogy csökkentse az áramfogyasztást:
(3. ábra)
Minden kódsorozat 9 ms -os impulzussal kezdődik, az úgynevezett AGC impulzus. Ezt 4,5 ms csend követi:
(4. ábra)
Az adatok ezután 32 bitből, egy 16 bites címből és egy 16 bites parancsból állnak, az átvitel sorrendjében (balról jobbra):
(5. ábra)
A négy bájtnyi adatbit mindegyike először küldi el a legkevésbé szignifikáns bitet. Az 1. ábra egy NEC IR átviteli keret formátumát szemlélteti 00h (00000000b) címre és ADh parancsra (10101101b).
Az üzenetkeret továbbításához összesen 67,5 ms szükséges. 27 ms -ra van szüksége a 16 bit cím (cím + inverz) és a 16 parancsparancs (parancs + inverz) továbbításához.
(6. ábra)
A keret továbbításához szükséges idő:
A cím 16 bitje (cím + inverz) 27 ms -ot igényel az átviteli időhöz. A parancs 16 bitje (parancs + inverz) pedig 27 ms -ot is. mert (cím + cím inverz) vagy (parancs + parancs inverz) mindig tartalmaz 8 '0 -t és 8' 1 -et, így (8 * 1,125 ms) + (8 * 2,25 ms) == 27 ms. e szerint a keret továbbításához szükséges teljes idő (9ms +4,5ms +27ms +27ms) = 67,5 ms.
ISMÉTLŐKÓDOK: Ha a távirányító gombját lenyomva tartja, ismétlődő kódot ad ki, általában körülbelül 40 ms -tal az üzenet végét jelző impulzus tört után. Az ismétlődő kód továbbküldése 108 ms -os időközönként történik, amíg a kulcs végül elengedésre kerül. Az ismétlődő kód az alábbiakból áll, sorrendben:
- 9 ms -os vezető impulzus tört ki
- 2,25 ms -os hely
- 562,5 µs impulzus tört a tér végének (és így az átvitt ismétlődő kód végének) jelzésére.
(7. ábra)
Késleltetés számítása (1 ms):
Óra frekvencia = 11,0592 Mhz
Gépciklus = 12
Késleltetés = 1 ms
TimerValue = 65536 - ((Delay * ClockFreq)/Machine Cycle) = 65536 - ((1ms * 11.0592Mhz)/12)
= 65536 - 921 = 0xFC67
3. lépés: Az egyenáramú motor vezérlése az L293D használatával
DC motor
Az egyenáramú motor az elektromos energiát mechanikai energiává alakítja, amely számos hasznos feladat elvégzésére használható. Olyan mechanikus mozgást képes előállítani, mint a RoboCar előre -hátra/Visszajelzése. Az egyenáramú motorok különböző besorolásúak, például 6V és 12V. Két vezetéke vagy csapja van. Megfordíthatjuk a forgásirányt a bemenet polaritásának megfordításával.
Itt az L293D -t részesítjük előnyben, mivel a 600 mA -es teljesítmény jó kis DC -motorok meghajtásához, és a védő diódák magukban az IC -ben vannak. Az egyes csapok leírása a következő: Tűk engedélyezése: Ezek a sz. 1 és a sz. 9. Tű sz. Az 1 az 1-es és 2-es Half-H meghajtó engedélyezésére szolgál (H-híd a bal oldalon). Tű sz. A 9 a 3-as és 4-es H-híd meghajtójának engedélyezésére szolgál (H-híd a jobb oldalon).
A koncepció egyszerű, ha egy adott H hidat szeretne használni, akkor magas logikát kell adnia a megfelelő engedélyező csapokhoz, valamint az IC tápellátásához. Ez a csap is használható a motor fordulatszámának szabályozására PWM technikával. Csatlakoztassa az 5V -os tápellátáshoz. VCC2 (8. tüske): Tápellátás a motorhoz. Húzzon rá +ve feszültséget a motor névleges értékének megfelelően. Ha a motorját 12 V -os feszültséggel szeretné hajtani, akkor 12 V -os feszültséget használjon erre a csapra.
Lehetőség van arra is, hogy a motort közvetlenül akkumulátorral vezessük, kivéve az áramkör áramellátását. Csak csatlakoztassa az akkumulátor +ve kivezetését a VCC2 tűhöz, és tegye közösvé mindkét akkumulátor GND -jét. (A MAX feszültség ezen a tűn 36V, mint az adatlapja). GND (4., 5., 12., 13. láb): Csatlakoztassa őket az áramkör általános GND -jéhez. Bemenetek (2., 7., 10., 15. láb):
Ezek olyan bemeneti csapok, amelyeken keresztül a vezérlőjeleket mikrokontrollerek vagy más áramkörök/IC -k adják. Például, ha a 2 -es tűn (az első fél H meghajtó bemenete) 1 -es logikát adunk (5V), akkor VCC2 -vel egyenlő feszültséget kapunk az első fél H meghajtó megfelelő kimeneti tűjén, azaz a sz. 3. Hasonlóan a Logic esetében 0 (0V) a 2 -es tűn, 0V a 3 -as tűn. Kimenetek (3 -as, 6 -os, 11 -es, 14 -es érintkezők): kimenetek. A bemeneti jel szerint a kimeneti jel érkezik.
Motoros mozgások A B
-----------------------------------------------------------------------------------------
…………… Stop: Alacsony: Alacsony
…… Óramutató járásával megegyező irányban: Alacsony: Magas
Az óramutató járásával ellentétes irányban: Magas: Alacsony
……………. Állj: Magas: Magas
4. lépés: A motorvezérlő és az infravörös érzékelő áramköri diagramjai
Az ATmega32 egy kis teljesítményű, 8 bites CMOS mikrokontroller, amely az AVR továbbfejlesztett RISCarchitecture-jén alapul. A hatékony utasítások végrehajtásával egyetlen órajel alatt az ATmega32 1 MIPS / MHz -es teljesítményt ér el, lehetővé téve a rendszer tervezőjének, hogy optimalizálja az energiafogyasztást a feldolgozási sebességhez képest.
Az AVR mag gazdag utasításkészletet és 32 általános célú munkaregisztert tartalmaz. Mind a 32 regiszter közvetlenül kapcsolódik az aritmetikai logikai egységhez (ALU), lehetővé téve két független regiszter elérését egyetlen utasításban, egy óra alatt végrehajtva. Az így kapott architektúra kódhatékonyabb, miközben akár tízszer gyorsabb teljesítményt ér el, mint a hagyományos CISC mikrovezérlők.
Az ATmega32 a következő funkciókat kínálja:
- 32 kbyte rendszerben programozható flash program memória olvasás közben írás közben,
- 1024 bájt EEPROM, 2 bájtos SRAM,
- 32 általános célú I/O vonal,
- 32 általános célú munkaregiszter,
- JTAG felület a Boundaryscan számára,
- On-chip hibakeresési támogatás és programozás, három rugalmas időzítő/számláló összehasonlítási módokkal, belső és külső megszakítások, soros programozható USART, bájtorientált kétvezetékes soros interfész, 8 csatornás,
- 10 bites ADC opcionális differenciál bemeneti fokozatgal, programozható erősítéssel (csak TQFP csomag),
- programozható Watchdog Timer belső oszcillátorral,
- egy SPI soros port, és
-
hat szoftverrel választható energiatakarékos mód.
- A készenléti mód leállítja a CPU -t, miközben engedélyezi az USART -ot,
- Kétvezetékes interfész, A/D átalakító,
- SRAM,
- Időzítő/számlálók,
- SPI port, és
- megszakítja a rendszert a működés folytatásához.
- A Power-down mód elmenti a regiszter tartalmát, de lefagyasztja az oszcillátort, letiltva az összes többi chip funkciót a következő külső megszakításig vagy hardver-visszaállításig.
- Energiatakarékos módban az aszinkron időzítő továbbra is fut, lehetővé téve a felhasználó számára az időzítő alapjának fenntartását, amíg az eszköz többi része alszik.
- Az ADC zajcsökkentő mód leállítja a CPU -t és az összes I/O modult, kivéve az aszinkron időzítőt és az ADC -t, hogy minimálisra csökkentse a kapcsolási zajt az ADC átalakítások során
- Készenléti állapotban a kristály/rezonátor oszcillátor működik, miközben a készülék többi része alszik. Ez nagyon gyors indítást tesz lehetővé alacsony energiafogyasztással kombinálva.
- Kiterjesztett készenléti üzemmódban mind a fő oszcillátor, mind az aszinkron időzítő tovább fut.
Az összes kapcsolódó áramkör itt található, és a főáramkör (atmega32) is adott.
5. lépés: Avr programok
1. "Távoli érzékelő" esetén:
#befoglalni #befoglalni
#include "remote.h"
// Globálok illékony unsigned int Time; // Fő időzítő, 10us -ban tárolja az időt, // Frissítette az ISR (TIMER0_COMP) illékony előjel nélküli karakter BitNo; // A következő BIT illékony, előjel nélküli karaktere ByteNo; // Az aktuális bájt poz
illékony, alá nem írt karakter IrData [4]; // Az Ir Packet négy adatbájtja
illékony, alá nem írt char PrevCmd; // Ismétlésre használják
// Az ismétléshez használt változók csak egy gomb bizonyos ideig történő lenyomása után kezdődnek
illékony, alá nem írt karakter Ismétlés; // 1 = igen 0 = nincs illékony előjel nélküli karakter RCount; // Ismétlés
illékony szén QFront = -1, QEnd = -1;
illékony, alá nem írt karakterállapot; // Fogadó állapota
illékony, alá nem írt karakter Edge; // A megszakítás széle [RISING = 1 OR FALLING = 0]
illékony, előjel nélküli int stop;
/************************************************* ******************************************** / /*FUNCTIONSSTARTS* / / ************************************************ *********************************************
void RemoteInit () {
char i; (i = 0; i <4; i ++) esetén IrData = 0;
stop = 0; Állapot = IR_VALIDATE_LEAD_HIGH; Szél = 0; Ismétlés = 0;
// Beállítási időzítő1 // ------------ TCCR0 | = ((1 <
TIMSK | = (1 <
OCR0 = TIMER_COMP_VAL; // Összehasonlítási érték beállítása
unsigned char GetRemoteCmd (char wait) {unsigned char cmd;
if (várj) míg (QFront ==-1); else if (QFront ==-1) return (RC_NONE);
cmd = IrCmdQ [QFront];
ha (QFront == QEnd) QFront = QEnd = -1; else {ha (QFront == (QMAX-1)) QFront = 0; más QFront ++; }
return cmd;
}
2. fő ():
int main (void) {
uint8_t cmd = 0; DDRB = 0x08;
DDRD = 0x80;
DDRC = 0x0f; PORTC = 0x00;
while (1) // Végtelen hurok az aktív IR-érzékelőhöz {
cmd = GetRemoteCmd (1);
kapcsoló (cmd) {
xx eset: {// BOT Előrelép // Ch+ btn forwardmotor ();
szünet; // Mindkét motor előrefelé
}
………………………………………………….
………………………………………………….
………………………………………………….
alapértelmezett: PORTC = 0x00; break; // A bal és a jobb motor is leáll}
}
}/*Fő vége*/
……………………………………………………………………………………………………………………
// Alapmodell, de használhatom PWM módban.
//…………………………………………….. Érezd jól magad……………………………………………………//
Ajánlott:
LLLT LED vörös fényterápia fülzúgás halláskárosodáshoz: 4 lépés
LLLT LED vörös fényterápia fülzúgás halláskárosodáshoz: Tomboló fülzúgás (csengés a fülemben), amióta csak emlékszem. Tehát nem történt " gyors megoldás " ez látszólag segít enyhíteni. Vannak, akik úgy gondolják, hogy a fülzúgás lehet reakció az antibiotikumokra, reakció szteroidokra, érzékeny
DIY nagy teljesítményű vörös fényterápia 660nm zseblámpa fáklyára fájdalom esetén: 7 lépés
DIY nagy teljesítményű vörös fényterápia 660nm zseblámpa zseblámpa fájdalomhoz: Tudsz készíteni egy nagy teljesítményű DIY 660nm vörös fényterápiás zseblámpát, csak 80 dollárért? Egyes vállalatok azt mondják, hogy van valami különleges mártásuk vagy nagy teljesítményű eszközük, de még ők is hamisítják a számukat, hogy lenyűgözően szóljanak. Egy ésszerűen d
Csomópont-Vörös IoT nagy hatótávolságú rezgés- és hőmérséklet-érzékelővel: 34 lépés
Node-RED IoT nagy hatótávolságú rezgés- és hőmérsékletérzékelővel: Bemutatjuk az NCD nagy hatótávolságú vezeték nélküli hőmérséklet-páratartalom-érzékelőjét, amely akár 28 mérföldes hatótávolsággal büszkélkedhet vezeték nélküli háló hálózati architektúrával. A Honeywell HIH9130 hőmérséklet -páratartalom -érzékelő beépítése rendkívül pontos hőmérsékletet és
Csontváz tompított vörös szemekkel: 16 lépés (képekkel)
Csontváz halvány vörös szemekkel: Ki nem szereti a jó csontváz kelléket Halloweenkor? Ez az útmutató azt mutatja be, hogyan állíthat össze pár izzó vörös szemet a csontvázához (vagy csak egy koponyához), amelyek halványodnak és élénkebbé válnak, hátborzongató hatást biztosítva a trükköknek vagy a kezelőknek
Vörös léggömb szén -monoxid -érzékelő: 5 lépés
Piros léggömb szén-monoxid-érzékelő: A szén-monoxid-érzékelő magas szintű CO-gázkoncentrációt észlel a levegőben. Amikor a koncentráció eléri a magas szintet (amit előre beállítottunk), a LED színe zöldről pirosra változik