Obsah:

INFRA ČERVENÝ DIAĽKOVO RIADENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 krokov
INFRA ČERVENÝ DIAĽKOVO RIADENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 krokov

Video: INFRA ČERVENÝ DIAĽKOVO RIADENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 krokov

Video: INFRA ČERVENÝ DIAĽKOVO RIADENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 krokov
Video: Как быстро исправить код ошибки P4 на кондиционере Midea 2024, Júl
Anonim
INFRA ČERVENÝ DIAĽKOVO ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32)
INFRA ČERVENÝ DIAĽKOVO ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32)

Tento PROJEKT popisuje návrh a implementáciu infračerveného (IR) diaľkovo ovládaného robota, ktoré je možné použiť pre rôzne automatizované aplikácie bez posádky. Navrhol som diaľkovo ovládaný RoboCar (pohyb vľavo-vpravo/vpredu-vzadu). Celý systém je založený na mikrokontroléri (Atmega32), ktorý robí riadiaci systém múdrejším a ľahko sa upravuje pre iné aplikácie. Umožňuje užívateľovi ovládať alebo ovládať RoboCar a ovládať sieťový vypínač zo vzdialenosti približne 5 metrov.

Kľúčové slová: IR dekodér, mikrokontrolér AVR (Atmega32), diaľkový ovládač televízora, bezdrôtová komunikácia

_

Krok 1: IntraRed komunikácia

IntraRed komunikácia
IntraRed komunikácia

IR komunikačný princíp:

a) IR prenos

Vysielač IR LED vo svojom obvode, ktorý vyžaruje infračervené svetlo pre každý elektrický impulz, ktorý mu je daný. Tento impulz je generovaný stlačením tlačidla na diaľkovom ovládači, čím sa obvod dokončí a poskytne sa skreslenie diódy LED. Predpätá LED dióda vyžaruje svetlo vlnovej dĺžky 940 nm ako sériu impulzov zodpovedajúcich stlačenému tlačidlu. Pretože však spolu s infračervenou diódou LED existuje mnoho ďalších zdrojov infračerveného svetla, ako sú naše ľudské bytosti, žiarovky, slnko atď., Môžu byť prenášané informácie rušené. Riešením tohto problému je modulácia. Vysielaný signál je modulovaný pomocou nosnej frekvencie 38 KHz (alebo akejkoľvek inej frekvencie od 36 do 46 KHz). IR LED dióda je nútená kmitať na tejto frekvencii počas doby trvania impulzu. Informácie alebo svetelné signály sú modulované šírkou impulzu a sú obsiahnuté vo frekvencii 38 KHz. Infračervený prenos označuje energiu v oblasti spektra elektromagnetického žiarenia o vlnových dĺžkach dlhších ako viditeľné svetlo, ale kratších ako rádiových vĺn. Infračervené frekvencie sú zodpovedajúco vyššie ako mikrovlny, ale nižšie ako frekvencie viditeľného svetla. Vedci rozdeľujú spektrum infračerveného žiarenia (IR) do troch oblastí. Vlnové dĺžky sú špecifikované v mikrónoch (symbolizované µ, kde 1 µ = 10-6 metrov) alebo v nanometroch (skrátene nm, kde 1 nm = 10-9 metrov = 0,001 5). Blízke IR pásmo obsahuje energiu v rozsahu vlnových dĺžok najbližších k viditeľnému, od približne 0,750 do 1,300 5 (750 až 1300 nm). Stredné IR pásmo (nazývané tiež stredné IR pásmo) pozostáva z energie v rozsahu 1 300 až 3 000 5 (1 300 až 3 000 nm). Ďaleké IR pásmo sa rozprestiera od 2 000 do 14 000 5 (3 000 nm až 1 4 000 x 104 nm).

b) IR príjem

Prijímač sa skladá z foto detektora, ktorý vyvíja výstupný elektrický signál, keď naň dopadá svetlo. Výstup detektora je filtrovaný pomocou úzkopásmového filtra, ktorý zahodí všetky frekvencie pod alebo nad nosnú frekvenciu (v tomto prípade 38 KHz). Filtrovaný výstup sa potom odovzdá vhodnému zariadeniu, ako je mikrokontrolér alebo mikroprocesor, ktoré ovláda zariadenia ako počítač alebo robot. Výstup z filtrov je možné pripojiť aj k osciloskopu na čítanie impulzov.

Aplikácie IR:

Infračervené žiarenie sa používa v rôznych aplikáciách bezdrôtovej komunikácie, monitorovania a riadenia. Tu je niekoľko príkladov:

· Diaľkové ovládače pre domácu zábavu

· Bezdrôtové (lokálne siete)

· Prepojenia medzi prenosnými a stolnými počítačmi

· Bezdrôtový modem

· Detektory narušenia

· Detektory pohybu

· Požiarne senzory

· Systémy nočného videnia

· Lekárske diagnostické zariadenia

· Riadiace systémy rakiet

· Geologické monitorovacie zariadenia

Prenos infračervených údajov z jedného zariadenia do druhého sa niekedy označuje ako vyžarovanie.

Krok 2: IR senzor a protokol NEC Fromat

IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat
IR senzor a protokol NEC Fromat

IR senzory (obr. 1)

TSOP1738, SFH-5110-38 (38kHz)

Vlastnosti senzorov TSOP:

  • Predzosilňovač a detektor fotografií sú v jednom balení
  • Interný filter pre frekvenciu PCM
  • Vylepšené tienenie proti rušeniu elektrickým poľom
  • Kompatibilita s TTL a CMOS
  • Aktívny výstup nízky Nízka spotreba energie
  • Vysoká odolnosť voči okolitému svetlu
  • Možný nepretržitý prenos dát

Protokol NEC:

Prenosový protokol NEC IR používa kódovanie impulzných vzdialeností bitov správy. Každý impulzný impulz je dlhý 562,5 µs na nosnej frekvencii 38 kHz (26,3 µs). Logické bity sa prenášajú nasledovne (obr. 2):

  • Logické „0“- impulzný impulz 562,5 µs, za ktorým nasleduje priestor 562,5 µs, s celkovým vysielacím časom 1,125 ms
  • Logický „1“- impulzný impulz 562,5 µs, za ktorým nasleduje priestor 1,6875 ms s celkovým vysielacím časom 2,25 ms

Nosný impulz pozostáva z 21 cyklov pri 38 kHz. Impulzy majú zvyčajne pomer značka/priestor 1: 4, aby sa znížila spotreba prúdu:

(Obr. 3)

Každá sekvencia kódu začína impulzom 9 ms, známym ako impulz AGC. Potom nasleduje 4,5 ms ticho:

(Obr. 4)

Dáta potom pozostávajú z 32 bitov, 16-bitovej adresy, za ktorou nasleduje 16-bitový príkaz, zobrazených v poradí, v akom sú prenášané (zľava doprava):

(Obr. 5)

Štyrom bajtom dátových bitov sa najskôr pošle najmenej významný bit. Obrázok 1 zobrazuje formát prenosového rámca NEC IR pre adresu 00h (00000000b) a príkaz ADh (10101101b).

Na prenos rámca správy je potrebných celkovo 67,5 ms. Na prenos 16 bitov adresy (adresa + inverzia) a 16 bitov príkazu (príkaz + inverzia) potrebuje 27 ms.

(Obr. 6)

Čas potrebný na prenos rámca:

16 bitov pre adresu (adresa + inverzná) potrebuje na prenos času 27 ms. A 16 bitov pre príkaz (príkaz + inverzná) tiež potrebuje 27 ms na prenos času. pretože (adresa + adresa inverzne) alebo (príkaz + príkaz inverzne) bude vždy obsahovať 8 '0 a 8' 1, takže (8 * 1,125ms) + (8 * 2,25ms) == 27 ms. podľa tohto celkového času potrebného na prenos rámca je (9ms +4,5ms +27ms +27ms) = 67,5 ms.

OPAKOVACIE KÓDY: Ak podržíte stlačené tlačidlo na diaľkovom ovládači, vydá sa opakovací kód, spravidla asi 40 ms po impulznom impulze, ktorý znamenal koniec správy. Opakovaný kód sa bude naďalej odosielať v intervaloch 108 ms, kým sa kľúč nakoniec neuvoľní. Opakovací kód pozostáva z nasledujúcich v poradí:

  • impulzný impulz vedúci k 9 ms
  • priestor 2,25 ms
  • impulzný impulz 562,5 µs na označenie konca medzery (a teda konca prenášaného opakujúceho sa kódu).

(Obr. 7)

Výpočet oneskorenia (1 ms):

Frekvencia hodín = 11,0592 Mhz

Strojový cyklus = 12

Oneskorenie = 1 ms

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

= 65536 - 921 = 0xFC67

Krok 3: Ovládanie jednosmerného motora pomocou L293D

Ovládanie jednosmerného motora pomocou L293D
Ovládanie jednosmerného motora pomocou L293D

Jednosmerný motor

Jednosmerný motor premieňa elektrickú energiu na mechanickú, ktorú je možné použiť na mnoho užitočných prác. Môže produkovať mechanický pohyb, ako napríklad Prejsť dopredu/dozadu na mojom RoboCar. Jednosmerné motory sa dodávajú v rôznych hodnotách, ako 6V a 12V. Má dva drôty alebo kolíky. Smer otáčania môžeme obrátiť obrátením polarity vstupu.

Tu uprednostňujeme L293D, pretože hodnotenie 600mA je dobré na pohon malých jednosmerných motorov a ochranné diódy sú súčasťou samotného integrovaného obvodu. Popis každého pinu je nasledujúci: Povoliť piny: Jedná sa o piny č. 1 a kolík č. 9. Pin č. 1 slúži na aktiváciu ovládačov Half-H 1 a 2. (Most H na ľavej strane). Pin č. 9 slúži na aktiváciu vodiča H-mostíka 3 a 4. (Most H na pravej strane).

Koncept je jednoduchý, ak chcete použiť konkrétny mostík H, musíte dať vysokú logiku zodpovedajúcim povoľovacím kolíkom spolu s napájaním integrovaného obvodu. Tento kolík je možné použiť aj na ovládanie otáčok motora technikou PWM. VCC1 (kolík 16): Kolík napájacieho zdroja. Pripojte ho k napájaniu 5V. VCC2 (kolík 8): Napájanie motora. Aplikujte naň kladné napätie podľa výkonu motora. Ak chcete poháňať svoj motor 12 V, použite na tento kolík 12 V.

Je tiež možné poháňať motor priamo na batériu, inú ako tú, ktorá sa používa na napájanie obvodu, stačí pripojiť kladný pól tejto batérie na kolík VCC2 a GND oboch batérií sa stane spoločným. (Maximálne napätie na tomto kolíku je 36 V podľa jeho technického listu). GND (piny 4, 5, 12, 13): Pripojte ich k spoločnému GND obvodu. Vstupy (piny 2, 7, 10, 15):

Sú to vstupné piny, cez ktoré sú riadiace signály dodávané mikrokontrolérmi alebo inými obvodmi/integrovanými obvodmi. Napríklad, ak na pine 2 (Vstup 1. polovičného budiča H) dáme Logiku 1 (5V), dostaneme napätie rovnajúce sa VCC2 na zodpovedajúcom výstupnom kolíku budiča H 1. polovice, t.j. č. 3. Podobne pre logiku 0 (0V) na pine 2, 0V na pine 3. Výstupy (piny 3, 6, 11, 14): Výstupy pinov. Podľa vstupného signálu prichádza výstupný signál.

Pohyby motora A B

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

…………… Zastavenie: Nízke: Nízke

…… V smere hodinových ručičiek: Nízka: Vysoká

Proti smeru hodinových ručičiek: Vysoká: Nízka

……………. Zastavenie: Vysoká: Vysoká

Krok 4: Schémy zapojenia ovládača motora a infračerveného senzora

Schémy zapojenia ovládača motora a infračerveného senzora
Schémy zapojenia ovládača motora a infračerveného senzora
Schémy zapojenia ovládača motora a infračerveného senzora
Schémy zapojenia ovládača motora a infračerveného senzora
Schémy zapojenia ovládača motora a infračerveného senzora
Schémy zapojenia ovládača motora a infračerveného senzora

ATmega32 je 8-bitový mikrokontrolér CMOS s nízkym výkonom, ktorý je založený na RISCarchitecture vylepšenej AVR. Vykonaním výkonných inštrukcií v jednom hodinovom cykle dosahuje ATmega32 priepustnosť blížiacu sa 1 MIPS na MHz, čo umožňuje návrhárovi systému optimalizovať spotrebu energie oproti rýchlosti spracovania.

Jadro AVR kombinuje bohatú sadu inštrukcií s 32 pracovnými registrami na všeobecné použitie. Všetkých 32 registrov je priamo spojených s aritmetickou logickou jednotkou (ALU), čo umožňuje prístup k dvom nezávislým registrom v rámci jednej inštrukcie vykonanej v jednom hodinovom cykle. Výsledná architektúra je kódovo efektívnejšia a dosahuje priepustnosti až desaťkrát rýchlejšie ako konvenčné mikrokontroléry CISC.

ATmega32 poskytuje nasledujúce funkcie:

  • 32 kB programovateľnej pamäte Flash programu v systéme s funkciami čítania a zápisu,
  • 1024 bajtov EEPROM, 2 kB bajtov SRAM,
  • 32 univerzálnych vstupno -výstupných liniek,
  • 32 univerzálnych pracovných registrov,
  • rozhranie JTAG pre Boundaryscan,
  • Podpora a programovanie ladenia na čipe, tri flexibilné časovače/počítadlá s režimami porovnávania, interné a externé prerušenia, sériovo programovateľný USART, dvojvodičové sériové rozhranie orientované na bajty, 8-kanálový,
  • 10-bitový ADC s voliteľným diferenciálnym vstupným stupňom s programovateľným zosilnením (iba balík TQFP),
  • programovateľný časovač strážneho psa s vnútorným oscilátorom,
  • sériový port SPI a
  • šesť softvérovo voliteľných režimov šetrenia energie.

    • Nečinný režim zastaví procesor a zároveň povolí USART,
    • Dvojvodičové rozhranie, A/D prevodník,
    • SRAM,
    • Časovač/počítadlá,
    • Port SPI a
    • systém prerušenia, aby pokračoval v prevádzke.
    • Režim vypnutia uloží obsah registra, ale zmrazí oscilátor a vypne všetky ostatné funkcie čipu až do nasledujúceho externého prerušenia alebo hardvérového resetu.
    • V režime úspory energie beží asynchrónny časovač, čo umožňuje užívateľovi udržiavať základňu časovača, kým zvyšok zariadenia spí.
    • Režim redukcie šumu ADC zastaví CPU a všetky I/O moduly okrem asynchrónneho časovača a ADC, aby sa minimalizoval šum pri prepínaní počas konverzií ADC
    • V pohotovostnom režime beží oscilátor kryštálov/rezonátorov, zatiaľ čo zvyšok zariadenia spí. To umožňuje veľmi rýchle spustenie v kombinácii s nízkou spotrebou energie.
    • V rozšírenom pohotovostnom režime naďalej beží hlavný oscilátor aj asynchrónny časovač.

Tu sú uvedené všetky súvisiace obvody a je tiež uvedený hlavný obvod (atmega32).

Krok 5: Avr programy

Avr programy
Avr programy
Avr programy
Avr programy

1. Pre „diaľkový senzor“:

#include #include

#include "remote.h"

// Globals volatile unsigned int Čas; // Hlavný časovač, ukladá čas v 10us, // Aktualizované ISR (TIMER0_COMP) prchavý nepodpísaný znak BitNo; // Pozícia nasledujúceho BIT volatilného znamienka bez znamienka ByteNo; // Pozícia aktuálneho bajtu

prchavý nepodpísaný znak IrData [4]; // Štyri dátové bajty paketu Ir // 2-bajtová adresa 2-bajtová dátová volatilita bez znamienka IrCmdQ [QMAX]; // prijatý konečný príkaz (vyrovnávacia pamäť)

prchavý nepodpísaný znak PrevCmd; // Používa sa na opakovanie

// Premenné používané na spustenie opakovania až po určitom stlačení klávesu

prchavý nepodpísaný znak Opakujte; // 1 = áno 0 = žiadny prchavý znak bez znamienka RCount; // Počet opakovaní

prchavý znak QFront = -1, QEnd = -1;

prchavý znak bez znamienka; // Stav prijímača

prchavý nepodpísaný znak Edge; // Okraj prerušenia [RISING = 1 OR FALLING = 0]

prchavý nepodpísaný int stop;

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

void RemoteInit () {

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

zastávka = 0; Stav = IR_VALIDATE_LEAD_HIGH; Okraj = 0; Opakovať = 0;

// Nastaviť časovač1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Nastavenie porovnávacej hodnoty

znak bez znamienka GetRemoteCmd (char wait) {unsigned char cmd;

if (čakať) while (QFront ==-1); else if (QFront ==-1) return (RC_NONE);

cmd = IrCmdQ [QFront];

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

vrátiť cmd;

}

2. hlavné ():

int main (neplatné) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Infinite Loop to active IR-sensor {

cmd = GetRemoteCmd (1);

prepínač (cmd) {

prípad xx: {// BOT Posunie dopredu // Ch+ btn forwardmotor ();

prestávka; // Oba motory vpred

}

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

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

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

predvolené: PORTC = 0x00; prestávka; // Ľavý aj pravý motor sa zastaví}

}

}/*Koniec hlavnej*/

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

// Je to základný model, ale môžem ho použiť v režime PWM.

//…………………………………………….. Bavte sa ………………………

Odporúča: