Sadržaj:
- Korak 1: IntraRed komunikacija
- Korak 2: IR senzor i NEC protokol Fromat
- Korak 3: Upravljanje istosmjernim motorom pomoću L293D
- Korak 4: Dijagrami kruga za upravljački program motora i IC senzor
- Korak 5: Avr programi
Video: INFRA CRVENI DALJINSKI UPRAVLJAN ROBOCAR KORIŠĆENJEM AVR (ATMEGA32) MCU: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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
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
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
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
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
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:
RC automobil upravljan kotačem i pedalama? ️: 6 koraka
RC automobil upravljan kotačem i pedalama? ️: Život je ostvarenje vaših snova. Moj je bio napraviti RC automobil upravljanim PC kotačem za igre. Pa sam uspio. Nadam se da će nekome biti od koristi. U slučaju pitanja napišite komentar
Pametni LED prigušivač DIY upravljan putem Bluetootha: 7 koraka
DIY pametni LED prigušivač koji se kontrolira putem Bluetootha: Ova uputa opisuje kako izgraditi pametni digitalni prigušivač. Prigušivač svjetla uobičajen je prekidač za svjetlo koji se koristi u kućama, hotelima i mnogim drugim zgradama. Starije verzije prekidača za prigušivanje bile su ručne i obično su uključivale okretni prekidač
Solenoid upravljan Alexa pomoću WEMO D1 Mini: 5 koraka
Alexa kontrolirani solenoid pomoću WEMO D1 Mini: Zaista je nevjerojatno. Nije tako teško imati alexa echo kontrolu mikroprocesora. Svijet je tvoja Kamenica. Ova instrukcija vodi vas kroz korake za upravljanje solenoidom. Ovaj isti postupak možete koristiti za kontrolu svega što želite
Robot s pogonom na Arduinu, upravljan taktigonom: 5 koraka
Robot s pogonom na Arduinu, upravljan Tactigonom: PregledOvaj post će pokazati kako iskoristiti prednosti Tactigonovih BLE Central mogućnosti. Željeli smo kontrolirati našeg robota koristeći The Tactigon kao “ 3D upravljač ” upravljanje brzinom s nagibom i upravljanje s zakretom. Mi smo
Servo upravljan Alexa: 9 koraka (sa slikama)
Alexa kontrolirani servo: Uvod Imam laptop na polici u svom uredu koji nadzire nekoliko kamera koje se nalaze izvan moje kuće. Upozoravaju me na isporuke i posjetitelje. Iako mogu koristiti web preglednik da vidim njihove slike, lakše je samo