Sadržaj:

INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU: 5 koraka
INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU: 5 koraka

Video: INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU: 5 koraka

Video: INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU: 5 koraka
Video: IR Remote Control Robocar 2024, Studeni
Anonim
INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU
INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU

Ovaj PROJEKT opisuje dizajn i implementaciju infracrvenog (IR) daljinski upravljanog RoboCara koji se može koristiti za različite automatizirane aplikacije upravljanja bez posade. Dizajnirao sam daljinski upravljani RoboCar (kretanje lijevo-desno/sprijeda-natrag). Cijeli sustav temelji se na mikrokontroleru (Atmega32) koji upravljački sustav čini pametnijim i jednostavnijim za izmjenu za druge aplikacije. Omogućuje korisniku upravljanje ili upravljanje RoboCarom i upravljanje glavnim prekidačem s udaljenosti od oko 5 metara.

Ključne riječi: IC dekoder, AVR (Atmega32) mikrokontroler, daljinski upravljač za TV, bežična komunikacija

_

Korak 1: IntraRed komunikacija

IntraRed komunikacija
IntraRed komunikacija

Princip IC komunikacije:

a) IC prijenos

Odašiljač IC LED diode unutar svog kruga, koji emitira infracrveno svjetlo za svaki električni impuls koji mu se da. Ovaj se impuls generira pritiskom na tipku na daljinskom upravljaču, čime se dovršava krug, čime LED postaje pristran. LED dioda koja je pristrana emitira svjetlost valne duljine 940nm u nizu impulsa, što odgovara pritisnutom gumbu. Međutim, budući da uz IR LED i mnoge druge izvore infracrvene svjetlosti, poput nas ljudskih bića, žarulja, sunca itd., Prenesene informacije mogu biti ometane. Rješenje ovog problema je modulacija. Emitirani signal moduliran je pomoću noseće frekvencije od 38 KHz (ili bilo koje druge frekvencije između 36 do 46 KHz). IR LED dioda je oscilirana na ovoj frekvenciji za vrijeme trajanja impulsa. Informacije ili svjetlosni signali su modulirani širinom impulsa i sadržani su u frekvenciji 38 KHz. Infracrveni prijenos odnosi se na energiju u području spektra elektromagnetskog zračenja na valnim duljinama većim od onih vidljive svjetlosti, ali kraćim od onih radio valova. Shodno tome, infracrvene frekvencije veće su od frekvencija mikrovalnih pećnica, ali niže od frekvencija vidljive svjetlosti. Znanstvenici dijele spektar infracrvenog zračenja (IR) u tri regije. Valne duljine navedene su u mikronima (simboliziranim µ, gdje je 1 µ = 10-6 metara) ili u nanometrima (skraćeno nm, gdje je 1 nm = 10-9 metara = 0,001 5). Bliži IC pojas sadrži energiju u rasponu valnih duljina najbližih vidljivoj, od približno 0,750 do 1,300 5 (750 do 1300 nm). Srednji IC pojas (koji se naziva i srednji IR pojas) sastoji se od energije u rasponu od 1.300 do 3.000 5 (1300 do 3000 nm). Daleki IC pojas proteže se od 2.000 do 14.000 5 (3000 nm do 1.4000 x 104nm).

b) IC prijem

Prijemnik se sastoji od foto -detektora koji razvija izlazni električni signal pri padu svjetlosti na njega. Izlaz detektora filtrira se pomoću uskopojasnog filtera koji odbacuje sve frekvencije ispod ili iznad nosive frekvencije (u ovom slučaju 38 KHz). Filtrirani izlaz tada se daje odgovarajućem uređaju poput mikrokontrolera ili mikroprocesora koji kontrolira uređaje poput računala ili robota. Izlaz iz filtera također se može spojiti na osciloskop za očitavanje impulsa.

Primjene IR -a:

Infracrvena veza koristi se u raznim aplikacijama bežične komunikacije, nadzora i upravljanja. Evo nekoliko primjera:

· Kutije za daljinsko upravljanje za kućnu zabavu

· Bežično (lokalna mreža)

· Veze između prijenosnih i stolnih računala

· Bežični modem

· Detektori upada

· Detektori pokreta

· Senzori za požar

· Sustavi noćnog vida

· Medicinska dijagnostička oprema

· Sustavi za navođenje projektila

· Uređaji za geološko praćenje

Prijenos IC podataka s jednog uređaja na drugi ponekad se naziva i zračenje.

Korak 2: IR senzor i NEC protokol Fromat

IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat
IR senzor i NEC protokol Fromat

IC senzori (Sl. 1)

TSOP1738, SFH-5110-38 (38 kHz)

Značajke TSOP senzora:

  • Predpojačalo i detektor fotografija nalaze se u jednom paketu
  • Unutarnji filter za PCM frekvenciju
  • Poboljšana zaštita od smetnji električnog polja
  • TTL i CMOS kompatibilnost
  • Izlaz aktivan niska Mala potrošnja energije
  • Visok imunitet na vanjsko svjetlo
  • Moguć kontinuirani prijenos podataka

NEC protokol:

NEC IC protokol prijenosa koristi kodiranje udaljenosti impulsa bitova poruke. Svaki niz impulsa je duljine 562,5 µs, na nosivoj frekvenciji od 38 kHz (26,3 µs). Logički bitovi prenose se na sljedeći način (slika 2):

  • Logičko '0' - niz impulsa od 562,5 μs, nakon čega slijedi razmak od 562,5 μs, s ukupnim vremenom prijenosa od 1,125 ms
  • Logičko '1' - niz impulsa od 562,5 μs, nakon čega slijedi razmak od 1,6875 ms, s ukupnim vremenom prijenosa od 2,25 ms

Nosivi impuls sastoji se od 21 ciklusa na 38 kHz. Impulsi obično imaju omjer oznake/prostora 1: 4, kako bi se smanjila trenutna potrošnja:

(Slika 3)

Svaki kodni niz započinje impulsom od 9 ms, poznat kao AGC impuls. Nakon toga slijedi tišina od 4,5 ms:

(Slika 4)

Podaci se tada sastoje od 32 bita, 16-bitne adrese nakon koje slijedi 16-bitna naredba, prikazane redoslijedom kojim se prenose (slijeva nadesno):

(Slika 5)

Četiri bajta bitova podataka prvo se šalju najmanji bit. Slika 1 prikazuje format NEC IC prijenosnog okvira za adresu od 00h (00000000b) i naredbu ADh (10101101b).

Za prijenos okvira poruke potrebno je ukupno 67,5 ms. Za prijenos 16 bitova adrese (adresa + inverzna) i 16 bitova naredbe (naredba + inverzna) potrebno je 27 ms.

(Sl. 6)

Vrijeme potrebno za prijenos okvira:

16 bita za adresu (adresa + inverzna) zahtijevaju 27 ms za prijenos vremena. A 16 bita za naredbu (naredba + inverzna) također zahtijevaju 27 ms za prijenos vremena. jer (adresa + obratna adresa) ili (naredba + inverzna naredba) uvijek će sadržavati 8 '0 i 8' 1 tako (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. prema ovom ukupnom vremenu potrebno za prijenos okvira je (9ms +4.5ms +27ms +27ms) = 67.5 ms

KODOVI ZA PONAVLJANJE: Ako se tipka na daljinskom upravljaču drži pritisnuta, bit će dodijeljen kôd za ponavljanje, obično oko 40 ms nakon impulsa koji je označio kraj poruke. Ponavljajući kôd nastavit će se slati u intervalima od 108 ms, sve dok se ključ konačno ne otpusti. Ponavljajući kôd sastoji se od sljedećeg, redom:

  • pucanje vodećeg impulsa od 9 ms
  • prostor od 2,25 ms
  • impuls od 562,5 µs označio je kraj razmaka (a time i kraj prenesenog koda za ponavljanje).

(Slika 7)

Izračun kašnjenja (1 ms):

Frekvencija takta = 11.0592 Mhz

Strojni ciklus = 12

Odgoda = 1 ms

TimerValue = 65536 - ((Odgoda * Frekvencija sata)/Strojni ciklus) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

Korak 3: Upravljanje istosmjernim motorom pomoću L293D

Upravljanje istosmjernim motorom pomoću L293D
Upravljanje istosmjernim motorom pomoću L293D

DC motor

DC motor pretvara električnu energiju u mehaničku energiju koja se može koristiti za obavljanje mnogih korisnih poslova. Može proizvesti mehaničko kretanje poput Idi naprijed/Natrag mog RoboCara. DC motori dolaze u različitim nazivima kao što su 6V i 12V. Ima dvije žice ili pinove. Smjer rotacije možemo obrnuti obrnutim polaritetom ulaza.

Ovdje preferiramo L293D jer je ocjena od 600 mA dobra za pogon malih istosmjernih motora, a zaštitne diode uključene su u samu IC. Opis svakog pina je sljedeći: Omogući pinove: Ovo su pin br. 1 i pin br. 9. Pin br. 1 se koristi za omogućavanje Half-H vozača 1 i 2. (H most s lijeve strane). Pin br. 9 koristi se za omogućavanje pokretača H-mosta 3 i 4. (H most s desne strane).

Koncept je jednostavan, ako želite koristiti određeni H most, morate dati visoku logiku odgovarajućim pinovima za omogućavanje zajedno s napajanjem IC -a. Ovaj pin se također može koristiti za kontrolu brzine motora pomoću PWM tehnike. VCC1 (Pin 16): Pin za napajanje. Spojite ga na 5V napajanje. VCC2 (Pin 8): Napajanje motora. Na to primijenite +ve napon prema nazivu motora. Ako želite pokretati motor na 12V, primijenite 12V na ovaj pin.

Također je moguće pokretati motor izravno na bateriju, osim one koja se koristi za napajanje strujnog kruga, samo spojite +ve terminal te baterije na pin VCC2 i učinite GND obiju baterija zajedničkim. (Maksimalni napon na ovom pinu je 36V prema podacima iz tablice). GND (pinovi 4, 5, 12, 13): Spojite ih na zajednički GND kruga. Ulazi (pinovi 2, 7, 10, 15):

To su ulazni pinovi putem kojih mikrokontroleri ili drugi sklopovi/IC -i daju upravljačke signale. Na primjer, ako na pinu 2 (ulaz prvog pogona H pogona) damo logiku 1 (5 V), dobit ćemo napon jednak VCC2 na odgovarajućem izlaznom pinu pogona prve polovice H, tj. Pina br. 3. Slično za Logic 0 (0V) na Pin 2, pojavljuje se 0V na Pin 3. Izlazi (Pin 3, 6, 11, 14): Izlaze pinovi. Prema ulaznom signalu dolazi izlazni signal.

Pokreti motora A B

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

…………… Stop: Nisko: Nisko

…… U smjeru kazaljke na satu: Nisko: Visoko

U smjeru suprotnom od kazaljke na satu: Visoko: Nisko

……………. Zastani: Visoko: Visoko

Korak 4: Dijagrami kruga za upravljački program motora i IC senzor

Sheme kola za pogon motora i IC senzor
Sheme kola za pogon motora i IC senzor
Dijagrami kruga za upravljački program motora i IC senzor
Dijagrami kruga za upravljački program motora i IC senzor
Sheme kola za pogon motora i IC senzor
Sheme kola za pogon motora i IC senzor

ATmega32 je CMOS 8-bitni mikrokontroler male snage zasnovan na poboljšanoj RIS arhitekturi AVR-a. Izvođenjem snažnih uputa u jednom ciklusu takta, ATmega32 postiže propusnost koja se približava 1 MIPS po MHz, što dizajneru sustava omogućuje optimizaciju potrošnje energije u odnosu na brzinu obrade.

AVR jezgra kombinira bogati skup uputa s 32 radna registra opće namjene. Svi su 32 registri izravno povezani s jedinicom aritmetičke logike (ALU), što omogućuje pristup dvama neovisnim registrima u jednoj jedinoj instrukciji koja se izvodi u jednom ciklusu takta. Dobivena arhitektura učinkovitija je kodom, a postiže performanse i do deset puta brže od konvencionalnih CISC mikrokontrolera.

ATmega32 pruža sljedeće značajke:

  • 32 Kbajta programabilne memorije programa koji se može programirati unutar sustava s mogućnostima čitanja i pisanja,
  • 1024 bajta EEPROM, 2K bajta SRAM,
  • 32 I/O linije opće namjene,
  • 32 radna registra opće namjene,
  • JTAG sučelje za Boundaryscan,
  • Podrška i programiranje ispravljanja pogrešaka na čipu, tri fleksibilna mjerača vremena/brojača s načinima usporedbe, unutarnji i vanjski prekidi, serijski programabilni USART, dvožilno serijsko sučelje orijentirano na bajtove, 8-kanalno,
  • 10-bitni ADC s opcijskim ulaznim stupnjem diferencijala s programabilnim pojačanjem (samo paket TQFP),
  • programabilni mjerač vremena za nadzor sa unutarnjim oscilatorom,
  • serijski port SPI i
  • šest softverskih načina za uštedu energije.

    • Način mirovanja zaustavlja CPU, a dopušta USART,
    • Dvožično sučelje, A/D pretvarač,
    • SRAM,
    • Mjerač vremena/brojači,
    • SPI port, i
    • prekinuti sustav kako bi nastavio funkcionirati.
    • Način isključivanja sprema sadržaj registra, ali zamrzava oscilator, onemogućujući sve ostale funkcije čipa do sljedećeg vanjskog prekida ili resetiranja hardvera.
    • U načinu uštede energije asinhroni mjerač vremena nastavlja raditi, dopuštajući korisniku da održava bazu mjerača vremena dok ostatak uređaja spava.
    • Način smanjenja šuma ADC -a zaustavlja CPU i sve U/I module osim Asinkronog mjerača vremena i ADC -a, kako bi se smanjila šum pri uključivanju tijekom ADC konverzija
    • U stanju pripravnosti oscilator kristala/rezonatora radi dok ostatak uređaja spava. To omogućuje vrlo brzo pokretanje u kombinaciji s niskom potrošnjom energije.
    • U načinu produženog čekanja i glavni oscilator i asinkroni mjerač vremena nastavljaju raditi.

Ovdje su navedeni svi povezani krugovi, a dan je i glavni krug (atmega32).

Korak 5: Avr programi

Avr programi
Avr programi
Avr programi
Avr programi

1. Za "daljinski senzor":

#include #include

#include "remote.h"

// Globals volatile unsigned int Vrijeme; // Glavni mjerač vremena, pohranjuje vrijeme u 10us, // Ažurirano od strane ISR -a (TIMER0_COMP) promjenjivog nepotpisanog znaka BitNo; // Posl. Sljedećeg BIT -a volatile unsigned char ByteNo; // Poz trenutnog bajta

volatile unsigned char IrData [4]; // Četiri podatkovna bajta Ir paketa // 2-bajtna adresa 2-bajtni podaci promjenjivi nepotpisani char IrCmdQ [QMAX]; // primljena konačna naredba (međuspremnik)

hlapljivi nepotpisani char PrevCmd; // Koristi se za ponavljanje

// Varijable koje se koriste za ponavljanje tek nakon što je tipka pritisnuta određeno vrijeme

volatile unsigned char Ponovi; // 1 = da 0 = nema promjenjivog nepotpisanog znaka RCount; // Brojanje ponavljanja

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

volatile unsigned char State; // Stanje primatelja

volatile unsigned char Edge; // Rub prekida [RISING = 1 OR FALLING = 0]

volatile unsigned int stop;

/*********************************************** ********************************************* / /*FUNKCIJE POČETCI* / / ********************************************** ********************************************/

void RemoteInit () {

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

stop = 0; Stanje = IR_VALIDATE_LEAD_HIGH; Rub = 0; Ponovi = 0;

// Timer za postavljanje1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Postavi vrijednost uspoređivanja

unsigned char GetRemoteCmd (čekanje znakova) {unsigned char cmd;

if (pričekajte) 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 ++; }

return cmd;

}

2. glavni ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Beskonačna petlja do aktivnog IC-senzora {

cmd = GetRemoteCmd (1);

prekidač (cmd) {

case xx: {// BOT Kreće se naprijed // Ch+ btn forwardmotor ();

pauza; // Oba motora u smjeru naprijed

}

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

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

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

zadano: PORTC = 0x00; break; // I lijevi i desni motor se zaustavljaju}

}

}/*Kraj glavne stranice*/

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

// To je osnovni model, ali mogu ga koristiti u PWM načinu rada.

//…………………………………………….. Zabavi se……………………………………………………//

Preporučeni: