Obsah:

INFRA ČERVENÝ DÁLKOVĚ ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 kroků
INFRA ČERVENÝ DÁLKOVĚ ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 kroků

Video: INFRA ČERVENÝ DÁLKOVĚ ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 kroků

Video: INFRA ČERVENÝ DÁLKOVĚ ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 kroků
Video: Mimořádné letadlo na dálkové ovládání pro začátečníky a děti 2024, Červenec
Anonim
INFRA ČERVENÝ DÁLKOVĚ ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32)
INFRA ČERVENÝ DÁLKOVĚ ŘÍZENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32)

Tento PROJEKT popisuje návrh a implementaci infračerveného (IR) dálkově ovládaného RoboCar, který lze použít pro různé automatizované řídicí aplikace bez posádky. Navrhl jsem dálkově ovládaný RoboCar (pohyb vlevo-vpravo/vpředu-vzadu). Celý systém je založen na mikrokontroléru (Atmega32), díky kterému je řídicí systém chytřejší a lze jej snadno upravit pro jiné aplikace. Umožňuje uživateli ovládat nebo ovládat RoboCar a ovládat síťový vypínač ze vzdálenosti přibližně 5 metrů.

Klíčová slova: IR dekodér, mikrokontrolér AVR (Atmega32), dálkový ovladač TV, bezdrátová komunikace

_

Krok 1: IntraRed komunikace

IntraRed komunikace
IntraRed komunikace

IR komunikační princip:

a) IR přenos

Vysílač IR LED uvnitř jeho obvodu, který vyzařuje infračervené světlo pro každý elektrický impuls, který je mu dán. Tento impuls je generován stisknutím tlačítka na dálkovém ovladači, čímž je obvod dokončen a poskytuje zkreslení LED. Předpjatá LED dioda vyzařuje světlo o vlnové délce 940 nm jako sérii impulzů, které odpovídají stisknutému tlačítku. Protože však spolu s IR LED existuje mnoho dalších zdrojů infračerveného světla, jako jsme my lidé, žárovky, slunce atd., Mohou být přenášené informace rušeny. Řešením tohoto problému je modulace. Vysílaný signál je modulován pomocí nosné frekvence 38 KHz (nebo jakékoli jiné frekvence mezi 36 až 46 KHz). IR LED je oscilována na této frekvenci po dobu trvání impulsu. Informace nebo světelné signály jsou modulovány šířkou impulzu a jsou obsaženy na frekvenci 38 KHz. Infračervený přenos označuje energii v oblasti spektra elektromagnetického záření při vlnových délkách delších než viditelné světlo, ale kratších než u rádiových vln. Infračervené frekvence jsou tedy vyšší než u mikrovln, ale nižší než u viditelného světla. Vědci rozdělují spektrum infračerveného záření (IR) do tří oblastí. Vlnové délky jsou specifikovány v mikronech (symbolizovaných µ, kde 1 µ = 10-6 metrů) nebo v nanometrech (zkráceně nm, kde 1 nm = 10-9 metrů = 0,001 5). Blízké IR pásmo obsahuje energii v rozsahu vlnových délek nejblíže viditelným, přibližně od 0,750 do 1300 5 (750 až 1300 nm). Střední IR pásmo (také nazývané střední IR pásmo) se skládá z energie v rozsahu 1 300 až 3 000 5 (1300 až 3000 nm). Dálkové IR pásmo se rozprostírá od 2 000 do 14 000 5 (3000 nm až 1,4 000 x 104 nm).

b) IR příjem

Přijímač se skládá z fotodetektoru, který vyvíjí výstupní elektrický signál, když na něj dopadá světlo. Výstup detektoru je filtrován pomocí úzkopásmového filtru, který vyřadí všechny frekvence pod nebo nad nosnou frekvenci (v tomto případě 38 KHz). Filtrovaný výstup je poté předán vhodnému zařízení, jako je mikrokontrolér nebo mikroprocesor, který ovládá zařízení jako počítač nebo robot. Výstup z filtrů lze také připojit k osciloskopu pro čtení impulsů.

Aplikace IR:

Infračervené se používá v řadě bezdrátových komunikačních, monitorovacích a řídicích aplikací. Zde jsou nějaké příklady:

· Krabice pro dálkové ovládání domácí zábavy

· Bezdrátové (místní sítě)

· Spojení mezi notebooky a stolními počítači

· Bezdrátový modem

· Detektory narušení

· Detektory pohybu

· Požární senzory

· Systémy nočního vidění

· Lékařské diagnostické vybavení

· Raketové naváděcí systémy

· Geologická monitorovací zařízení

Přenos IR dat z jednoho zařízení do druhého se někdy nazývá paprskování.

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)

TSOP senzory Vlastnosti:

  • Předzesilovač a detektor fotografií jsou v jednom balení
  • Interní filtr pro frekvenci PCM
  • Vylepšené stínění proti rušení elektrického pole
  • Kompatibilita s TTL a CMOS
  • Aktivní výstup nízký Nízká spotřeba energie
  • Vysoká odolnost proti okolnímu světlu
  • Možný nepřetržitý přenos dat

Protokol NEC:

Přenosový protokol NEC IR používá kódování pulsní vzdálenosti bitů zprávy. Každý impulzní impulz má délku 562,5 µs na nosné frekvenci 38 kHz (26,3 µs). Logické bity se přenášejí následovně (obr.2):

  • Logické '0' - pulzní impulz 562,5 µs následovaný 562,5 µs prostorem s celkovým vysílacím časem 1,125 ms
  • Logický '1' - pulzní impulz 562,5 µs následovaný prostorem 1,6875 ms s celkovým vysílacím časem 2,25 ms

Nosný impuls se skládá z 21 cyklů při 38 kHz. Impulsy mají obvykle poměr značka/prostor 1: 4, aby se snížila spotřeba proudu:

(Obr.3)

Každá kódová sekvence začíná pulsem 9 ms, známým jako pulz AGC. Poté následuje 4,5 ms ticho:

(Obr.4)

Data se pak skládají z 32 bitů, 16bitové adresy následované 16bitovým příkazem, zobrazeným v pořadí, v jakém jsou přenášeny (zleva doprava):

(Obr.5)

Čtyři bajty datových bitů jsou nejprve odeslány jako nejméně významný bit. Obrázek 1 ukazuje formát přenosového rámce NEC IR pro adresu 00h (00000000b) a příkaz ADh (10101101b).

K přenosu rámečku zprávy je zapotřebí celkem 67,5 ms. K přenosu 16 bitů adresy (adresa + inverze) a 16 bitů příkazu (příkaz + inverze) potřebuje 27 ms.

(Obr.6)

Čas potřebný k přenosu rámce:

16 bitů pro adresu (adresa + inverzní) vyžaduje 27 ms pro přenos času. A 16 bitů pro příkaz (příkaz + inverzní) také vyžaduje 27 ms pro přenos času. protože (adresa + inverze adresy) nebo (příkaz + inverze příkazu) bude vždy obsahovat 8 '0 a 8' 1 tak (8 * 1,125ms) + (8 * 2,25ms) == 27 ms. podle tohoto celkového času potřebného k přenosu rámce je (9ms +4,5ms +27ms +27ms) = 67,5 ms.

OPAKOVAT KÓDY: Je -li klíč na dálkovém ovladači držen stisknutý, bude vydán opakovací kód, obvykle přibližně 40 ms po pulzním výbuchu, který znamenal konec zprávy. Opakovaný kód bude nadále odesílán v intervalech 108 ms, dokud nebude klíč uvolněn. Opakovací kód se skládá z následujících v pořadí:

  • 9ms vedoucí pulzní výbuch
  • prostor 2,25 ms
  • pulzní impulz 562,5 µs k označení konce prostoru (a tedy konce vysílaného opakovacího kódu).

(Obr.7)

Výpočet zpoždění (1 ms):

Frekvence hodin = 11,0592 Mhz

Cyklus stroje = 12

Zpoždění = 1 ms

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

= 65536 - 921 = 0xFC67

Krok 3: Řízení stejnosměrného motoru pomocí L293D

Řízení stejnosměrného motoru pomocí L293D
Řízení stejnosměrného motoru pomocí L293D

DC motor

Stejnosměrný motor přeměňuje elektrickou energii na mechanickou energii, kterou lze použít k mnoha užitečným pracím. Může produkovat mechanický pohyb jako Go Forward/Backword mého RoboCar. Stejnosměrné motory se dodávají v různých výkonech, jako jsou 6V a 12V. Má dva dráty nebo kolíky. Směr otáčení můžeme obrátit obrácením polarity vstupu.

Zde dáváme přednost L293D, protože hodnocení 600mA je dobré pro pohon malých stejnosměrných motorů a ochranné diody jsou obsaženy v samotném integrovaném obvodu. Popis každého pinu je následující: Povolit piny: Jedná se o piny č. 1 a kolík č. 9. Pin č. 1 slouží k povolení ovladače Half-H 1 a 2. (H most na levé straně). Pin č. 9 slouží k povolení ovladače H-bridge 3 a 4. (H bridge na pravé straně).

Koncept je jednoduchý, pokud chcete použít konkrétní H můstek, musíte dát vysokou logiku odpovídajícím aktivačním pinům spolu s napájením IC. Tento kolík lze také použít k řízení otáček motoru pomocí techniky PWM. VCC1 (kolík 16): Kolík napájecího zdroje. Připojte jej k napájení 5V. VCC2 (Pin 8): Napájení motoru. Použijte na něj kladné napětí podle jmenovitého výkonu motoru. Pokud chcete pohánět svůj motor 12 V, použijte na tento kolík 12V.

Je také možné pohánět motor přímo na baterii, jinou než tu, která se používá pro napájení obvodu, stačí připojit kladný pól této baterie na pin VCC2 a GND obou baterií bude společné. (MAX napětí na tomto pinu je 36 V podle jeho datového listu). GND (piny 4, 5, 12, 13): Připojte je ke společnému GND obvodu. Vstupy (piny 2, 7, 10, 15):

Jedná se o vstupní piny, přes které jsou řídicí signály dávány mikrokontroléry nebo jinými obvody/integrovanými obvody. Pokud například na pinu 2 (vstup 1. poloviny H budiče) dáme Logic 1 (5 V), dostaneme napětí odpovídající VCC2 na odpovídajícím výstupním pinu 1. poloviny H ovladače, tj. Pinu č. 3. Podobně pro logiku 0 (0V) na pinu 2, 0V na pinu 3. Výstupy (piny 3, 6, 11, 14): Výstupy pinů. Podle vstupního signálu přichází výstupní signál.

Pohyby motoru A B

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

…………… Stop: Low: Low

…… Ve směru hodinových ručiček: Nízký: Vysoký

Proti směru hodinových ručiček: Vysoká: Nízká

……………. Zastavení: Vysoká: Vysoká

Krok 4: Schémata zapojení ovladače motoru a infračerveného senzoru

Schémata zapojení pro ovladač motoru a IR senzor
Schémata zapojení pro ovladač motoru a IR senzor
Schémata zapojení pro ovladač motoru a IR senzor
Schémata zapojení pro ovladač motoru a IR senzor
Schémata zapojení pro ovladač motoru a IR senzor
Schémata zapojení pro ovladač motoru a IR senzor

ATmega32 je 8bitový mikrokontrolér CMOS s nízkým výkonem, založený na RISCarchitecture vylepšené AVR. Prováděním výkonných instrukcí v jediném hodinovém cyklu dosahuje ATmega32 propustnosti blížící se 1 MIPS na MHz, což umožňuje návrháři systému optimalizovat spotřebu energie oproti rychlosti zpracování.

Jádro AVR kombinuje bohatou instrukční sadu s 32 univerzálními pracovními registry. Všech 32 registrů je přímo připojeno k aritmetické logické jednotce (ALU), což umožňuje přístup ke dvěma nezávislým registrům v jedné jediné instrukci provedené v jednom hodinovém cyklu. Výsledná architektura je kódově efektivnější a přitom dosahuje až desetkrát vyšší propustnosti než konvenční mikrokontroléry CISC.

ATmega32 poskytuje následující funkce:

  • 32 kB programovatelné paměti Flash programu v systému s možností čtení a zápisu,
  • 1024 bytů EEPROM, 2K byte SRAM,
  • 32 I/O linek pro všeobecné použití,
  • 32 univerzálních pracovních registrů,
  • rozhraní JTAG pro Boundaryscan,
  • Podpora a programování ladění na čipu, tři flexibilní časovače/čítače s režimy porovnání, interní a externí přerušení, sériově programovatelný USART, bajtově orientované dvouvodičové sériové rozhraní, 8kanálové,
  • 10bitový ADC s volitelným diferenciálním vstupním stupněm s programovatelným ziskem (pouze balíček TQFP),
  • programovatelný hlídací časovač s interním oscilátorem,
  • sériový port SPI a
  • šest softwarově volitelných režimů úspory energie.

    • Nečinný režim zastaví CPU a zároveň povolí USART,
    • Dvouvodičové rozhraní, A/D převodník,
    • SRAM,
    • Časovač/čítače,
    • Port SPI a
    • systém přerušte, aby pokračoval v provozu.
    • Režim Power-down ukládá obsah registru, ale zmrazí oscilátor a deaktivuje všechny ostatní funkce čipu až do příštího externího přerušení nebo hardwarového resetu.
    • V režimu úspory energie běží asynchronní časovač, což uživateli umožňuje udržovat základnu časovače, zatímco zbytek zařízení spí.
    • Režim redukce šumu ADC zastaví CPU a všechny I/O moduly kromě asynchronního časovače a ADC, aby se minimalizoval šum při přepínání při převodu ADC
    • V pohotovostním režimu běží oscilátor krystalu/rezonátoru, zatímco zbytek zařízení spí. To umožňuje velmi rychlé spuštění v kombinaci s nízkou spotřebou energie.
    • V režimu Extended Standby nadále běží hlavní oscilátor i asynchronní časovač.

Zde jsou uvedeny všechny související obvody a je uveden také hlavní obvod (atmega32).

Krok 5: Avr programy

Avr programy
Avr programy
Avr programy
Avr programy

1. Pro „dálkový senzor“:

#include #include

#include "remote.h"

// Globals volatile unsigned int Time; // Hlavní časovač, ukládá čas v 10us, // Aktualizováno ISR (TIMER0_COMP) volatile unsigned char BitNo; // Pozice dalšího BIT volatile unsigned char ByteNo; // Pozice aktuálního bajtu

volatile unsigned char IrData [4]; // Čtyři datové bajty Ir paketu // 2bajtová adresa 2bajtová data nestálá data bez znaménka IrCmdQ [QMAX]; // přijat konečný příkaz (vyrovnávací paměť)

volatile unsigned char PrevCmd; // Používá se pro opakování

// Proměnné použité pro zahájení opakování až po stisknutí klávesy po určitou dobu

volatile unsigned char Opakujte; // 1 = yes 0 = no volatile unsigned char RCount; // Počet opakování

volatile char QFront = -1, QEnd = -1;

volatile unsigned char State; // Stav přijímače

volatile unsigned char Edge; // Okraj přerušení [RISING = 1 NEBO FALLING = 0]

volatile unsigned int stop;

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

void RemoteInit () {

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

stop = 0; Stav = IR_VALIDATE_LEAD_HIGH; Okraj = 0; Opakovat = 0;

// Nastavení časovače1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Nastavit porovnávací hodnotu

znak bez znaménka GetRemoteCmd (char wait) {unsigned char cmd;

if (čekat) 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átit 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);

přepínač (cmd) {

případ xx: {// BOT Pohyb vpřed // Ch+ btn forwardmotor ();

přestávka; // Oba motory ve směru vpřed

}

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

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

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

výchozí: PORTC = 0x00; break; // Levý i pravý motor se zastaví}

}

}/*Konec hlavní*/

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

// Je to základní model, ale mohu jej použít v režimu PWM.

//_

Doporučuje: