Auteur Sujet: Pertubations entre Arduinos  (Lu 804 fois)

PETER41

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Pertubations entre Arduinos
« le: juillet 07, 2022, 05:33:04 pm »
Bonjour à tous,
J'ai un PB au club, je m'explique.
J'ai réalisé un éclairage leds (2 rubans leds blanc chaud et 1 ruban RVB) piloté par un Arduino Nano avec une cde en manuelle par 4 potentiomètres ou en automatique avec un cycle jour nuit en intervenant sur les ruban blanc et le ruban RVB. Pour faire la variation de l'intensité de la lumière j'utilise les sorties en PWM. Cela fonctionne à merveille. En sachant que les autres sorties disponibles cde différents éclairages situés sur le réseau (éclairage maison, réverbère, silo, etc).
Nous avions besoin de commander un aiguillage sans pour autant acheter un moteur TORTOISE (comme d'habitude). J'ai donc réalisé un circuit imprimé avec un arduino digispark qui par l'intermédiaire d'un commutateur 2 positions cde un servomoteur.
Si j’alimente le montage avec une alimentation totalement autonome le fonctionnement est nickel.
Si j'alimente le montage par l’intermédiera d'une alimentation 12 V DC qui est distribuée sous le réseau afin de pouvoir alimenter n'importe quel montage ET que la lumière citée précédemment est en action j'ai un fonctionnement bizarre pour l'une des commandes par mon inter : le servomoteur est commandé aléatoirement et n'importe comment en faisant comme un "essuie glace". Je coupe l’alimentation des lumières (qui est totalement indépendante de l'alim 12 V DC) le fonctionnement du servomoteur est nickel.
Il y a donc une perturbation entre "lumière" et l'Arduino qui commande le servo.

Pouvez-vous m'indiquer une piste de solution ? J'ai mis un condo 100nF au plus près de l'alim de l'Arduino qui commande le servo et cela n'a pas donné le fonctionnement correct.
Merci pour votre aide.
Arduinotement vôtre.
Pierre

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1881
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #1 le: juillet 07, 2022, 10:26:33 pm »
Bonsoir,

autrement dit, c'est le digispark (ATTiny 85 ??) qui fournit le 5V au servo ?

Il y a loin entre le digispark et le commutateur ? Les entrées sont référencées à quel GND ? avec un pullup au 5V du digispark ? C'est peut-être sur ces entrées qu'il faut des 100nF.
Cordialement

PETER41

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #2 le: juillet 08, 2022, 01:30:02 pm »
Bonjour,
Ce n'est pas l'Attiny 85 qui alimente le servo car j’alimente la carte en 12 V et j'ai mis un régulateur 5V.
La longueur entre le commutateur est d'environ 1m par un câble plat 3 conducteurs. Je pense essayer samedi de mettre un câble blindé : est-ce une solution ?
Les deux entrées du commutateur sont misent en pullup par des résistances de 1k relié au +5V du régulateur qui alimente l'Attiny (en fait c'est 5.6V car j'ai mis une diode sur la masse du régulateur afin d'avoir un peu plus de 5V pour alimenter l'Attiny).
Concernant ta proposition de mettre deux 100 nF sur les entrées, je tenterais cela samedi au club.
Une idée qui me viens : Est-ce intéressant (nécessaire) que le 0V l’alimentions lumière soit relié au 0V de l'alimentation 12 V "accessoire" (je dis accessoire pour indiquer que cette alimentation va permettre de gérer les allumages des bâtiments, des réverbères, etc par l'Arduino Nano qui gère l'éclairage). Je crois bien que cela doit être absolument nécessaire.
Arduinotement vôtre.
Pierre

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1881
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #3 le: juillet 08, 2022, 02:44:21 pm »
une diode sur la masse du régulateur : Je ne pense pas que soit une bonne idée : mieux vaut avoir des masses propres.
Je crois plus aux 100 nF qu'au câble blindé.
0V de l’alimention lumière relié au 0V de l'alimentation 12 V "accessoire" Il faudrait un schéma d'ensemble pour voir.
Cordialement

Fantasio

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
Re : Re : Pertubations entre Arduinos
« Réponse #4 le: juillet 08, 2022, 04:46:38 pm »
...Les deux entrées du commutateur sont misent en pullup par des résistances de 1k relié au +5V du régulateur qui alimente l'Attiny...
Bonjour Pierre
Concernant les résistances en pull up, pourquoi ne pas utiliser directement les résistances de pull up intégrées au moyen de l'instruction: pinMode(pinX, INPUT_PULLUP) ?

..régulateur qui alimente l'Attiny (en fait c'est 5.6V car j'ai mis une diode sur la masse du régulateur afin d'avoir un peu plus de 5V pour alimenter l'Attiny)...
- Augmenter la valeur de tension du régulateur n'apportera rien de plus si ce n'est le risque de détruire la puce. La valeur max pour le Vcc d'un ATtiny85 est 5,5V.  :-[
- Concernant le filtrage avec un condensateur 100nF, il faut placer ce dernier le plus proche possible des broches Vcc et Gnd (broches 4 et 8 de la puce).
Personnellement j'ai souvent eu des problème avec la commande des servomoteurs avec un ATtiny85, un moyen d'y remédier avait été l'ajout d'un condensateur de 100 µF en parallèle de l'alimentation du servomoteur pour contrer ses appels de courant et son incidence sur la tension ...

Bon courage et tiens nous informés de la suite.

PETER41

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #5 le: juillet 12, 2022, 03:13:32 pm »
Bonjour à tous,
J'ai une bonne nouvelle. Mais avant je vais donc repréciser le montage.
L’Arduino utilisé est une carte digispark USB.
L'alimentation se fait en 12v, un régulateur 5V est installé sur mon circuit imprimé pour alimenter avec la bonne valeur d e tension pour le servo.
Je ne sais pas si la commande pinMode(pinX, INPUT_PULLUP) est possible sur cette carte digispark.
J'ai donc mis  deux condensateur (un sur chaque entrée) au niveau de ma carte circuit imprimé. Il apparaît que le servo n'est plus commandé correctement car il revient "en arrière" (sens horaire)  avant d'aller vers l'avant (sens anti horaire) pour un des deux mouvements.
J'ai supprimé un des condensateurs et OH MIRACLE, le fonctionnement est OK !
Le condensateur qui reste est donc sur l'entrée P1 (celui qui a été supprimé était sur l'entrée P0).
P2 étant la sortie qui alimente le servo.
J'espère avoir été assez clair.
Encore merci pour votre aide.
Arduinotement vôtre.
Pierre
PS : J'ai mis en fichier joint une image de la carte pour que cela soit plus clair. Je n'ai pas réussi à insérer une image dans le texte.

Fantasio

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #6 le: juillet 12, 2022, 11:49:57 pm »
Au temps pour moi concernant le digispark, je restais sur l'idée d'un ATtiny85 classique, donc mes propos sur les condos 100nF et le risque de détruire la puce sont hors sujet. Désolé!
Pour la commande pinMode(pinX, INPUT_PULLUP), je te confirme qu'elle est possible sur le digispark!

Serait-il possible de nous présenter ton code?

Bonne continuation à toi

PETER41

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #7 le: juillet 13, 2022, 09:02:55 pm »
Bonjour à tous,
Voici en pièce jointe un document que j'ai réalisé pour la documentation du club.
De même je met le programme en pièce jointe. Je ne l'ai pas conçu mais simplement fait une adaptation à mon besoin.
Ce programme n'est donc pas établi par moi mais simplement un programmeur adaptateur et ce programme donne satisfaction.

Encore merci à tous pour votre contribution.
Aduinotement vôtre
Pierre

Fantasio

  • Newbie
  • *
  • Messages: 38
    • Voir le profil
Re : Pertubations entre Arduinos
« Réponse #8 le: juillet 14, 2022, 05:51:19 pm »
Merci Pierre pour ton envoi.

En retour voici le code en action sur un simulateur:
https://wokwi.com/projects/337165124600070738
J'ai très légèrement modifié le code pour incorporer les leds qui indiquent la position de l'aiguillage en m'inspirant de la documentation qui tu nous a fourni.

Bonne continuation à toi