Skip to content

Commit 95a4402

Browse files
committed
add pressure readings from all 3 pressure sensors
1 parent c30f7cb commit 95a4402

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

stm32-modules/include/vacuum-module/vacuum-module/gcodes.hpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -374,10 +374,14 @@ struct GetPressureState {
374374
std::sized_sentinel_for<InputIt, InLimit>
375375
static auto write_response_into(InputIt buf, InLimit limit,
376376
double target_pressure,
377-
double current_pressure) -> InputIt {
377+
double current_pressure,
378+
double pressure_abs_a,
379+
double pressure_abs_b,
380+
double pressure_atm) -> InputIt {
378381
int res = 0;
379-
res = snprintf(&*buf, (limit - buf), "M121 T:%d C:%d OK\n",
380-
target_pressure, current_pressure);
382+
res =
383+
snprintf(&*buf, (limit - buf), "M121 T:%d C:%d A:%d B:%d H:%d OK\n",
384+
target_pressure, current_pressure);
381385
if (res <= 0) {
382386
return buf;
383387
}

stm32-modules/include/vacuum-module/vacuum-module/host_comms_task.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ class HostCommsTask {
317317
} else {
318318
return cache_element.write_response_into(
319319
tx_into, tx_limit, response.target_pressure,
320-
response.current_pressure);
320+
response.current_pressure, response.pressure_abs_a, response.pressure_abs_b, response.pressure_atm);
321321
}
322322
},
323323
cache_entry);

stm32-modules/include/vacuum-module/vacuum-module/messages.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ struct GetPressureStateResponseMessage {
141141
uint32_t responding_to_id;
142142
double target_pressure;
143143
double current_pressure;
144+
double pressure_abs_a;
145+
double pressure_abs_b;
146+
double pressure_atm;
144147
};
145148

146149
struct GetPumpStateMessage {

stm32-modules/include/vacuum-module/vacuum-module/pressure_task.hpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ struct PressureControl {
6262
// NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
6363
double target_pressure = 0.0F; // Target Guage Pressure
6464
double current_pressure = 0.0F;
65+
double pressure_abs_a = 0.0F;
66+
double pressure_abs_b = 0.0F;
67+
double pressure_atm = 0.0F;
6568
double ramp_rate = 0;
6669
uint32_t duration_s = 0;
6770
bool vent_after = false;
@@ -190,25 +193,24 @@ class PressureTask {
190193
_pressure_control.last_tick = timestamp;
191194

192195
// TODO: add FIR filter for abs pressure.
193-
auto abs_a_pressure_mbar =
196+
_pressure_control.pressure_abs_a =
194197
std::get<MPRDriverType>(get_sensor(ABS_PRESSURE_A).driver)
195198
.read_pressure();
196199
// TODO: use difference in pressure between a and b to raise error if >
197200
// threhold. Dont do anything with it for now
198-
auto abs_b_pressure_mbar =
201+
_pressure_control.pressure_abs_b =
199202
std::get<MPRDriverType>(get_sensor(ABS_PRESSURE_B).driver)
200203
.read_pressure();
201-
static_cast<void>(abs_b_pressure_mbar);
202204

203205
// TODO: figure out how often to read atm pressure
204-
auto atm_pressure_hpa =
206+
_pressure_control.pressure_atm =
205207
std::get<LPSDriverType>(get_sensor(ATM_PRESSURE).driver)
206208
.get_pressure();
207209

208210
// Compute the new pwm with ramp rate
209211
double target_setpoint =
210212
_pressure_control.rampgen.update_setpoint(timestamp);
211-
auto guage_pressure = abs_a_pressure_mbar - atm_pressure_hpa;
213+
auto guage_pressure = _pressure_control.pressure_abs_a - _pressure_control.pressure_atm;
212214
auto difference = target_setpoint - guage_pressure;
213215
auto rpm = _pressure_control.pid.compute(difference, delta_s);
214216
// TODO: clamp the rpm here to something sensible
@@ -250,6 +252,9 @@ class PressureTask {
250252
.responding_to_id = m.id,
251253
.target_pressure = _pressure_control.target_pressure,
252254
.current_pressure = _pressure_control.current_pressure,
255+
.pressure_abs_a = _pressure_control.pressure_abs_a,
256+
.pressure_abs_b = _pressure_control.pressure_abs_b,
257+
.pressure_atm = _pressure_control.pressure_atm,
253258
};
254259
static_cast<void>(
255260
_task_registry->send_to_address(msg, Queues::HostCommsAddress));

0 commit comments

Comments
 (0)