Autres Robot Piscine

  • Auteur de la discussion guol64
  • Date de début
G

guol64

Compagnon
Bonjour a tous,

Voilà l'histoire :
J'ai récupéré un robot de piscine en panne.
Les moteurs étaient HS, je les ai changés et le robot a fonctionné, mais relativement mal (dû au revêtement de ma piscine).
Cette fois ci c'est la carte électronique qui semble HS.

J'ai dans l'idée de remplacer tout le système par une commande manuelle.
Le robot est relié à l'extérieur de la piscine par un câble étanche 4 fils.
Le robot est équipé de 3 moteurs 24VCC :
La propulsion : gros moteur qui propulse le robot avec une turbine qui filtre l'eau par la même occasion : deux positions : ON/OFF
Un moteur sur chaque roue pour gérer la direction : 3 positions : Avant/OFF/Arrière (inversion de polarité).
Dans le robot il y a un peu de place pour caser une carte électronique.

Voilà ma question: pensez-vous possible d'utiliser une carte arduino (ou autre) pour piloter manuellement ce robot.
Sur les 4 fils d'entrée je pensais :
1-24VCC
2-5VCC
3-GND
4-CMD (5V)

Je pensais "piloter" le robot par l'envoi d'impulsion 5V sur la CMD qui feraient changer le mode de fonction :
Mode 1 : Marche Avant : propulsion ON, moteur G AV, moteur D AV
Mode 2 : Marche Arrière : propulsion OFF, moteur G AR, moteur D AR
Mode 3 : Tourne Gauche : propulsion OFF, moteur G AR, moteur D AV
Mode 4 : Tourne Droite : propulsion OFF, moteur G AV, moteur D AR

Merci pour vos retours.
A oui, il faut que ce soit simple, je me débrouille en réalisation de PCB et soudage de composants, mais mes compétences électroniques sont médiocres.
 
A

.AleX.

Apprenti
Il y a bien plus élégant au niveau commande, tu peux utiliser une librairie capable de "décoder" une trame d'infos, et donc faire 'ce que tu veux'. Sur un fil on peut faire passer des instructions en 'serial', un peu comme avec un modem.

Dans ton cas, je m'orienterais vers le même protocole qu'employé en modèle réduit, le CPPM, une suite d'impulsions de longueur variables, chaque impulsion correspondant à une fonction, et la durée de chaque impulsion défini la 'valeur'.

Tu peux utiliser un arduino pour coder une trame CPPM, mais aussi une télécommande de modélisme que tu trouverais sur le bon coin par exemple. (attention, certains vendent des bouses à prix d'or)

Et ensuite, avec un autre arduino, décoder cette trame pour diriger ton robot.

La librairie 'exprès conçue pour' http://sourceforge.net/p/arduinorclib/wiki/Home/
 
N

Nikass

Compagnon
Salut !

Je comprends bien l'idée, mais... A quoi ça servirait ?

Je m'explique. Le fait d'avoir une commande comme tu veux la faire est intéressant si tu peux commander ton robot de telle manière qu'il couvre bien, et de manière fiable, toute la piscine. (si c'est toi qui veux le piloter à la main, là, d'accord, la question ne se pose pas er je rejoins l'opinion ci-dessus)

Si c'est pour refaire un truc autonome, c'est peine perdue: tu n'as pas de retour de position fiable. Je pense que l'électronique d'origine est un truc tout con avec des changements et/ou des durées de fonctionnement pseudo aléatoires ce qui fait qu'au bout d'un certain temps ça finit par tout nettoyer. (si, si, dans ma jeunesse, j'ai bossé sur les problèmes d'aspirateurs automatiques, alors... !)

A ce moment là, une seule carte dans le robot qui refait ça, vraiment pour la gloire.

Pour passer des ordres aussi simples sur une liaison à un fil, il existe des solutions "en dur" qui évitent la mise en oeuvre de programmables mais bon, c'est aussi une bonne occasion d'apprendre !

a+
 
G

guol64

Compagnon
Salut Nikass :P,

Le but est bien un pilotage manuel.
Le programme aléatoire d'origine mettait plus de deux heures et il restait des endroits non faits notament au centre.
En manuel, il faut que je fasse 8 aller/retour pour couvrir la piscine: en 15mn c'est fait.
D'autre part c'est pour nettoyer 5 ou 6 fois par ans et non pour une utilisation quotidienne.

Merci Alex pour ces infos, je n'avais pas pensé à la télécommande (d'ailleurs je dois en avoir une qui traine).
Dans mon esprit les 3 moteurs seraient pilotés en tout ou rien avec des relais (3 pour ON/OFF et deux pour l'inversion de polarité).
Si je dois gérer les vitesses il faudra probablement que je passe par un driver pour piloter les moteurs.

Je suis pas contre une solution en dur, a savoir que la place est quand même limitée à l'intérieur (c'est étanche).
De plus je viens de m'apercevoir qu'il n'y a probablement que trois fils qui arrivent dans la boite (il y en a bien 4 qui partent, il faut que je vérifie), donc 24V, GND et CMD : si besoin du 5V il faudra le prendre sur le 24V.
 
G

Gérard68

Apprenti
Est-il possible d'avoir plus de fils ?
Avec 3 moteurs, en inversant + et - pour changer de sens de rotation, il faut 6 fils. c'est plus simple qu'avec arduino.
 
G

guol64

Compagnon
Ben tout le problème est là.
D'un côté ce qui est hors de a piscine :
L'alimentation qui sort 28Vcc (mesurée à 29V à vide)
upload_2015-5-13_21-58-10.png


Le boitier de commande externe qui envoie 10V sur le fil marron et certainement les "commandes" aux robot.
upload_2015-5-13_22-0-52.png


Côté robot : les deux roues et le moteur d'hélice: il n'y a pas beaucoup de place.
upload_2015-5-13_22-1-57.png


A l'intérieur:
upload_2015-5-13_22-3-14.png


Et la carte de pilotage des moteurs:
upload_2015-5-13_22-3-53.png


Le robot est relié à la partie Alim extérieure par un câble étanche de 18ml (qui coûte un bras donc difficilement remplaçable, mais il est vrai que je n'ai pas exploré plus que ça le remplacement du câble). Dans ce câble l'alim qui fourni 28VCC et un fil supplémentaire.

L'idéal pour moi est une solution simple, rapide à mettre en œuvre et peu coûteuse, mais là tout est relatif si on compare au prix d'un robot neuf.
 
F

ferdi26

Compagnon
Bonjour
Je ne vais pas te donner des conseil en electronique , je n'y connait rien . Le but du robot c'est de nettoyer ta piscine à ta place et donc de te faire gagner du temps donc l'idéal serait de trouver le moyen de le faire fonctionner de manière autonome si non tu finira vite par te lasser au bord de ta piscine en plein cagniard pendant que les autres boivent l'appéro :drinkers:
ferdi
 
A

.AleX.

Apprenti
Les deux ne sont pas opposés !

Avec la solution que je propose, tu peux envoyer aisément 8 'ordres' distincts, dans le 'jargon' on appelle ça une voie.
Le protocole CPPM fabrique des impulsions de temps dont la valeur va de 1000µs à 2000µs, les voies sont toutes transmises les unes à la suite des autres avec une 'pause' entre chaque, puis après le dernier ordre, il y a une pause un peu plus longue pour dire : OK, on à tout envoyé, la prochaine est la voie 1.


Donc tu peux parfaitement avoir quelque chose comme :
voie 1 = avant arrière (0 = plein arrière / 100% = plein avant)
voie 2 = droite gauche (0 = plein gauche / 100% = plein droite)
voie 3 = 'pompe' de 0 à 100%
voie 4 = une sélection du mode de contrôle (en dessous de 50% = manuel, au dessus, une séquence automatisée)

Au niveau de l'arduino dans le robot, tu décode les voies avec la librairie, et ton programme effectue le mélange pour les moteurs.
Grossièrement, ça donne
Moteur 1 = (Voie1 * 0.5) + (Voie2 * 0.5)
Moteur 2 = (Voie1 * 0.5) - (Voie2 * 0.5)
Pompe = Voie3

Et dans ta routine, tu détecte quand la Voie4 est supérieure à 50% pour faire une séquence automatisée genre avance en 'spirale', ou fait des lignes droites et un petit changement de cap toutes les 15 secondes... bref, ça t'arrange.

Niveau encombrement, je ne peux que te conseiller un Arduino Nano qui, dans un format compact offre quand même un accès en USB, ce qui est le plus pratique pour débuter.

Il te faut trouver ensuite 3 'interfaces de puissance' pour piloter tes moteurs.
Plus élégants qu'un relais et d'un cout très abordable, tu peux utiliser des variateurs pour moteurs de modélisme, ça se pilote comme un sevomoteur, donc parfaitement prise en charge par l'écosystème Arduino.

Il existe des modèles 'pour voiture' qui font marche avant / marche arrière, et des modèle 'pour avion' qui font 0 à 100%

Ça existe dans une très large gamme de courant, de quelques petits ampère à plus de 100. Je pense que dans ton cas des '20A' seront largement suffisants, mais par contre, en 24V ça commence à faire des tensions un peu haute pour les modèles les plus courants.

L'autre 'problème', c'est que depuis environ 10 ans, on à vu apparaitre des moteurs 'brushless' dans notre loisir et le matériel pour moteur à balais comme les tiens devient rare..
Par exemple ce 20A est donné pour "10 NiMh cells', donc 12 éléments, ce qui donne au mieux 17V, il en manque un peu...
Peut-être sur un site d'enchère/petites annonces avec les termes "brushed ESC"

Mais avant ça, il faut que tu te familiarise avec le système arduino, par la peine d'acheter du matériel si c'est pour le laisser vieillir au fond d'un tiroir :wink:
 
Dernière édition:
G

guol64

Compagnon
En fait je n'ai que très peu d'arbres autour, elle reste relativement propre.
Jusqu'à présent je faisais ça à "l'aspirateur" au bout de la perche deux fois par ans.
C'est sûr qu'un robot c'est fait pour travailler tout seul, mais là une commande manuelle me satisferait pleinement.

Merci Alex pour ces infos, je vais me documenter un peu, mais cette solution semble séduisante avec un peu de travail.
 
G

guol64

Compagnon
Je pense que dans ton cas des '20A' seront largement suffisants, mais par contre, en 24V ça commence à faire des tensions un peu haute pour les modèles les plus courants
Les moteurs de roues font moins de 500mA, le moteur est donné pour 3,2W et le gros de la turbine je ne sais pas l'alim fourni 140W sous 28V, soit 5A maxi pour l'ensemble.
 
A

.AleX.

Apprenti
Bon, pour des moteurs de 500mA, je pense que tu peux utiliser un 'simple transistor' en PWM, l'arduino dispose aussi nativement de cette fonction en natif.

C'est potentiellement ce qui était fait sur la carte d'origine d'ailleurs, avec un transistor de puissance pour chaque moteur, suivi d'un relais 2 pôles pour faire l'inversion de sens.
J'ai refouillé un peu, je n'ai trouvé aucun ESC capable de tenir 24V 'dans sa doc' (même si je suppose qu'un grand nombre en soit capables)

La pompe semble d'un gabarit similaire aux moteurs de propulsion, du coup, même combat.

Tu peux reprendre cette méthode, voir même, si tu es en mesure de 'reverser' le circuit d'origine, le réutiliser en retirant des composants du circuit pour récupérer la partie puissance, mais vu que tu sais faire un PCB, ça sera plus propre d'en faire un, une sorte de 'shield' sur lequel tu place tes composants de puissance autour de l'Arduino. (d'ou l’intérêt d'en prendre un 'compact'.

Tu utilise quel logiciel de conception/dessin de circuit ?
 
G

guol64

Compagnon
Pour le logiciel j'ai Kicad, mais chaque fois que je l'utilise, je passe un petit moment à réapprendre à m'en servir. :???:

Pour la turbine le moteur est nettement plus gros, il fait 63W et est donné pour 3A.
 
G

guol64

Compagnon
Pour le pilotage moteur j'ai trouvé ça :
https://www.pololu.com/product/2512 : Pour les deux petits moteurs
https://www.pololu.com/product/1212 : Pour la turbine

Donc côté robot:
Arduino nano
3 Controleur moteurs PWM
1 câble pour les signaux d'entrée
1 câble GND
1 câble 28-29V
Il faut un petit circuit pour assembler tout ça et pour l'alim.
L'arduino accepte jusqu'à 17V il me semble: deux résistances identiques en série sur le 28V devrait me donner du 14V au milieu pour alimenter l'arduino.

Je vais creuser le côté pilotage, génération du signal.
 
Dernière édition:
N

Nikass

Compagnon
C'est pas une bonne idée, le pont résistif, pour alimenter ça... un régulateur, c'est quand même plus mieux !

a+
 
N

Nikass

Compagnon
Ouais ! Par exemple... cela dit fais gaffe, selon celui que tu vas prendre (y'a tellement de fabricants), il se pourrait bien que la tension d'entrée max soit 30V (c'est 35 chez les grands fabricants). Bref, t'es possiblement un peu limite si provenance inconnue !

a+
 
A

.AleX.

Apprenti
Nikass à tout à fait raison, tu ne peux pas utiliser des résistances en pont diviseur pour obtenir une tension fiable. En avant pour un 7812.
Ajoute également un condo genre 470µF/25V après ton régulateur (et un 220µF/63V à l'entrée ne pourra pas faire de mal)

Pour les Polulu, belle trouvaille !
Le 'petit' est donnée pour 650mA, en théorie ça passe, mais en cas de blocage du moteur, ça risque de grimper, et en plus tu es dans un environnement fermé... méfiance.

Dans tout les cas, ils sont protégés et 'coupent' quand le courant atteint 900mA, mais il faudra peut-être envisager de mettre un petit dissipateur sur la puce A4990 (une simple tôle d'alu d'un cm de coté peut déjà faire beaucoup)

En regardant les détails, ce Polulu fournit en plus une alimentation 12V sur sa connexion 'VOUT', ils précisent pas le courant possible, mais ça sera suffisant pour un Arduino qui va consommer au pire 200mA, et un seul suffit pour tes deux roues, car il gère 2 moteurs !

Il y en a un autre modèle https://www.pololu.com/product/2137, sa forme me semble plus facile à gérer, parce que dans ton cas, l'espace est compté..


Sur l'Arduino, c'est clairement un clone, mais tu prend pas un gros risque :D

Pour KiCAD, je pourrais te filer la main si besoin en cours de route.
 
G

guol64

Compagnon
Pour la partie commande j'ai trouvé ça:
upload_2015-5-15_15-3-5.png

upload_2015-5-15_15-3-26.png


Tu penses que ça pourra le faire?

Du coup si tout est bon il n'y aura quasiment pas d'électronique.
 
G

guol64

Compagnon
Plutôt que d'avoir un fil à la patte, il n'y a pas moyen d'exploiter le côté récepteur et de récupérer ce fameux signal ppm?
 
N

Nikass

Compagnon
Faudrait déjà s'assurer que ça passe au fond de la flotte... la radio et l'eau, c'est pas trop ça, demande aux sous-mariniers !

Au pire faudrait trouver où est la modulation...

a+
 
G

guol64

Compagnon
non, non je voulais juste envoyer le signal radio au boitier hors de l'eau qui renvoie le signal ppm sur LE fil, signal traité au fond de l'eau par la carte arduino dans le robot
 
A

.AleX.

Apprenti
La radio et l'eau ne sont pas très compatibles :D

Au mieux, le 27MHz fonctionne à peu près sur quelques mètres, mais comme dans tout les cas il faut alimenter le robot, ça n'a pas de sens, et cette radio est de toute façon en 2.4GHz.

Après, récupérer le signal CPPM depuis un récepteur est une 'évolution' qui pourra être envisagée 'pour le fun', mais je préconise de commencer simple.

A l’arrière de la radio, il y a une prise 'Trainer', c'est en principe prévu pour justement fournir le signal CPPM, soit pour faire du simulateur, soit avec une autre radio pour faire de l'écolage.

Je connais pas spécifiquement cette radio, mais normalement, avec un simple jack 3.5mm, tu choppe la trame CPPM.
Pour patienter avant de recevoir ton arduino et commencer à 'déblayer' (voir le sens de modulation, quelle stick fait bouger quelle voie...), tu peux observer ce signal avec un 'oscilloscope sur ordinateur', il y a plusieurs petits logiciels qui permettent d'utiliser la carte son d'un ordinateur comme entrée universelle, ça fonctionne généralement bien jusqu’à 10KHz.
Audacity permet aussi de le faire, mais pas en temps réél.

Il est fortement recommandé de rajouter un pont diviseur fait avec 2 résistances entre ce que tu mesure et l'entrée de la carte son qui est prévue pour un maximum de 1V d'amplitude.
Une précaution que je conseille est également de mettre des diodes têtes bêches pour servir d'ecréteur et limiter la tension à 0.6V ou 1.2V en collant 2x 2 diodes en séries.

Quelques infos sur http://heartygfx.blogspot.fr/2007/01/oscilloscope-du-pauvre.html par exemple.
 
G

guol64

Compagnon
Bonne idée ça, je vais ressortir mon oscillo :-D
Et tu as vu juste pour l'arduino : elle est commandée.

J'ai trouvé un peu de doc sur cette commande.
En fait sur la sortie trainer il y a 4 fils : il faut en sortir 2 pour retrouver le signal "habituel" :P
 
G

guol64

Compagnon
Pour la radio tu as raison, commençons par faire fonctionner le robot:mrgreen:
 
N

Nikass

Compagnon
Argh, ça y est, je viens de me rappeler ce que je voulais te dire hier.

Tu vas trimballer des signaux logiques et de la puissance sur pas mal de longueur de câble, le tout à côté en plus... donc emmerdements possibles. Dans la conception, je réfléchirais à une méthode de transport robuste, soit par logiciel (mais je ne sais pas si ça va bien avec le protocole: ça m'étonnerait qu'à moitié que ça soit déjà prévu parce que la radio c'est pas forcément fiable), soit en hardware si tu peux... type fausse boucle de courant. Enfin bref, gaffe aux étages d'entrée à haute impédance, comme d'hab.

Au pire tu feras le by-pass mais ça serait ballot de fabriquer tout le système pour se rendre compte qu'il déconne joyeusement quand on le met en situation réelle...

a+
 
G

guol64

Compagnon
Voilà, passage a l'oscillo:
upload_2015-5-16_14-47-25.png

Il y a 6 canaux:
CH1 : manette de droite 0:En bas 1:En haut
CH2 : manette de droite 0:A gauche 1:A droite
CH3 : manette de gauche 1:En bas 0:En haut
CH4 : manette de droite 0:A gauche 1:A droite
CH5 : Potentiomètre 0:A gauche 1:A droite
CH6 : pas identifié sur la radio commande

Le signal sort en 3V

Effectivement il y a 15m de câble et ce signal va se balader à côté du 28V.
Que veux-tu dire par fausse boucle de courant?

Je ferais les essais en situation réelle : c'est à dire avec les 15m de fil, j'en ai besoin pour l'alim de toute manière.
Côté alim j'ai juste un connecteur RCA a rajouter pour l'entrée du signal venant de la radiocommande, sauf si il faut augmenter la tension ???
 
A

.AleX.

Apprenti
Oh le joli petit Hameg :D (sont increvables ceux là !)

Bon, visiblement tu es en 'modulation négative' et tu as plus de voies qu'il n'en faut.

Comme le signal très justement @Nikass le signal véhiculé dans ton câble va être sur toute la longueur proche d'un élément perturbateur.
Je suis relativement confiant, dans le sens ou c'était déjà comme ça, donc, il y a forcément moyen de faire quelque chose.

Il faudra lors de tes essais que tu fasse fonctionner les moteurs pour évaluer le niveau de perturbation.
Tu as 3.3V à la sortie de la radio, c'est en effet pas lourd.
Comme tu vas probablement ré-utiliser le coffret commande/alim d'origine (vu qu'il y a le connecteur dessus, autant l'utiliser), une solution serait d'utiliser un optocoupleur.

J'y voit plein d'avantages : tu isole totalement la radio tenue dans les mains d'un opérateur qui aura peut-être les pieds dans l'eau..
Tu peux commuter du 24V pour rehausser le signal.

Et éventuellement le faire suivre d'un transistor avec une résistance de charge coté robot pour baisser l'impédance et faire monter un peu le courant, genre 150mA.
Je pense que c'est ce qu'évoquait @Nikass , en travaillant en courant plutôt qu'en tension, le montage sera moins sensible aux perturbations.

Mais avec un oscillo, tu le verras vite si le signal arrive tout pourri.
 
G

guol64

Compagnon
visiblement tu es en 'modulation négative'
Tu peux m'expliquer?

Pour savoir si parasite il y aura, un seul moyen de savoir : essayer.
Je branche les trois moteurs sur le 28V, j'envoie le signal de l'autre côté et je regarde à l'oscillo.
 
A

.AleX.

Apprenti
Tu as un niveau haut permanent, interrompu par des 'pulses' au niveau bas. C'est une "modulation (CPPM) négative".

La durée de chaque impulsion correspond à la commande, tu dois voir les impulsion s'élargir ou se resserrer quand tu bouge les organes de commande. (j'avoue que j'ai pas bien compris tes ch1 à droite/0 à gauche..)

Pour les perturbations, oui, ça sera de toute façon expérimental, mais j'insiste sur l'usage d'un optocoupleur.
Tu injecte ton signal coté led, avec la petite résistance qui va bien, et coté transistor tu peux travailler avec une tension plus importante, mais surtout, tu fait une bonne isolation galvanique qui évitera de se faire 'chatouiller' si un problème survient.

Après, avec juste les moteurs alimentés, tu auras un 'aperçu' des potentiels problèmes, mais si tu utilise la fonction PWM pour piloter tes moteurs (ce qui me semble obligatoire pour 'doser'), l'appel de courant à haute fréquence pourra causer d'autres problématiques.
Si ça se confirme, il y a des solutions pour filtrer (réseau LC)
 

Sujets similaires

B
Réponses
15
Affichages
766
phil 21
phil 21
G
Réponses
1
Affichages
1 232
Greg de Nîmes
G
R
Réponses
11
Affichages
1 216
Rico le bricolo
R
J
Réponses
265
Affichages
13 856
F
T
Réponses
28
Affichages
2 912
Tristan l'apprenti
T
R
Réponses
20
Affichages
1 394
Hubert86
H
SuperSpinach
Réponses
47
Affichages
3 181
SuperSpinach
SuperSpinach
Haut