Table des matières:
- Étape 1: Communication IntraRouge
- Étape 2: Capteur IR & Protocole NEC Fromat
- Étape 3: Contrôle du moteur à courant continu à l'aide du L293D
- Étape 4: Schémas de circuit pour le pilote de moteur et le capteur IR
- Étape 5: Programmes Avr
Vidéo: ROBOCAR INFRAROUGE TÉLÉCOMMANDÉ UTILISANT UN MCU AVR (ATMEGA32): 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Le présent PROJET décrit la conception et la mise en œuvre d'un RoboCar télécommandé par infrarouge (IR) qui peut être utilisé pour diverses applications de contrôle automatisé sans pilote. J'ai conçu RoboCar télécommandé (mouvement gauche-droite/avant-arrière). L'ensemble du système est basé sur un microcontrôleur (Atmega32) qui rend le système de contrôle plus intelligent et facile à modifier pour d'autres applications. Il permet à l'utilisateur de faire fonctionner ou de contrôler un RoboCar et d'actionner l'interrupteur d'alimentation secteur à une distance d'environ 5 mètres.
Mots clés: décodeur IR, microcontrôleur AVR (Atmega32), télécommande TV, communication sans fil
_
Étape 1: Communication IntraRouge
Principe de communication infrarouge:
a) Transmission infrarouge
L'émetteur d'une LED IR à l'intérieur de son circuit, qui émet une lumière infrarouge pour chaque impulsion électrique qui lui est donnée. Cette impulsion est générée lorsqu'un bouton de la télécommande est enfoncé, complétant ainsi le circuit, fournissant une polarisation à la LED. La LED lorsqu'elle est polarisée émet une lumière de la longueur d'onde de 940 nm sous forme d'une série d'impulsions, correspondant au bouton enfoncé. Cependant, étant donné que, avec la LED IR, de nombreuses autres sources de lumière infrarouge telles que les êtres humains, les ampoules, le soleil, etc., les informations transmises peuvent être perturbées. Une solution à ce problème est la modulation. Le signal émis est modulé à l'aide d'une fréquence porteuse de 38 KHz (ou toute autre fréquence comprise entre 36 et 46 KHz). La LED IR est amenée à osciller à cette fréquence pendant la durée de l'impulsion. Les informations ou les signaux lumineux sont modulés en largeur d'impulsion et sont contenus dans la fréquence 38 KHz. La transmission infrarouge fait référence à l'énergie dans la région du spectre du rayonnement électromagnétique à des longueurs d'onde plus longues que celles de la lumière visible, mais plus courtes que celles des ondes radio. En conséquence, les fréquences infrarouges sont plus élevées que celles des micro-ondes, mais inférieures à celles de la lumière visible. Les scientifiques divisent le spectre du rayonnement infrarouge (IR) en trois régions. Les longueurs d'onde sont spécifiées en microns (symbolisé µ, où 1 µ = 10-6 mètre) ou en nanomètres (en abrégé nm, où 1 nm = 10-9 mètre = 0,001 5). La bande proche IR contient de l'énergie dans la gamme de longueurs d'onde les plus proches du visible, d'environ 0,750 à 1 300 5 (750 à 1 300 nm). La bande IR intermédiaire (également appelée bande IR moyenne) est constituée d'énergie comprise entre 1.300 et 3.000 5 (1300 à 3000 nm). La bande IR lointaine s'étend de 2.000 à 14.000 5 (3000 nm à 1.4000 x 104nm).
b) Réception IR
Le récepteur se compose d'un photodétecteur qui développe un signal électrique de sortie lorsque la lumière est incidente sur celui-ci. La sortie du détecteur est filtrée à l'aide d'un filtre à bande étroite qui élimine toutes les fréquences inférieures ou supérieures à la fréquence porteuse (38 KHz dans ce cas). La sortie filtrée est ensuite transmise à l'appareil approprié comme un microcontrôleur ou un microprocesseur qui contrôle des appareils comme un PC ou un robot. La sortie des filtres peut également être connectée à l'oscilloscope pour lire les impulsions.
Applications de la RI:
L'infrarouge est utilisé dans une variété d'applications de communication, de surveillance et de contrôle sans fil. Voici quelques exemples:
· Boîtiers télécommandés pour le divertissement à domicile
· Sans fil (réseaux locaux)
· Liens entre les ordinateurs portables et les ordinateurs de bureau
· Modem sans fil
· Détecteurs d'intrusion
· Détecteurs de mouvement
· Capteurs d'incendie
· Systèmes de vision nocturne
· Matériel de diagnostic médical
· Systèmes de guidage de missiles
· Dispositifs de surveillance géologique
La transmission de données IR d'un appareil à un autre est parfois appelée transmission.
Étape 2: Capteur IR & Protocole NEC Fromat
Capteurs infrarouges (Fig1)
TSOP1738, SFH-5110-38 (38 kHz)
Caractéristiques des capteurs TSOP:
- Le préamplificateur et le photodétecteur sont tous deux dans un seul boîtier
- Filtre interne pour fréquence PCM
- Blindage amélioré contre les perturbations du champ électrique
- Compatibilité TTL et CMOS
- Sortie active faible Faible consommation d'énergie
- Haute immunité contre la lumière ambiante
- Transmission continue des données possible
Protocole NEC:
Le protocole de transmission NEC IR utilise un codage à distance d'impulsion des bits du message. Chaque salve d'impulsions a une longueur de 562,5 µs, à une fréquence porteuse de 38 kHz (26,3 µs). Les bits logiques sont transmis comme suit (Fig2):
- '0' logique - une rafale d'impulsions de 562,5 µs suivie d'un espace de 562,5 µs, avec un temps de transmission total de 1,125 ms
- '1' logique - une rafale d'impulsions de 562,5 µs suivie d'un espace de 1,6875 ms, avec un temps de transmission total de 2,25 ms
L'impulsion porteuse se compose de 21 cycles à 38 kHz. Les impulsions ont généralement un rapport marque/espace de 1:4, pour réduire la consommation de courant:
(Fig3)
Chaque séquence de code commence par une impulsion de 9 ms, connue sous le nom d'impulsion AGC. Ceci est suivi d'un silence de 4,5 ms:
(Fig4)
Les données sont alors constituées de 32 bits, une adresse de 16 bits suivie d'une commande de 16 bits, affichées dans l'ordre dans lequel elles sont transmises (de gauche à droite):
(Fig5)
Les quatre octets de bits de données sont chacun envoyés le bit le moins significatif en premier. La figure 1 illustre le format d'une trame de transmission NEC IR, pour une adresse de 00h(00000000b) et une commande de ADh (10101101b).
Un total de 67,5 ms est nécessaire pour transmettre une trame de message. Il lui faut 27ms pour transmettre les 16 bits d'adresse (adresse + inverse) et les 16 bits de commande (commande + inverse).
(Fig6)
Temps nécessaire pour transmettre la trame:
16 bits pour l'adresse (adresse + inverse) nécessitent 27ms pour transmettre le temps. et les 16 bits pour la commande (commande + inverse) nécessitent également 27ms pour transmettre le temps. car (adresse + adresse inverse) ou (commande+commande inverse) contiendra toujours 8 '0's et 8 '1's donc (8 * 1,125ms) + (8 * 2,25ms) == 27 ms. selon ce temps total requis pour transmettre la trame est (9ms +4,5ms +27ms+27ms) = 67,5 ms.
CODES DE RÉPÉTITION: si la touche de la télécommande est maintenue enfoncée, un code de répétition sera émis, généralement environ 40 ms après la rafale d'impulsions qui a signifié la fin du message. Un code de répétition continuera à être envoyé à intervalles de 108 ms, jusqu'à ce que la touche soit finalement relâchée. Le code de répétition se compose des éléments suivants, dans l'ordre:
- une salve d'impulsions de 9 ms
- un espace de 2,25 ms
- une salve d'impulsions de 562,5 µs pour marquer la fin de l'espace (et donc la fin du code de répétition transmis).
(Fig7)
Calcul du délai (1 ms):
Fréquence d'horloge=11.0592 Mhz
Cycle de la machine = 12
Délai=1ms
TimerValue= 65536 - ((Delay * ClockFreq)/Machine Cycle)=65536-((1ms * 11.0592Mhz)/12)
= 65536 - 921 = 0xFC67
Étape 3: Contrôle du moteur à courant continu à l'aide du L293D
Docteur moteur
Un moteur à courant continu convertit l'énergie électrique en énergie mécanique qui peut être utilisée pour effectuer de nombreux travaux utiles. Il peut produire un mouvement mécanique comme Go Forward/Backword de mon RoboCar. Les moteurs à courant continu sont disponibles en différentes puissances telles que 6V et 12V. Il a deux fils ou broches. On peut inverser le sens de rotation en inversant la polarité d'entrée.
Ici, nous préférons le L293D car une valeur nominale de 600 mA est bonne pour piloter de petits moteurs à courant continu et des diodes de protection sont incluses dans le circuit intégré lui-même. La description de chaque broche est la suivante: Broches d'activation: il s'agit de la broche no. 1 et n° de broche. 9. N° de broche. 1 est utilisé pour activer les pilotes Half-H 1 et 2. (Pont en H sur le côté gauche). N° de broche 9 est utilisé pour activer les pilotes de pont en H 3 et 4. (pont en H sur le côté droit).
Le concept est simple, si vous souhaitez utiliser un pont en H particulier, vous devez donner une logique élevée aux broches d'activation correspondantes ainsi qu'à l'alimentation du circuit intégré. Cette broche peut également être utilisée pour contrôler la vitesse du moteur en utilisant la technique PWM. VCC1 (Broche 16): Broche d'alimentation. Connectez-le à l'alimentation 5V. VCC2 (Broche 8): Alimentation du moteur. Appliquez-lui une tension +ve selon la puissance nominale du moteur. Si vous souhaitez piloter votre moteur en 12V, appliquez 12V sur cette broche.
Il est également possible de piloter le moteur directement sur une batterie, autre que celle utilisée pour alimenter le circuit, il suffit de connecter la borne + ve de cette batterie à la broche VCC2 et de rendre GND commun aux deux batteries. (La tension MAX sur cette broche est de 36 V selon sa fiche technique). GND (broches 4, 5, 12, 13): connectez-les au GND commun du circuit. Entrées (broches 2, 7, 10, 15):
Ce sont des broches d'entrée à travers lesquelles les signaux de commande sont fournis par des microcontrôleurs ou d'autres circuits/CI. Par exemple, si sur la broche 2 (entrée du pilote H 1ère moitié) nous donnons Logic 1 (5V), nous obtiendrons une tension égale à VCC2 sur la broche de sortie correspondante du pilote H 1ère moitié, c'est-à-dire la broche no. 3. De même pour Logic 0 (0V) sur la broche 2, 0V sur la broche 3 apparaît. Sorties (broches 3, 6, 11, 14): broches de sortie. Selon le signal d'entrée, le signal de sortie arrive.
Mouvements moteurs A B
-----------------------------------------------------------------------------------------
……………Arrêt: Bas: Bas
……Sens horaire: Bas: Haut
Dans le sens inverse des aiguilles d'une montre: Haut: Bas
……………. Arrêt: Haut: Haut
Étape 4: Schémas de circuit pour le pilote de moteur et le capteur IR
L'ATmega32 est un microcontrôleur CMOS 8 bits basse consommation basé sur l'architecture RISC améliorée AVR. En exécutant des instructions puissantes en un seul cycle d'horloge, l'ATmega32 atteint des débits approchant 1 MIPS par MHz, ce qui permet au concepteur du système d'optimiser la consommation d'énergie par rapport à la vitesse de traitement.
Le noyau AVR combine un riche jeu d'instructions avec 32 registres de travail à usage général. Tous les 32 registres sont directement connectés à l'unité logique arithmétique (ALU), permettant d'accéder à deux registres indépendants en une seule instruction exécutée en un cycle d'horloge. L'architecture résultante est plus efficace en termes de code tout en atteignant des débits jusqu'à dix fois plus rapides que les microcontrôleurs CISC conventionnels.
L'ATmega32 offre les fonctionnalités suivantes:
- 32 Ko de mémoire de programme flash programmable dans le système avec des capacités de lecture-écriture,
- EEPROM 1024 octets, SRAM 2K octets,
- 32 lignes d'E/S à usage général,
- 32 registres de travail à usage général,
- une interface JTAG pour Boundaryscan,
- Prise en charge et programmation du débogage sur puce, trois temporisateurs/compteurs flexibles avec modes de comparaison, des interruptions internes et externes, un USART programmable en série, une interface série à deux fils orientée octet, une interface série à 8 canaux,
- CAN 10 bits avec étage d'entrée différentiel en option avec gain programmable (package TQFP uniquement),
- une minuterie de chien de garde programmable avec oscillateur interne,
- un port série SPI, et
-
six modes d'économie d'énergie sélectionnables par logiciel.
- Le mode Idle arrête le CPU tout en permettant l'USART,
- Interface à deux fils, convertisseur A/N,
- SRAM,
- Minuterie/Compteurs,
- port SPI, et
- système d'interruption pour continuer à fonctionner.
- Le mode de mise hors tension enregistre le contenu du registre mais gèle l'oscillateur, désactivant toutes les autres fonctions de la puce jusqu'à la prochaine interruption externe ou réinitialisation matérielle.
- En mode d'économie d'énergie, la minuterie asynchrone continue de fonctionner, permettant à l'utilisateur de maintenir une base de minuterie pendant que le reste de l'appareil est en veille.
- Le mode de réduction du bruit ADC arrête le CPU et tous les modules d'E/S à l'exception de la minuterie asynchrone et de l'ADC, pour minimiser le bruit de commutation lors des conversions ADC
- En mode veille, l'oscillateur à cristal/résonateur fonctionne pendant que le reste de l'appareil est en veille. Cela permet un démarrage très rapide combiné à une faible consommation d'énergie.
- En mode Veille étendue, l'oscillateur principal et le temporisateur asynchrone continuent de fonctionner.
Tous les circuits associés sont donnés ici et le circuit principal (atmega32) est également donné.
Étape 5: Programmes Avr
1. Pour « capteur à distance »:
#include #include
#include "télécommande.h"
//Globals volatile unsigned int Time; //Minuterie principale, stocke l'heure en 10us, //Mise à jour par ISR(TIMER0_COMP) caractère volatil non signé BitNo; //Pos of next BIT volatile unsigned char ByteNo; //Pos de l'octet courant
caractère volatile non signé IrData[4]; //Les quatre octets de données du paquet Ir //Adresse de 2 octets Données volatiles non signées IrCmdQ[QMAX]; //Commande finale reçue (tampon)
caractère volatile non signé PrevCmd; //Utilisé pour la répétition
//Variables utilisées pour démarrer la répétition uniquement après avoir appuyé sur une touche pendant un certain temps
caractère volatile non signé Répéter; //1=yes 0=no volatil unsigned char RCount; //Répéter le décompte
caractère volatile QFront=-1, QEnd=-1;
État de caractère volatile non signé; //Etat du récepteur
caractère volatile non signé Edge; //Front d'interruption [RISING=1 OU FALLING=0]
volatil non signé int stop;
/****************************************************** *********************************************/ /* FONCTIONS COMMENCE * / /************************************************ **************************************************/
void RemoteInit() {
car je; pour(i=0;i<4;i++) IrData=0;
arrêt=0; État=IR_VALIDATE_LEAD_HIGH; Bord=0; Répéter=0;
//Configuration du temporisateur1 //------------ TCCR0|=((1<
TIMSK|=(1<
OCR0=TIMER_COMP_VAL; //Définir la valeur de comparaison
unsigned char GetRemoteCmd(char wait) { unsigned char cmd;
if(attendre) 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; sinon QFront++; }
retour cmd;
}
2. principal ():
int main(void){
uint8_t cmd=0; DDRB=0x08;
DDRD=0x80;
DDRC=0x0f; PORTC=0x00;
while (1) // Boucle infinie vers le capteur IR actif {
cmd=GetRemoteCmd(1);
commutateur (cmd) {
case xx: { //BOT avance //Ch+ btn forwardmotor();
Pause; // Les deux moteurs en marche avant
}
………………………………………………….
………………………………………………….
………………………………………………….
par défaut: PORTC=0x00; pause; // Les moteurs gauche et droit s'arrêtent }
}
}/*Fin du principal*/
……………………………………………………………………………………………………………………
// C'est un modèle basique, mais je peux l'utiliser en mode PWM.
//…………………………………………….. S'amuser……………………………………………………//
Conseillé:
Télécommande infrarouge à configuration facile utilisant LIRC pour le Raspberry PI (RPi) - Juillet 2019 [Partie 1] : 7 étapes
Télécommande IR à configuration facile à l'aide de LIRC pour le Raspberry PI (RPi) - Juillet 2019 [Partie 1] : Après de nombreuses recherches, j'ai été surpris et consterné par les informations contradictoires sur la configuration de la télécommande IR pour mon projet RPi. Je pensais que ce serait facile, mais la configuration de Linux InfraRed Control (LIRC) a été problématique pendant longtemps, mais
Télécommande infrarouge à configuration facile utilisant LIRC pour le Raspberry PI (RPi) - Juillet 2019 [Partie 2] : 3 étapes
Télécommande infrarouge à configuration facile à l'aide de LIRC pour le Raspberry PI (RPi) - Juillet 2019 [Partie 2] : Dans la partie 1, j'ai montré comment assembler le RPi + VS1838b et configurer le module LIRC de Raspbian pour recevoir les commandes IR d'une télécommande IR. Tous les problèmes de configuration matérielle et LIRC sont abordés dans la partie 1. La partie 2 montrera comment interfacer le matériel
Radiocommande RF 433MHZ utilisant HT12D HT12E - Faire une télécommande Rf en utilisant HT12E & HT12D avec 433mhz: 5 étapes
Radiocommande RF 433MHZ utilisant HT12D HT12E | Faire une télécommande Rf à l'aide de HT12E & HT12D avec 433 mhz : dans cette instructable, je vais vous montrer comment faire une télécommande RADIO à l'aide d'un module émetteur-récepteur 433 mhz avec encodage HT12E & Décodeur HT12D IC. Dans cette instructable, vous pourrez envoyer et recevoir des données à l'aide de COMPOSANTS très très bon marché COMME : HT
Testeur de télécommande infrarouge utilisant TSOP4838 : 5 étapes
Testeur de télécommande infrarouge à l'aide du TSOP4838 : Voici comment créer un circuit de testeur de télécommande simple. Suivez simplement les étapes ci-dessous et vous le ferez en moins de 5 minutes. Si cela fonctionne, laissez un like sur notre vidéo et dites-le nous dans les commentaires
Télécommande sans fil utilisant le module 2.4Ghz NRF24L01 avec Arduino - Nrf24l01 4 canaux / 6 canaux émetteur-récepteur pour quadrirotor - Hélicoptère Rc - Avion Rc utilisant Arduino: 5 étapes (avec photos)
Télécommande sans fil utilisant le module 2.4Ghz NRF24L01 avec Arduino | Nrf24l01 4 canaux / 6 canaux émetteur-récepteur pour quadrirotor | Hélicoptère Rc | Avion Rc utilisant Arduino: Pour faire fonctionner une voiture Rc | Quadricoptère | Drone | Avion radiocommandé | Bateau RC, nous avons toujours besoin d'un récepteur et d'un émetteur, supposons que pour RC QUADCOPTER nous ayons besoin d'un émetteur et d'un récepteur à 6 canaux et que ce type de TX et RX soit trop coûteux, nous allons donc en faire un sur notre