current_sensing_ina199.ino
Monitoreo en tiempo real del consumo de corriente del motor para detectar bloqueos o sobrecargas y activar una parada.
El módulo integra un INA199A. La conversión ADC bruta a Amperios depende de las resistencias shunt y la ganancia específicas utilizadas en la placa. Consulte el esquema eléctrico para calibrar la constante de conversión.
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
}