Sisällysluettelo:

INFRA PUNAINEN KAUKOSÄÄDETTÄVÄ ROBOKAARI AVR (ATMEGA32) MCU: lla: 5 vaihetta
INFRA PUNAINEN KAUKOSÄÄDETTÄVÄ ROBOKAARI AVR (ATMEGA32) MCU: lla: 5 vaihetta

Video: INFRA PUNAINEN KAUKOSÄÄDETTÄVÄ ROBOKAARI AVR (ATMEGA32) MCU: lla: 5 vaihetta

Video: INFRA PUNAINEN KAUKOSÄÄDETTÄVÄ ROBOKAARI AVR (ATMEGA32) MCU: lla: 5 vaihetta
Video: Enter into your red hair era 🔥. #manicpanic #redhair #haircolor #diyhair #diyhaircolor 2024, Heinäkuu
Anonim
INFRA PUNAINEN KAUKOSÄÄDETTÄVÄ ROBOKAARI AVR (ATMEGA32) MCU
INFRA PUNAINEN KAUKOSÄÄDETTÄVÄ ROBOKAARI AVR (ATMEGA32) MCU

Tämä PROJEKTI kuvaa infrapunakaukosäätimellä varustetun RoboCarin suunnittelua ja toteutusta, jota voidaan käyttää erilaisiin automaattisiin miehittämättömiin ohjaussovelluksiin. Olen suunnitellut kauko-ohjattavan RoboCarin (vasen-oikea/edestä-taakse -liike). Koko järjestelmä perustuu mikrokontrolleriin (Atmega32), joka tekee ohjausjärjestelmästä älykkäämmän ja helposti muokattavissa muihin sovelluksiin. Sen avulla käyttäjä voi ohjata tai ohjata RoboCaria ja käyttää verkkokytkintä noin 5 metrin etäisyydeltä.

Avainsanat: IR -dekooderi, AVR (Atmega32) -mikro -ohjain, television kaukosäädin, langaton tiedonsiirto

_

Vaihe 1: IntraRed -viestintä

IntraRed -viestintä
IntraRed -viestintä

IR -viestintäperiaate:

a) IR -lähetys

Piirin sisällä oleva IR -LED -lähetin, joka lähettää infrapunavaloa jokaiselle sille annetulle sähköpulssille. Tämä pulssi syntyy, kun kauko -ohjaimen painiketta painetaan, jolloin piiri täydentyy ja LED -esijännite saadaan aikaan. Esijännitetyllä LED -valolla lähetetään 940 nm: n aallonpituuden valoa pulssisarjana, joka vastaa painettua painiketta. Kuitenkin, koska IR -LED -valon ohella monet muut infrapunavalon lähteet, kuten me ihmiset, hehkulamput, aurinko jne., Lähetetyt tiedot voivat häiritä. Ratkaisu tähän ongelmaan on modulaatio. Lähetetty signaali moduloidaan käyttämällä 38 KHz: n kantoaaltoa (tai mitä tahansa muuta taajuutta välillä 36 - 46 KHz). IR -LED on värähtelevä tällä taajuudella pulssin ajan. Tiedot tai valosignaalit ovat pulssileveysmoduloituja ja sisältyvät 38 KHz: n taajuuteen. Infrapunalähetys tarkoittaa sähkömagneettisen säteilyn alueen energiaa aallonpituuksilla, jotka ovat pidempiä kuin näkyvän valon, mutta lyhyemmät kuin radioaaltojen. Vastaavasti infrapunataajuudet ovat korkeampia kuin mikroaaltojen, mutta pienemmät kuin näkyvän valon. Tutkijat jakavat infrapunasäteilyn (IR) spektrin kolmeen alueeseen. Aallonpituudet on ilmoitettu mikronina (symboli µ, jossa 1 µ = 10-6 metriä) tai nanometreinä (lyhennettynä nm, jossa 1 nm = 10-9 metriä = 0,001 5). Lähes IR -kaista sisältää energiaa aallonpituuksien alueella, joka on lähinnä näkyvää, noin 0,750 - 1,300 5 (750 - 1300 nm). Välitön IR -kaista (kutsutaan myös keskimmäiseksi IR -kaistaksi) koostuu energiasta alueella 1,300 - 3000 (1300 - 3000 nm). Kaukana oleva IR -kaista ulottuu 2 000 - 14 000 5 (3000 nm - 1,4000 x 104 nm).

b) IR -vastaanotto

Vastaanotin koostuu valokennosta, joka kehittää sähköisen signaalin, kun siihen tulee valoa. Ilmaisimen lähtö suodatetaan kapeakaistaisella suodattimella, joka hylkää kaikki taajuudet kantotaajuuden alapuolella tai yläpuolella (tässä tapauksessa 38 KHz). Suodatettu lähtö annetaan sitten sopivalle laitteelle, kuten mikro- tai mikroprosessorille, joka ohjaa laitteita, kuten PC: tä tai robottia. Suodattimien lähtö voidaan myös liittää oskilloskooppiin pulssien lukemiseksi.

IR -sovellukset:

Infrapunaa käytetään monissa langattomissa viestintä-, valvonta- ja ohjaussovelluksissa. Tässä muutamia esimerkkejä:

· Kotiviihteen kauko-ohjainlaatikot

· Langaton (lähiverkot)

· Linkit kannettaviin tietokoneisiin ja pöytätietokoneisiin

· Langaton modeemi

· Tunkeutumisilmaisimet

· Liiketunnistimet

· Paloanturit

· Pimeänäköjärjestelmät

· Lääketieteelliset diagnostiikkalaitteet

· Ohjusten ohjausjärjestelmät

· Geologiset seurantalaitteet

IR -datan siirtämistä laitteesta toiseen kutsutaan joskus säteilyksi.

Vaihe 2: IR -anturi ja NEC -protokolla Fromat

IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat
IR -anturi ja NEC -protokolla Fromat

IR -anturit (kuva 1)

TSOP1738, SFH-5110-38 (38 kHz)

TSOP -anturit Ominaisuudet:

  • Esivahvistin ja valotunnistin ovat yhdessä pakkauksessa
  • Sisäinen suodatin PCM -taajuudelle
  • Parempi suojaus sähkökenttähäiriöitä vastaan
  • TTL- ja CMOS -yhteensopivuus
  • Lähtö aktiivinen alhainen Pieni virrankulutus
  • Korkea immuniteetti ympäristön valoa vastaan
  • Jatkuva tiedonsiirto mahdollista

NEC -protokolla:

NEC IR -lähetysprotokolla käyttää viestibittien pulssietäisyyskoodausta. Jokainen pulssipurske on 562,5 µs pitkä ja kantoaaltotaajuus 38 kHz (26,3 µs). Loogiset bitit lähetetään seuraavasti (kuva 2):

  • Looginen '0' - 562,5 µs: n pulssipurske, jota seuraa 562,5 µs: n tila, kokonaislähetysaika 1,125 ms
  • Looginen '1' - 562,5 µs: n pulssipurske, jota seuraa 1,6875 ms: n tila, kokonaislähetysaika 2,25 ms

Kantoaallon pulssi koostuu 21 jaksosta 38 kHz: n taajuudella. Pulssien merkki/tila -suhde on yleensä 1: 4, mikä vähentää virrankulutusta:

(Kuva 3)

Jokainen koodisarja alkaa 9 ms: n pulssilla, joka tunnetaan nimellä AGC -pulssi. Tätä seuraa 4,5 ms hiljaisuus:

(Kuva 4)

Tiedot koostuvat sitten 32 bitistä, 16-bittisestä osoitteesta ja sen jälkeen 16-bittisestä komennosta, jotka näytetään niiden lähetysjärjestyksessä (vasemmalta oikealle):

(Kuva 5)

Neljä tavua databittejä lähetetään kukin vähiten merkitseväksi ensin. Kuva 1 havainnollistaa NEC IR -lähetyskehyksen muotoa osoitteelle 00h (00000000b) ja komennolle ADh (10101101b).

Viestikehyksen lähettämiseen tarvitaan yhteensä 67,5 ms. Se tarvitsee 27 ms lähettääkseen 16 bittiä osoitetta (osoite + käänteinen) ja 16 komentoa (komento + käänteinen).

(Kuva 6)

Kehyksen lähettämiseen tarvittava aika:

16 bittiä osoitetta varten (osoite + käänteinen) vaativat 27 ms: n lähetysaikaa. Ja 16 bittiä komennolle (komento + käänteinen) vaativat myös 27 ms lähetysaikaa. koska (osoite + osoitteen käänteinen) tai (komento + komento käänteinen) sisältää aina 8 '0 ja 8' 1 niin (8 * 1,125 ms) + (8 * 2,25 ms) == 27 ms. tämän mukaan kehyksen lähettämiseen tarvittava kokonaisaika on (9ms +4,5ms +27ms +27ms) = 67,5 ms.

TOISTOKOODIT: Jos kauko -ohjaimen näppäintä pidetään painettuna, toistokoodi annetaan, tyypillisesti noin 40 ms viestin päättymistä osoittavan pulssipurskeen jälkeen. Toistokoodia lähetetään edelleen 108 ms: n välein, kunnes avain vapautetaan. Toistokoodi koostuu seuraavista järjestyksessä:

  • 9 ms johtava pulssi
  • 2,25 ms tilaa
  • 562,5 µs: n pulssipurske merkitsee tilan loppua (ja siten lähetetyn toistokoodin loppua).

(Kuva 7)

Viivelaskenta (1 ms):

Kellotaajuus = 11,0592 Mhz

Koneen sykli = 12

Viive = 1 ms

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

= 65536-921 = 0xFC67

Vaihe 3: DC -moottorin ohjaus L293D: n avulla

DC -moottorin ohjaus L293D: n avulla
DC -moottorin ohjaus L293D: n avulla

DC -moottori

Tasavirtamoottori muuntaa sähköenergian mekaaniseksi energiaksi, jolla voidaan tehdä monia hyödyllisiä töitä. Se voi tuottaa mekaanista liikettä, kuten RoboCar -autoni Siirry eteenpäin/Takaisin. DC -moottoreita on saatavana eri luokituksilla, kuten 6V ja 12V. Siinä on kaksi johtoa tai nastaa. Voimme kääntää pyörimissuunnan kääntämällä tulon napaisuuden.

Tässä mieluummin L293D, koska luokitus 600 mA on hyvä pienille tasavirtamoottoreille ja suojadiodit sisältyvät itse IC: hen. Kunkin nastan kuvaus on seuraava: Ota nastat käyttöön: Nämä ovat nastan nro. 1 ja nasta nro. 9. Tappi nro. 1 käytetään Half-H-ohjaimen 1 ja 2 käyttöönottoon (H-silta vasemmalla puolella). Nasta nro 9 mahdollistaa H-sillan kuljettajan 3 ja 4 käyttöönoton (H-silta oikealla puolella).

Konsepti on yksinkertainen, jos haluat käyttää tiettyä H -siltaa, sinun on annettava korkea logiikka vastaaville käyttöönottotappeille yhdessä virtalähteen kanssa. Tätä tappia voidaan käyttää myös moottorin nopeuden säätämiseen PWM -tekniikalla. Liitä se 5 V: n virtalähteeseen. VCC2 (nasta 8): Moottorin virtalähde. Käytä siihen +ve -jännitettä moottorin luokituksen mukaan. Jos haluat käyttää moottoria 12 V: n jännitteellä, käytä 12 V tähän nastaan.

On myös mahdollista käyttää moottoria suoraan paristolla, jota ei käytetä virtapiirin syöttämiseen. Kytke vain akun +ve -liitin VCC2 -nastaan ja tee molempien akkujen GND yleiseksi. (MAX -jännite tällä tapilla on 36 V sen tietolomakkeen mukaisesti). GND (nastat 4, 5, 12, 13): Liitä ne yleiseen piirin GND -tuloon.

Nämä ovat tulonappeja, joiden kautta mikro -ohjaimet tai muut piirit/IC: t antavat ohjaussignaaleja. Esimerkiksi, jos annamme nastalle 2 (ensimmäisen puoliskon H -ohjaimen tulo) logiikan 1 (5 V), saamme jännitteen, joka on yhtä suuri kuin VCC2, ensimmäisen puoliskon H -ohjaimen vastaavassa ulostulonastassa, eli nastan nro. 3. Samoin logiikalle 0 (0V) nastassa 2, 0V nastassa 3. Lähdöt (nastat 3, 6, 11, 14): Lähdöt nastat. Tulosignaalin mukaan tulee lähtösignaali.

Moottorin liikkeet A B

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

…………… Stop: Low: Low

…… myötäpäivään: matala: korkea

Vastapäivään: Korkea: Matala

……………. Lopeta: Korkea: Korkea

Vaihe 4: Piirikaaviot moottorin ohjaimelle ja IR -anturille

Moottorin ohjaimen ja infrapuna -anturin piirikaaviot
Moottorin ohjaimen ja infrapuna -anturin piirikaaviot
Moottorin ohjaimen ja infrapuna -anturin piirikaaviot
Moottorin ohjaimen ja infrapuna -anturin piirikaaviot
Moottorin ohjaimen ja infrapuna -anturin piirikaaviot
Moottorin ohjaimen ja infrapuna -anturin piirikaaviot

ATmega32 on pienitehoinen 8-bittinen CMOS-mikrokontrolleri, joka perustuu AVR-parannettuun RISCarchitecture-rakenteeseen. Suorittamalla tehokkaita käskyjä yhdessä kellosyklissä ATmega32 saavuttaa lähdöt, jotka lähestyvät 1 MIPS / MHz, jolloin järjestelmän suunnittelija voi optimoida virrankulutuksen suhteessa prosessorin nopeuteen.

AVR -ytimessä on monipuolinen käskysarja ja 32 yleiskäyttörekisteriä. Kaikki 32 rekisteriä on kytketty suoraan aritmeettiseen logiikkayksikköön (ALU), jolloin kaksi itsenäistä rekisteriä voidaan käyttää yhdessä käskyssä, joka suoritetaan yhdessä kellojaksossa. Tuloksena oleva arkkitehtuuri on kooditehokkaampi ja saavuttaa jopa kymmenen kertaa nopeammat suoritukset kuin perinteiset CISC -mikro -ohjaimet.

ATmega32 tarjoaa seuraavat ominaisuudet:

  • 32 kt tavua ohjelmoitavaa Flash-ohjelmamuistia luku- ja kirjoitusominaisuuksilla,
  • 1024 tavua EEPROM, 2K tavua SRAM,
  • 32 yleiskäyttöistä I/O -linjaa,
  • 32 yleiskäyttörekisteriä,
  • JTAG -rajapinta Boundaryscanille,
  • Sirun virheenkorjauksen tuki ja ohjelmointi, kolme joustavaa ajastin-/laskuria, joissa on vertailutiloja, sisäiset ja ulkoiset keskeytykset, sarjaohjelmoitava USART, tavukeskeinen kaksijohtiminen sarjaliitäntä, 8-kanavainen,
  • 10-bittinen ADC ja valinnainen differentiaalitulovaihe ohjelmoitavalla vahvistuksella (vain TQFP-paketti),
  • ohjelmoitava Watchdog -ajastin, jossa on sisäinen oskillaattori,
  • SPI -sarjaportti ja
  • kuusi ohjelmistovalittavaa virransäästötilaa.

    • Valmiustila pysäyttää suorittimen samalla, kun USART,
    • Kaksijohtiminen liitäntä, A/D-muunnin,
    • SRAM,
    • Ajastin/laskurit,
    • SPI -portti ja
    • keskeyttää järjestelmän toiminnan jatkamiseksi.
    • Virrankatkaisutila tallentaa rekisterin sisällön, mutta jäädyttää oskillaattorin ja poistaa kaikki muut sirutoiminnot käytöstä seuraavaan ulkoiseen keskeytykseen tai laitteiston nollaukseen saakka.
    • Virransäästötilassa asynkroninen ajastin jatkaa toimintaansa, jolloin käyttäjä voi ylläpitää ajastinta, kun muu laite on lepotilassa.
    • ADC -kohinanvaimennustila pysäyttää suorittimen ja kaikki I/O -moduulit paitsi asynkronisen ajastimen ja ADC: n minimoidaksesi kytkentäkohinan ADC -muunnosten aikana
    • Valmiustilassa kristalli/resonaattori -oskillaattori on käynnissä, kun muu laite nukkuu. Tämä mahdollistaa erittäin nopean käynnistyksen yhdistettynä pieneen virrankulutukseen.
    • Laajennetussa valmiustilassa sekä pääoskillaattori että asynkroninen ajastin toimivat edelleen.

Kaikki asiaan liittyvät piirit ovat tässä ja pääpiiri (atmega32) on myös annettu.

Vaihe 5: Avr -ohjelmat

Avr -ohjelmat
Avr -ohjelmat
Avr -ohjelmat
Avr -ohjelmat

1. "Etäanturi":

#Sisällytä #Sisällytä

#include "remote.h"

// Globaalit volatile unsigned int Time; // Pääajastin, tallentaa aikaa 10us, // Päivitetty ISR (TIMER0_COMP) haihtuva allekirjoittamaton merkki BitNo; // Seuraavan BIT: n haihtuvan allekirjoittamattoman merkin positio ByteNo; // Nykyisen tavun sijainti

haihtuvat allekirjoittamattomat merkit IrData [4]; // Ir-paketin neljä datatavua // 2-tavuinen osoite 2-tavu Data haihtuva allekirjoittamaton merkki IrCmdQ [QMAX]; // Lopullinen komento vastaanotettu (puskuri)

haihtuva allekirjoittamaton hiili PrevCmd; // Käytetään toistamiseen

// Muuttujat, joita käytetään toiston aloittamiseen vasta sen jälkeen, kun näppäintä on painettu tietyn ajan

haihtuva allekirjoittamaton merkki Toista; // 1 = kyllä 0 = ei haihtuvia allekirjoittamattomia merkkejä RCount; // Toista laskenta

haihtuva hiili QFront = -1, QEnd = -1;

haihtuva allekirjoittamaton char -tila; // Vastaanottajan tila

haihtuva allekirjoittamaton merkki Edge; // Keskeytyksen reuna [RISING = 1 OR FALLING = 0]

haihtuva allekirjoittamaton int stop;

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

void RemoteInit () {

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

stop = 0; Tila = IR_VALIDATE_LEAD_HIGH; Reuna = 0; Toista = 0;

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

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Aseta vertailuarvo

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

jos (odota), kun (QFront ==-1); else if (QFront ==-1) return (RC_NONE);

cmd = IrCmdQ [QFront];

jos (QFront == QEnd) QFront = QEnd = -1; else {if (QFront == (QMAX-1)) QFront = 0; muut QFront ++; }

palaa cmd;

}

2. pää ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Ääretön silmukka aktiiviseen IR-anturiin {

cmd = GetRemoteCmd (1);

kytkin (cmd) {

case xx: {// BOT Siirtyy eteenpäin // Ch+ btn eteenpäinmoottori ();

tauko; // Molemmat moottorit eteenpäin

}

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

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

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

oletus: PORTC = 0x00; tauko; // Sekä vasen että oikea moottori pysähtyvät}

}

}/*Pään loppu*/

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

// Se on perusmalli, mutta voin käyttää sitä PWM -tilassa.

//…………………………………………….. Pidä hauskaa……………………………………………………//

Suositeltava: