INHOUDSOPGAWE:

INFRA ROOI AFSTANDSBEDIENING ROBOCAR MET AVR (ATMEGA32) MCU: 5 stappe
INFRA ROOI AFSTANDSBEDIENING ROBOCAR MET AVR (ATMEGA32) MCU: 5 stappe

Video: INFRA ROOI AFSTANDSBEDIENING ROBOCAR MET AVR (ATMEGA32) MCU: 5 stappe

Video: INFRA ROOI AFSTANDSBEDIENING ROBOCAR MET AVR (ATMEGA32) MCU: 5 stappe
Video: 10 INCREDIBLE CAR GADGETS ▶ 13 2024, Julie
Anonim
INFRA ROOI AFSTANDSBEDIENING ROBOCAR MET AVR (ATMEGA32) MCU
INFRA ROOI AFSTANDSBEDIENING ROBOCAR MET AVR (ATMEGA32) MCU

Die huidige PROJEK beskryf 'n ontwerp en implementering van 'n infrarooi (IR) afstandbeheerde RoboCar wat gebruik kan word vir verskillende outomatiese onbemande beheertoepassings. Ek het afstandbeheerde RoboCar ontwerp (links-regs/voor-agter-beweging). Die hele stelsel is gebaseer op 'n mikrobeheerder (Atmega32), wat die beheerstelsel slimmer en makliker maak vir ander toepassings. Dit stel die gebruiker in staat om 'n RoboCar te bestuur of te bestuur en die hoofskakelaar van ongeveer 5 meter af te bestuur.

Sleutelwoorde: IR -dekodeerder, AVR (Atmega32) mikrokontroleerder, TV -afstandsbediening, draadlose kommunikasie

_

Stap 1: IntraRed -kommunikasie

IntraRed Kommunikasie
IntraRed Kommunikasie

IR Kommunikasie beginsel:

a) IR -oordrag

Die sender van 'n IR -LED in sy kring, wat infrarooi lig uitstraal vir elke elektriese pols wat daaraan gegee word. Hierdie pols word gegenereer as 'n knoppie op die afstandsbediening ingedruk word, wat die kring voltooi, wat die LED vooroordeel. Die LED wat vooroordeel is, straal lig van die golflengte van 940nm uit as 'n reeks pulse, wat ooreenstem met die ingedrukte knoppie. Aangesien baie ander bronne van infrarooi lig, soos ons mense, gloeilampe, son, ens. 'N Oplossing vir hierdie probleem is deur modulasie. Die gestuurde sein word gemoduleer met behulp van 'n drafrekwensie van 38 KHz (of enige ander frekwensie tussen 36 tot 46 KHz). Die IR -LED word op hierdie frekwensie vir die tydsduur van die pols laat ossilleer. Die inligting of die ligseine is polswydte gemoduleer en is vervat in die 38 KHz frekwensie. Infrarooi transmissie verwys na energie in die gebied van die elektromagnetiese stralingspektrum by golflengtes langer as dié van sigbare lig, maar korter as dié van radiogolwe. In ooreenstemming hiermee is infrarooi frekwensies hoër as dié van mikrogolwe, maar laer as dié van sigbare lig. Wetenskaplikes verdeel die infrarooi straling (IR) spektrum in drie streke. Die golflengtes word gespesifiseer in mikron (gesimboliseer µ, waar 1 µ = 10-6 meter) of in nanometers (afgekorte nm, waar 1 nm = 10-9 meter = 0.001 5). Die nabye IR -band bevat energie in die golflengtes wat die naaste aan die sigbare is, van ongeveer 0,750 tot 1,300 500 (750 tot 1300 nm). Die intermediêre IR -band (ook die middelste IR -band genoem) bestaan uit energie in die reeks 1.300 tot 3.000 5 (1300 tot 3000 nm). Die verste IR -band strek van 2.000 tot 14.000 5 (3000 nm tot 1.4000 x 104nm).

b) IR -ontvangs

Die ontvanger bestaan uit 'n fotodetektor wat 'n elektriese uitsetsein ontwikkel, aangesien lig daarop val. Die uitset van die detektor word gefiltreer met 'n smalbandfilter wat al die frekwensies onder of bo die drafrekwensie weggooi (38 KHz in hierdie geval). Die gefiltreerde uitset word dan aan die geskikte toestel gegee, soos 'n mikrobeheerder of 'n mikroverwerker wat toestelle soos 'n rekenaar of 'n robot beheer. Die uitset van die filters kan ook aan die ossilloskoop gekoppel word om die pulse te lees.

Toepassings van IR:

Infrarooi word gebruik in 'n verskeidenheid toepassings vir draadlose kommunikasie, monitering en beheer. Hier is 'n paar voorbeelde:

· Huisvermaak-afstandsbedieningsbokse

· Draadloos (netwerke in die omgewing)

· Skakels tussen notaboekrekenaars en tafelrekenaars

· Draadlose modem

· Inbraakverklikkers

· Bewegingsdetektore

· Vuur sensors

· Nagvisiestelsels

· Mediese diagnostiese toerusting

· Raketleidingstelsels

· Geologiese moniteringstoestelle

Soms word IR -data van een toestel na 'n ander oorgedra as straling.

Stap 2: IR -sensor en NEC Protocol Fromat

IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat
IR -sensor en NEC Protocol Fromat

IR -sensors (figuur 1)

TSOP1738, SFH-5110-38 (38kHz)

TSOP -sensors Kenmerke:

  • Die voorversterker en fotodetector is albei in 'n enkele pakket
  • Interne filter vir PCM -frekwensie
  • Verbeterde afskerming teen elektriese veldversteuring
  • TTL en CMOS verenigbaarheid
  • Uitset aktief laag Lae kragverbruik
  • Hoë immuniteit teen omringende lig
  • Deurlopende data -oordrag moontlik

NEC -protokol:

Die NEC IR -oordragprotokol gebruik pulsafstandkodering van die boodskapstukkies. Elke polsslag is 562,5 µs lank met 'n drafrekwensie van 38 kHz (26,3 µs). Logiese stukkies word soos volg oorgedra (Fig2):

  • Logiese '0' - 'n 562.5µs polsslag gevolg deur 'n ruimte van 562.5µs, met 'n totale sendertyd van 1.125 ms
  • Logiese '1' - 'n polsslag van 562,5µs gevolg deur 'n spasie van 1,6875 ms, met 'n totale sendertyd van 2,25 ms

Die draerpuls bestaan uit 21 siklusse by 38kHz. Die polse het gewoonlik 'n punt/spasie -verhouding van 1: 4, om die huidige verbruik te verminder:

(Figuur 3)

Elke kode volgorde begin met 'n 9ms pols, bekend as die AGC pols. Dit word gevolg deur 'n stilte van 4,5 ms:

(Figuur 4)

Die data bestaan dan uit 32 bisse, 'n 16-bis adres gevolg deur 'n 16-bis opdrag, getoon in die volgorde waarin dit oorgedra word (van links na regs):

(Figuur 5)

Die vier grepe databits word eers die minste beduidende bietjie gestuur. Figuur 1 illustreer die formaat van 'n NEC IR -transmissieraam vir 'n adres van 00h (00000000b) en 'n opdrag van ADh (10101101b).

'N Totaal van 67,5 ms word benodig om 'n boodskapraamwerk oor te dra. Dit benodig 27 ms om die 16 stukkies adres (adres + invers) en die 16 stukkies opdrag (opdrag + inverse) oor te dra.

(Figuur 6)

Tyd benodig om die raam te stuur:

16 bisse vir die adres (adres + inverse) benodig 27ms om tyd te stuur. En die 16 bisse vir die opdrag (command + inverse) benodig ook 27ms om tyd te stuur. omdat (adres + adres invers) of (command + command inverse) altyd 8 '0's en 8' 1's sal bevat, so (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. volgens hierdie totale tyd wat nodig is om die raam oor te dra, is (9ms +4.5ms +27ms +27ms) = 67.5 ms.

HERHALINGKODES: As die sleutel op die afstandsbediening ingedruk gehou word, word 'n herhalingskode uitgereik, gewoonlik ongeveer 40 ms na die polsslag wat die einde van die boodskap aangedui het. 'N Herhalingskode word steeds met tussenposes van 108 ms uitgestuur totdat die sleutel uiteindelik losgelaat word. Die herhalingskode bestaan uit die volgende, in volgorde:

  • 'n 9 ms voorste polsslag
  • 'n spasie van 2,25 ms
  • 'n Puls van 562.5µs bars om die einde van die spasie (en dus die einde van die herhaalde kode) aan te dui.

(Figuur 7)

Vertragingsberekening (1 ms):

Klokfrekwensie = 11.0592 Mhz

Masjien siklus = 12

Vertraging = 1 ms

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

= 65536 - 921 = 0xFC67

Stap 3: DC -motorbeheer met behulp van L293D

DC -motorbeheer met behulp van L293D
DC -motorbeheer met behulp van L293D

DC motor

'N GS-motor skakel elektriese energie om in meganiese energie wat gebruik kan word om baie nuttige werke te verrig. Dit kan meganiese beweging veroorsaak, soos Go Forward/Backword of my RoboCar. DC -motors kom in verskillende graderings voor, soos 6V en 12V. Dit het twee drade of penne. Ons kan die draairigting omkeer deur die polariteit van die inset om te keer.

Hier verkies ons L293D, aangesien 'n aanslag van 600mA goed is vir die bestuur van klein DC -motors en beskermingsdiodes is ingesluit in die IC self. Die beskrywing van elke pen is soos volg: Aktiveer penne: Dit is pen nr. 1 en pen nr. 9. Speldnr. 1 word gebruik om Half-H-bestuurder 1 en 2. (H-brug aan die linkerkant) in te skakel. Speld nr. 9 word gebruik om H-brugbestuurder 3 en 4. (H-brug aan die regterkant) moontlik te maak.

Die konsep is eenvoudig; as u 'n spesifieke H -brug wil gebruik, moet u 'n hoë logika gee vir die ooreenstemmende penne saam met die kragtoevoer na die IC. Hierdie pen kan ook gebruik word om die snelheid van die motor te beheer met behulp van PWM -tegniek. VCC1 (pen 16): Kragtoevoerpen. Koppel dit aan 'n 5V -toevoer. VCC2 (pen 8): Kragtoevoer vir motor. Pas +ve spanning daarop toe volgens die motorwaarde. As u u motor teen 12V wil dryf, dien 12V op hierdie pen toe.

Dit is ook moontlik om die motor direk op 'n battery aan te dryf, anders as die wat gebruik word om stroom aan die stroombaan te verskaf. Koppel net die +-aansluiting van die battery aan die VCC2 -pen en maak die GND van beide die batterye algemeen. (MAX spanning by hierdie pen is 36V volgens sy datablad). GND (penne 4, 5, 12, 13): Koppel dit aan die algemene GND van die stroombaan. Invoer (penne 2, 7, 10, 15):

Dit is invoerpenne waardeur beheerseine deur mikrobeheerders of ander stroombane/IC's gegee word. As ons byvoorbeeld op pen 2 (invoer van die eerste helfte H -bestuurder) Logic 1 (5V) gee, kry ons 'n spanning gelyk aan VCC2 op die ooreenstemmende uitsetpen van die eerste helfte H -bestuurder, dws pennr. 3. Net so vir Logic 0 (0V) op Pin 2, 0V op Pin 3 verskyn. Uitsette (Pin 3, 6, 11, 14): Outputs pins. Volgens die insetsein kom die uitgangsein uit.

Motoriese bewegings A B

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

…………… Stop: laag: laag

…… Kloksgewys: laag: hoog

Antikloksgewys: Hoog: Laag

……………. Stop: Hoog: Hoog

Stap 4: Kringdiagramme vir motorbestuurder en IR -sensor

Kringdiagramme vir motorbestuurder en IR -sensor
Kringdiagramme vir motorbestuurder en IR -sensor
Kringdiagramme vir motorbestuurder en IR -sensor
Kringdiagramme vir motorbestuurder en IR -sensor
Kringdiagramme vir motorbestuurder en IR -sensor
Kringdiagramme vir motorbestuurder en IR -sensor

Die ATmega32 is 'n lae-krag CMOS 8-bis mikrobeheerder gebaseer op die AVR-verbeterde RISCarchitecture. Deur kragtige instruksies in 'n enkele kloksiklus uit te voer, behaal die ATmega32 deurvoer wat 1 MIPS per MHz nader, sodat die stelselontwerper die kragverbruik teenoor die verwerkingssnelheid kan optimaliseer.

Die AVR -kern kombineer 'n uitgebreide instruksieset met 32 werkregisters vir algemene doeleindes. Al die 32 registers is direk gekoppel aan die Arithmetic Logic Unit (ALU), waardeur toegang tot twee onafhanklike registers verkry kan word in een enkele instruksie wat uitgevoer word in een klok siklus. Die gevolglike argitektuur is meer kode -doeltreffend, terwyl die deurvoer tot tien keer vinniger is as konvensionele CISC -mikrobeheerders.

Die ATmega32 bied die volgende funksies:

  • 32 kbyte programmeerbare flitsprogramgeheue in die stelsel met lees-terwyl-skryf-funksies,
  • 1024 grepe EEPROM, 2K byte SRAM,
  • 32 algemene I/O -lyne,
  • 32 werkregisters vir algemene doeleindes,
  • 'n JTAG -koppelvlak vir Boundaryscan,
  • Ondersteuning en programmering op die chip, drie buigsame timer/tellers met vergelykingsmodusse, interne en eksterne onderbrekings, 'n seriële programmeerbare USART, 'n byte-georiënteerde tweedraads seriële koppelvlak, 'n 8-kanaal,
  • 10-bis ADC met opsionele differensiële invoertrap met programmeerbare versterking (slegs TQFP-pakket),
  • 'n programmeerbare Watchdog Timer met interne ossillator,
  • 'n SPI -seriële poort, en
  • ses kiesbare kragbesparingsmetodes.

    • Die ledige modus stop die SVE terwyl die USART toegelaat word,
    • Tweedraads koppelvlak, A/D-omskakelaar,
    • SRAM,
    • Timer/tellers,
    • SPI -poort, en
    • onderbreek stelsel om voort te gaan funksioneer.
    • Die afskakelmodus stoor die registerinhoud, maar vries die ossillator, en skakel alle ander skyffunksies uit tot die volgende eksterne onderbreking of hardeware-terugstelling.
    • In die kragbesparingsmodus loop die asynchrone timer voort, waardeur die gebruiker 'n timerbasis kan handhaaf terwyl die res van die toestel slaap.
    • Die ADC -ruisonderdrukkingsmodus stop die SVE en alle I/O -modules, behalwe Asynchronous Timer en ADC, om skakelruis tydens ADC -omskakelings te verminder
    • In die standby -modus loop die kristal/resonator -ossillator terwyl die res van die toestel slaap. Dit laat baie vinnig aan die gang, gekombineer met 'n lae kragverbruik.
    • In die uitgebreide standby -modus loop beide die hoof -oscillator en die asynchrone timer.

Alle verwante stroombane word hier gegee en die hoofstroomkring (atmega32) word ook gegee.

Stap 5: Avr -programme

Avr -programme
Avr -programme
Avr -programme
Avr -programme

1. Vir "afstandsensor":

#include #include

#sluit "remote.h" in

// Globals vlugtige ongetekende int Tyd; // Hooftimer, stoor tyd in 10 us, // Opgedateer deur ISR (TIMER0_COMP) vlugtige ongetekende char BitNo; // Pos van die volgende BIT vlugtige ongetekende char ByteNo; // Pos van huidige byte

vlugtige ongetekende char IrData [4]; // Die vier datagrepe van Ir-pakket // 2-byte-adres 2-byte data vlugtige ongetekende char IrCmdQ [QMAX]; // Finale opdrag ontvang (buffer)

vlugtige ongetekende char PrevCmd; // Word herhaal

// Veranderlikes wat gebruik word om eers te begin herhaal nadat 'n toets 'n sekere tyd ingedruk is

vlugtige ongetekende char Herhaal; // 1 = ja 0 = geen onbestendige ongetekende karakter RCount; // Herhaal telling

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

vlugtige ongetekende char Staat; // Staat van ontvanger

vlugtige ongetekende char Edge; // Rand van onderbreking [RISING = 1 OF FALLING = 0]

vlugtige ongetekende int stop;

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

ongeldig RemoteInit () {

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

stop = 0; Staat = IR_VALIDATE_LEAD_HIGH; Rand = 0; Herhaal = 0;

// Opstellingstimer 1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Stel Vergelyk Waarde

ongetekende char GetRemoteCmd (char wait) {unsigned char cmd;

if (wag) terwyl (QFront ==-1); anders as (QFront ==-1) opgawe (RC_NONE);

cmd = IrCmdQ [QFront];

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

terugkeer cmd;

}

2. main ():

int main (leeg) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

terwyl (1) // Oneindige lus na aktiewe IR-sensor {

cmd = GetRemoteCmd (1);

skakelaar (cmd) {

saak xx: {// BOT Beweeg vorentoe // Ch+ btn vorentoe motor ();

breek; // Beide motors in voorwaartse rigting

}

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

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

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

verstek: PORTC = 0x00; breek; // Beide linker- en regtermotors stop}

}

}/*Einde van die hoof*/

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

// Dit is 'n basiese model, maar ek kan dit in die PWM -modus gebruik.

//…………………………………………….. Hê pret……………………………………………………//

Aanbeveel: