您好、先生、
我使用 INA219来读取 Arduino 的电机电流消耗。 但是、当我使用 INA219的库时、电机只工作几秒钟、然后停止运转。
我使用的是该代码-
//定义引脚编号
CONST int StepPin = 5;
const int dirPin = 2;
const int enPin = 8;
#include
#include
Adafruit INA219 INA219;
void setup (void){
//将两个引脚设置为输出
PinMode (StepPin、OUTPUT);
PinMode (dirPin、输出);
引脚模式(ENPin、OUTPUT);
digitalWrite (enPin、low);
Serial.begin(115200);
while (!Serial){
//将暂停 Zero、Leonardo 等,直至串行控制台打开
delayMicroseconds (1);
}
uint32_t 电流频率;
//Serial.println ("Hello!");
//初始化 INA219。
//默认情况下、初始化将使用最大范围(32V、2A)。 但是
//您可以调用 setCalibration 函数来更改此范围(请参阅注释)。
ina219.begin();
//要使用略低的32V、1A 范围(更高精度的运算放大器):
// ina219.setCalibration_32V_1A();
//或要使用较低的16V、400mA 范围(电压和电流的精度更高):
ina219.setCalibration_16V_400mA();
serial.println ("使用 INA219测量电压和电流...");
}
void loop(){
digitalWrite (dirPin、HIGH);//使电机能够沿特定方向移动
//生成200个脉冲以进行一个完整周期的旋转
对于(int x = 0;x < 8000;x++){
digitalWrite (StepPin、HIGH);
delayMicroseconds (100);
digitalWrite (StepPin、low);
delayMicroseconds (60);
}
浮点分流电压= 0;
浮点总线电压= 0;
浮点 Current_mA = 0;
float lofadvoltage = 0;
float power_mW = 0;
shuntvoltage = INA219.getShuntVoltage_mV ();
总线电压= INA219.getBusVoltage_V ();
Current_mA = INA219.getCurrent_mA ();
power_mW = INA219.getPower_mW ();
lofadvoltage =总线电压+(shuntvoltage / 1000);
serial.print ("总线电压:");serial.print (总线电压);serial.println (" V ");
serial.print ("分流电压:");serial.print (shuntvoltage);serial.println (" mV");
serial.print("");
serial.println ("负载电压:");serial.print (lofadvoltage);serial.println (" V ");
serial.print("");
serial.println ("当前:");serial.print (current_mA);serial.println (" mA");
serial.print ("电源:");serial.print (power_mW);serial.println (" mW");
serial.println("");
}
此外、我尝试使用 SET_CALIBRATION 命令、但不执行任何操作。
请尽快帮助我。
谢谢