🎨 Laser Ammeter followup (#22079)

Followup to #21835
This commit is contained in:
Scott Lahteine
2021-06-08 07:51:28 -05:00
committed by Scott Lahteine
parent 2fd9971f41
commit 3f103c91f0
13 changed files with 90 additions and 116 deletions

View File

@ -1,4 +1,4 @@
/**
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
@ -23,27 +23,32 @@
#include "../inc/MarlinConfig.h"
#if ENABLED(I2C_AMMETER)
#include "ammeter.h"
INA226 ina;
#include "ammeter.h"
Ammeter ammeter;
#ifndef I2C_AMMETER_IMAX
#define I2C_AMMETER_IMAX 0.500 // Calibration range 500 Milliamps
#endif
float Ammeter::scale;
float Ammeter::current;
INA226 ina;
void Ammeter::init() {
ina.begin();
ina.configure(INA226_AVERAGES_16, INA226_BUS_CONV_TIME_1100US, INA226_SHUNT_CONV_TIME_1100US, INA226_MODE_SHUNT_BUS_CONT);
ina.calibrate(I2C_AMMETER_SHUNT_RESISTOR,I2C_AMMETER_IMAX);
}
Ammeter ammeter;
float Ammeter::read() {
scale = 1;
current = ina.readShuntCurrent();
if (current <= .0001) current = 0; // Cleanup lsb bit amplification errors
if (current < .1) scale = 1000;
return current * scale;
}
float Ammeter::scale;
float Ammeter::current;
#endif //I2C_AMMETER
void Ammeter::init() {
ina.begin();
ina.configure(INA226_AVERAGES_16, INA226_BUS_CONV_TIME_1100US, INA226_SHUNT_CONV_TIME_1100US, INA226_MODE_SHUNT_BUS_CONT);
ina.calibrate(I2C_AMMETER_SHUNT_RESISTOR, I2C_AMMETER_IMAX);
}
float Ammeter::read() {
scale = 1;
current = ina.readShuntCurrent();
if (current <= 0.0001f) current = 0; // Clean up least-significant-bit amplification errors
if (current < 0.1f) scale = 1000;
return current * scale;
}
#endif // I2C_AMMETER

View File

@ -26,19 +26,14 @@
#include <Wire.h>
#include <INA226.h>
#ifndef I2C_AMMETER_IMAX
#define I2C_AMMETER_IMAX .500 // Calibration range 500 Milli Amps
#endif
class Ammeter {
private:
static float scale;
static float scale;
public:
static float current;
static void init();
static float read();
static float current;
static void init();
static float read();
};
extern Ammeter ammeter;

View File

@ -79,9 +79,8 @@ void SpindleLaser::init() {
OUT_WRITE(AIR_ASSIST_PIN, !AIR_ASSIST_ACTIVE); // Init Air Assist OFF
#endif
#if ENABLED(I2C_AMMETER)
ammeter.init(); // Init I2C Ammeter
ammeter.init(); // Init I2C Ammeter
#endif
}
#if ENABLED(SPINDLE_LASER_PWM)