Pages: [1]   Go Down
Author Topic: Newbie et Carte relais rs-485  (Read 2374 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Tout nouveau dans le monde Arduino, je m'éclate avec ma Mega...
Pourtant, je suis face à une difficulté relative au protocole rs-485.

J'ai fait l'acquisition de deux cartes relais rs-485 à 8 canaux sur le sîte de sigma-shop : http://www.sigma-shop.com/product/47/rs485-8-channel-relay-controller-12vdc-rs485-bus-id-01-relays-1-8.html

8 data, no parity, 1 stop bit

J'ai fait different essais, de cablage, de programation...je suis perdu.
La commande semble relativement simple :

Relay 1 commands:
OFF command : FF 01 00 (HEX) or 255 1 0 (DEC)
ON command : FF 01 01 (HEX) or 255 1 1 (DEC)

J'ai tenté le port serie 3 et 2, avec differentes commandes du type :
   Serial3.println('FF 01 01', HEX);

...mais rien n'y fait !!!

Si quelqu'un possède une telle carte relais ou a la possibilité de m'aider, je suis preneur...

« Last Edit: April 23, 2010, 11:42:00 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

France - Pays de la Loire
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Bidouilleur du dimanche ... et des autres jours de la semaine ...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Comment as tu branché ton interface sur la méga-arduino ?
Je ne suis pas certain mais j'ai l'impression que la Méga Arduino n'a que des ports serie type RS232.
Si c'est bien le cas, les signaux ne sont pas compatibles et il faut passer par un driver type 75176.

A+
Logged

France - Pays de la Loire
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Bidouilleur du dimanche ... et des autres jours de la semaine ...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ca se confirme : je viens de regarder le schéma de la carte sur le site : http://arduino.cc/en/Main/ArduinoBoardMega et j'ai aussi trouvé ça sur le forum : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1242053267

A+
Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ta réponse.

En effet, je me suis posé la question de la compatibilité. La carte relais posséde pourtant un chip SN75176BP (sur la petite carte controler) couplé avec un chip ATMEL ATTINY2313-20PU (pour la gestion du canal, je suppose)

En effet, peut-être un problème de cablage. quoique je penche de plus en plus vers un souci de programation, je doute sur la trame à envoyé.

Je completerais le sujet avec schema et code au plus tôt...

@+
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Schema ici :: http://guilde.cwahi.net/

code :



Code:
// "TEST DES CARTES RELAIS RS-485"

// "Communication Parameters :"
// "8 Data, 1 Stop, No Parity"
// "Baud rate : 9600"

// "Commands :"
// "OFF command : FF 01 00 (HEX) or 255 1 0 (DEC)"
// "ON command : FF 01 01 (HEX) or 255 1 1 (DEC)"

#define Rx 15
#define Tx 14

int inbyte = 0;

void setup(void)
{
  Serial.begin(9600);
  Serial3.begin(9600);
  
  pinMode(Rx, INPUT);
  pinMode(Tx, OUTPUT);
  
  digitalWrite(Tx, LOW);
  digitalWrite(Rx, LOW);
  
  Serial.println("Setup ok");
}

void loop()
{
  digitalWrite(Tx, HIGH);
  Serial.println("init");
  delay(1000);
//  if (Serial3.available() > 0){
//    Serial.println("loop");
    delay(10);
    Serial3.print('FF 01 01', HEX);
    Serial3.println();
    delay(100);
    digitalWrite(Tx, LOW);
    delay(1);
    digitalWrite(Rx, HIGH);
    delay(1);
    inbyte = Serial3.read();
    Serial.println(inbyte, DEC);
    delay(100);
    Serial3.flush();
    digitalWrite(Rx, LOW);
  }
//}
   

« Last Edit: April 23, 2010, 06:21:54 pm by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

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

J'ai essayé vite fait de brancher directement la carte relais sigma sur les I/O numérique de l'arduino et j'ai remarqué que l'intensité ne semblait pas suffisante. ll faut brancher 2 entrées/sorties par relais. Est-ce que par hasard  tu aurrais essayé zoroastre ?  smiley-wink
« Last Edit: April 26, 2010, 04:42:26 pm by startx » Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut Startx,

Je ne comprends pas trop comment tu branches tes 2 entrées/sorties par relais ???

Un shema me parlerais plus ??? As-tu déjà réussi à piloter ces cartes relais ???

@+
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

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

je dispose de celle en RS232 (carte relais + carte RS232) : http://www.sigma-shop.com/product/8/-usb-eight-channel-relay-controller-rs232-serial-controlled-12v.html
Je n'ai pas la carte devant moi mais si mes souvenirs ne me jouent pas des tours ....
Comme j'ai une Arduino Mega avec suffisamment d'E/S, je voulais contrôler la carte relais directement pour éviter la carte avec le MAX et le ATtiny. Vu qu'il s'agit d'une carte standard avec un transistor par relai, j'ai relié les transistor au PIN de l'arduino mais comme j'ai expliqué afin de déclencher il faut 2 E/S pour piloter chaque relai. Donc 16 E/S pour piloter les 8 relais dommage. J'ai opté pour une autre carte.  smiley-wink
« Last Edit: April 28, 2010, 05:22:40 am by startx » Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ta réponse startx  smiley-wink

Pour l'instant, je continue mes essais, sans succés hélas...

Si je suis les différents avis récoltés, j'ai une topologie type 'mirroir' avec 2 SN75176, le premier en emission piloté par l'Arduino, le second en reception pilotant ATty...

ARDUINO|SN75176|OUTPUT CONTROLER(with SN75176)
Tx-------->Di----A------>A
Rx-------->Ro-----B------>B
Int-------->Re/De

J'envoie un bit 0 sur Re/De, pour déterminer la direction des données (Tx), puis je balance ma trame...

Je ne trouve hélas pas de code détaillé relatif au rs485 ayant cette configuration !!!  :-[

Si quelqu'un pouvait m'écrire une code simple, détaillé, avec la commande en décimale afin que je puisse valider mes suspiçions ???

@++

Ps : Startx, peux-tu m'orienter vers la carte que tu as opté ???
« Last Edit: April 29, 2010, 10:04:04 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

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

Voila zoroastre:
http://www.gce-electronics.com/
Mes 2 cartes sont http://www.gce-electronics.com/nos-produits/19-carte-4-rel.html. Au prix du relai + UNL en cmos etc .. c'est pas cher et très propre. Ca fonctionne nickel.

@+

Logged

France
Online Online
Faraday Member
**
Karma: 38
Posts: 3509
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
J'ai tenté le port serie 3 et 2, avec differentes commandes du type :
  Serial3.println('FF 01 01', HEX);

...mais rien n'y fait !!!
Je pense qu'il y a une incompréhension sur le format de la trame. Le Serial3.println('FF 01 01', HEX) envoie le caractère 'F' puis le encore 'F' puis 0 ....
Je pense que ta carte elle attend les valeurs binaires. Essaie d'envoyer ça:
Code:
Serial3.print("\xFF\x01\x01");
Et attention parce que println envoie en plus à la fin de la chaine le saut de ligne (\0A \0D) ce qui peut embrouiller la carte relais.
Logged

France - Pays de la Loire
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Bidouilleur du dimanche ... et des autres jours de la semaine ...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Quote
J'envoie un bit 0 sur Re/De
Tu veux dire que tu mets les lignes Re et De à 0 ?
Si je lis bien la datasheet du 75176, il faut mettre DE à 1 pour pouvoir envoyer des données sur la RS485 ...
Tu peux aussi metre RE à 1 puisqu'à mon avis, tu ne devrais pas avoir grand chose à lire ...

Regardes page 2 de la datasheet : http://pdf1.alldatasheet.com/datasheet-pdf/view/28605/TI/SN75176A.html
et là aussi : http://www.arduino.cc/playground/DMX/DMXShield

D'autre part, as tu mis les resistances de ligne ?

A+
Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour toutes vos aides.

C'est super sympa  smiley-wink

Voici mon nouveau schema : http://guilde.cwahi.net/

J'ai l'impression de ne pas être bouclé côté controler, une masse manque, non ???

Les 2 résistances de ligne doivent-elles absolument avoir les mêmes valeurs, dans ce cas, j'en récup une dés lundi au boulot ???

Bidouille +1

fdufnews, ma carte relais fais 'guirlande de noel', soit ma trame est mauvaise, soit cela est dû à la valeur résistance. Petite question tout de même : C'est quoi donc un bit de stop ??? J'envoie ma trame point, ou j'envoie ma trame et je dis 'stop' (Serial3.print("\0A")) ???

Je teste
Code:
Serial3.print("\xFF\x01\x01");
dés que possible.

Pour l'instant, mes essais sont réalisés à courte distance, mais j'ai cru comprendre qu'un câble croisé & blindé est nécessaire sur A et B.

Que pensez-vous de ces cartes relais niveau rapport qualité/prix ???

@++
« Last Edit: April 30, 2010, 04:04:55 pm by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

France - Pays de la Loire
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Bidouilleur du dimanche ... et des autres jours de la semaine ...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Pour la liaison, un simple fil torsadé suffit. Pour de la très longues distances, tu peut utiliser du cable informatique pour réseau : pas cher, solide, ...

Quote
C'est quoi donc un bit de stop ??? J'envoie ma trame point
Pour toi, c'est totalement transparent.
Jettes un oeil la dessus : http://www.rennes.supelec.fr/ren/fi/elec/docs/rs232/rs232.htm
Comme c'est l'Atmega qui gère la transmission, il s'occupe de mettre les données en 8bits, de ne pas créer un bit de parité ( et de ne pas l'envoyer ) et de mettre un bit de stop et d'envoyer le tout, à la vitesse choisie.

A+
Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'ai pû faire fonctionner la carte !!! Ouff !

Merci pour toutes vos aides... ;D

J'ai réalisé le schema suivant : http://guilde.cwahi.net/ sans la ligne de résistances 470 ohms.(elle doit être utile sur de plus longue distance je pense...)

Ce qui a résolue mon problème se trouvait au niveau du code; Il faut activer la transmission avec un bit à 1 sur RE/ & DE, transmettre, puis relacher avec un bit 0, etc...

Ce qui donne :
Code:
...
digitalWrite(any_dpin, HIGH);
Serial3.print("\xFF\x01\x01"); # Swith on relais 1
digitalWrite(any_dpin, LOW);
...

Je continue mes experimentations...

@++
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Pages: [1]   Go Up
Jump to: