Pages: [1]   Go Down
Author Topic: [Résolu] Arduino + teleinfo  (Read 1478 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'essaie d'utiliser mon arduino pour récupérer les informations de teleinformation de mon compteur EDF (la teleinformation est activée car utilisée par ailleurs)

Pour le montage electronique de la teleinfo vers l'arduino, j'ai fait celui correspondant au montage décrit par Yadnet (http://www.yadnet.com/index.php?page=compteur-edf)

Pour les branchements :
entrée : teleinfo (1 et 2) en entrée de l'optocoupleur 6N138
sortie : Tx - RS232-1 (pin14 du MAX232) sur le digital pin 2 de l'arduino
         GND - RS232-2 (pin6 du MAX232 avec un condensateur) sur la masse de l'arduino (GND)

Code Arduino 1 :
Code:
unsigned long time;
int Rx = 2;

void setup() {
  Serial.begin(1200);
  pinMode(Rx, INPUT);
}

void loop() {
  int oneBit = digitalRead(Rx);
  time = micros();
  Serial.println(oneBit);
  // on attend jusqu'à ce qu'un nouveau bit puisse être lu.
  // téléinfo à 1200 bauds, donc 1200 bits / second soit 1000000 microsecondes / 1200 = 833,33
  while(time + 833 > micros()) {
  }
}

Je démarre l'arduino avec le code ci-dessus et la teleinfo non-branchée, l'arduino me renvoi uniquement des 0.
Je branche la teleinfo et l'arduino m'envoie des 0 et des 1 (sans doute les bits d'une trame de teleinfo)

Code Arduino 2 :
Code:
#include <SoftwareSerial.h>

SoftwareSerial cptSerial(2, 3);

void setup() {
        Serial.begin(1200);
        cptSerial.begin(1200);
Serial.println("[START]");
}

void loop() {
  Serial.println("[WAIT]");
  if (cptSerial.available())
    Serial.write(cptSerial.read() & 0x7F);
}

Je démarre l'arduino avec le code ci-dessus et la teleinfo branchée, l'arduino me renvoi [START] puis des [WAIT] en infini mais jamais aucun octet lu sur le pin 2. Donc j'en déduis que cptSerial.available() est toujours faux.

Quelqu'un aurait une explication concernant mon problème lorsque j'essaie de lire des octets sur mon pin 2 ? A priori, j'ai bien les bits qui composent ma trame, mais lorsque je souhaite transformer mes paquets de bits en octets via SoftwareSerial, on dirait qu'il n'y a plus rien
« Last Edit: March 02, 2013, 05:49:52 am by bigben99 » Logged

Biganos
Offline Offline
Sr. Member
****
Karma: 2
Posts: 362
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut

Le montage que tu as fait c'est pour entrer sur un port série d'un PC.
Dans ton cas il ne faut surtout pas de MAX232 !! Il faut brancher la sortie 6 de ton 74LS132N sur sur le digital pin 2 de l'arduino.

A+
chabot380
Logged

ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Est ce que ce montage ne serait pas plus adéquat ?

http://www.macoda.com/index.php/Hardware:CompteurEdf
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

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

@chabot380, merci pour l'info ! je teste ce soir smiley

Par contre, pour ma culture personnelle (et peut-être celle d'autres personnes qui se retrouveront dans mon cas), en quoi le MAX232 pose problème, il me semble avoir bien compris le principe de chaque étape de la transformation du signal :
- diode + optocoupleur pour ne conserver que la "partie haute" du signal et isoler mon circuit du compteur EDF
- trigger de schmitt pour un signal carré plus propre
- MAX232 pour transformer du TTL en RS232, mais il me semblait avoir lu que le MAX232 permettait de limiter entre autre la tension de sortie à 5V (le TTL pouvant avoir une tension entre -13V et +13V) donc dans mon cas que le MAX232 me permettrait de protéger l'arduino au cas où la tension dépasserait 5V et sinon, ne servirait à rien.
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 140
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir
le circuit MAX232 est un circuit d'interface qui convertit les niveaux logiques TTL (0 ou 5V) en niveaux RS232 (+V -V) dans le sens emission et l'inverse dans le sens reception.
Ces niveaux +/-15V sont utilises pour les liaisons "officielles" RS232 vers par exemple un PC.
Il ne faut en aucun cas connecter la sortie du MAX232 sur une entree d'un Arduino. C'est le claquage assure.

Comme le dit tres bien Chabot380, tu dois oter le MAX 232 de ton montage et connecter directement la sortie du LS132 vers l'entree de l'Arduino.

Il faut peut-etre se connecter sur la pin 3 du LS132. Cela depend de la polarite du signal qui sort de compteur. De toute facon, c'est facile a tester: le signal que tu entres sur la pin de ton Arduino doit etre a 5V au repos.

Pour info, il y a des oscillateurs a l'interieur du MAX232 et, a l'aide des capacites exterieures, il peut fabriquer les tensions positives et negatives ici environ 8V en partant du 5V. Pas du tout compatible Arduino.

Autre info, il y a une erreur sur le shema de Yadnet.com, la capa cablee sur pin 2 c'est du n'importe quoi !!

Logged

Biganos
Offline Offline
Sr. Member
****
Karma: 2
Posts: 362
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir

Quote
Autre info, il y a une erreur sur le shema de Yadnet.com, la capa cablee sur pin 2 c'est du n'importe quoi !!
Non le schéma est bon !

Pour la polarité du signal voir ici : http://www.planete-domotique.com/blog/2010/03/30/la-teleinformation-edf/

Attention le 6N138 inverse le signal !

A+
chabot380
Logged

ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

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

Donc nouvelle série de tests effectués et l’encéphalogramme et toujours plat smiley-sad

1. pin 6 LS132 sur pin 2 arduino, aucun signal en bit à bit (0 en permanence) et aucun signal en lecture serie

2. pin 3 LS132 sur pin 2 arduino, aucun signal en bit à bit (0 en permanence) et aucun signal en lecture serie

Je suis perdu, j'ai moins d'info sans le MAX232 que ce que je pouvais avoir avec ! Après, si j'ai bien compris, les infos que j'avais avec les MAX232 étaient bidon...

PS : le pin 2 n'a pas grillé, je l'ai testé avec une sonde de température qui fonctionne et les résultats sont bons
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et avec le montage sur la page que j'ai indiquée ?
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

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

 smiley-sad-blue (x10)

Désolé, ça fonctionne à partir du pin 6 du LS132 vers l'arduino...

...
...

J'avais oublié d'alimenter le LS132 (pin 7 & 14) smiley-sad
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 140
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour info :
voici un extrait de la datasheet Texas du MAX232

   

et voici le cablage de Yadnet.com

   

le condensateur C5 doit etre connecte a la masse et pas au +5V
A+
Jacques
Logged

Biganos
Offline Offline
Sr. Member
****
Karma: 2
Posts: 362
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

rebonsoir

@ JMe87
a la masse ou au 5 volts c'est pareil !!!
Tiens regardes là tu vas voir : http://www.google.fr/search?hl=fr&biw=1920&bih=885&q=max232%20application&revid=394000289&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=s3EuUfaCNYm3hAfFwoDACQ

@ bingben99

regardes ici et tu comprendras : http://www.planete-domotique.com/blog/2010/03/30/la-teleinformation-edf/

Bonne soirée  smiley-lol

chabot380
« Last Edit: February 27, 2013, 04:22:17 pm by chabot380 » Logged

ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

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

@chabot380, merci pour le lien, je le connaissais déjà, d'ailleurs, je trouve qu'il y est bien expliqué les différentes étapes, c'est juste sur la fin que j'avais un peu plus de mal.
Logged

Pages: [1]   Go Up
Jump to: