Detection frein moteur DC

Bonjour,
Mon premier message sur ce forum, je me suis recemment lance dans l'aventure de l'Arduino avec un kit de decouverte
Je me trouve maintenant dans une phase d'apprentissage, n'etant pas du tout electronicien, mais plutot programmeur, je me familiarise avec tous ces courants et composants
J'ai trouve un projet sympa a faire, pas trop complexe, un kit de leds pour skateboard electrique, ou encore pour voiture telecommandee (type mini-z). Bien sur si je viens vous en parler ce n'est pas juste pour mettre 4 leds sur une batterie, j'aimerais faire des feux stop, une led eclairee faiblement en marche, et eclairant plus fort lors du freinage
Au niveau de la led, rien d'exceptionnel, par contre j'ai un soucis pour aborder le probleme de la detection du freinage
Pour resumer la voiture a un moteur a charbons, le controleur est ferme, pas vraiment moyen de recuperer le signal PWM, et quand bien meme, avec le signal PWM aucune difference entre la marche arriere et le frein. Le type moteur a charbon est mis en freinage en mettant les fils du moteur en court-circuit.
Je devrais donc pouvoir detecter cette mise en court circuit en branchant d'une maniere ou d'une autre l'arduino sur les fils du moteur, le tout sans griller mes entrées par du 5v 2A qui passent dans le moteur
L'idee du kit sur skateboard c'est exactement la meme problematique mais avec du 35v 50A qui passent dans le moteur :slight_smile:

Avez vous une idee de piste que je pourrais developper? Je ne sais deja pas comment je pourrais brancher l'arduino sur le moteur sans pour autant faire passer le courant du moteur dedans et tout cramer

Merci d'avance pour votre aide

Sna

Snaaaa:
Bonjour,
Mon premier message sur ce forum, je me suis recemment lance dans l'aventure de l'Arduino avec un kit de decouverte
...
j'ai un soucis pour aborder le probleme de la detection du freinage
Pour resumer la voiture a un moteur a charbons, le controleur est ferme, pas vraiment moyen de recuperer le signal PWM, et quand bien meme, avec le signal PWM aucune difference entre la marche arriere et le frein. Le type moteur a charbon est mis en freinage en mettant les fils du moteur en court-circuit.
Je devrais donc pouvoir detecter cette mise en court circuit en branchant d'une maniere ou d'une autre l'arduino sur les fils

Bonjour
Ce forum est sympa, et et il faut bien ici comme en tout une première fois :grin:
je ne connais rien à l’équipement moteur et puissance.
mais sur une première réflexion, il s'agit de déterminer si les borne du moteur sont (mises) en court circuit pour faire frein moteur ?
l'arduino doit donc déjà vérifier qu'il n'y a pas(plus) d'alim fournie par le "contrôleur" au moteur et/ou ensuite détecter si les bornes du moteur DC sont en CC.

C'est à priori électroniquement parlant "pas très compliqué" , mais il faut en savoir un peu plus sur l'existant : quel moteur, quel contrôleur, etc pour partir sur telle ou telle eventuelle possible solution !

Salut et merci de ton accueil :slight_smile:
Effectivement l'idée générale est de détecter un court circuit entre les pôles du moteur
Je me doute que ça ne doit pas être trop complique, enfin j'espérais :wink:
Au niveau de l'existant, je vais commencer tout ça sur une voiture rc type mini-z de kyosho. Le moteur est de type brushed, de taille 120 de mémoire, il est alimente par 4 piles AAA, donc 6v max, il doit consommer dans les 2A en bloquage. Le contrôleur est de type modelisme mais fermé, pas d'accès au récepteur ou au signal PWM en général, j'ai juste accès aux 2 pôles moteur.
Je dois donc connecter mes 2 pôles moteurs a l'arduino de telle manière que je puisse détecter le court circuit sans pour autant perturber le moteur en fonctionnement, ni bien sur flinguer l'arduino
Et j'imagine que mettre un pôle du moteur sur GND et l'autre sur une entrée c'est une très mauvaise idee :slight_smile:

Bonjour,

Bon ben pour finir je me suis lance :slight_smile:
J'ai donc dedouble mes fils moteur histoire d'avoir mon arduino cablé en parallele du moteur, un pole sur GND avec une resistance 10k et un pole sur A0 avec aussi sa resistance 10K (ca ne faisait pas de mal d'en mettre il parait :))
Et Youpi, avec analogRead(A0) j'ai la vitesse de mon moteur, bon dans un sens uniquement mais c'est deja ca. Fort de cette super experience, je m'emballe et me dit que si analogRead(A0) == 0, il suffit que j'envoie du courant par digitalWrite (12, HIGH) dans un pole du moteur par exemple pour savoir si je freine ou pas en recuperant ce courant dans l'autre pole.
Eh ben c'est la que je vois que j'ai encore des choses a apprendre parce que non, ca ne marche pas aussi simplement :slight_smile:

  1. vu que je lis tous les courants avec A0, que ca soit du courant du moteur ou du courant de mon test de frein c'est la meme lecture qui n'est donc pas terrible
  2. En fait que je freine ou pas, ca ne change rien, car meme si le courant peut passer quand je freine, il peut aussi passer quand je ne freine pas, par le moteur tout simplement

J'ai regarde aussi le signal du moteur avec un oscilloscope, et c'est bien du PWM, mais meme avec l'oscilloscope, je ne trouve aucune difference a mon graphe "au repos" et "frein actif"

Peut etre jouer avec des diodes... Je comprendrai un jour... je comprendrai :wink:

Bonjour
la détection de l’état frein moteur d'un moteur DC consiste essentiellement à vérifier :

  • 1° Qu'il n'y a plus d'alimentation fournie à ses bornes par le "driver"
  • 2° Qu'il fonctionne donc alors en générateur en débitant sur la charge du pseudo cour-circuit

les points importants à prendre en compte sont alors :

  • le relatif temps bref du fonctionnement comme générateur (décélération--->0)
  • détermination de la résistance interne du couple moteur+driver en condition de frein moteur

Ce n'est sur le "papier pas "très compliqué" mais il faut déjà faire des mesures purement "électronique" avant de penser à comment interfacer ça.

Puisque vous avez un oscillo, c'est déjà plus facile
perso, pour débuter et en condition de frein moteur
je testerais en V DC ce que je vois aux bornes du moteur ="tronche du signal" :grin:
je testerais à l’ohmmètre la résistance interne du couple moteur+driver

et apres c'est à voir 8)

Si le moteur est piloté en pont, un moyen de déterminer si on avance, recule ou freine, c'est de tester le potentiel des points communs des 2 branches du pont en H.
si on avance une branche au plus l'autre à la masse
si on recule une branche à la masse l'autre au plus
si on freine les 2 branches sont au même potentiel.

Le principe est simple mais l'usage du PWM pour fixer la vitesse complique un peu la chose. Surtout si on a pas accès au contrôleur moteur car on ne sait alors ps quand échantillonner.

En fait le plus simple (et applicable à tous les mobiles) c'est d'utiliser un accéléromètre. En plus on ne touche pas à l'existant.

J'ai refait les mesures de la resistance du couple moteur et de la tronche du signal :wink:
Bon la tronche du signal aucune difference entre ma "courbe" au repos et ma "courbe" en cours de freinage, signal tout plat de 0v
Par contre le test de la resistance du couple moteur/controleur m'a donne une legere difference :slight_smile:
Au repos à l'ohmmètre (positionne sur 200ohm) je mesure entre 0.6 et 0.9 (ca fluctue pas mal a ces niveaux la, et pas facile de positionner les pointes du multimetre)
En roulant en avant je mesure 1
En roulant en arriere je mesure -1
Quand je freine je mesure entre 0.2 et 0.5
Ce qui me semble logique, enfin si je comprends bien, j'obtiens une plus grande resistance quand le courant doit passer par le moteur que quand il peut passer par les cables directement
Reste maintenant a reussir a interpreter une si petite difference de resultat (si petite que je l'avais negligee lors de mes premieres mesures, je vais meme d'ailleurs tenter de mieux la mesurer des que j'aurai de nouveau acces a mon matos (les pointes du multimetre c vraiment pas terrible pour mesurer ca)
En plus visiblement ca ne sera pas forcement facile de mesurer cette resistance avec l'arduino, enfin, je continue a apprendre :slight_smile:
Par contre je ne suis pas fan de l'accelerometre, le comportement n'est pas completement realiste, meme si ca se fait dans le commerce, de plus je suis certain que cette methode fonctionne, elle est aussi utilisee dans le commerce :slight_smile:

Apres un peu de lecture, ca n'a pas l'air si complique
Si je dois mesurer une resistance, je dois faire comme ici
http://www.arduino.cc/playground/ComponentLib/Thermistor
mes poles moteurs etant a la place du thermistor
En fait je n'etais pas si loin de la solution
Pour recapituler, je vais donc tenter de brancher le 5v sur un pole moteur, le 2e pole relie a A0 et a une resistance de 10k elle meme reliee a GND, ca ne sent pas trop mauvais? :slight_smile:
Et j'ai sans doute aussi un probleme de GND, car en y reflechissant je connecte mon arduino en USB, je n'ai donc pas de masse commune avec la voiture. Je peux me contenter de connecter le GND de l'arduino avec le - des piles de la voiture? (car pas assez de v dans la voiture pour le UNO, l'idee etant de prendre un mini des le projet abouti)

En tout cas un grand merci de votre aide :slight_smile:

Au repos à l'ohmmètre (positionne sur 200ohm) je mesure entre 0.6 et 0.9 (ca fluctue pas mal a ces niveaux la, et pas facile de positionner les pointes du multimetre)
En roulant en avant je mesure 1
En roulant en arriere je mesure -1

Et une résistance négative ne te choque pas?

Quand le moteur freine, il génère une force contre-électromotrice. il génère du courant. Donc on ne peut pas mesurer sa résistance comme on le fait sur une bête résistance.

je vais donc tenter de brancher le 5v sur un pole moteur, le 2e pole relie a A0 et a une resistance de 10k elle meme reliee a GND, ca ne sent pas trop mauvais?

Ben, en fait tu vas rien mesurer du tout. Tu l'as dit la résistance du moteur est de l'ordre de l'ohm. Donc avec le pont que tu fais, tu vas récupérer 1/10ème de volt (100µV)

Hello,
Je me suis mal exprime, je ne mesure pas -1, c'est plutôt je lis -1. Je ne suis pas vraiment attardé sur les valeurs 1 et -1, l'important étant que mon multimetre percoive une différence, a moi après a réussir a interpréter cette différence dans le programme si possible. Et si je ne peux détecter qu'un sens de rotation ça me suffit pour commencer :slight_smile:
Par contre après avoir lu un peu sur les ponts diviseurs resistifs (maintenant je sais comment ça s'appelle, c'est plus facile pour comprendre;-) ), je vois le soucis de ma résistance de 10k, dans la formule ça fait peu baisser avec une autre résistance d'un ohm
Va falloir que je trouve une résistance de 1ohm... c'est courant ça? Ça me parait tellement peu

En fait ça sentait pas mauvais du tout, juste un problème de formule

Va falloir que je trouve une résistance de 1ohm... c'est courant ça? Ça me parait tellement peu

Oui, oui on en trouve. Le problème c'est que si tu mets le moteur au +5V avec une résistance de 1 ohm en série, le moteur va tourner puisqu'il sera parcouru par un courant important (5V et 1ohm+1ohm c'est 2,5A).

Je crois qu'il faut que tu revois ta copie...

sur ton moteur, tu as deux signaux, et en aucun cas, il ne faut les relier à une alimentation. il faut utiliser deux entrées analogiques arduino, une pour regarder chaque pôle via un passe-bas (une résistance de 10K et un condensateur de 470nF par exemple).

En principe, les signaux sont assez simples :

Marche AV : pôle 1 à 0, pôle 2 en PWM (>0)
Marche AR : pôle 2 à 0, pôle 1 en PWM (>0)
Arrêt ou frein : les deux pôles à 0.

regarde bien tes signaux sur chaque pôle du moteur, un signal PWM te donnera une tension supérieure à 0 via le passe-bas, tu définis un seuil pour ta mesure sur arduino, si le signal 2 dépasse ce seuil, alors c'est que le moteur avance, si c'est le signal 1, il recule, si aucun des deux, c'est qu'il est en frein ou à l'arrêt. Il se peut qu'au lieu du 0V ce soit 6V, dans ce cas, il suffit de mesurer les complémentaire... Mais si tu relève sur papier tes deux signaux du moteur, tu comprendras comment t'en servir sur ton arduino!

Mais surtout, ne relie aucune broche du moteur directement à la masse ou au 5V, tu vas casser quelque chose!

EDIT : tes mesures à l'ohm-mètre sont fausses : s'il affiche "1" ou "-1", c'est qu'il est en saturation (lorsque ton moteur tourne, il y a une tension qui apparaît, donc ton ohmmètre se retrouve à mesurer une tension qui dépasse ses capacités, donc il affiche "1" pour dire qu'il ne peut pas mesurer! s'il mesurait 1 ohm, il afficherait "1.0"!

pourquoi ne pas utiliser une seul sortie pwm avec un capteur sur l axe du moteur informant du sens de rotation, Avec un inverseur en H. Il suffit en phase de freinage de commander une inversion avec un contrôle du courant de court circuit à l'aide d'un shunte.
il est egalement possible de radoucir la fin du freinage pour un plus bel arret.
Il faut egalement prevoir les diodes de roue libre et de freinage. c'est le principe d'un variateur industriel.

C'est clair que ma méthode ne permet pas de savoir si on freine en marche AV ou si on recule... elle permet juste de connaître l'ordre donné au moteur : marche AV, marche AR ou "rien"... je ne vois pas comment dans ce cas allumer les feux stop ou les feux de recul sans avoir recours en plus à un capteur sur les roues non motorisées...

le fait de mettre le moteur en court-jus freine forcément en "déprogressivité", plus le moteur est entrainé vite, plus il freine. à l'arrêt complet, il ne freine pas du tout.

@caco : tu proposes carrément de changer l'électronique de commande existante? je ne sais pas si c'est exactement ce qu'il veut faire...

Bonjour et bonne annee a tous :slight_smile:

Je comprends enfin, la boucle est bouclee, la resistance de 1ohm ca me parraissait peu, je comprends enfin pourquoi :slight_smile:
Bon donc je suis dans la m..., car effectivement apres avoir verifie que je n'allais pas flinguer l'arduino, j'ai quand meme essaye le branchement, et ca fait bien avancer la voiture, avant de reset l'arduino du a la trop grande demande de courant
Question alternative, si la source de courant ne peut pas fournir 2.5A, comme par exemple mon USB, j'imagine que le voltage va baisser alors?

Comme mon multimetre lui arrive bien a mesurer une difference, il doit y avoir une astuce, et j'imagine que l'astuce est simplement que l'ohmmetre envoie un courant d'une valeur fixe tres faible histoire de ne pas avoir d'influence sur le montage, et si mon multimetre a 5eur peut faire cette mesure, pourquoi pas moi? :slight_smile:
Donc c'est parti pour la recherche, je me rends compte que les sorties digitales envoient un courant fixe de 40mA par sortie. J'ai tente de creuser un peu plus par la, j'ai tente de faire les branchements avec la sortie digitale a la place du +5v, bien sur dans mon entree A0, je ne recois que 0 au frein ou au repos. Comme je suis en train d'essayer de comprendre, je me laisse aller a une supposition : Le voltage dans A0 = 0.04A * 2Ohm = 0.08v?

Sinon j'ai trouve un petit schema qui pourrait m'aider
http://www.sonelec-musique.com/electronique_realisations_ohmmetre_001.html
Il utilise un generateur de courant constant, peut on considerer une sortie digitale comme ca? Son idee etant simplement de faire remonter (grace a un TLC2254) le voltage pour le rendre lisible par son pic
Je me demandais si on ne pouvait pas faire la meme chose (remonter un voltage) avec un transistor tout simple plutot qu'a un CI?

Pour rappel, ici mon exercice est vraiment de faire une detection sur un moteur existant, je ne peux pas chipoter sur le moteur ni sur le variateur, et a la limite je ne peux meme pas me brancher dessus autrement que "en parallele". De plus comme c'est pour une voiture, l'effet devrait etre comme sur une vraie, si on appuye sur le frein, les feux s'allument, qu'on soit a l'arret, en marche arriere ou en marche avant, et elles restent allummees tant qu'on a pas relache le frein
Je me dit aussi que je pourrais toujours acheter un kit du commerce pour le desosser et voir avec quels composants ils font tout ca, le shema ne devrait pas etre trop difficile a en deduire

J'ai encore trouve un autre shema, mais je ne suis pas sur de deja pouvoir bien le comprendre
http://www.hobby-electronique.com/index.php?option=com_content&view=article&id=11&Itemid=23
Le circuit du freinage commence sur le CN1 entree 3, c'est un fil qui vient du moteur. Mais je ne comprends pas comment je dois lire le shema pour savoir quand ces feux s'allument :frowning:

Bon recapitulatif, je n'avance pas, mais j'apprend, c'est deja ca :slight_smile:

Snaaaa:
Pour rappel, ici mon exercice est vraiment de faire une detection sur un moteur existant, je ne peux pas chipoter sur le moteur ni sur le variateur, et a la limite je ne peux meme pas me brancher dessus autrement que "en parallele". De plus comme c'est pour une voiture, l'effet devrait etre comme sur une vraie, si on appuye sur le frein, les feux s'allument, qu'on soit a l'arret, en marche arriere ou en marche avant, et elles restent allummees tant qu'on a pas relache le frein
Je me dit aussi que je pourrais toujours acheter un kit du commerce pour le desosser et voir avec quels composants ils font tout ca, le shema ne devrait pas etre trop difficile a en deduire

bonjour
déjà evoqué , mais pour rappel
La condition frein moteur se déduit de :

  • La détection de non alimentation au bornes du moteur DC venant du contrôleur/variateur (pour avancer , c'est quoi comme variateur ? )
  • Détection (R) du quasi court-circuit imposé par le contrôleur, détection qui doit être différenciée de l’état frein sur l’état moteur OFF sans frein.

Pour interfacer ça avec un arduino, il faut déjà impérativement détecter la condition : plus d'alim fournie avant de vérifier si la condition frein moteur est 1 ou 0.