Bonjour je fais un post sur se forum pour vous exposer mon problème et si possible essayer de trouver une solutions ensemble.
Je vais donc vous résumer ou j'en suis et ou est mon problème .
Le but de mon programme est de faire accélérer un moteur grâce à un capteur de force .Donc plus la pression sur le capteur plus la vitesse du moteur sera élevé .
Et donc mon problème est que quand je lance le programme tout se passe bien une premier valeur du capteur est lu et elle s'affiche bien dans le moniteur du logiciel arduino. Sauf que juste après la lecture d'une première valeur le programme se bloque est plus aucune valeur n'est lu .J'ai trouvé que le problème venait de la ligne : md.enableM1Driver(); sans cette ligne tout marche mais on ne peut pas allumer le moteur et avec cette ligne plus rien ne marche on obtient juste :
HX711 scale demo
Readings:
0.00jauge1
0kgs
Donc je fais se post pour savoir si l'un d'entre vous aurais une petite idée de comment résoudre se problème ou d’essayer de faire le programme d'une autre manière pour éviter se problème .j'ai déjà essayé d'autre manière d’écrire le programme mais sans aucun résultat.
Et je me demande si le problème ne vient pas d'une bibliothèque qui empêcherai à l'autre de fonctionner correctement .
merci cordialement
Donc voici le programme qui gère cette partie .
#include <DualG2HighPowerMotorShield.h>
#include "HX711.h"
#define calibration_factor -4630.0
#define DOUT 3
#define CLK 2
DualG2HighPowerMotorShield24v14 md;
HX711 scale(DOUT, CLK);
int i;
float jauge1;
void setup() {
Serial.begin(115200);
Serial.println("HX711 scale demo");
scale.begin(3, 2);
scale.set_scale(calibration_factor);
scale.tare();
md.init();
//md.calibrateCurrentOffsets();//bug
Serial.println("Readings:");
}
void loop() {
float jauge1 = (scale.get_units()); //lecture du capteur
jauge1 = jauge1 / 10; //calcul
Serial.print(jauge1);
Serial.println("jauge1");
i=((jauge1 *400)/2.5); //calcul pour moteur
Serial.print(i);
Serial.println("kgs");
md.enableM1Driver();//ligne qui pose problème selon moi
md.setM1Speed(i); //i=valeur du moteur pour mettre la vitesse
}
Tu évoques le logiciel, il faut aussi décrire le matériel , les raccordements effectués ... et l'alimentation des divers éléments
Au vu de la ligne repérée il se pourrait que le problème ne soit pas la "lecture d'un capteur"... mais l'alimentation du moteur avec des éventiuelles conséquences sur l'ensemble du montage.
bonjour alors pour le materiel j'utilise un arduino uno . Un moteur shield:
Et pour brancher mon capteur sur l'arduino j'autilise une carte et je branche ma connectic sur les ports sensors de cette carte.
Et pour relier le capteur à l'arduino j'utilise
cette carte permet de pouvoir rendre la lecture du capteur par l'arduino possible .
Et après j'ai pas trop pensé au faite que ça vienne du montage car j'ai testé les 2 programme sépare dans les même conditions et ils marchent parfaitement .
bonjour dessolé de la réponse tardive mais merci beaucoup en effet maintenant ça marche presque mais en tout cas le moteur tourne car maintenant tout marche sauf que la valeur du capteur n'est pas envoyé dans le calcul et je ne sais pas trop pourquoi .Sachant que les calculs marchent correctement .
je viens de trouver la solution en regardant dans la librery que enfaîte énormément de port était utilisé donc c'etait encore bien une erreur de branchement donc merci beaucoup de m'avoir aidé .
Dans le fichié "DualG2HighPowerMotorShield" du code source de la bibliothèque on peut trouver :
_M1nSLEEP = 2;
_M1nFAULT = 6;
_M1DIR = 7;
_M1PWM = 9;
_M1CS = A0;
_M2nSLEEP = 4; //0 dans mon cas
_M2nFAULT = 12;//0 dans mon cas
_M2DIR = 8; //0 dans mon cas
_M2PWM = 10; //0 dans mon cas
_M2CS = A1;
Ces lignes disent quelle broches de la carte est utilisé pour que le moteur shield puisse fonctionner ce qui fais que la carte utilise énormément de port donc il en reste pas beaucoup de disponible après donc ce que j'ai fais c'est que j'ai mis tout les pin du moteur M2 à O car je l'utilise pas et tout fonctionne correctement .Si jamais il vous faut faire marcher 2 moteur avec cette carte il restera de base le pin 0,1,3,5,11;13 .