Cours:Téléinformation : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{Rouge|Conception du programme}})
({{Bleu|Composants}})
 
(59 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
[[Cours:Téléinformation_correction|{{Vert|Éléments de correction}}]]
  
 
=Présentation du projet=
 
=Présentation du projet=
Ligne 31 : Ligne 32 :
 
   . Un caractère de contrôle : la somme des caractères envoyés.
 
   . Un caractère de contrôle : la somme des caractères envoyés.
 
   . Fin de ligne 0x0D (CR)]
 
   . Fin de ligne 0x0D (CR)]
Ces données sont transmises par une liaison série 7 bits, parité paire, 1 bit de stop à 1200 bits/s. Les bits sont transmis modulés en amplitude avec une fréquence de porteuse de 50kHz : le niveau logique 1 est représenté par une tension nulle, et les niveaux 0 par un signal sinusoïdal de fréquence 50kHz [[Fichier:Signaltele.jpg|vignette|upright=2.5|centre| Signal de téléinformation ]]
+
Ces données sont transmises par une liaison série 7 bits, parité paire, 1 bit de stop à 1200 bits/s. Les bits sont transmis modulés en amplitude avec une fréquence de porteuse de 50kHz : le niveau logique 1 est représenté par une tension nulle, et les niveaux 0 par un signal sinusoïdal de fréquence 50kHz, 8VPP [[Fichier:Signaltele.jpg|vignette|upright=2.5|centre| Signal de téléinformation ]]
 
   
 
   
 
Pour plus de détails sur la télé-information, vous pouvez consulter les liens suivants
 
Pour plus de détails sur la télé-information, vous pouvez consulter les liens suivants
Ligne 38 : Ligne 39 :
  
 
[http://bernard.lefrancois.free.fr/ERDF-NOI-CPT_O2E.pdf Sorties de télé-information client des appareils de comptage électroniques utilisés par ERD]
 
[http://bernard.lefrancois.free.fr/ERDF-NOI-CPT_O2E.pdf Sorties de télé-information client des appareils de comptage électroniques utilisés par ERD]
 +
 
==Principe de la démodulation==
 
==Principe de la démodulation==
  
Ligne 93 : Ligne 95 :
 
| Redressement double-alternance avec filtrage|| Transformer une tension alternative à une tension continue en utilisant un optocoupleur. Réduire les ondulations de la tension redressée.  
 
| Redressement double-alternance avec filtrage|| Transformer une tension alternative à une tension continue en utilisant un optocoupleur. Réduire les ondulations de la tension redressée.  
 
|-
 
|-
| Affichage et oscillateur astable || Utiliser un oscillateur astable pour faire clignoter un LED rouge deux fois par seconde. S'assurer du bon fonctionnement de la 2eme LED.
+
| Affichage || 2 leds permettent d'informer l'utilisateur
 
|-
 
|-
| Gestion et décodage || Écrire un programme sur Arduino qui permet de décoder le signal de télé-info et qui permet également d'allumer une LED verte pendant 0.5 seconde à chaque fois qu'un Wh est consommé par la charge reliée au compteur.  
+
| Gestion et décodage || Vous utiliserez un µcrocontroleur ATMEGA328p qui sera programmé pour répondre au cahier des charges.
 
|}
 
|}
  
Ligne 112 : Ligne 114 :
  
 
=={{Rouge|Contraintes de fabrication}}==
 
=={{Rouge|Contraintes de fabrication}}==
*Toute la partie électronique de la télé-information doit être supportée par un shield d'une carte Arduino Uno à l’exception du transformateur qui sera à l’extérieur du shield.
+
*La carte fabriquée devra être la plus compacte possible
 
+
*Le transformateur qui alimentera la carte sera à l'extérieur
*Il faut prévoir des borniers pour relier la sortie de téléinfo et le transformateur au shield 
+
*Il convient de prévoir les borniers nécessaires pour :
<gallery>
+
**signal téléinformation
Fichier:Shieldtele.png|Shield télé-info monté sur une carte Arduino
+
**alimentation
Fichier:Ardo.png|Shield télé-info et la carte Arduino
+
**programmation
</gallery>
+
**éventuellement débogage par liaison série
  
 
=={{Rouge|Planning à respecter}}==
 
=={{Rouge|Planning à respecter}}==
Ligne 146 : Ligne 148 :
 
| align="center" | 6 ||  Programmation de la carte Arduino  
 
| align="center" | 6 ||  Programmation de la carte Arduino  
 
|-
 
|-
| align="center" | 7 || Test et validation de la carte  
+
| align="center" | 7 || Test et validation de la carte
 +
|-
 +
| align="center" | 8 || Amélioration et finition du programme et rendu de rapport écrit
 
|}
 
|}
  
 
=={{Rouge|Déroulement des séances}}==
 
=={{Rouge|Déroulement des séances}}==
'''Séance 1'''
+
'''Séance 1-2'''
  
 
#Consulter la documentation de l'optocoupleur SFH620A. [http://www.vishay.com/docs/83675/sfh620a.pdf SFH620A Datasheet]
 
#Consulter la documentation de l'optocoupleur SFH620A. [http://www.vishay.com/docs/83675/sfh620a.pdf SFH620A Datasheet]
 
#Avec cet optocoupleur, réaliser un montage inverseur qui permet de redresser le signal de téléinfo. Dimensionner les composants nécessaires.
 
#Avec cet optocoupleur, réaliser un montage inverseur qui permet de redresser le signal de téléinfo. Dimensionner les composants nécessaires.
# Tester le bon fonctionnement du montage en employant un signal d'entrée similaire à celui de la télé-info (8 V crête à crête, 50 kHz).   
+
#Tester le bon fonctionnement du montage en employant un signal d'entrée similaire à celui de la télé-info (8 V crête à crête, 50 kHz).   
# Observer la tension redressée. En cas de présence d'ondulations, proposer un solution pour lisser cette tension.  
+
#Observer la tension redressée. En cas de présence d'ondulations, proposer un solution pour lisser cette tension.  
# En utilisant une carte Arduino, lire la tension redressée comme une entrée numérique.
+
#En utilisant un adaptateur USB-série, observer les données envoyées par le compteur sur le PC (gtkterm par exemple)
 +
 
 +
'''Séance 3'''
 +
 
 +
#Commande des leds
 +
#Alimentation
 +
 
 +
=={{Bleu|Fabrication de la carte électronique}}==
 +
 
 +
==={{Vert|Saisie du schéma}}===
 +
 
 +
Comme précisé en introduction, le schéma devrait à ce point être déjà bien avancé.
 +
 
 +
La relative simplicité de l'étude doit vous amener à approfondir votre réflexion sur le schéma de votre carte et notamment sur les points suivants :
 +
*comment allez-vous '''programmer''' le µcontrôleur ?
 +
*comment '''choisir judicieusement les pattes''' du µcontrôleur
 +
 
 +
'''Quelques éléments de réponse :'''
 +
{| class="wikitable"
 +
|-
 +
| ISP || In System Programming : la plupart des µcontrôleurs modernes dont celui-ci sont programmable directement sur la carte (in situ).
 +
 
 +
Il faut donc prévoir le connecteur de programmation et le relier au composant en respectant l'ordre de câblage.
 +
 
 +
Vous utiliserez, comme Atmel le préconise, le connecteur ISP à 6 broches.
 +
 
 +
Les broches de programmation MISO MOSI et SCK correspondent aux numéros de pattes 7,8 et 9 pour l'attiny841.
 +
||
 +
[[Fichier:Avr isp.jpg|vignette]]
 +
 
 +
|-
 +
| choix des pattes || L'avantage d'utiliser un composant programmable est de pouvoir placer (dans une certaine mesure) les entrées et sorties où bon nous semble.
 +
 
 +
Attention cependant, il faut garder à l'esprit que le programme sera plus complexe à écrire s'il n'y a pas un minimum de réflexion.
 +
 
 +
||
 +
|-
 +
| Pins réservées || La patte {{Rouge|RESET}} principalement, ne peut servir qu'à cet usage !!
 +
 
 +
|| Dans le cas contraire, vous ne pourrez plus reprogrammer le microcontrôleur.
 +
||
 +
|-
 +
| Liaison série 0 || Par défaut les broches utilisées pour la liaison USART0 sont PA2 et PA1
 +
 
 +
||
 +
|}
 +
 
 +
 
 +
mais également :
 +
[[Fichier:XBee USB adapter.jpg|vignette|adaptateur USB XBee ]]
 +
*comment allez-vous '''contrôler '''  les informations que reçoit le microcontrôleur ?<br>
 +
 
 +
 
 +
Pour effectuer des tests sur le microcontrôleur et contrôler les informations qui lui parviennent nous allons ajouter au montage une liaison série qui permettra d'afficher les informations transmises sur le PC sur un terminal. Cette liaison série sera réalisée avec à un module XBee qui sera implanté sur le PCB et raccordé au PC par un cordon USB. <br>
 +
 
 +
Ce module XBee sera connecté sur une barrette sécable (MA04-1 voir tableau des composants)<br>
 +
 
 +
 
 +
'''CONTRAINTES DE RACCORDEMENT''' : Le compteur doit être raccordé sur la liaison série RXD0/TXD0 et le module XBee sur le liaison série RXD1/TXD1. ATTENTION, il faut croiser les bornes Rx et Tx entre le microcontrôleur et le module XBee. <br>
 +
 
 +
==={{Vert|Routage}}===
 +
 
 +
Voici quelques contraintes de routage que vous devez respecter :<br>
 +
 
 +
- pistes : 0,4 mm mini <br>
 +
- écartement entre les pistes : 0,4 mm mini <br>
 +
- Via : 0.8 pour les trous et 1,25 pour le diamètre externe<br>
 +
 
 +
'''ATTENTION : Si vous faites un circuit double face, n'oubliez pas que les pastilles qui doivent permettre le brasage des composants traversants ne doivent se trouver sur la même face que le composant (sinon vous ne pourrez pas le souder !)'''<br><br>
 +
 
 +
 
 +
- placer un condensateur de 100nF au plus près du microcontrôleur entre les bornes +Vcc et GND <br>
 +
- placer un condensateur de 150µF entre les bornes +Vcc et GND de l'alimentation<br>
 +
- n'oubliez pas les connecteurs pour l'alimentation de la carte : douille (alimentation) ou con-wago-500 dans le tableau des composants <br><br>
 +
 
 +
- prévoyez un repère visuel côté composant sur le typon à côté de la borne 1 du connecteur ISP pour éviter les erreurs lors du raccordement car il n'y a pas de détrompeur sur ce connecteur<br>
 +
- faites apparaître les informations (NOM , PROJET , ANNEE) sur chaque face comportant des pistes afin de pouvoir identifier facilement le côté cuivre lors du tirage du PCB.<br>
  
'''Séance 2'''
+
==={{Vert|Rappels pour préparation des calques}}===
  
#Réaliser le montage d'un oscillateur astable en utilisant le composant NE555.
 
# A l'aide de la datasheet du NE555, dimensionner les composants nécessaire pour allumer une LED rouge deux fois par second.
 
# En utilisant une carte arduino, réaliser un programme qui permet de piloter l'oscillateur astable et permet également d'allumer une LED verte pendant 0.5 seconde si une condition donnée est vérifiée (par exemple la présence d'un niveau logique haut sur l'une des entrées numériques de l'arduino).
 
  
 +
Exports sous forme d'images :
 +
#fond en blanc : Options -> user interface -> layout
 +
#lancer ulp -> drill-aid vous propose Drill center diameter 0,3mm et c'est OK. Le remplissage se fait en couche 116 mais avec des hachures.
 +
#Choisir cette couche 116 puis change -> Fillstyle en plein
 +
#Choisir les couches Bottom (bleu) Pads vias et la 116
 +
#File -> export -> Image donner un nom et choisir 1200 DPI et monochrome
 +
#Idem pour Top (rouge) avec pads et vias (et éventuellement la 116)
 +
 +
==={{Vert|Rappels pour préparation des calques}}===
 +
 +
 +
Exports sous forme d'images :
 +
#fond en blanc : Options -> user interface -> layout
 +
#lancer ulp -> drill-aid vous propose Drill center diameter 0,3mm et c'est OK. Le remplissage se fait en couche 116 mais avec des hachures.
 +
#Choisir cette couche 116 puis change -> Fillstyle en plein
 +
#Choisir les couches Bottom (bleu) Pads vias et la 116
 +
#File -> export -> Image donner un nom et choisir 1200 DPI et monochrome
 +
#Idem pour Top (rouge) avec pads et vias (et éventuellement la 116)
  
 
={{Rouge|Conception du programme}}=
 
={{Rouge|Conception du programme}}=
Ligne 171 : Ligne 266 :
 
Nous commencerons donc par l'observation des données issues du compteur, avant de les interpréter et de commander les leds comme souhaité.
 
Nous commencerons donc par l'observation des données issues du compteur, avant de les interpréter et de commander les leds comme souhaité.
  
=={{Bleu|Téléinformation}}==
+
==1er test==
 +
 
 +
Vérification de la communication avec le µcontroleur :
 +
*dans un terminal lancer la commande
 +
* avrdude -c avrisp2 -P usb -p t841
 +
 
 +
==Vérification communication avec le PC==
  
Une fois démodulée, le signal émis par le compteur est une classique liaison série dont les paramètres (vitesse parité ...) sont précisées plus haut dans ce document.
+
Pour configurer les liaisons séries, il faudra consulter la section 18 de la datasheet, principalement la partie 18.12 (register description).
  
Sur les cartes arduino UNO, nous disposons d'une liaison série matérielle, utilisée pour la liaison USB, et il n'est donc pas possible de l'utiliser pour communiquer avec le compteur électrique.
+
On supposera ici que la communication avec le PC se fait sur la liaison USART1. Vous adapterez au besoin.
  
Il est cependant possible de créer d'autres liaisons série qui seront gérées de façon logicielle. Il est bien évident qu'une liaison matérielle demande moins de ressources processeur.
+
Par défaut cette liaison est configurée sans parité, 8 bits de données, 1 bit de stop (rien à faire dans le programme).
  
Le principe d'utilisation est donné dans le code ci dessous :
+
Il reste principalement à configurer la vitesse de la liaison.
  
 +
Nous avons juste à configurer les points suivants :
 
<source lang=c>
 
<source lang=c>
#include <SoftSerialTeleinfo.h>           // liaison série logicielle 7 bits parité paire 1 bit de stop
+
#include <avr/io.h>
 +
#include <util/delay.h>
 +
#include <avr/sfr_defs.h>
  
SoftSerialTeleinfo edf(xxx, NOT_A_PIN);   // choix de la position physique, dans l'ordre (Rx,Tx)
+
int main()
 +
{
 +
   // autoriser la transmission (bit TXEN1)
  
void setup()
+
  // vitesse de la liaison cf tableau 18.11 (UBRR1 et U2X1)
{
+
 
  edf.begin(1200);                       // choix de la vitesse de transmission
+
 
 +
  while(1)
 +
  {
 +
    // envoyer un caractère :
 +
    UDR1 = 'a';
 +
    // attente
 +
    _delay_ms(100);
 +
  }
 
}
 
}
 +
</source>
  
void loop()
+
==Configurer la liaison avec le compteur électrique==
 +
 
 +
On considère que le compteur est relié sur la liaison USART0 (broches PA2, RXD0). Si vous avez utilisé la broche PB2 voir section 18.12.7
 +
 
 +
Le principe est le même que précédemment, il convient de réaliser les étapes suivantes :
 +
*autoriser la réception (bit RXEN0)
 +
*configurer la parité paire (even)
 +
*configurer le nombre de bits de données (7 ici)
 +
*configurer la vitesse de la liaison (U2X0 et UBBR0) cf tableau 18.1
 +
 
 +
On pourra alors renvoyer les données du compteur vers le PC :
 +
<source lang=c>
 +
char c;
 +
 
 +
// on vérifie si il y a un caractère à lire
 +
si (bit RXC0 est à '1') alors
 
{
 
{
  // vous utiliserez les fonctions classiques d'une liaison série cf page arduino
+
  // lecture de la valeur reçue
 +
  c = UDR0;
 +
  // envoi de la valeur vers le PC
 +
  UDR1 = c;
 
}
 
}
 
</source>
 
</source>
 +
 +
=={{Bleu|Téléinformation}}==
  
  
Ligne 201 : Ligne 335 :
  
 
Pour cela, il convient de :
 
Pour cela, il convient de :
*créer la liaison vers le compteur (cf ci dessus)
+
*créer la liaison vers le compteur
 
*configurer les vitesses des 2 liaisons séries (elles peuvent être différentes)
 
*configurer les vitesses des 2 liaisons séries (elles peuvent être différentes)
 
*attendre d'avoir un caractère à lire sur le compteur
 
*attendre d'avoir un caractère à lire sur le compteur
Ligne 227 : Ligne 361 :
  
 
{{Todo|Il ne reste plus qu'à vérifier si l'étiquette est celle qui nous intéresse en utilisant la fonction {{Rouge|strcmp}}}}
 
{{Todo|Il ne reste plus qu'à vérifier si l'étiquette est celle qui nous intéresse en utilisant la fonction {{Rouge|strcmp}}}}
 +
 +
 +
=={{Bleu|cahier des charges}}==
 +
 +
{{Todo|Il ne vous reste plus qu'à relire le cahier des charges et compléter votre programme pour qu'il réaliser ce que l'on souhaite.}}
 +
 +
={{Rouge|Ressources}}=
 +
=={{Bleu|Composants}}==
 +
{| class="wikitable sortable"
 +
|-
 +
! Nom !! Type !! Boîtier !! Librairie Eagle !! Référence eagle !! Documentation !! Fournisseur !! Référence
 +
|-
 +
| ATTINY841 || µcontrôleur ||  || [[media:bt_avr.lbr|bt_avr]]  ||  || [http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet.pdf attiny841.pdf] || Farnell || [http://fr.farnell.com/microchip/attiny841-ssur/mcu-8-bits-attiny-16mhz-wsoic/dp/2443189?st=attiny841 2443189]
 +
|-
 +
| LED || CMS || PLCC2 || led || LG_T679-E1F1-1 ||  ||  ||
 +
|-
 +
| Rx|| Résistances || CMS ||rcl  ||R1206  ||  || Farnell ||
 +
|-
 +
| Cx|| Condensateurs || CMS ||rcl  ||C1206  ||  || Farnell ||
 +
|-
 +
| CPOL|| Condensateurs 150µF 6.3V || CMS ||rcl  ||SMC_D  ||  || Farnell ||
 +
|-
 +
| ISP || barrette mâle sécable|| traversant || con-lstb || MA03-2 ||  ||  ||
 +
|-
 +
| Connecteur || support femelle pour XBee|| traversant || con-lstb || MA04-1 ||  ||  ||
 +
|-
 +
| SFH620A||optocoupleur|| CMS || optocoupler || SFH620A ||[http://www.vishay.com/docs/83675/sfh620a.pdf SFH620A Datasheet]|| ||
 +
|-
 +
| douille(alimentation) || borne pour fil 4mm || traversant || special-drill || special_drill_0.3650 || || ||
 +
|-
 +
| douille(alimentation) || borne pour fil 2mm || traversant || special-drill || special_drill_0.1560 || || ||
 +
|-
 +
| bornier(alimentation) || bornier pour 2 fils || traversant || con-wago-500 || W237-102 || || ||
 +
 +
|}

Version actuelle datée du 10 mars 2021 à 19:26

Éléments de correction

Présentation du projet

Objectif

Les compteurs EDF de type électronique possèdent deux bornes qui permettent à des équipements externes de dialoguer avec le compteur. Il sera pas exemple possible de lire l’énergie instantanée consommée, la puissance maximum autorisée, le dépassement de cette puissance maximum…

Compteur EDF doté de deux bornes de télé-information

Les informations sont transmises de manière cyclique avec un protocole particulier. Mais il est possible de lire ces informations en utilisant un système de lecture de la télé-information. Ainsi, l'objectif de ce travail consiste à réaliser ce système de lecture qui assurera les taches suivantes:

  • Détecter et démoduler le signal de télé-information.
  • Décoder les informations transmises par le compteur.
  • Mettre en œuvre un gestionnaire d'énergie (lecture et affichage de la puissance consommée).

Principe de la télé-information

Les compteurs électroniques installés par ERDF sont équipés d'un module de dialogue permettant à un équipement de communiquer avec le compteur. Cette communication est unidirectionnelle : il est uniquement possible de lire les données présentes dans le compteur. Les informations sont transmises dans un ordre imposé, périodiquement, selon un format présenté ci dessous.

Description de la liaison télé-information :Le compteur électrique envoie périodiquement un bloc de données. Un bloc comporte : . Un caractère de début : 0x02(STX) (0x..est une valeur hexadécimale) . Les données scindées en lignes . Un caractère de fin : 0x03 (ETX)


Chaque ligne se décompose ansi :

 . Début de ligne : 0x0A (LF)
 . Une étiquette (4 à 8 caractères)
 . Un espace 0x20 (SP)
 . Une donnée (1 à 12 caractères)
 . Un espace 0x20 (SP)
 . Un caractère de contrôle : la somme des caractères envoyés.
 . Fin de ligne 0x0D (CR)]
Ces données sont transmises par une liaison série 7 bits, parité paire, 1 bit de stop à 1200 bits/s. Les bits sont transmis modulés en amplitude avec une fréquence de porteuse de 50kHz : le niveau logique 1 est représenté par une tension nulle, et les niveaux 0 par un signal sinusoïdal de fréquence 50kHz, 8VPP
Signal de téléinformation

Pour plus de détails sur la télé-information, vous pouvez consulter les liens suivants

Téléinformation EDF

Sorties de télé-information client des appareils de comptage électroniques utilisés par ERD

Principe de la démodulation

Le découpage fonctionnel ci-dessus est le principe général que nous mettrons en œuvre. Il faut cependant avoir conscience que certains blocs peuvent être permutés, combinés ou supprimés.

Fonctionteleinfo.jpg

Redressement : La technique la plus simple de démodulation d'amplitude consiste à effectuer un redressement suivi d'un filtrage du signal modulé.

Isolation galvanique : Le fabricant du compteur électrique précise qu'en cas de défaut une tension alternative de 230VAC peut-être présente sur la liaison télé-information. L'isolation permet de séparer 2 parties d'un circuit afin d'éviter la propagation du défaut.

Gestion et décodage : Le signal de télé-information doit être décodé selon le protocole de transmission utilisé pour récupérer les données transmises. Ensuite, ces données sont exploiter pour gérer à titre d'exemple la puissance consommée.

Affichage du statut : On souhaite avertir l'utilisateur de la présence d'un signal de télé-information. Une Led rouge indiquera la présence du signal, tandis qu'une led verte clignotante indiquera la consommation d'un 1 Wh .

Alimentation : Les différents blocs du système de lecture sont alimentés grâce à un module de puissance. Ce module assure l’adaptation de la puissance disponible pour chaque blocs cités ci-dessus.


Travail à réaliser

Cahier des charges

  • Démodulation du signal de télé-information d'un compteur EDF.
  • Décodage du signal et gestion du système de lecture par une carte Arduino.
  • Indication de la présence du signal télé-info par une LED rouge clignotant deux fois chaque seconde.
  • Allumage d'une LED verte pendant 0.5 seconde pour chaque 1 Wh consommé par la charge reliée au compteur.
  • Alimentation régulée de 5V.

Objectif

L'objectif sera bien évidemment de terminer le projet de sorte qu'il réponde au cahier des charges décrit précédemment.

Pour ce faire, il conviendra de :

  • dimensionner les composants utilisés
  • tester les différents blocs fonctionnels
  • fabriquer la carte électronique
  • programmer les composants
  • valider le fonctionnement


Vous serez évalué sur la fabrication de la carte électronique, ainsi que sur un dossier qui devra :

  • détailler les différentes fonctions
  • expliquer les choix effectués (structure,composants ....)
  • utilisera des courbes ou mesures pour appuyer les explications
  • donnera une estimation (hors temps de conception) du coût de la carte électronique

Fonction à étudier

Partie 1: Téléinformation

Fonctions Description
Isolation galvanique Isoler électriquement les différentes parties du système à l'aide d'un optocoupleur.
Redressement double-alternance avec filtrage Transformer une tension alternative à une tension continue en utilisant un optocoupleur. Réduire les ondulations de la tension redressée.
Affichage 2 leds permettent d'informer l'utilisateur
Gestion et décodage Vous utiliserez un µcrocontroleur ATMEGA328p qui sera programmé pour répondre au cahier des charges.

Partie 2: Alimentation

Fonctions Description
Transformation Adapter l'amplitude de la tension d'alimentation (tension du réseau par exemple) en utilisant un transformateur
Redressement avec filtrage Transformer une tension alternative à une tension continue en utilisant un pont de diodes. Réduire les ondulations de la tension obtenue en insérant une capacité de filtrage.
Régulation Réguler la tension redressée à l'aide d'un régulateur de tension pour qu'elle soit adaptée aux différents organes du système.

Contraintes de fabrication

  • La carte fabriquée devra être la plus compacte possible
  • Le transformateur qui alimentera la carte sera à l'extérieur
  • Il convient de prévoir les borniers nécessaires pour :
    • signal téléinformation
    • alimentation
    • programmation
    • éventuellement débogage par liaison série

Planning à respecter

Vous serez évalué tout au long du projet en début de séance. Ce qui vous permet de terminer en dehors des séances si vous n'avez pas achevé le travail demandé.

Une chose importante à noter : Il vous revient de saisir au fur et à mesure le schéma des différentes fonctions étudiées dès que possible.

Vous trouverez ci dessous l'avancement attendu des différentes séances. Notons également que vous devrez achever votre travail après les 7 séances si le projet n'est pas terminé.

De plus, le routage devra être fait en bonne partie en dehors des séances.

n° de séance Détail de l'attendu
1 Documentation, dimensionnement et tests
2 Documentation, dimensionnement et tests
3 Documentation, dimensionnement et tests
4 Tests + routage+ Fabrication
5 Fabrication
6 Programmation de la carte Arduino
7 Test et validation de la carte
8 Amélioration et finition du programme et rendu de rapport écrit

Déroulement des séances

Séance 1-2

  1. Consulter la documentation de l'optocoupleur SFH620A. SFH620A Datasheet
  2. Avec cet optocoupleur, réaliser un montage inverseur qui permet de redresser le signal de téléinfo. Dimensionner les composants nécessaires.
  3. Tester le bon fonctionnement du montage en employant un signal d'entrée similaire à celui de la télé-info (8 V crête à crête, 50 kHz).
  4. Observer la tension redressée. En cas de présence d'ondulations, proposer un solution pour lisser cette tension.
  5. En utilisant un adaptateur USB-série, observer les données envoyées par le compteur sur le PC (gtkterm par exemple)

Séance 3

  1. Commande des leds
  2. Alimentation

Fabrication de la carte électronique

Saisie du schéma

Comme précisé en introduction, le schéma devrait à ce point être déjà bien avancé.

La relative simplicité de l'étude doit vous amener à approfondir votre réflexion sur le schéma de votre carte et notamment sur les points suivants :

  • comment allez-vous programmer le µcontrôleur ?
  • comment choisir judicieusement les pattes du µcontrôleur

Quelques éléments de réponse :

ISP In System Programming : la plupart des µcontrôleurs modernes dont celui-ci sont programmable directement sur la carte (in situ).

Il faut donc prévoir le connecteur de programmation et le relier au composant en respectant l'ordre de câblage.

Vous utiliserez, comme Atmel le préconise, le connecteur ISP à 6 broches.

Les broches de programmation MISO MOSI et SCK correspondent aux numéros de pattes 7,8 et 9 pour l'attiny841.

Avr isp.jpg
choix des pattes L'avantage d'utiliser un composant programmable est de pouvoir placer (dans une certaine mesure) les entrées et sorties où bon nous semble.

Attention cependant, il faut garder à l'esprit que le programme sera plus complexe à écrire s'il n'y a pas un minimum de réflexion.

Pins réservées La patte RESET principalement, ne peut servir qu'à cet usage !! Dans le cas contraire, vous ne pourrez plus reprogrammer le microcontrôleur.
Liaison série 0 Par défaut les broches utilisées pour la liaison USART0 sont PA2 et PA1


mais également :

adaptateur USB XBee
  • comment allez-vous contrôler les informations que reçoit le microcontrôleur ?


Pour effectuer des tests sur le microcontrôleur et contrôler les informations qui lui parviennent nous allons ajouter au montage une liaison série qui permettra d'afficher les informations transmises sur le PC sur un terminal. Cette liaison série sera réalisée avec à un module XBee qui sera implanté sur le PCB et raccordé au PC par un cordon USB.

Ce module XBee sera connecté sur une barrette sécable (MA04-1 voir tableau des composants)


CONTRAINTES DE RACCORDEMENT : Le compteur doit être raccordé sur la liaison série RXD0/TXD0 et le module XBee sur le liaison série RXD1/TXD1. ATTENTION, il faut croiser les bornes Rx et Tx entre le microcontrôleur et le module XBee.

Routage

Voici quelques contraintes de routage que vous devez respecter :

- pistes : 0,4 mm mini
- écartement entre les pistes : 0,4 mm mini
- Via : 0.8 pour les trous et 1,25 pour le diamètre externe

ATTENTION : Si vous faites un circuit double face, n'oubliez pas que les pastilles qui doivent permettre le brasage des composants traversants ne doivent se trouver sur la même face que le composant (sinon vous ne pourrez pas le souder !)


- placer un condensateur de 100nF au plus près du microcontrôleur entre les bornes +Vcc et GND
- placer un condensateur de 150µF entre les bornes +Vcc et GND de l'alimentation
- n'oubliez pas les connecteurs pour l'alimentation de la carte : douille (alimentation) ou con-wago-500 dans le tableau des composants

- prévoyez un repère visuel côté composant sur le typon à côté de la borne 1 du connecteur ISP pour éviter les erreurs lors du raccordement car il n'y a pas de détrompeur sur ce connecteur
- faites apparaître les informations (NOM , PROJET , ANNEE) sur chaque face comportant des pistes afin de pouvoir identifier facilement le côté cuivre lors du tirage du PCB.

Rappels pour préparation des calques

Exports sous forme d'images :

  1. fond en blanc : Options -> user interface -> layout
  2. lancer ulp -> drill-aid vous propose Drill center diameter 0,3mm et c'est OK. Le remplissage se fait en couche 116 mais avec des hachures.
  3. Choisir cette couche 116 puis change -> Fillstyle en plein
  4. Choisir les couches Bottom (bleu) Pads vias et la 116
  5. File -> export -> Image donner un nom et choisir 1200 DPI et monochrome
  6. Idem pour Top (rouge) avec pads et vias (et éventuellement la 116)

Rappels pour préparation des calques

Exports sous forme d'images :

  1. fond en blanc : Options -> user interface -> layout
  2. lancer ulp -> drill-aid vous propose Drill center diameter 0,3mm et c'est OK. Le remplissage se fait en couche 116 mais avec des hachures.
  3. Choisir cette couche 116 puis change -> Fillstyle en plein
  4. Choisir les couches Bottom (bleu) Pads vias et la 116
  5. File -> export -> Image donner un nom et choisir 1200 DPI et monochrome
  6. Idem pour Top (rouge) avec pads et vias (et éventuellement la 116)

Conception du programme

Afin de mettre au point progressivement le programme, il convient de réaliser progressivement les étapes suivantes !

Nous commencerons donc par l'observation des données issues du compteur, avant de les interpréter et de commander les leds comme souhaité.

1er test

Vérification de la communication avec le µcontroleur :

  • dans un terminal lancer la commande
  • avrdude -c avrisp2 -P usb -p t841

Vérification communication avec le PC

Pour configurer les liaisons séries, il faudra consulter la section 18 de la datasheet, principalement la partie 18.12 (register description).

On supposera ici que la communication avec le PC se fait sur la liaison USART1. Vous adapterez au besoin.

Par défaut cette liaison est configurée sans parité, 8 bits de données, 1 bit de stop (rien à faire dans le programme).

Il reste principalement à configurer la vitesse de la liaison.

Nous avons juste à configurer les points suivants :

#include <avr/io.h>
#include <util/delay.h>
#include <avr/sfr_defs.h>

int main()
{
  // autoriser la transmission (bit TXEN1)

  // vitesse de la liaison cf tableau 18.11 (UBRR1 et U2X1)


  while(1)
  {
     // envoyer un caractère :
     UDR1 = 'a';
     // attente
     _delay_ms(100);
  }
}

Configurer la liaison avec le compteur électrique

On considère que le compteur est relié sur la liaison USART0 (broches PA2, RXD0). Si vous avez utilisé la broche PB2 voir section 18.12.7

Le principe est le même que précédemment, il convient de réaliser les étapes suivantes :

  • autoriser la réception (bit RXEN0)
  • configurer la parité paire (even)
  • configurer le nombre de bits de données (7 ici)
  • configurer la vitesse de la liaison (U2X0 et UBBR0) cf tableau 18.1

On pourra alors renvoyer les données du compteur vers le PC :

char c;

// on vérifie si il y a un caractère à lire
si (bit RXC0 est à '1') alors
{
  // lecture de la valeur reçue
  c = UDR0;
  // envoi de la valeur vers le PC
  UDR1 = c;
}

Téléinformation

Todo.jpg Vous allez dans un premier temps essayer de transférer les données envoyées par le compteur sur le PC

Pour cela, il convient de :

  • créer la liaison vers le compteur
  • configurer les vitesses des 2 liaisons séries (elles peuvent être différentes)
  • attendre d'avoir un caractère à lire sur le compteur
  • lire ce caractère
  • l'envoyer sur la liaison vers le PC.

Décodage du message

Il convient maintenant d'essayer de séparer les étiquettes des données.

Pour cela, on remarquera que :

  • chaque message commence par un "retour à la ligne"
  • l'étiquette est suivie d'un "espace"
  • la valeur est suivie d'un "espace"

Todo.jpg En utilisant la méthode readBytesUntil, essayez de séparer étiquettes et données du message :

  • Attendre d'avoir au moins une ligne à lire
  • Attendre de recevoir un "retour à la ligne"
  • Récupérer l'étiquette à l'aide de "readBytesUntil"
  • Récupérer la valeur à l'aide de "readBytesUntil"
  • Convertir cette valeur en entier (cf atoi)


la bonne étiquette

Todo.jpg Il ne reste plus qu'à vérifier si l'étiquette est celle qui nous intéresse en utilisant la fonction strcmp


cahier des charges

Todo.jpg Il ne vous reste plus qu'à relire le cahier des charges et compléter votre programme pour qu'il réaliser ce que l'on souhaite.

Ressources

Composants

Nom Type Boîtier Librairie Eagle Référence eagle Documentation Fournisseur Référence
ATTINY841 µcontrôleur bt_avr attiny841.pdf Farnell 2443189
LED CMS PLCC2 led LG_T679-E1F1-1
Rx Résistances CMS rcl R1206 Farnell
Cx Condensateurs CMS rcl C1206 Farnell
CPOL Condensateurs 150µF 6.3V CMS rcl SMC_D Farnell
ISP barrette mâle sécable traversant con-lstb MA03-2
Connecteur support femelle pour XBee traversant con-lstb MA04-1
SFH620A optocoupleur CMS optocoupler SFH620A SFH620A Datasheet
douille(alimentation) borne pour fil 4mm traversant special-drill special_drill_0.3650
douille(alimentation) borne pour fil 2mm traversant special-drill special_drill_0.1560
bornier(alimentation) bornier pour 2 fils traversant con-wago-500 W237-102