current_sensing_ina199.ino
Surveillance en temps réel du courant consommé par le moteur pour détecter les blocages ou surcharges et déclencher un arrêt.
Le module intègre un INA199A. La conversion brute ADC en Ampères dépend des résistances shunt et du gain spécifique utilisés sur la carte. Consultez le schéma électrique pour calibrer la constante de conversion.
current_sensing_ina199.ino
#include <Wire.h>
#define ADDR 0x24
#define REG_CURRENT_M1 0x20 // Adresse supposée pour le courant Moteur 1
void setup() {
Wire.begin();
Serial.begin(115200);
}
void loop() {
float current = readCurrent();
Serial.print("Courant Moteur 1: ");
Serial.print(current, 3);
Serial.println(" A");
if (current > 1.0) {
Serial.println("SURCHARGE ! Arrêt moteur.");
stopMotor();
}
delay(100);
}
float readCurrent() {
Wire.beginTransmission(ADDR);
Wire.write(REG_CURRENT_M1);
Wire.endTransmission();
Wire.requestFrom(ADDR, 2); // Lecture 2 octets (16 bits)
if (Wire.available() == 2) {
int raw = Wire.read();
raw |= Wire.read() << 8;
// Conversion ADC en Ampères
// INA199 gain typique et résistance shunt à définir selon le schéma
// Exemple : Vout = I * Rshunt * Gain
// ADC 12 bits, Vref 3.3V
float voltage = (raw / 4095.0) * 3.3;
float current = voltage / 0.1; // Exemple : Gain 10, Rshunt 0.01 Ohm
return current;
}
return 0.0;
}
void stopMotor() {
// Code d'arrêt d'urgence
}