Démodulation ASK par un microprocesseur

Introduction

Le document [2] a indiqué une méthode d'utilisation du signal de téléinformation pour relever, à l'aide de son PC, les indications de son compteur d'électricité, lorsque celui ci est un modèle électronique. Dans le cas où on dispose d'un microprocesseur, toujours pour lire la liaison de téléinformation, on peut se demander si on ne peut pas simplifier le schéma en supprimant certains composants et faisant le travail par logiciel.

L'objectif de ce projet est de décoder le signal de téléinformation en appliquant le signal de ligne directement au microprocesseur, après, bien sûr, les éléments de protection décrit dans le document [1].

Caractéristiques du signal de téléinfo

Pour une description détaillée il faut se reporter au le document [1]. Les informations nécessaires pour la suite de ce document sont :

Le démodulateur ASK

Si on examine le signal de téléinformation, on constate qu'il est caractérisé par des transitions de 0 à 1 puis de 1 à 0 à la fréquence 50 khz quand le signal existe. Si on injecte ces transitions à l'entrée d'un compteur du microprocesseur, on va donc avoir, à la fin du comptage, une valeur proportionnelle à la moyenne du signal. Si maintenant on échantillonne cette valeur à 3 fois la fréquence du signal contenu dans le signal d'origine (la modulation), on doit avoir suffisamment d'informations pour extraire cette modulation.

L'échantillonnage est géré d'une manière asynchrone par un autre timer du microprocesseur. Il consiste à lire le contenu du compteur, puis à le remettre à 0. On obtient donc une valeur comptée Count maximale de 50000/3600 = 13 pour un temps de T/3, T étant le temps bit de la modulation, le signal étant de 50 Khz et la modulation de 1200. La valeur finale en sortie d'échantillonnage va être simplifiée à 0 si Count est >= à 7 et 1 sinon.

Il reste maintenant à filtrer ces 3 valeurs pour n'en garder qu'une correspondant à un bit de la modulation. La valeur fournie en sortie du filtre est 0 si sur les 3 , il y a 2 bits à 0 et sinon c'est 1. Le filtre est synchronisé par le premier bit entrant à 0, qui force cette valeur à correspondre à la première des 3 valeurs.

signal de téléinfo

La représentation d'un octet pour le carcatère '0' 0x30 en ASK. L'image est obtenue par simulation, 50 khz étant trop élévé pour l'échantillonage par ma carte son d'un PC. L'écran du haut représente le signal de téléinfo. L'écran du mileu représente le signal modulant et l'écran du bas représente les instants déchantillonnage à 3600 Hz.

L'uart logiciel

L'uart est également réalisé en logiciel, il permet d'assembler les bits reçus en caractères. Les valeurs en sortie du filtre sont trasmises à l'entrée de l'uart. L'uart étant initialement dans l'état repos, le premier 0 en entrée, qui est considéré comme le bit de start, positionne l'uart dans l'état réception. Dans cet état, les n bits prévus (8 ici) sont assemblés en un caractère. Dès la réception des n bits, l'uart est remis dans l'état repos, où il absorbera le bit de stop et il retourne le carctère reçu. Il ne reste plus qu'à le traiter comme indiqué dans le document [2].

Il est à noter que, au démarrage, il faut prendre la précaution d'écarter les caractères arrivant en cours de trame pour être prêt pour le début de la trame suivante. Il en est de même pour les bits, si on se connecte au milieu d'un caratère, le premier 0 arrivant sert de start. Dans ce cas, tous les carctères suivant risque d'être erronné jusqu'à l'inter trame. L'inter trame d'une durée d'au moins le temps de 2 caractères à la valeur 1 permet de vider les buffers en prévision du premier bit start suivant.

Références Documentaires

  1. Spécification techniques du signal de téléinformation.
  2. Utiliser son PC pour relever son compteur d'électricité.
  3. Un enregistreur de données et évènements autour de son compteur d'électricité.

Download

Pas de download ici. Voir [3].