Taula de continguts:

ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32): 5 passos
ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32): 5 passos

Vídeo: ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32): 5 passos

Vídeo: ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32): 5 passos
Vídeo: How Self-Driving Cars Will Change the World! 2024, Juliol
Anonim
ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32)
ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32)

El present PROJECTE descriu un disseny i implementació d’un RoboCar controlat a distància per infrarojos (IR) que es pot utilitzar per a diverses aplicacions de control no tripulades automatitzades. He dissenyat un RoboCar controlat a distància (moviment esquerre-dret / davant-darrere). Tot el sistema es basa en un microcontrolador (Atmega32) que fa que el sistema de control sigui més intel·ligent i fàcil de modificar per a altres aplicacions. Permet a l’usuari accionar o controlar un RoboCar i fer funcionar l’interruptor d’alimentació de la xarxa a uns 5 metres.

Paraules clau: descodificador IR, microcontrolador AVR (Atmega32), control remot de TV, comunicació sense fils

_

Pas 1: Comunicació intraRed

Comunicació intra-vermella
Comunicació intra-vermella

Principi de comunicació IR:

a) Transmissió IR

El transmissor d’un LED IR al seu circuit, que emet llum infraroja per cada pols elèctric que se li dóna. Aquest pols es genera a mesura que es prem un botó del comandament a distància, completant així el circuit, proporcionant polarització al LED. El LED en estar esbiaixat emet llum de la longitud d'ona de 940 nm com una sèrie de polsos, que corresponen al botó premut. Tanmateix, ja que juntament amb el LED IR hi ha moltes altres fonts de llum infraroja, com ara els éssers humans, les bombetes, el sol, etc., la informació transmesa es pot interferir. Una solució a aquest problema és mitjançant la modulació. El senyal transmès es modula mitjançant una freqüència portadora de 38 KHz (o qualsevol altra freqüència entre 36 i 46 KHz). El LED IR fa oscil·lar a aquesta freqüència durant el temps que dura el pols. La informació o els senyals lluminosos estan modulats en l'amplada del pols i estan continguts en la freqüència de 38 KHz. La transmissió per infraroig es refereix a l'energia a la regió de l'espectre de radiació electromagnètica a longituds d'ona més llargues que les de la llum visible, però més curtes que les de les ones de ràdio. En conseqüència, les freqüències infraroges són més altes que les de les microones, però inferiors a les de la llum visible. Els científics divideixen l'espectre de radiació infraroja (IR) en tres regions. Les longituds d'ona s'especifiquen en micres (simbolitzades µ, on 1 µ = 10-6 metres) o en nanòmetres (abreviat nm, on 1 nm = 10-9 metre = 0,001 5). La banda IR propera conté energia en el rang de longituds d’ona més properes al visible, des d’aproximadament 0,750 a 1,300 5 (750 a 1300 nm). La banda IR intermedia (també anomenada banda IR mitjana) consisteix en energia d'entre 1.300 i 3.000 5 (1300 a 3000 nm). La banda IR llunyana s'estén de 2.000 a 14.000 5 (3000 nm a 1.4000 x 104 nm).

b) Recepció IR

El receptor consisteix en un detector de fotos que desenvolupa un senyal elèctric de sortida a mesura que hi incideix la llum. La sortida del detector es filtra mitjançant un filtre de banda estreta que descarta totes les freqüències inferiors o superiors a la freqüència portadora (38 KHz en aquest cas). La sortida filtrada es dóna al dispositiu adequat com un microcontrolador o un microprocessador que controla dispositius com un PC o un robot. La sortida dels filtres també es pot connectar a l’oscil·loscopi per llegir els impulsos.

Aplicacions de IR:

L’infraroig s’utilitza en una gran varietat d’aplicacions de control, supervisió i comunicacions sense fils. Aquests són alguns exemples:

· Caixes de control remot d’entreteniment domèstic

· Sense fil (xarxes d’àrea local)

· Enllaços entre ordinadors portàtils i ordinadors de sobretaula

· Mòdem sense fil

· Detectors d’intrusions

· Detectors de moviment

· Sensors de foc

· Sistemes de visió nocturna

· Equips de diagnòstic mèdic

· Sistemes d’orientació de míssils

· Dispositius de control geològic

La transmissió de dades IR d'un dispositiu a un altre de vegades es coneix com a transmissió.

Pas 2: sensor IR i protocol NEC Fromat

Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat
Sensor IR i protocol NEC Fromat

Sensors IR (Fig1)

TSOP1738, SFH-5110-38 (38 kHz)

Característiques dels sensors TSOP:

  • El preamplificador i el detector de fotos es troben en un sol paquet
  • Filtre intern per a freqüència PCM
  • Millora de la protecció contra les pertorbacions del camp elèctric
  • Compatibilitat TTL i CMOS
  • Sortida activa baixa Baix consum d'energia
  • Alta immunitat contra la llum ambiental
  • Possible transmissió continuada de dades

Protocol NEC:

El protocol de transmissió IR NEC utilitza la codificació de distància de pols dels bits de missatge. Cada ràfega de pols té una longitud de 562,5 µs, a una freqüència portadora de 38 kHz (26,3 µs). Els bits lògics es transmeten de la següent manera (figura 2):

  • '0' lògic: una explosió de pols de 562,5 µs seguida d'un espai de 562,5 µs, amb un temps de transmissió total d'1,125 ms
  • Lògic '1': una explosió de pols de 562,5 µs seguida d'un espai de 1,6875 ms, amb un temps de transmissió total de 2,25 ms

El pols portador consta de 21 cicles a 38 kHz. Els polsos solen tenir una relació marca / espai d’1: 4, per reduir el consum actual:

(Fig3)

Cada seqüència de codi comença amb un pols de 9 ms, conegut com a pols AGC. Tot seguit es fa un silenci de 4,5 ms:

(Fig4)

Les dades es componen de 32 bits, una adreça de 16 bits seguida d’una ordre de 16 bits, que es mostra en l’ordre en què es transmeten (d’esquerra a dreta):

(Fig5)

Els quatre bytes de bits de dades s'envien cada un bit menys important. La figura 1 il·lustra el format d'un quadre de transmissió IR NEC, per a una adreça de 00h (00000000b) i un comandament d'ADh (10101101b).

Es necessita un total de 67,5 ms per transmetre un marc de missatges. Necessita 27 ms per transmetre els 16 bits d’adreça (adreça + inversa) i els 16 bits d’ordre (ordre + inversa).

(Fig6)

Temps necessari per transmetre el fotograma:

Els 16 bits per a l’adreça (adreça + inversa) requereixen 27 ms per transmetre el temps. I els 16 bits per a l’ordre (ordre + inversa) també requereixen 27 ms per transmetre el temps. perquè (adreça + adreça inversa) o (ordre + ordre inversa) sempre contindrà 8 '0 i 8' 1 de manera que (8 * 1,125 ms) + (8 * 2,25 ms) == 27 ms. d'acord amb aquest temps total necessari per transmetre el quadre és (9ms + 4,5ms + 27ms + 27ms) = 67,5 ms.

CODIS DE REPETICIÓ: si es manté premuda la tecla del comandament a distància, s’emetrà un codi de repetició, normalment uns 40 ms després de l’esclat de pols que significava el final del missatge. Es continuarà enviant un codi de repetició a intervals de 108 ms, fins que finalment es deixi anar la clau. El codi de repetició consisteix en el següent, per ordre:

  • un impuls de 9 ms va esclatar
  • un espai de 2,25 ms
  • un pols de 562,5µs va esclatar per marcar el final de l'espai (i, per tant, el final del codi de repetició transmès).

(Fig7)

Càlcul de retard (1 ms):

Freq del rellotge = 11,0592 Mhz

Cicle de la màquina = 12

Retard = 1 ms

TimerValue = 65536 - ((Retard * Freqüència de rellotge) / Cicle de màquina) = 65536 - ((1ms * 11.0592Mhz) / 12)

= 65536 - 921 = 0xFC67

Pas 3: Control del motor de corrent continu mitjançant L293D

Control del motor de corrent continu mitjançant L293D
Control del motor de corrent continu mitjançant L293D

Motor DC

Un motor de CC converteix l’energia elèctrica en energia mecànica que es pot utilitzar per fer molts treballs útils. Pot produir moviments mecànics com anar endavant / contrasenya del meu RoboCar. Els motors de corrent continu presenten diverses qualificacions, com ara 6V i 12V. Té dos cables o pins. Podem invertir el sentit de rotació invertint la polaritat d’entrada.

Aquí preferim L293D, ja que una qualificació de 600 mA és bona per conduir motors de corrent continu petits i els díodes de protecció s’inclouen a la pròpia IC. La descripció de cada pin és la següent: Activa pins: són els pins núm. 1 i el pin núm. 9. Pin núm. 1 s’utilitza per habilitar el controlador Half-H 1 i 2. (pont H al costat esquerre). Pin núm. 9 s’utilitza per habilitar el controlador 3 i 4. del pont H (pont H al costat dret).

El concepte és senzill, si voleu utilitzar un pont H concret, heu de donar una lògica elevada als pins d’activació corresponents juntament amb la font d’alimentació de l’IC. Aquest pin també es pot utilitzar per controlar la velocitat del motor mitjançant la tècnica PWM. VCC1 (Pin 16): Pin d'alimentació. Connecteu-lo a un subministrament de 5 V. VCC2 (Pin 8): font d'alimentació del motor. Apliqueu-hi una tensió + ve segons la potència del motor. Si voleu conduir el motor a 12V, apliqueu-lo a aquest pin.

També és possible conduir el motor directament amb una bateria, diferent de la que s’utilitza per subministrar energia al circuit, només cal que connecteu el terminal + ve d’aquesta bateria al pin VCC2 i que el GND de les dues bateries sigui comú. (La tensió màxima en aquest pin és de 36 V segons el seu full de dades). GND (pins 4, 5, 12, 13): connecteu-los a GND comú del circuit. Entrades (pins 2, 7, 10, 15):

Es tracta de pins d'entrada a través dels quals els senyals de control són donats per microcontroladors o altres circuits / circuits integrats. Per exemple, si al pin 2 (entrada del controlador de la primera meitat H) donem la lògica 1 (5V), obtindrem una tensió igual a VCC2 al pin de sortida corresponent del controlador de la primera meitat H, és a dir, el pin núm. 3. De la mateixa manera, per a Logic 0 (0V) al pin 2, apareix 0V al pin 3. Sortides (pin 3, 6, 11, 14): pins de sortida. Segons el senyal d'entrada ve el senyal de sortida.

Moviments motors A B

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

…………… Parada: Baixa: Baixa

…… en sentit horari: baix: alt

En sentit antihorari: alt: baix

……………. Detenció: alta: alta

Pas 4: diagrames de circuits per al controlador de motor i el sensor IR

Diagrames de circuits per al controlador de motor i el sensor IR
Diagrames de circuits per al controlador de motor i el sensor IR
Diagrames de circuits per al controlador de motor i el sensor IR
Diagrames de circuits per al controlador de motor i el sensor IR
Diagrames de circuits per al controlador de motor i el sensor IR
Diagrames de circuits per al controlador de motor i el sensor IR

L’ATmega32 és un microcontrolador CMOS de 8 bits de poca potència basat en l’arquitectura RIS millorada AVR. En executar instruccions potents en un sol cicle de rellotge, l’ATmega32 aconsegueix rendiments que s’acosten a 1 MIPS per MHz, cosa que permet al dissenyador del sistema optimitzar el consum d’energia i la velocitat de processament.

El nucli AVR combina un ric conjunt d'instruccions amb 32 registres de treball per a usos generals. Tots els 32 registres estan connectats directament a la Unitat Lògica Aritmètica (ALU), cosa que permet accedir a dos registres independents en una sola instrucció executada en un cicle de rellotge. L’arquitectura resultant és més eficaç en el codi i aconsegueix rendiments fins a deu vegades més ràpids que els microcontroladors CISC convencionals.

L'ATmega32 proporciona les funcions següents:

  • 32 Kbytes de memòria del programa Flash programable al sistema amb funcions de lectura-escriptura,
  • 1024 bytes EEPROM, 2K byte SRAM,
  • 32 línies d'E / S d'ús general,
  • 32 registres de treball d’ús general,
  • una interfície JTAG per a Boundaryscan,
  • Suport i programació de depuració en xip, tres temporitzadors / comptadors flexibles amb modes de comparació, interrupcions internes i externes, un USART programable en sèrie, una interfície sèrie de dos fils orientada a bytes, un canal de 8,
  • ADC de 10 bits amb etapa d’entrada diferencial opcional amb guany programable (només paquet TQFP),
  • un temporitzador de vigilància programable amb oscil·lador intern,
  • un port sèrie SPI i
  • sis modes d'estalvi d'energia seleccionables per programari.

    • El mode d’espera atura la CPU mentre permet l’USART,
    • Interfície de dos fils, convertidor A / D,
    • SRAM,
    • Temporitzador / comptadors,
    • Port SPI i
    • sistema d’interrupcions per continuar funcionant.
    • El mode d’apagat desa el contingut del registre, però congela l’oscil·lador i desactiva la resta de funcions del xip fins a la següent interrupció externa o restabliment de maquinari.
    • En mode d'estalvi d'energia, el temporitzador asíncron continua funcionant, cosa que permet a l'usuari mantenir una base de temporitzador mentre la resta del dispositiu dorm.
    • El mode de reducció de soroll ADC atura la CPU i tots els mòduls d'E / S excepte el temporitzador asíncron i l'ADC, per minimitzar el soroll de commutació durant les conversions d'ADC
    • En el mode d'espera, l'oscil·lador de cristalls / ressonadors funciona mentre la resta del dispositiu dorm. Això permet una posada en marxa molt ràpida combinada amb un baix consum d'energia.
    • En el mode d'espera estesa, tant l'oscil·lador principal com el temporitzador asíncron continuen funcionant.

Aquí es donen tots els circuits relacionats i també es dóna el circuit principal (atmega32).

Pas 5: Programes AVR

Programes AVR
Programes AVR
Programes AVR
Programes AVR

1. Per al "sensor remot":

#include #include

#include "remote.h"

// Volàtils globals sense signar int Temps; // Temporitzador principal, emmagatzema el temps en 10us, // Actualitzat per ISR (TIMER0_COMP) volàtil sense signar caràcter BitNo; // Posició del proper BIT volàtil sense signar caràcter ByteNo; // Posició del byte actual

caràcter volàtil sense signar IrData [4]; // Els quatre bytes de dades del paquet Ir // Adreça de 2 bytes Caràcters volàtils sense signes de dades de 2 bytes IrCmdQ [QMAX]; // Ordre final rebuda (memòria intermèdia)

volàtil sense signar PrevCmd; // S’utilitza per repetir

// Variables que s’utilitzen per començar a repetir-se només després de prémer una tecla durant cert temps

volàtil sense signar repetir; // 1 = sí 0 = no volàtil sense signar caràcter RCount; // Repeteix el recompte

caràcter volàtil QFront = -1, QEnd = -1;

estat volàtil sense signar; // Estat del receptor

volàtil sense signe Char Edge; // Vora de la interrupció [RISING = 1 O FALLING = 0]

volàtil sense signar int stop;

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

void RemoteInit () {

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

parada = 0; Estat = IR_VALIDATE_LEAD_HIGH; Edge = 0; Repetiu = 0;

// Configuració del temporitzador1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Estableix el valor de comparació

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

if (espereu) mentre (QFront == - 1); else if (QFront == - 1) retorna (RC_NONE);

cmd = IrCmdQ [QFront];

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

retorn cmd;

}

2. main ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Bucle infinit al sensor IR actiu {

cmd = GetRemoteCmd (1);

commutador (cmd) {

cas xx: {// BOT avança // Ch + btn forwardmotor ();

trencar; // Ambdós motors en direcció cap endavant

}

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

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

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

per defecte: PORTC = 0x00; break; // Paren tant els motors esquerre com dret}

}

} / * Fi de la principal * /

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

// És un model bàsic, però el puc utilitzar en mode PWM.

//…………………………………………….. Diverteix-te……………………………………………………//

Recomanat: