Pages: [1] 2   Go Down
Author Topic: Problème récupération téléinfo  (Read 2389 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je suis un petit bricoleur dans l'âme, et depuis quelques temps j'étais tenté par découvrir l'Arduino. Et je me suis donc dis autant faire un module qui me serait utile... ce module est la récupération de mes données de consommations électriques via Arduino.

Voila qui pose les bases smiley

Nous en arrivons maintenant au coeur du problème: la trame récupérée est illisible.

Voila le code :
Code:
#include <SoftwareSerial.h>

SoftwareSerial cptSerial(2,3);

void setup() {
 cptSerial.begin(1200);
  Serial.begin(1200);

  Serial.println("Go!!!!");
}
void loop()
{
  Serial.write((byte) cptSerial.read() & 0x7F);
}

Alors j'ai essayé avec et sans optocoupleur (avec une résistance de 330ohm entre la sortie tic et l'optocoupleur) et j'ai même essayé sur un autre ordinateur (le mien étant sous Linux avec Arduino 1.0.1 et l'autre sous windows avec Arduino 1.0.2). Une autre chose bizarre est qu'avec les 2 ordinateurs, je n'ai pas le même résultats (les caractères affiché ne sont pas les mêmes).

J'avoue que la je ne vois pas d'où ça vient.... donc si vous avez des idées ce serait avec grand plaisir que je les écouterai (enfin lirai) smiley

Pezioz
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour

Un peu plus de détails sur le schéma que tu utilises serait le bien venu.
As tu un moyen de vérifier à l'oscilloscope ?
As tu bien mis aussi le terminal série d'Arduino à 1200 baud puisque c'est ce que tu règles dans ton sketch.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Est tu sûr de bien avoir configuré ton terminal série à 1200 bauds (8bits, 1 bit de stop, pas de parité) ?

Autre chose :
Code:
Serial.write((byte) cptSerial.read() & 0x7F);
Avant de lire un octet il faut être sûr qu'il y a quelque chose à lire smiley-wink

Code:
while(cptSerial.available() < 1); // Bloque le programme en attendant un octet
Serial.write((byte) cptSerial.read() & 0x7F);
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

@barbudor: Alors non je n'ai pas les moyens de voir mon signal sur un oscilloscope. smiley-sad Et en ce qui concerne le terminal série, oui je l'ai bien réglé en 1200 bauds.

@skywodd: J'ai essayé avec cptSerial.available() < 1, mais ça me donne le même résultat.

Le schema de mon installation est attaché à mon post.

Donc comme vous pouvez le voir, par rapport à ce que j'avais dit, j'ai rajouter une résistance de tirage entre l'optocoupleur et a carte arduino.

C'est à devenir dingue, je n'arrive pas à récupérer ne trame cohérente.

Je vous remercie de votre aide.... j'ai peur de devenir chauve à force de m'arracher les cheveu smiley-wink


* schema_arduino.png (10.06 KB, 750x412 - viewed 46 times.)
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 961
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
-sur le schéma la sortie de l'optocoupleur est inversée, il faut mettre l'émetteur du transistor à la masse (simple erreur de schéma ou aussi erreur de câblage ?)
-les leds d'optocoupleurs supportent mal les tensions inverses, mieux vaux mettre une diode en parallèle et en inverse.
-quel est le modele d'optocoupleur utilisé ?

Je découvre le signal 'téléinfo' et je ne comprend pas ou et comment serait effectuée dans ton cas la démodulation du signal.
A moins qu'il existe plusieurs variantes de 'téléinfo' et que le signal ne soit pas toujours du type décrit içi :
http://www.planete-domotique.com/blog/2010/03/30/la-teleinformation-edf/
Sur ces schémas  le signal téléinfo est alternatif et modulé (présence/absence de 50kHz). Un optocoupleur rapide est utilisé suivi d'une mise en forme et d'une démodulation par monostable. Il est peut etre possible de faire plus simple, juste avec un optocopleur 'lent,' mais ça demande sans doute un certain tâtonnement pour trouver la bonne résistance de pull-up....
« Last Edit: December 10, 2012, 04:51:45 am by al1fch » Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3014
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'information de téléinfo module une porteuse à 50kHz. Ton montage fonctionne correctement si l'optocoupleur est lent, sinon l'arduino reçoit des impulsions supplémentaires et il perd les pédales.
Un montage plus élaboré là : http://www.planete-domotique.com/blog/2010/03/30/la-teleinformation-edf/

Accessoirement, il faut aussi que la sortie de l'information téléinfo soit activée sur ton compteur. Sinon tu ne récupères que l'identifiant du compteur si mes souvenirs sont bons.
« Last Edit: December 10, 2012, 04:53:59 am by fdufnews » Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 164
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

regarde là : http://arduino.cc/forum/index.php/topic,108382.0.html
mes deux montages en espérant avec était clair.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rebonjour,

@fdufnews: Oui ma sortie téléinfo est activée sur mon compteur. L'optocoupleur utilisé est ls PC817 (datasheet : http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDwQFjAB&url=http%3A%2F%2Fwww.datasheetcatalog.org%2Fdatasheet%2FSharp%2FmXruvuu.pdf&ei=Z9fFULfXCK6P4gTMp4GgBQ&usg=AFQjCNGsD85IT74dLn8jahRAXGyqR7IqTg)

@al1fch: Pour le sens de branchement de l'optocoupleur je pourrais te le dire ce soir. Le modèle d'optocoupleur est celui que j'ai cité juste au dessus. Et pour le diode inverse je savais pas. En attendant que j'en commande un je peux continuer sans?

Merci beaucoup de votre aide ... ca fais du bien de se sentir moins seul smiley

Je vous tiens au jus ce soir!

Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 961
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
@al1fch: Pour le sens de branchement de l'optocoupleur je pourrais te le dire ce soir. Le modèle d'optocoupleur est celui que j'ai cité juste au dessus. Et pour le diode inverse je savais pas. En attendant que j'en commande un je peux continuer sans?
Si l'amplitude du signal teleinfo ne dépasse pas 5V (?) l'optocoupleur choisi peut tenir 'un cetain temps' puisqu'il supporte 6V en inverse......
Tu n'as pas une petite diode, voire une petite led à mettre en parallèle avec l'entrée de l'optocoupleur ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Alors je reviens vers vous pour vous epliquer ce que j'ai fais hier soir.

Comme me l'a suggéré skywodd j'ai un peu modifié mon code pour prendre en compte les octets uniquement lorsque ceux ci sont disponible (c'est vrai ca sonne mieux avec available smiley-wink ):

Code:
while(cptSerial.available() < 1); // Bloque le programme en attendant un octet
Serial.write((byte) cptSerial.read() & 0x7F);

Et j'ai modifié mon schema elec en rajoutant une diode inverse en entrée de l'optocoupleur comme l'a suggéré al1fch. J'ai aussi bien verifié le branchement de l'optocoupleur en sortie.

Alors avec tout ça que se passe-t-il? => Rien smiley-sad ... je ne récupère aucun octets.
Ensuite j'ai essayé de modifier le UCSROC mais le problème est que je ne sais pas trop ce que je fais.

De plus je suis sur que ma teleinfo fonctionne, car avant j'avais un capteur commercial et il me récupérait bien ma teleinfo. Donc c'est forcement un problème soft ou hard. Pour le soft je me dis quand même que le programme est pas bien compliqué, et que ce même code fonctionne chez d'autres personnes (vu sur internet). Et le hard j'ai fais toutes les modifs que vous m'avez preconisées.

Aidez moi svp, là je sèche vraiment!

En ésperant qu'une idée de génie me traversera l'esprit aujourd'hui (laissez moi un peu révé smiley-wink ).

Bonne journée à vous en tout cas et encore merci de l'aide que vous m'apportez smiley

Pezioz
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 164
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tu as vu mon lien, au dessus, je n'ai pas réussi à avoir le signal depuis un UNO et l'optocoupleur + R par contre il fonctionne très bien avec mon 2560. Je ne sais pas pourquoi ...

Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 961
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'émetteur de l'opto coupleur est donc bien à la masse sur le montage réel ?

Aucun octet récupéré ? pas d'oscilloscope disponible ?

Tenter dans un premier temps d'augmenter par palier la résistance de tirage entre Vcc et le collecteur de l'optocoupleur :
10k -> 22k -> 47k ->100K  Si ça ne donne rien réduire  cette résistance  10k -> 4,7k -> 2,2k -> 1k

Un montage ultra simplifié comme celui là  (un opto + deux résistances) est très tributaire des caractéristiques individuelles du composant utilisé. Les opto-coupleurs ont en général de fortes dispersions dur certains de leurs parametres (ratio courant sortie/courant entrée, bande passante...). On compte içi sur l'optocoupleur et sa lenteur relative pour démoduler grossièrement le signal.... c'est une utilisation un peu marginale de ce composant et il n'est pas surprenant que ça demande un peu d'adaptation
« Last Edit: December 11, 2012, 07:41:20 am by al1fch » Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux une petite mise a jour de ton schéma ?
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Tenter dans un premier temps d'augmenter par palier la résistance de tirage entre Vcc et le collecteur de l'optocoupleur :
10k -> 22k -> 47k ->100K  Si ça ne donne rien réduire  cette résistance  10k -> 4,7k -> 2,2k -> 1k

Bonjour al1fch
Bonne suggestion , et si dispo pour test plus simple sur "paillasse" utiliser un potentiomètre (100K ou 220K* ) câblé en résistance variable
et voir si "ça fini par tomber en marche" et que donc "ça cause dans le poste", si c'est le cas ensuite cerner les limites basses/hautes de R et "taper" sur une valeur fixe de R
"standard" au plus proche de la moyenne.
Perso si dispo je prendrais un 100 ou 220K en courbe log  smiley-cool
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 961
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Artouste
potentiometre OK mais pas sans résistance de  'butée' 1K en série  smiley-mr-green
Logged

Pages: [1] 2   Go Up
Jump to: