Sadržaj:

INFRA CRVENI DALJINSKI ROBOCAR KORIŠTENJEM AVR (ATMEGA32) MCU: 5 koraka
INFRA CRVENI DALJINSKI ROBOCAR KORIŠTENJEM AVR (ATMEGA32) MCU: 5 koraka

Video: INFRA CRVENI DALJINSKI ROBOCAR KORIŠTENJEM AVR (ATMEGA32) MCU: 5 koraka

Video: INFRA CRVENI DALJINSKI ROBOCAR KORIŠTENJEM AVR (ATMEGA32) MCU: 5 koraka
Video: Проверка пульта на инфракрасное излучение. 2024, Novembar
Anonim
INFRA CRVENI DALJINSKI ROBOCAR KORIŠTENJEM AVR (ATMEGA32) MCU
INFRA CRVENI DALJINSKI ROBOCAR KORIŠTENJEM 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). Čitav sistem zasnovan je na mikrokontroleru (Atmega32) koji upravljački sistem čini pametnijim i lakšim za izmjenu za druge aplikacije. Omogućuje korisniku upravljanje ili upravljanje RoboCar -om 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 prenos

Odašiljač IC LED diode unutar svog kruga, koji emitira infracrveno svjetlo za svaki električni impuls koji mu se da. Ovaj impuls se generira pritiskom na tipku na daljinskom upravljaču, čime se kompletira krug, čime se LED daje pristranost. LED dioda koja je pristrasna emituje svjetlost talasne dužine 940nm u nizu impulsa, što odgovara pritisnutom dugmetu. Međutim, budući da uz IR LED i mnoge druge izvore infracrvene svjetlosti, poput nas ljudskih bića, sijalica, sunca itd., Prenesene informacije mogu biti ometane. Rješenje ovog problema je modulacija. Emitirani signal modulira se 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. Naučnici dijele spektar infracrvenog zračenja (IR) u tri regije. Talasne dužine su navedene u mikronima (simbolizovano µ, gde je 1 µ = 10-6 metara) ili u nanometrima (skraćeno nm, gde je 1 nm = 10-9 metar = 0,001 5). Bliži IC pojas sadrži energiju u rasponu valnih duljina najbližih vidljivim, 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 se proteže 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 se filtrira 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 može se spojiti i na osciloskop za očitavanje impulsa.

Primene IR:

Infracrvena veza koristi se u raznim aplikacijama za bežičnu komunikaciju, nadzor i kontrolu. Evo nekoliko primjera:

· Kutije za daljinsko upravljanje za kućnu zabavu

· Bežično (lokalne mreže)

· Veze između prenosivih i stonih računara

· Bežični modem

· Detektori upada

· Detektori pokreta

· Požarni senzori

· Sistemi za noćno osmatranje

· Medicinska dijagnostička oprema

· Sistemi 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)

Karakteristike TSOP senzora:

  • Predpojačalo i detektor fotografija nalaze se u jednom paketu
  • Unutrašnji 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 protiv ambijentalnog svetla
  • Moguć je kontinuirani prijenos podataka

NEC protokol:

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

  • Logičko '0' - niz impulsa od 562,5 µs, praćen razmakom od 562,5 µs, s ukupnim vremenom prijenosa od 1,125 ms
  • Logičko '1' - niz impulsa od 562,5µs praćen razmakom od 1,6875 ms, s ukupnim vremenom prijenosa od 2,25 ms

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

(Sl. 3)

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

(Sl. 4)

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

(Sl. 5)

Četiri bajta bitova podataka se prvo šalju najmanjim bitnim bitom. Slika 1 prikazuje format NEC IC prenosnog okvira za adresu 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 bita naredbe (naredba + inverzna) potrebno je 27 ms.

(Sl. 6)

Vrijeme potrebno za prijenos okvira:

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

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

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

(Sl. 7)

Izračun kašnjenja (1 ms):

Frekvencija takta = 11.0592 Mhz

Mašinski ciklus = 12

Odgoda = 1 ms

TimerValue = 65536 - ((Odgoda * Frekvencija takta)/Ciklus mašine) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

Korak 3: Upravljanje istosmjernim motorom pomoću L293D

Upravljanje DC motorom pomoću L293D
Upravljanje DC 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 su uključene u samu IC. Opis svakog pina je sljedeći: Omogući pinove: Ovo su pinovi br. 1 i iglica 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 se koristi 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đe 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. Nanesite +ve napon prema nazivu motora. Ako želite pokretati motor na 12V, primijenite 12V na ovaj pin.

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

To su ulazni pinovi preko kojih mikrokontroleri ili drugi krugovi/IC -ovi 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

……………. Stop: Visoko: Visoko

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

Sheme kola za upravljački program motora i IC senzor
Sheme kola za upravljački program motora i IC senzor
Sheme kola za upravljački program motora i IC senzor
Sheme kola za upravljački program motora i IC senzor
Sheme kola za upravljački program motora i IC senzor
Sheme kola za upravljački program motora i IC senzor

ATmega32 je CMOS 8-bitni mikrokontroler male snage zasnovan na poboljšanoj RIS arhitekturi AVR-a. Izvođenjem snažnih instrukcija u jednom ciklusu takta, ATmega32 postiže propusnost koja se približava 1 MIPS po MHz omogućavajući dizajneru sistema da optimizira potrošnju energije u odnosu na brzinu obrade.

AVR jezgro kombinuje bogat skup instrukcija sa 32 radna registra opšte namene. Svi 32 registri su direktno povezani sa jedinicom aritmetičke logike (ALU), omogućavajući pristup dva nezavisna registra u jednoj instrukciji koja se izvršava u jednom ciklusu takta. Rezultirajuća arhitektura je efikasnija kodom, a postiže performanse i do deset puta brže od konvencionalnih CISC mikrokontrolera.

ATmega32 pruža sljedeće funkcije:

  • 32 Kbajta programabilne fleš memorije programa koja se može programirati u sistemu sa mogućnostima čitanja i pisanja,
  • 1024 bajta EEPROM, 2K bajta SRAM,
  • 32 I/O linije opće namjene,
  • 32 radna registra opšte namjene,
  • JTAG sučelje za Boundaryscan,
  • Podrška i programiranje otklanjanja grešaka na čipu, tri fleksibilna mjerača vremena/brojača s načinima uspoređivanja, unutarnji i vanjski prekidi, serijski programabilni USART, dvožilno serijsko sučelje orijentirano na bajt, 8-kanalno,
  • 10-bitni ADC sa opcionalnim stupnjem diferencijalnog ulaza sa programabilnim pojačanjem (samo paket TQFP),
  • programabilni mjerač vremena za nadzor sa unutrašnjim oscilatorom,
  • serijski port SPI, i
  • šest softverskih režima uštede energije.

    • Način mirovanja zaustavlja CPU dok dopušta USART,
    • Dvožični interfejs, A/D pretvarač,
    • SRAM,
    • Tajmer/brojači,
    • SPI port, i
    • prekinuti sistem kako bi nastavio sa radom.
    • 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 asinhronog mjerača vremena i ADC -a, kako bi se smanjila buka pri uključivanju tijekom ADC konverzija
    • U stanju pripravnosti, kristalni/rezonatorski oscilator radi dok ostatak uređaja spava. To omogućava vrlo brzo pokretanje u kombinaciji s niskom potrošnjom energije.
    • U modu produženog stanja pripravnosti, i glavni oscilator i asinhroni mjerač vremena nastavljaju raditi.

Ovdje su navedena sva povezana kola, a navedeno je i glavno kolo (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 Time; // Glavni mjerač vremena, pohranjuje vrijeme u 10us, // Ažurirano od strane ISR -a (TIMER0_COMP) promjenjivog nepotpisanog znaka BitNo; // Poz. Sljedećeg BIT -a promjenjivog nepotpisanog znaka ByteNo; // Poz trenutnog bajta

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

volatile unsigned char PrevCmd; // Koristi se za ponavljanje

// Varijable koje se koriste za početak ponavljanja tek nakon pritiska na tipku određeno vrijeme

isparljivi nepotpisani znak Ponovi; // 1 = da 0 = ne volatile unsigned char RCount; // Broj ponavljanja

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

nestabilna nepotpisana char država; // Stanje primatelja

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

volatile unsigned int stop;

/************************************************* ********************************************* / /*FUNCTIONSSTARTS* / / ********************************************** **********************************************/

void RemoteInit () {

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

stop = 0; Stanje = IR_VALIDATE_LEAD_HIGH; Ivica = 0; Ponavljanje = 0;

// Tajmer postavljanja1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Postavi vrijednost uspoređivanja

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

if (čekaj) 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. main ():

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 ();

break; // 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čuje se: