splitter un signal RS485 sur plusieurs arduinos RX ? passer un tableau en i2C ?

Bonjour à tous

le but est d’avoir une entrée DMX et de pouvoir ventiler sur plusieurs arduinos minimales le signal ou un tableau d’états (512 bytes).

chaque arduino minimale ferait du softpwm sur la plus part de ses pins (16 outs).

que feriez vous ?

splitter le signal au sortir du MAX485 ? si oui combien d’arduino peut on mettre en sortie d un même signal ? y a t il des protections à faire, une amplification éventuelle ?

ou bien passeriez vous en i2C l’envoi d’un tableau de 512 caractères depuis l’arduino receveur du MAX 485 ?

voilà ! merci :wink:

karistouf:
Bonjour à tous

le but est d'avoir une entrée DMX et de pouvoir ventiler sur plusieurs arduinos minimales le signal ou un tableau d'états (512 bytes).

chaque arduino minimale ferait du softpwm sur la plus part de ses pins (16 outs).

que feriez vous ?

splitter le signal au sortir du MAX485 ? si oui combien d'arduino peut on mettre en sortie d un même signal ? y a t il des protections à faire, une amplification éventuelle ?

ou bien passeriez vous en i2C l'envoi d'un tableau de 512 caractères depuis l'arduino receveur du MAX 485 ?

voilà ! merci :wink:

je n'ai pas bien compris ce que tu veux faire
ajouter une surcouche en I2C ? (consommatrice de ressource et protocole aussi time dependant)
si j'ai bien compris la discussion est unidirectionnelle (sortie RO des 485 ) ?
il faut regarder la sortance d'un max485 , mais au pire si elle n'est pas elevée il vaut mieux mettre un etage tampon (un simple mosfet en switch doit faire la rue michel :grin: )

hello artouste.
comme le problème semble insolluble entre réception DMX et softPWM, j essayes de voir comment avoir une arduino receptrice de dmx, et d autres arduinos pilotées en i2C pour faire la graduation avec softpwm.
mosfet en switch ? moswitch fromage ?

splitter le signal au sortir du MAX485 ? si oui combien d'arduino peut on mettre en sortie d un même signal ? y a t il des protections à faire, une amplification éventuelle ?

Si tu dois dupliquer le signal du MAX485, autant dupliquer l'entrée plutôt que la sortie. Au moins du bénéficie du fait que le RS485 c'est un bus et qu'il supporte plusieurs charge et en plus il est robuste aux perturbations.

Franchement on commence un peu à se perdre dans ton installation. Tu pourrais pas nous faire un synoptique?

karistouf:
hello artouste.
comme le problème semble insolluble entre réception DMX et softPWM, j essayes de voir comment avoir une arduino receptrice de dmx, et d autres arduinos pilotées en i2C pour faire la graduation avec softpwm.
mosfet en switch ? moswitch fromage ?

ok
en fait tu veux mettre un arduino "intermédiaire" qui ne fasse que du decodage trame DMX---> creation de trame I2C---> distribution vers arduino PWM
intellectuellement c'est sur que c'est moins time dependant (synchrone/asynchrone) , en revanche je ne suis pas persuadé qu'envoyer systematiquement 512 bytes soit très efficace
les modules ecouteurs devant toujours chercher leurs petits au milieu.
peut etre plutot voir à generer de l'I2C que sur changement.
si un module terminal gere 16 voies (flexinol) sur 256 (1 byte) niveaux de pwm , tu n'a besoin que d'envoyer vers lui (hors adressage) sur changement d'etat au pire 16*8 soit 128 bits .
l'interet est que le module final passe le plus clair de son temps à ne faire que de la pwm , pas d'ecouter et interpreter , plus vite il sait : "ce n'est pas pour moi" , plus vite il retourne pwmer :grin:

et edit :
j'abonde à la suggestion de fdufnews
faire un petit point d'etape avec un synoptique 8)

merci fdufnews. oui je sais ca peut paraitre bizarre et brouillon, mais là je batailles vraiment pour une solution correcte.

pour l’instant j essayes de trouver une solution correcte pour une centaine de circuits.
solution TLC > on s y casse les dents et les TLCs sont trop fragiles. j y crois plus.
solution softpwm > ca fonctionne avec mes électrovannes, sauf que j ai des artefacts entre l aquisition dmx et softPWM sur l’UART0. ces artefacts se font sur une led allumée, à priori pas sur une électrovanne. Mais avoir ce genre de truc m inquiètes franchement pour la suite.
Pour l instant j’utilises une nano pour lire le DMX et écrire en softPWM

du coup je me demande si je ne peux pas avoir:
un récepteur DMX basé sur une nano ou autre, et utiliser des arduino minimales en I2C pour graduer les 120 électrovannes du projet.
j ai aussi dans un coin des 74HC40. Bref tout est un peu ouvert jusqu à avoir enfin une solution solide et fiable et passer à la suite du projet (l’air le réseau et les projections)

[edit] oui je peux décréter aussi de ne passer qu’une trame de 100 bytes. voir au pire 50 et faire deux modules récepteurs pour le bas. ca ira plus vite que 512 bytes. bien vu artouste pour le changement à réception de trame. je bataille depuis ce matin sur l i2C et peut etre que le problème vient de là, en plus de la problématique du cast byte-char.
[edit] en i2C ce sont des tableaux très courts c est ca ? ok donc 16 circuits à chaque fois…

karistouf:
...sauf que j ai des artefacts entre l aquisition dmx et softPWM sur l'UART0. ces artefacts se font sur une led allumée, à priori pas sur une électrovanne. Mais avoir ce genre de truc m inquiètes franchement pour la suite.

ils y sont tres certainement , mais compte tenu de l'inertie des flexinols, tu ne les ressent pas sur les actions"
colle un oscillo dessus et tu va (les) voir ----->[] :grin:

et meme si ce n'est pas intellectuellement satisfaisant, peut etre se poser la question du taux de récurrence des artefacts/situation nominale.

si la durée du mode artefact est tres petite devant le nominal, le phenomene etant connu et caractérisé, faire "l'impasse dessus" peut être aussi une solution envisageable :grin:

ah ben oui ]:slight_smile:
[...coding recoding ]

La sortie receiver d'un max485 assure des niveaux logiques compatibles : 0.5 - 3v jusqu'à 10-15 mA .
Donc elle doit pouvoir être raccordée à au moins 20 ou 30 Arduinos si ...

En premier lieu en RS485, il faut une terminaison de bus . Typiquement 120ohm entre les entrées + et - .

Il n'y a pas le moindre espoir de faire fonctionner un microcontrôleur et/ou de la logique avec des dispositifs de puissance sur la même alimentation.

Partant du secteur, il faut deux transformateurs ou un transformateur avec plusieurs enroulements.
Ensuite : redresseurs et régulateurs séparés.
Pour la logique, on peut se contenter d'un régulateur type 78xx pour un arduino (max 1A)
Pour la puissance, il faudra avoir recours à une alimentation à découpage si il faut plusieurs dizaines d'ampère.
Souvent on a pas besoin d'une alimentation de puissance régulée et un chargeur et une batterie feront l'affaire.

Ensuite faut décider : masse (0volt) commune ou pas .
Si pas : interfaces optocouplées = vitesse limitée à quelques kHz.

Pour les essais, tu pourrais utiliser une alimentation de PC At ou Atx en utilisant le 5v pour la logique et les autres sorties pour la puissance .
Sur ces alimentations , la régulation se fait sur le 5v les autres suivent en rapport.