Bonjour,
J'utilise des DRV8833 pour piloter des moteurs DC miniatures. J'ai réalisé plusieurs montages (4 montages) en soudant le datasheet sur des peignes (
Mon problème est de savoir si une datasheet srv8833 est HS ou bonne car sur l'ensemble des montages que j'ai réalisés, seul 1 fonctionne. J'ai beau vérifier les soudures, les câblages, je ne vois pas ce qui pourrait dysfonctionner.
Donc, si vous pouvez me donner une technique pour vérifier si ces cartes sont OK ou HS, cela me rassurerait ou me désolerait.
Les cartes DRV8833 sont des "DollaTek DRV8833 1.5A Carte de Commande de Moteur à 2 canaux CC Tension d'entrée du Module de Commande de Moteur 3-10V"
Pour t'aider, il faudrait que tu mettes des photos recto et verso d'un module défectueux, ainsi qu'une photo du montage que tu utilises pour le test. Merci de faire des photos lisibles. De préférence, les copier-coller dans le message plutôt que les héberger sur un site tiers.
Mets aussi le code que tu utilises dans le message, en le plaçant entre balises <code/> comme demandé dans "Les bonnes pratiques du forum francophone"
Bonjour,
Voici les éléments demandés avec une explication préalable.
Mon projet est de réaliser un chassis standardisé pour faire des voitures miniatures télécommandées en bois découpé au laser.
Le schéma suivant représente la structure avec les composants Arduino et les raccordements. La réalité correspond exactement à ce schéma mais photographier le montage serait illisible avec tous les fils.
Le trait noir d'entourage est la plaque en bois découpée. Les modules Arduino utilisés sont un capteur IR pour une télécommande (totalement opérationnel), un Arduino Nano, le module DRV8833, un interrupteur, un Servomoteur et une pile 9v (je sais ce que tous pense de ces piles, mais pour mes essais c'est largement suffisant). Les dessins en rouges représentent les composant en bois pour maintenir les moteur et les essieux et le système de pivot pour les roues avant.
Ci-dessous, les images recto et verso des montages sur les plaques avec les soudures assez nettes. Les images de gauche sont celles opérationnelles, celles de droite, une de celles qui ne fonctionnent pas.
Mon programme, qui fonctionne comme je le souhaite actuellement car il est opérationnel sur la configuration présentée à gauche ci-dessus.
#include <Servo.h>
#include <IRremote.h>
#define RECV_PIN A5
#include <DRV8833.h>
// Creation de l'instance de la DRV8833:
DRV8833 driver = DRV8833();
// Pins Ain1 et Ain2 du DRV8833
const int inputA1 = 10, inputA2 = 9;
// ajout de ce lien pour reveiller la carte DRV8833
const int vsleep = 12;
int motorSpeed = 128;
Servo servo1; // create servo object to control servo 1
int pos = 0;
int x = 0;
int i = 0;
int valprec = 90; // increment pour le mouvement du servo
int valmin = 45; // position minimum du servo
int valmax = 130; // position maximum du servo
int vitesse = 3; // vitesse du mouvement
String sens = " ";
void setup() {
Serial.begin(9600);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
servo1.attach(6); // attaches the servo on pin 6 to the servo object
servo1.write(valprec);
// while (!Serial);
// Attach un moteur a la pin d'entree
driver.attachMotorA(inputA1, inputA2);
Serial.println("Ready!");
// envoi de l'ordre de reveil
digitalWrite(vsleep, HIGH);
}
void loop() {
x = 0;
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.decodedRawData != 0) {
Serial.println(getProtocolString(IrReceiver.decodedIRData.protocol));
x = IrReceiver.decodedIRData.decodedRawData;
Serial.print("\tvalprec=");
Serial.print(valprec);
Serial.print("\tpos=");
Serial.print("\tx=");
Serial.print(x);
Serial.print("\t");
Serial.print(pos);
Serial.print("\t");
}
IrReceiver.resume(); // Receive the next value
}
// servo moteur vers la gauche
if (x == 49 || x == 1114) {
pos = valprec - 3;
servo1.write(pos); // tell servo1 to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
if (pos > valmin) valprec = pos;
sens = "gauche";
Serial.println(sens);
}
// servo moteur vers la gauche
else if (x == 50 || x == 1115) {
pos = valprec + 3;
servo1.write(pos); // tell servo1 to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
if (pos < valmax) valprec = pos;
sens = "gauche";
Serial.println(sens);
}
else if (x == 51 || x == 1170) {
pos = 90;
servo1.write(pos);
valprec = pos;
sens = "initial";
Serial.println(sens);
delay(15);
}
// Ordre d'avancer
else if (x == 52 || x == 1112) {
sens = "avance";
Serial.println(sens);
driver.motorAForward();
// Marche avant progressive
} else if (x == 53 || x == 1113) {
sens = "recule";
Serial.println(sens);
driver.motorAReverse();
} else if (x == 54 || x == 1116) {
sens = "arret total";
Serial.println(sens);
driver.motorAStop();
}
}
Merci pour l'intérêt que vous portez à ce sujet, mais mon problème reste de trouver une méthode pour valider ou non les modules DRV8833 qui semblent ne pas fonctionner.
Cordialement
JCG95
Bon, j'ai essayé de revoir toutes mes soudures, j'ai fait plein d'essais et je pense que mon module DRV8833 est HS car rien y fait alors que d'autres fonctionnent parfaitement et immédiatement.
Merci pour votre aide et je ferai plus attention dans l'avenir à mes soudures pour quelles soient propres et surtout efficaces.
Cordialement
JCG95