Parlons Arduino > Composants

servos et PCA 9685

(1/3) > >>

petitrain:
bonjour,

Un membre de mon club est en train de monter un réseau chez lui et il a 15 aiguillages à gérer.
Je lui est suggéré de l'aider à mettre en oeuvre une commande gérée par arduino et je me retrouve avec le bébé sur les bras....
Je pensai faire avec un module PCA9685 de chez Adafruit (commande par I2c de 16 sorties PWM).
La mise en oeuvre est assez simple grace à une bibliothèque dédiée, tout marche bien si les servos sont prés des modules.
Mais les ennuis commencent si on veut éloigner les servos.
En effet, on comptait faire un T.C.O. avec un arduino nano, 15 boutons classiques à bascule, les leds néo-pixels, et ce module pca9685, les servos se trouvant sous les aiguillages répartis sur le réseau( des aiguilles se trouvent à 2m du T.C.O.)
Dés que j'augmente la longueur des fils des servos (environ 30cm) ceux-ci ne répondent plus aux boutons mais tressautent, font de brusques sauts dans des valeurs exotiques...
J'alimente le pca9685 avec une alimentation de PC à 5v, l'arduino est alimenté par la connextion usb.
les servos sont des micro-servo 9G classiques.
Après avoir cherché un peu sur le web et sur le forum, je pense qu'il s'agit d'un problème de parasites véhiculés par les fils
mais je suis bien incapable de trouver seul la solution....
Voilà, si quelqu'un sait comment faire ou à des idées, je suis preneur...
D'avance merci.

msport:
Bonjour,
manifestement à Locoduino on préfère avec raison le CANBUS. J'ai aussi utilisé l'l2C pour piloter des aiguillages (solénoïdes dans mon cas) et j'ai aussi eu des problèmes de parasites. Il faut tester des alimentations séparées et vérifier les résistances de fin d'I2C.
Donc après avoir bardé mes CI de condensateurs de découplage avec une amélioration certaine, je suis passé au DCC. (voir l’article sur le décodeur à ULN2803).
Vouant maintenant une admiration définitive à Ruud Boer, je recommanderais la lecture (+videos) de ses réalisations concernant les servos (sans les avoir lus néanmoins moi-même)
https://rudysmodelrailway.wordpress.com/2014/10/09/arduino-as-dcc-servo-decoder-tuning-and-configuration/
le lien de télé&chargement est en dessous, ne pas se laisser impressionner si l'aperçu d'un zip ne fonctionne pas.

petitrain:
Merci pour la réponse rapide,
La liaison I2c ne me parait pas responsable des troubles, car, si les fils de liaison des servos sont courts ( donc les sorties du module) tout fonctionne bien. L'I2c c'est une entrée pour le pca9685.
Je connais ce lien, mais pour actionner les aiguilles avec le DCC, cela suppose d'avoir une centrale qui envoie les ordres,
le réseau sur lequel je travaille est en analogique. Faire une centrale DCC et des décodeurs d'aiguilles me parait un peu démesuré et j'ai surtout peur d'y passer beaucoup de temps.
Je vais essayer les condensateurs de découplage : J'ai imaginé un de 100mf et un de 100nf au plus près des servos.
J'ai vu aussi qu'il est bon de mettre une résistance de 10k entre la commande PWM et le +5v (mais au plus près des servos?)
Dés que j'ai fait mes essais je vous tiens au courant.

msport:
Je verrais, outre la vérification des résistances I2C (1) = 2.2K, la séparation et le filtrage en test (condensateur électrolytique) des alimentations Arduino et PCA9685 / 5V des servos (mais masse commune) mais aussi si les entrées des servos ne sont pas perturbées par la fréquence du PWM : là aussi, un petit condensateur électrolytique + petite résistance pour leur fournir quelque chose qui ressemble plus à du continu.

Tony04:
Bonsoir petitrain,

pourquoi ne pas utiliser plusieurs nano ou un micro pour chaque groupe d'aiguilles proches les unes des autres et qui seraient commandés par une liaison opto-isolée entre le uno maître et les satellites ?

Cordialement
Antoine

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique