Taula de continguts:
- Pas 1: Comunicació intraRed
- Pas 2: sensor IR i protocol NEC Fromat
- Pas 3: Control del motor de corrent continu mitjançant L293D
- Pas 4: diagrames de circuits per al controlador de motor i el sensor IR
- Pas 5: Programes AVR
Vídeo: ROBOCAR CONTROLAT A DISTÀNCIA INFRA VERMELL AMB MCU AVR (ATMEGA32): 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
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
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
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
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
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
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:
Kit de bricolatge Llum intermitent LED vermell en forma de molí de vent: 6 passos (amb imatges)
Kit de bricolatge Llum intermitent LED vermell en forma de molí de vent: Descripció: es tracta d’un disseny de MCU de bricolatge que ensenya kits de molins de vent electrònics per a la pràctica de la soldadura. Fàcil de muntar: aquest producte us arriba si el kit de components s’ha d’instal·lar a un mòdul fresc com un molí de vent. El nom del marcador dels components del kit era
El comandament a distància de TV es converteix en un comandament a distància RF -- NRF24L01 + Tutorial: 5 passos (amb imatges)
El comandament a distància de TV es converteix en un comandament a distància RF || Tutorial NRF24L01 +: en aquest projecte us mostraré com he utilitzat el popular IC nRF24L01 + RF per ajustar la brillantor d’una tira LED sense fils a través de tres botons inútils d’un control remot de TV. Comencem
Comandament a distància universal controlat per gestos amb MCU de node: 12 passos
Comandament remot universal controlat per gestos amb Node-MCU: Hola a tothom i benvinguts a aquest projecte. Sóc una persona molt mandrosa i el malson d’una persona mandrosa és estar mirant la televisió quan t’adones que el comandament està massa lluny. Em vaig adonar que el meu comandament a distància mai estarà massa lluny si el tinc a mà a qualsevol
Cotxe controlat a distància: controlat mitjançant un controlador Xbox 360 sense fils: 5 passos
Cotxe controlat a distància: controlat mitjançant controlador Xbox 360 sense fils: són instruccions per construir el vostre propi cotxe controlat a distància mitjançant un controlador Xbox 360 sense fils
Com es construeix un robot controlat amb braç de pinça controlat mitjançant Nrf24l01 Arduino: 3 passos (amb imatges)
Com es construeix un robot controlat amb braç de pinça controlat mitjançant Nrf24l01 Arduino: la instrucció "Com construir robot controlat amb braç de pinça mitjançant Via Nrf24l01 Arduino" explicarà com construir un braç de pinça de tres graus de llibertat instal·lat en rodes de rodes controlades pel mòdul L298N de doble motor amb MEG