bonjour à tous et à toutes et merci pour ce forum qui m'a permis de me former à l'arduino.
J'ai fabriqué une télécabine miniature que j'ai motorisée avec un arduino+ motorshield v2 adafruit. Un programme vb commande l'arduino via un port serie en USB.
Tout fonctionnait parfaitement ( depuis quelques mois)jusqu'à ce matin : lorsque le programme envoie une commande Pwm à 0, les 4 moteurs s'arrêtent mais le moteur branche sur M1 se met à fonctionner au ralenti(environ 20%) et par saccades d'environ 0,7 Hz ( marche /arrêt)
Ce fonctionnement erratique ne dépend pas du code téléversé car il persiste même avec un code vide, s'arrête lorsque le cable USB est débranché et recommence des que le port du PC est sous tension( lors du redémarrage du PC par exemple).
Je n'ai pas trouvé de documentation parlant de ce fonctionnement mais j'ai l'impression que c'est un message d'erreur provenant du motorshield.
Si quelqu'un a déjà rencontré ce probleme je suis preneur mais je crains que le shield ne soit grillé...
Merci pour votre aide !
Comment est alimenté le moteur?
Avez vous testé un programme tout bête de commande du moteur sans votre pc pour voir si le shield est déficient ?
Bonjour ,
La carte est reliée a une alim réglable 0-12v( le defaut persiste pour toutes tensions. )
Je n'ai pas essayé un petit code mais le shield réagit bien au programme. Je suis en déplacement imprevu pour une semaine et demi, j'essaierai de tester un petit code a mon retour.
Bonjour à tous, me voici de retour.
j'ai testé ce petit code issu d'un exemple fournit par Adafruit.
Une fois téléversé, le moteur M1 se comporte comme prévu ( 1s de marche puis 1s d’arrêt) tant que le cable USB est branché, par contre le moteur s'immobilise si je débranche celui ci.
#include <Wire.h>
#include <Adafruit_MotorShield.h>
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
void setup() {
AFMS.begin(); // create with the default frequency 1.6KHz
myMotor->setSpeed(150);
myMotor->run(FORWARD);
myMotor->run(RELEASE);
}
void loop() {
myMotor->run(FORWARD);
myMotor->setSpeed(100);
delay(1000);
myMotor->run(RELEASE);
delay(1000);
}
Il me semble que l'arduino+ shield devraient être autonomes ???
Il me semble que l'arduino+ shield devraient être autonomes ???
Tu es sûr de bien alimenter l'ARDUINO ?
Mesure la tension sur la broche 5V.
@+
tant que le cable USB est branché, par contre le moteur s'immobilise si je débranche celui ci.
euh, si vous débranchez y'a plus de jus pour l'arduino...
Bonjour,
Ce moteur shield posséde un bornier dédié à la connexion d'une alimentation externe, qui va alimenter les moteurs, le port USN n'est pas adapté à alimenter des moteurs via le shield moteur.
J-M-L:
euh, si vous débranchez y'a plus de jus pour l'arduino...
Effectivement ! j’aurais du réfléchir un peu plus...
hameau:
Bonjour,
Ce moteur shield posséde un bornier dédié à la connexion d'une alimentation externe, qui va alimenter les moteurs, le port USN n'est pas adapté à alimenter des moteurs via le shield moteur.
Bonjour, le shield est en effet déjà alimenté en CC via une alim de labo par ce bornier.
hbachetti:
Tu es sûr de bien alimenter l'ARDUINO ?
Mesure la tension sur la broche 5V.@+
La tension mesurée est bien à 5,0 V
Par contre, je viens de faire quelques tests en imposant différentes valeurs à setSpeed : 0 ;10;50 etc
Résultat : on a toujours bien une alternance de marche/arret mais la vitesse du moteur est sensiblement la même quelle que soit la valeur de setSpeed (même à 0) ...
Ca sent le shield qui a rendu l'âme, non ?
Ca sent le shield qui a rendu l'âme, non ?
vous n'en auriez pas un second pour tester? (généralement j'achète - surtout quand je commande en chine - tous mes gadgets en double ou triple, on trouve des offres intéressantes et ça permet de tester ce genre de pb)
J'ai pu me procurer un autre shield, et tout refonctionne normalement.
Merci pour votre aide, mais la question de savoir pourquoi le premier a-t-il lâché ?
En regardant mon code de près, il est possible que dans certaines (rares) configurations la commande setSpeed ait une valeur négative.
J'ai résolu l'éventuel problème avec une valeur absolue mais pensez vous que cela puisse être une cause de dégradation du shield ?
Autre hypothèse : surchauffe possible (panne pendant la canicule) J'ai mesuré l'intensité max en fonctionnement des 4 moteurs : 1,9 A.
Bonjour,
Vue que les composant n'ont pas de radiateurs et vue les T° cette été, il est possible qui'il y est eu surchauffe, a voir si pas possible de coller des petits radiateurs pour améliorer l'evacuation de la chaleur.
Voir si possible de mettre ce genre de radiateur ci dessous,
Dimensions:
- Largeur: 9mm
- Longueur: 9mm
- Hauteur: 5mm
Fournis avec adhésif 3M, permettant le collage du dissipateur par dessus le driver moteur.
il est possible que dans certaines (rares) configurations la commande setSpeed ait une valeur négative.
Ça n’est pas un soucis réel car le prototype de la fonction c’est void setSpeed(uint8_t);
donc dans l’exécution de la commande de contrôle votre valeur négative a été transformée en valeur positive, mais sans doute bcp plus rapide que vous n’attendiez et donc ça peut jouer sur le courant tiré par le shield - ce qui m’emmène au second point:
J'ai mesuré l'intensité max en fonctionnement des 4 moteurs : 1,9 A.
Était-ce par moteur ou la somme des courants ? Et était-ce avec le bug de la vitesse qui peut grimper?
Le motor shield V2 de Adafruit utilise 4 H-Bridges et le chipset TB6612 qui supporte 1.2A par bridge avec la capaacité de monter à 3A pour des pics de 20ms Max. si vous opérez de manière prolongée au delà de 1.2A alors pas de surprise, au bout d’un moment ça flanche (et suis surpris que ça ait tenu si longtemps en fait!)
Il vous faudrait dans ce cas un driver plus puissant - jetez un œil du côté des Pololu à 3A ou du Arduino Motor Shield Rev3 (2A, max à 4A - peut être un peu juste)
Merci pour vos réponses !
L'intensité mesuree est l'intensité totale délivrée par l'alim pour les 4 moteurs, on peut donc supposer qu'elle ne dépasse pas les 1,2 A par bridge.
Par contre je vais équiper les drivers avec un dissipateur voire un ventilo pour les coups de chaleur.
Effectivement si vos 4 moteurs tournent tout le temps on peut penser cela.
À mon avis la T° extérieure même à 35° n’a pas dû jouer à mon avis - vos composants peuvent monter bcp bcp plus en t°, mais un radiateur ne fait pas de mal..