Aller au contenu


Photo
- - - - -

Contrôler un joystick avec des servos


12 réponses à ce sujet

#1 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 13 octobre 2022 - 05:58

Bonjour,

 

J'ai récupéré une voiturette pour personne à mobilité réduite.

L'objectif étant d'en faire un châssis robotisé commandé par un Arduino Mega et un smartphone.

C'est très puissant, très lourd (+/- 200 kg avec batteries) et cela peut porter de lourdes charges.

C'est au final une machine assez complexe qui est pilotée par une télécommande.

L'idée de départ était de remplacer le joystick par un Arduino.

Mais il ne s'agit pas simplement de 2 potentiomètres et donc c'est nettement plus compliqué qu'il n'y paraît.

Il faudrait faire du retro-engineering : analyser les signaux qui sortent et les reproduire avec un Arduino.

Mes compétences limitées en la matière me poussent vers la solution que je voulais au départ éviter : contrôleur le joystick mécaniquement.

Là au moins je ne touche pas du tout à l'électronique de la machine.

 

Avec 2 moteurs pas à pas. Un moteur contrôle le stick dans l'axe X via une tige filetée. L'autre dans l'axe Y.

Ou encore par 2 servos. Comme dans cette vidéo.

https://youtu.be/zJdZ-RQ0Fks

 

Si vous avez des avis sur ce sujet, n'hésitez pas.



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 932 messages
  • Gender:Male

Posté 13 octobre 2022 - 06:15

Si vous avez des avis sur ce sujet, n'hésitez pas.

Je vote pour des servos. L'électronique est intégrée et de ce côté-là, il n'y a rien à faire. Ce qui n'est pas le cas pour des moteurs pas à pas.

 

Ta vidéo en référence est excellente ! D'autant que Little french robot est membre du forum et que tu peux trouver toutes les explications de sa réalisation ici, sans compter que tu peux le contacter. https://www.robot-ma...jouer-lui-meme/



#3 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 13 octobre 2022 - 06:56

Oui c'est vrai les servos c'est plus simple.

J'avoue que je vais m'inspirer du montage de Little French Robot ...

Ca a l'air de fonctionner super bien.



#4 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 19 avril 2023 - 08:15

Bonjour,

Voilà où j'en suis avec ce châssis

 

JOYSTICK07.jpg

 

Ce serait évidemment mieux de remplacer le joystick par une commande électronique mais cela dépasse mes compétences. Ce ne sont pas des simples potentiomètres.

 

JOYSTICK04.jpg

JOYSTICK05.jpg

 

PUMA40.jpg



#5 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 932 messages
  • Gender:Male

Posté 19 avril 2023 - 09:19

Bravo !

Le montage a l'air solide.

Il ne reste plus qu'à programmer .



#6 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 14 octobre 2023 - 07:45

Bonjour,

 

Sur ce robot il y a 2 alimentations : 2 batteries de 12V mises en série pour actionner les 2 moteurs de 24V 350W

Une seconde batterie de 19V alimente via un convertisseur 24V - 12V : Arduino Mega, mini ordinateur, camera IA, webcam,

Un second convertisseur 24V - 5v alimente les 2 servos qui actionnent le joystick.

Le tout fonctionne normalement.

 

SCHEMA_ELEC.jpg

 

L'idée était de supprimer la seconde partie et d'utiliser les 2 batteries de 12V pour alimenter à la fois les moteurs et tous les périphériques cités ci-dessus.

Une fois que l'ensemble est connecté aux batteries 12V, les joysticks effectuent des mouvements violents aléatoires lorsque le robot se déplace donc lorsque les moteurs consomment.

 

Je suppose que cela provient de parasites et qu'il est nécessaire de mettre des filtres.

 

Pourriez-vous me conseiller les filtres qu'il faut mettre ? valeur des condensateurs ?

Avant les convertisseurs de tension ? ou après ? ou avant et après ?

 

Merci



#7 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 932 messages
  • Gender:Male

Posté 14 octobre 2023 - 08:10

Pourrais tu nous montrer, au moins la partie du code concernant les servos ?



#8 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 15 octobre 2023 - 12:28

Merci Oracid

Le code n'est pas en cause. Tout fonctionne correctement quand j'alimente séparément la puissance et la commande.

Le problème apparaît dès que tous les composants sont alimentés par les batteries 12V.

 

L'erreur est de ne pas mettre de filtre avant / après les convertisseurs.

Le tout est de savoir quoi mettre comme condensateurs.



#9 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 932 messages
  • Gender:Male

Posté 15 octobre 2023 - 01:13

Le tout est de savoir quoi mettre comme condensateurs.

Bof ! Commence avec un gros condensateur, genre 100µF, que tu mets entre le + et le - , à la sortie de l'alimentation.

Essaye avec ce que tu as, et regarde ce que cela donne. 



#10 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 312 messages
  • Gender:Male

Posté 15 octobre 2023 - 10:44

Bonsoir,

En effet, dès que les moteurs consomment, la tension de la batterie chute (donc varie), et ce d'autant plus que le courant consommé est important, et que la résistance interne de tes batteries est importante (plus importante pour du plomb que pour du lithium, et généralement d'autant plus importante que les batteries sont bas de gamme).

 

Résoudre parfaitement le problème de bruit sur la partie signal est difficile, d'autant plus si le courant consommé coté signal varie aussi.

 

Après, les mouvements aléatoires des robots me surprennent un peu, vu qu'ils sont sensés être asservis en position.

Je vois plusieurs causes possibles, et je penses qu'il serait utile de déterminer laquelle est la coupable :

- la tension d'alim des servos varie

- la tension moyenne de commande des servos varie (si ce modèle de servo utilise la tension moyenne du signal au lieu de la durée : normalement ça ne devrait pas, mais avec des servos premier prix, c'est envisageable)

- les vibrations mécaniques font bouger les servos, et ceux-ci réagissent trop fort, entrainant des oscillations (mais je ne vois pas pourquoi le problème serait apparu maintenant)

- les masses ne sont pas (ou pas bien) reliées

 

À ta place, je vérifierait en priorité le dernier point : si c'est ça, alors c'est facilement résolu. NB : je te conseille de relier les masses de sortie des 2 convertisseurs au plus court (n'hésites pas à rajouter un fil qui relie les 2 masses).

 

Si ton convertisseur 24->5V accepte du 12V en entrée, alors tu peux tester de générer le 5V depuis le 12V pour en augmenter la stabilité.

 

 

Est-ce que tu possèdes un oscilloscope? Si oui, alors il serait utile de regarder les tensions du 24V, du 12V et du 5V, pour vérifier le bruit/les chutes de tensions.

Ce serait également utile que tu donnes les liens de la documentation de tes convertisseurs (si la datasheet est bien faite, elle donne pas mal d'infos sur la qualité de la sortie si l'entrée varie.

 

 

Pour le filtrage, la version la plus simple (et qui ne peut pas faire de mal) est d'ajouter des condensateurs. Le mieux est probablement en sortie des convertisseurs, mais il faut vérifier combien max tu as le droit de mettre (certains convertisseurs deviennent instables avec trop de capacité en sortie, même si un peu de capacité en plus en sortie est presque toujours bénéfique). Si tu n'as pas d'infos 100-200µF en sortie est probablement bénéfique. Plus tu en mets sans rendre les condensateurs instables, mieux c'est.

Tu peux aussi mettre des condensateurs en entrée des convertisseurs : là c'est simple : plus tu en mets, mieux c'est. Par contre, sauf si tes fils sont longs ou fins, l'utilité est probablement limité (sauf si le problème est le PWM du moteur et pas la chute de tension en soit, dans quel cas, ça peut aider.

 

Si ta consommation en 12 et 5V est limitée, tu peux mettre une diode (dimensionnée pour assez de courant) suivit des condensateurs : de cette manière, les moteurs ne peuvent pas décharger ton condensateur, et il sert intégralement de réserve d'énergie pour tes convertisseurs : je penses que ça peut améliorer les choses.

 

Enfin, selon les cas, un "vrai" filtre (par exemple inductance + condensateur) peut être mis en entrée des convertisseurs. Par contre, c'est très difficile à dimensionner sans infos : pour bien le dimensionner, il faudrait connaitre l'amplitude et la durée des variations de la tension d'entrée, et les variations de la consommation de courant en sortie du convertisseur (et si possible leur durée). Plus l'inductance (L) et la capacité C sont grande, plus le filtrage des perturbations d'entrée sera efficace. Par contre, si L est trop grand (et C trop petit), alors les variations de courant en sortie entraîneront des chutes de tensions. Donc globalement, C aussi grand que possible, puis L un compromis entre filtrer les variations de tension en entrée vs les variations de courant en sortie


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#11 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 16 octobre 2023 - 08:29

Bonjour Sandro,

Un grand merci pour ton temps.

En effet les masses ne sont pas reliées. Je vais dans un premier temps ajouter un fil qui relie les 2 masses.

La tension d'alimentation des servos ne varie pas. Il y a un voltmètre en permanence et elle est de 5.1V

Je vais générer le 5V depuis le 12V.

Puis si cela ne va toujours pas je mettrai les condensateurs.
Encore merci.



#12 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 312 messages
  • Gender:Male

Posté 16 octobre 2023 - 10:01

Bonsoir,

La tension d'alimentation des servos ne varie pas. Il y a un voltmètre en permanence et elle est de 5.1V

Si le multimètre affiche une tension constante, ça prouve que la tension MOYENNE est (quasi) constante. Ça ne prouve pas l’absence de courtes chutes de tensions (<1ms) qui peuvent potentiellement suffire à perturber les servos. Et là, l'impact sur la tension moyenne est négligeable, mais ça n'empêche pas que ça peut être un problème. Et là, sans oscilloscope, tu n'as pas de solution facile de tester si c'est le cas ou pas.

 

Pour l’anecdote, dans me premier boulot, on avait construit un robot avec 4 gros moteurs (il se trouve que c'était aussi des moteurs pour fauteuil roulant). La batterie 24V alimentait à la fois les moteurs et un convertisseur 24V->19V pour alimenter l'ordinateur embarqué.

 

Lorsque le robot était immobile, ou avec les roues en l'air (donc moteurs consommant peu), tout allait bien. Par contre, dès qu'on roulait avec, on avait régulièrement des reset de l'ordinateur, tout particulièrement en tournant sur place (là où les moteurs forcent le plus). Après investigation, la tension chutait un peu du à la consommation des moteurs, mais avec des pics descendants à environ 15V à la fréquence du PWM : le régulateur 24V->19V nécessitant au moins 21V en entrée, n'arrivait plus à fournir le 19V en sortie pendant les pics, entraînant des pics descendants en sortie. Ceux-ci provoquaient le reset de l'ordinateur. On avait testé des condensateurs sur l'alim, et de changer de convertisseurs, en remplaçant le convertisseur 24V->19V par 2 ou 3 modèle différents avec des tensions de 15 et 12V (suffisent pour l'ordi) : on avait un peu réduit la fréquence des coupures, mais sans les supprimer. Pressé par le temps, on avait donc fini par ajouter une batterie dédiée à la partie logique. Jusqu'à mon départ, on n'a jamais eut le temps de revenir là dessus (j'étais seul sur le soft, et il n'y avait qu'un stagiaire en électronique que j’encadrai, et qui avait des taches plus urgentes à faire).
 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#13 dakota99

dakota99

    Membre occasionnel

  • Membres
  • Pip
  • 242 messages
  • Gender:Male
  • Interests:programmation Windev, Webdev, aviation, robotique, domotique, drones

Posté 17 octobre 2023 - 07:37

Bonjour Sandro,

Ok pour le voltmètre effectivement il n'affiche pas les potentielles micro chutes de tension.

Il faudrait effectivement que j'apprenne à me servir d'un oscilloscope. :)

 

Merci pour le partage d'expérience : c'est exactement le même phénomène que je remarque. Quand le robot consomme peu, peu de soucis. Mais quand il faut un virage sur place, les servos deviennent fous.

Mais en tenant compte de tes propositions cela devrait fonctionner.

Merci pour ton aide

 

ROBOMINI02.jpg





Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users