Je souhait faire fonctionner un accelerometre MPU6050, mais, quand je veux simplement le faire foncionner avec le code de base, il ne fonctionne pas et me met dans le moniteur série
Adafruit MPU6050 test!
Failed to find MPU6050 chip
un module avec sa bibliothèque en I2C correctement branché, on peut s'attendre à ce que ça marche.
tu aurais le courage de poster:
le modèle de ta carte
une vue de ton branchement
en toute logique, sur une connexion I2C "standard" tu dois brancher l'alimentation de ton module sur le +3,3V / +5V, la masse, et ensuite relier les pins SDA (données) sur la pin A4 et SCL (horloge) sur du A5.
au niveau du code (mais si tu as un module tout fait il en possède certainement), on ajoute par des résistances pull-up sur les 2 lignes SDA et SCL
mais la bibliothèque wire a du s'en occuper pour toi
on commence par vérifier ça?
sinon le coup classique avec nouveau capteur I2C: tu récupères l'adresse I2C (un format hexadécimal genre 0x40) et tu lances un sketch de type "scanner I2C" qui devrait t'afficher l'adresse correcte dans le serial monitor SI les connexions sont ok.
J'ai testé un i2c scanner que j'ai trouve sur internet, et il m'affiche qu'aucun composant i2c est branché, si tu en as un à me conseiller je suis preneur
alors attention, la puce posé sur ton module (le "vrai" MPU6050) fonctionne en 3,3V
y'a 2 options:
le module comprend un réhausseur de tension (à vérifier dans la datasheet du module lui même, y'aura aussi les infos sur les résistances pull up sur les connexions I2C) et donc tu n'as rien à faire.
il n'en contient pas et donc tu alimenterais un module 3,3V en 5V. Il faudra prévoir un pont diviseur de tension entre la sortie arduino +5V et l'entrée
sauf que je vois que ta UNO possède une sortie 3,3V. Cool
Attention, je me répète: c'est la datasheet qui aura raison, pas moi!
EDIT EDIT: je me fais les questions et les réponses, mais j'espère que ça pourra t'aider!
j'ai dégoté un schéma du circuit et j'arrive à voir:
régulateur de tension 5V->3,3V (tout en haut à gauche) donc pas de soucis pour une alimentation depuis la pin 5V de l'arduino;
résistances Pullup sur les 2 lignes SDA et SCL (tout en haut à droite), donc pas de soucis pour connecter en direct, et tu n'auras pas besoin de pinMode(SDA,INPUT_PULLUP); si d'aventure tu veux te passer de bibliothèque.
Conclusion: tiens nous au courant sur la correction des branchements SDA/SCL et du scan I2C!
là je pêche par ignorance, merci pour la correction.
attends what? comment ça?
j'allais dire "oui mais ma mesure de voltage sur ma batterie, il est bien en pont diviseur?!?" mais j'imagine que tu parles d'un courant d'alimentation. Tu veux bien m'en dire plus?
La sortie de ton pont diviseur est reliée à une entrée analogique, qui ne consomme absolument rien. La tension de sortie est donc fixe, car dans ce cas RL est pratiquement infinie.
Un module intelligent a une consommation qui varie, comme un µcontrôleur.
Lorsqu'il travaille, il consomme plus. Avec un pont diviseur, la tension de sortie sera donc variable en fonction de la consommation, puisque RL n'est ni infinie, ni fixe.
Mais comme la carte MPU6050 possède son propre régulateur 3.3V, la question ne se pose pas.
Comme tu peux voir dans la datasheet : 6.3 Electrical and Other Common Specifications
En fonction de l'utilisation du MPU6050, le courant consommé varie entre :
Merci de vos différentes réponses, ça m'éclaire un peu, mais j'ai un petit soucis, j'ai testé le code de i2c scanner et il me dit qu'une sous branche de la librairie wire n'est pas présente, ce problème est du à quoi
basic_readings:3:10: fatal error: utility/twi.h: No such file or directory #include "utility/twi.h" // from Wire library, so we can do bus scanning
^~~~~~~~~~~~~~~
compilation terminated.
exit status 1
utility/twi.h: No such file or directory
et bah c'est que mon exemple était pourri désolé, c'était genre le 1er résultat google.
On va pas se laisser impressionner!
Celui là, c'est le dernier que j'ai utilisé (pour mon ESP32) et il vient de ma bibliothèque perso. Garanti roulé à la main sous les aisselles (edit: après avoir été copié du web, j'ai pas fait ça tout seul non plus...)
#include <Arduino.h>
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(115200);
// while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop() {
SCAN();
}
void SCAN() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for (address = 1; address < 127; address++) {
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
je vais mettre le doute sur le programme que je t'ai filé. Tu crois que tu peux en trouver un (3ème!) sur le net par tes propres moyens? Au moins on sera sur que je l'ai pas modifié par erreur.
J'ai réussi à faire marcher mon accéléromètre correctement, et à l'importer dans mon code principal merci pour ton programme, ton temps et ton aide surtout
Le probleme c'est que les A4 et A5 sont pour une arduino uno et moi j'ai une mega, donc je les ai branché aux broches 20 et 21 qui sont les broches SDA et SCL de la arduino mega
Tu l'aurais annoncé dès le départ ...
A relire absolument :
Décrivez les manipulations déjà effectuées pour débuguer ainsi que toute information pertinente (matériel concerné, OS utilisé, version IDE utilisée, schéma électronique du montage, alimentation, etc).
Pour la prochaine fois, tu auras peut-être appris à lire ...