Go Down

Topic: Série démodulateur 1200baud 7 bits => Arduino (Read 1 time) previous topic - next topic

polo-m

Bonjour à tous,
J'ai réalisé un démodulateur pour récupérer les infos de téléinformations d'un compteur edf (je me suis basé sur un projet existant). Ce montage marche parfaitement, je récupère bien les trames et les infos qui m'intéressent (quand connecté à un pc).
L'objectif final est de le connecter à mon arduino (par l'intermédiaire d'un petit module radio qui fonctionne bien lui aussi).
Je rencontre un problème lorsque je connecte la sortie data (TX) du démodulateur (ou du récepteur ça revient au même), les données reçues sont incompréhensibles.
Le démodulateur sort un signal en 1200 avec 7 bits de parité, cela doit-il se spécifier au niveau de l'arduino ?

Voila le genre de sortie que j'obtiens avec l'arduino :
]a(edId>Wc>QS~BIfk9o+kE9tXq_vrDv1/wQA|
Pense pas que ça puisse aider mais pour illustrer ;)

Si quelqu'un à déjà rencontré ce problème, ou peux m'expliquer plus en détails la communication série de l'arduino je suis preneur ! :)
Merci d'avance

mahth

#1
Jul 14, 2010, 08:06 pm Last Edit: Jul 14, 2010, 08:06 pm by mahth Reason: 1
Essaie de rajouter la seconde ligne pour forcer le mode 7E1.

Code: [Select]
 // initialisation du port 0-1 : 1200,7,E,1 conection téléinfo
       Serial.begin(1200);
       UCSR0C = B00100100;


Trouvé sur le post suivant : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267289555

polo-m

#2
Jul 14, 2010, 08:40 pm Last Edit: Jul 14, 2010, 08:41 pm by polo_m Reason: 1
Merci,
j'avais testé quelques lignes équivalentes, sans résultat pour celle la non plus.
J'ai regardé et testé le code fournit sur le post que tu m'as envoyé, sans plus de résultats, je ne sais plus quoi faire.

mahth

Mais ton module edf sort des signaux rs232 non ?
L'arduino elle attends des signaux TTL.

Tu as testé ton module sur un autre port com ? (pc/usb)

polo-m

#4
Jul 14, 2010, 10:08 pm Last Edit: Jul 14, 2010, 11:09 pm by polo_m Reason: 1
Oui pour le rs232, je l'ai testé avec une prise db9 sur mon pc (avec un com to usb), aucun soucis ça marche.

Après ce sont mes débuts avec l'arduino, je pensais qu'il pouvait recevoir du rs232 sur les broches rx/tx, peux tu m'expliquer vite fait et/ou m'indiquer des ressources pour comprendre ?

Edit:Je ne comprends pas tout, le module connecté au compter me renvoie un signal en 1200 de baudrate etc. En rs232 que je peux récupérer sur mon pc dans un terminal, pourquoi l'arduino n'est pas capable de recevoir ces trames alors qu'il se connecte également au pc, qu'il est possible d'envoyer des trames etc ?
J'ai besoins de vos lumières ! :)

mahth

#5
Jul 14, 2010, 11:51 pm Last Edit: Jul 14, 2010, 11:52 pm by mahth Reason: 1
Une explication sur le RS232/TTL : http://kubuntu.free.fr/blog/index.php/2010/05/13/272-liaison-serie-rs232-vs-ttl

Quand tu connecte ton arduino sur ton pc, tu as un module qui converti tes signaux rs232 venant du pc, en signaux TTL pour communiquer avec ta carte.

En gros il te faut un convertisseur pour adapter des signaux rs232 en signaux TTL.
Par exemple (le moins cher que j'ai trouvé 13$ fdpin) http://fcelectronics.mybisi.com/product/rs232-ttl-converteradapter-kit-max232-for-avrpicarmgps

polo-m

#6
Jul 15, 2010, 12:04 am Last Edit: Jul 15, 2010, 12:06 am by polo_m Reason: 1
Merci pour les infos :)
Je vais étudier ça alors.
Un convertisseur correspond à ce qui est expliqué la ? : http://www.arduino.cc/en/Tutorial/ArduinoSoftwareRS232

mahth

#7
Jul 15, 2010, 08:48 am Last Edit: Jul 15, 2010, 08:49 am by mahth Reason: 1
C'est exactement ca.

C'est vrai que le circuit se compose d'un chipset et de 4 condensateurs, donc facilement réalisable.

polo-m

Ok parfait je vais me faire ça, merci pour ton aide !

pascal06

Bonjour,

J'ai aussi monté un petit circuit dans le même but. Mais plutot que de transformer les signaux en rs232 et ensuite en ttl avec un CI MAXIM, je transforme directement en TTL. J'utilise un 6N138 et un 74LS132N. Le 74LS132N intègre quatre Trigger de Schmitt. J'en utilise 2 pour redresser le signal.

Je me suis inspiré de ce schéma :
http://www.macoda.com/index.php/Hardware:CompteurEdf

Pour rendre le signal compatible ttl, il suffit d'utiliser une deuxième fois un Trigger de Schmitt pour inverser les niveaux.

http://www.pachube.com/feeds/7286

Cdlt,
Pascal

polo-m

Intéressant !
Au niveau de la "théorie", le ttl n'est pas sensé fonctionner sous une tension plus faible (en plus d'être inversé) ?

pascal06

Depuis plus de 10 ans les PCs supportent des tensions inférieures à 12 volts pour gérer le rs232. Donc, beaucoup de circuit n'utilisent que 5 volts. Avec comme défaut, de ne pas supporter de longue distance à de très haut débit. Dans mon cas, c'est l'arduino qui alimente le trigger, donc parfaitement compatible avec lui-même. Dans tous les cas, ça marche ;)
Pendant mes premiers essais, j'ai même pu éloigner le circuit d'environ 8 mètres sans problème. Et l'investissement est très faible ...

Pascal

mahth


fdufnews

Quote
Depuis plus de 10 ans les PCs supportent des tensions inférieures à 12 volts pour gérer le rs232.

En fait ça a toujours été le cas. C'est la norme TIA/EIA-232 qui définit les signaux et dans la norme la tension doit être supérieure à -/+3V pour que le niveau soit pris comme un 1 ou un 0.
On voit donc que l'amplitude minimum c'est 6V. Et que le signal doit être positif ou négatif centré sur 0. Entrer dans un PC avec un niveau TTL (donc une amplitude de l'ordre de 4V au maximum et pas de transition négative) c'est s'exposer à des problèmes de communication.

pascal06

Merci pour ces précisions fdufnews,
Je ne suis pas électronicien, je suis plutôt dans les réseaux ...
Le but final étant de rendre les signaux compatible avec l'arduino, et la je n'ai pas de pb de communication.
Mais ton analyse me fait poser des questions sur l'Arduino Serial,
si je regarde le schéma, je ne pense pas que l'Arduino Serial génère de tension négative avec ses deux transistors et l'alimentation est de 5v.
Juste pour brainstormé :)  

Go Up