Outils pour utilisateurs

Outils du site


tpir

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
tpir [2016/03/21 15:35]
bvandepo
tpir [2018/02/24 00:59]
bvandepo
Ligne 1: Ligne 1:
-<===== TD Bus de communication : Communication infrarouge NEC  étendue =====+===== TD Bus de communication : Communication infrarouge NEC  étendue =====
  
 cours bus de com {{http://​homepages.laas.fr/​bvandepo/​files/​iut/​cours_bus_terrain_livret_portrait.pdf}} cours bus de com {{http://​homepages.laas.fr/​bvandepo/​files/​iut/​cours_bus_terrain_livret_portrait.pdf}}
Ligne 24: Ligne 24:
  
 ===Format des trames=== ===Format des trames===
-Pour rappel, une trame NEC étendue est constitué ​d'un train de bits modulé à 38Khz. Il existe 2 types de trames:+Une trame NEC étendue est constituée ​d'un train de bits modulé à 38Khz. Il existe 2 types de trames:
   - les trames complètes   - les trames complètes
   - les trames de répétition   - les trames de répétition
Ligne 30: Ligne 30:
 La trame complète contient: La trame complète contient:
   - un entête de trame   - un entête de trame
-  - une adresse sur 16 bits, octet de poids fort d'​abord et bit de poids faible d'​abord ​(identifiant la télécommande) +  - une adresse sur 16 bits (codant le numéro de la télécommande), octet de poids fort d'​abord et bit de poids faible d'​abord  
-  - une valeur sur 8 bits, bit de poids faible d'​abord ​(identifiant la touche) +  - une valeur sur 8 bits (codant le numéro de la touche), bit de poids faible d'​abord 
-  - le complément à 1 de la précédente valeur sur 8 bits+  - une valeur sur 8 bits codant ​le complément à 1 de la précédente valeur sur 8 bits (redondance pour la détection d'​erreur)
   - l'​envoi d'un bit à 1 et un retour à l'​état de repos   - l'​envoi d'un bit à 1 et un retour à l'​état de repos
  
Ligne 51: Ligne 51:
   - La trame de répétition commence par un train d'​impulsion à 38Khz (avec rapport cyclique 50%) pendant 9ms suivi par une inactivité de durée 2.25ms.   - La trame de répétition commence par un train d'​impulsion à 38Khz (avec rapport cyclique 50%) pendant 9ms suivi par une inactivité de durée 2.25ms.
 ===Dessin des chronogrammes=== ===Dessin des chronogrammes===
 +A faire sur papier quadrillé et à faire noter par l'​enseignant:  ​
 +  - Dessiner l'​allure des chronogrammes pour l'​envoi d'une trame complète depuis la télécommande 0x1234 pour la touche 0x56.
 +  - Dessiner l'​allure des chronogrammes pour l'​envoi d'une trame de répétition depuis la télécommande 0x1234 pour la touche 0x56.
  
-Dessiner l'​allure des chronogrammes pour l'​envoi d'une trame complète depuis la télécommande 0x1234 pour la touche 0x56. 
  
- +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}}
-Dessiner l'​allure des chronogrammes pour l'​envoi d'une trame de répétition depuis la télécommande 0x1234 pour la touche 0x56. +
- +
- +
  
  
  
-===Configuration du timer 2=== +===Configuration du timer 2 pour la génération du signal modulé à 38Khz=== 
-[[http://​homepages.laas.fr/​bvandepo/​files/​iut/​Atmega328p_timer2.pdf]]+Consulter la documentation du timer 2 de l'​ATMEGA328P: ​[[http://​homepages.laas.fr/​bvandepo/​files/​iut/​Atmega328p_timer2.pdf]]
  
 L'​Atmega328 dispose de 4 timers : L'​Atmega328 dispose de 4 timers :
Ligne 69: Ligne 68:
  - Timer 2/3 : 8-bit avec PWM et possibilité d'​horloge externe  - Timer 2/3 : 8-bit avec PWM et possibilité d'​horloge externe
  
-Dans la suite des exercices nous utiliserons le Timer 2 en mode 7 "FAST PWM" (voir les différents mode en p 155!!!). +Dans la suite des exercices nous utiliserons le Timer 2 en mode 7 "FAST PWM" (voir les différents mode en p 155 de la documentation). 
  
  
-A l'aide de la documentation,​ nous allons définir l'​algorithme de configuration du timer 2 pour pouvoir générer un signal à 38Khz sur une broche du microcontrôleur sans solliciter le processeur. Le timer 2 peut piloter la broche 3 (numnérotation ​Arduino) du micro-contrôleur. Cette broche peut recopier l'​état d'un signal OC0B, que l'on peut décider de commuter à intervalle de temps fixé. La recopie ou non de ce signal sur la broche permet de générer facilement le signal modulé à 38Khz.+A l'aide de la documentation,​ nous allons définir l'​algorithme de configuration du timer 2 pour pouvoir générer un signal à 38Khz sur une broche du microcontrôleur sans solliciter le processeur. Le timer 2 peut piloter la broche 3 (numérotation ​Arduino) du micro-contrôleur. Cette broche peut recopier l'​état d'un signal OC0B, que l'on peut décider de commuter à intervalle de temps fixé. La recopie ou non de ce signal sur la broche permet de générer facilement le signal modulé à 38Khz.
  
 Pour configurer le timer, les registres TCCR2A et TCCR2B doivent être réglés en "​Normal port operation"​. ​ Pour configurer le timer, les registres TCCR2A et TCCR2B doivent être réglés en "​Normal port operation"​. ​
Ligne 98: Ligne 97:
  
  
-Proposer l'​algorithme pour la fonction **void setup(void)** qui permet de configurer le timer en réglant les registres TCCR2A, TCCR2B, OCR2A et OCR2B pour qu'il soit prêt à générer le signal à 38Khz. Vous penserez également à configurer la broche en sortie et à lui imposer un état bas. +Proposer l'​algorithme pour la fonction **void setup(void)** qui permet de configurer le timer en réglant les registres TCCR2A, TCCR2B, OCR2A et OCR2B pour qu'il soit prêt à générer le signal à 38Khz. Vous penserez également à configurer la broche en sortie et à lui imposer un état bas.  
- +
-Proposer l'​algorithme pour la fonction **void loop(void)** qui permet de piloter le timer pour activer la sortie à 38Khz pendant 200us puis la désactiver pendant 400us. ​+
  
 Les fonctions **void mark(int time)** et **void space(int time)** sont fournies. Elles permettent respectivement d'​activer (ou inhiber) le signal à 38 kHz pendant time us. Les fonctions **void mark(int time)** et **void space(int time)** sont fournies. Elles permettent respectivement d'​activer (ou inhiber) le signal à 38 kHz pendant time us.
Ligne 123: Ligne 120:
 ////////////////////////////////////////////////////////////////////////​ ////////////////////////////////////////////////////////////////////////​
 </​file>​ </​file>​
 +
 +
 +Proposer l'​algorithme pour la fonction **void loop(void)** qui permet de piloter le timer pour activer la sortie à 38Khz pendant 200us puis la désactiver pendant 400us.
  
  
Ligne 131: Ligne 131:
  
 Proposer l'​algorithme pour la fonction **void ​ sendNECFrameRepeat()** qui permet d'​envoyer la trame NEC de répétition. Proposer l'​algorithme pour la fonction **void ​ sendNECFrameRepeat()** qui permet d'​envoyer la trame NEC de répétition.
 +
 +
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}}
  
  
Ligne 136: Ligne 139:
 ==== Codage et tests ==== ==== Codage et tests ====
  
-Implémenter les fonctions **void setup(void)** et **void loop(void) pour configurer la sortie PWM à 38Khz pendant 200us puis inactive pendant 400us. <color #​FF0000>​** Programmer la maquette et vérifier à l'aide d'un oscilloscope ​le signal généré. Faire valider.**</​color>​+Implémenter les fonctions **void setup(void)** et **void loop(void)** pour configurer la sortie PWM à 38Khz. <color #​FF0000>​** Programmer la maquette et vérifier ​la fréquence du signal obtenu sur la broche 3 à l'aide d'un oscilloscope.**</​color>​
  
-Implémenter les fonctions **void sendNECBYTE(unsigned char data)**, **void sendNECFrame(unsigned int adr, unsigned char cmd)** et **void ​ sendNECFrameRepeat()** et proposer un programme principal de test qui permette de balayer plusieurs adresses et numéros de commandes. Vous veillerez à assurer un temps d'​attente entre l'​émission de 2 trames consécutives pour obtenir au minimum une période ​de 115ms pour chaque trame. ​+ 
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} 
 + 
 + 
 +Implémenter les fonctions **void sendNECBYTE(unsigned char data)**, **void sendNECFrame(unsigned int adr, unsigned char cmd)** et **void ​ sendNECFrameRepeat()** et proposer un programme principal de test qui permette de balayer plusieurs adresses et numéros de commandes. Vous veillerez à assurer un temps d'​attente entre l'​émission de 2 trames consécutives pour obtenir au minimum une durée ​de 110ms entre chaque ​début de trame. ​ 
 + 
 + 
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}}
  
  
 Programmer la carte Arduino et fermer le cavalier permettant de relier les Leds à la broche 3 de l'​Arduino. Utiliser une caméra de téléphone portable pour visualiser l'​activité de la Led infrarouge et demander à l'​enseignant de valider avec le récepteur/​démodulateur infrarouge. Programmer la carte Arduino et fermer le cavalier permettant de relier les Leds à la broche 3 de l'​Arduino. Utiliser une caméra de téléphone portable pour visualiser l'​activité de la Led infrarouge et demander à l'​enseignant de valider avec le récepteur/​démodulateur infrarouge.
 +  ​
 +
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}}
  
  
tpir.txt · Dernière modification: 2019/03/13 10:22 par bvandepo