This commit is contained in:
NickDunklee 2026-04-20 13:49:41 -06:00 committed by GitHub
commit ecf94cbf7b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 13 deletions

View file

@ -42,7 +42,7 @@ class MicroNMEALocationProvider : public LocationProvider {
int8_t _claims = 0; int8_t _claims = 0;
int _pin_reset; int _pin_reset;
int _pin_en; int _pin_en;
long next_check = 0; uint32_t last_check = 0;
long time_valid = 0; long time_valid = 0;
unsigned long _last_time_sync = 0; unsigned long _last_time_sync = 0;
static const unsigned long TIME_SYNC_INTERVAL = 1800000; // Re-sync every 30 minutes static const unsigned long TIME_SYNC_INTERVAL = 1800000; // Re-sync every 30 minutes
@ -143,10 +143,11 @@ public :
if (!isValid()) time_valid = 0; if (!isValid()) time_valid = 0;
if (millis() > next_check) { if ((uint32_t)(millis() - last_check) >= 1000) {
next_check = millis() + 1000; last_check = millis();
// Re-enable time sync periodically when GPS has valid fix // Re-enable time sync periodically when GPS has valid fix
if (!_time_sync_needed && _clock != NULL && (millis() - _last_time_sync) > TIME_SYNC_INTERVAL) { if (!_time_sync_needed && _clock != NULL &&
(uint32_t)(millis() - _last_time_sync) > TIME_SYNC_INTERVAL) {
_time_sync_needed = true; _time_sync_needed = true;
} }
if (_time_sync_needed && time_valid > 2) { if (_time_sync_needed && time_valid > 2) {

View file

@ -32,11 +32,12 @@ static int8_t ntc_temp2[136] = {
}; };
static float get_heater_temperature(unsigned int vcc_volt, unsigned int ntc_volt) { static float get_heater_temperature(unsigned int vcc_volt, unsigned int ntc_volt) {
if (ntc_volt == 0) {
return 0.0f; // avoid division by zero on open circuit / sensor fault
}
int i = 0; int i = 0;
float Vout = 0, Rt = 0, temp = 0; float Rt = 0, temp = 0;
Vout = ntc_volt; Rt = (HEATER_NTC_RP * (float)vcc_volt) / ntc_volt - HEATER_NTC_RP;
Rt = (HEATER_NTC_RP * vcc_volt) / Vout - HEATER_NTC_RP;
for (i = 0; i < 136; i++) { for (i = 0; i < 136; i++) {
if (Rt >= ntc_res2[i]) { if (Rt >= ntc_res2[i]) {
@ -44,7 +45,17 @@ static float get_heater_temperature(unsigned int vcc_volt, unsigned int ntc_volt
} }
} }
temp = ntc_temp2[i - 1] + 1 * (ntc_res2[i - 1] - Rt) / (float)(ntc_res2[i - 1] - ntc_res2[i]); if (i <= 0) {
return (float)ntc_temp2[0];
}
if (i >= 136) {
return (float)ntc_temp2[135];
}
int denom = ntc_res2[i - 1] - ntc_res2[i];
if (denom == 0) {
return (float)ntc_temp2[i - 1];
}
temp = ntc_temp2[i - 1] + 1 * (ntc_res2[i - 1] - Rt) / (float)denom;
temp = (temp * 100 + 5) / 100; temp = (temp * 100 + 5) / 100;
return temp; return temp;

View file

@ -162,18 +162,18 @@ bool T1000SensorManager::querySensors(uint8_t requester_permissions, CayenneLPP&
} }
void T1000SensorManager::loop() { void T1000SensorManager::loop() {
static long next_gps_update = 0; static uint32_t last_gps_update = 0;
constexpr uint32_t GPS_UPDATE_INTERVAL_MS = 1000;
_nmea->loop(); _nmea->loop();
if (millis() > next_gps_update) { if ((uint32_t)(millis() - last_gps_update) >= GPS_UPDATE_INTERVAL_MS) {
if (gps_active && _nmea->isValid()) { if (gps_active && _nmea->isValid()) {
node_lat = ((double)_nmea->getLatitude())/1000000.; node_lat = ((double)_nmea->getLatitude())/1000000.;
node_lon = ((double)_nmea->getLongitude())/1000000.; node_lon = ((double)_nmea->getLongitude())/1000000.;
node_altitude = ((double)_nmea->getAltitude()) / 1000.0; node_altitude = ((double)_nmea->getAltitude()) / 1000.0;
//Serial.printf("lat %f lon %f\r\n", _lat, _lon);
} }
next_gps_update = millis() + 1000; last_gps_update = millis();
} }
} }