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.
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...
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 ?
je dispose de celle en RS232 (carte relais + carte RS232) : KMtronic Ltd: USB Eight Channel Relay Controller - RS232 Serial controlled - 12V
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.
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...
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:
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.
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 ...
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 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 ???
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, ...
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.
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...