diff --git a/src/drivers/rpm_capture/RPMCapture.cpp b/src/drivers/rpm_capture/RPMCapture.cpp index c9c831b6db..69ddb1ca49 100644 --- a/src/drivers/rpm_capture/RPMCapture.cpp +++ b/src/drivers/rpm_capture/RPMCapture.cpp @@ -40,7 +40,8 @@ #include RPMCapture::RPMCapture() : - ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::hp_default) + ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::hp_default), + ModuleParams(nullptr) { _pwm_input_pub.advertise(); ScheduleNow(); @@ -58,8 +59,8 @@ bool RPMCapture::init() { bool success = false; - param_get(param_find("RPM_PULSES_PER_REV"), &_pulses_per_revolution); - _min_pulse_period_us = static_cast(60.f * 1e6f / static_cast(RPM_MAX_VALUE * _pulses_per_revolution)); + _min_pulse_period_us = static_cast(60.f * 1e6f / static_cast(RPM_MAX_VALUE * + _param_rpm_puls_per_rev.get())); for (unsigned i = 0; i < 16; ++i) { char param_name[17]; @@ -135,7 +136,7 @@ void RPMCapture::Run() if (_period < RPM_PULSE_TIMEOUT) { // 1'000'000 / [us] -> pulses per second * 60 -> pulses per minute - rpm_raw = 60.f * 1e6f / static_cast(_pulses_per_revolution * _period); + rpm_raw = 60.f * 1e6f / static_cast(_param_rpm_puls_per_rev.get() * _period); } const float dt = math::constrain((now - _timestamp_last_update) * 1e-6f, 0.01f, 1.f); diff --git a/src/drivers/rpm_capture/RPMCapture.hpp b/src/drivers/rpm_capture/RPMCapture.hpp index 872ab06a5b..5d7093bb0c 100644 --- a/src/drivers/rpm_capture/RPMCapture.hpp +++ b/src/drivers/rpm_capture/RPMCapture.hpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -46,7 +47,7 @@ using namespace time_literals; -class RPMCapture : public ModuleBase, public px4::ScheduledWorkItem +class RPMCapture : public ModuleBase, public px4::ScheduledWorkItem, public ModuleParams { public: RPMCapture(); @@ -76,7 +77,6 @@ private: int _channel{-1}; uint32_t _rpm_capture_gpio{0}; - uint32_t _pulses_per_revolution{1}; uint32_t _min_pulse_period_us{1}; ///< [us] minimum pulse period uORB::Publication _pwm_input_pub{ORB_ID(pwm_input)}; uORB::PublicationMulti _rpm_pub{ORB_ID(rpm)}; @@ -90,4 +90,8 @@ private: hrt_abstime _timestamp_last_update{0}; ///< to caluclate dt AlphaFilter _rpm_filter; MedianFilter _rpm_median_filter; + + DEFINE_PARAMETERS( + (ParamInt) _param_rpm_puls_per_rev + ) }; diff --git a/src/drivers/rpm_capture/rpm_capture_params.c b/src/drivers/rpm_capture/rpm_capture_params.c index 08502f6982..88f0df613c 100644 --- a/src/drivers/rpm_capture/rpm_capture_params.c +++ b/src/drivers/rpm_capture/rpm_capture_params.c @@ -43,13 +43,13 @@ PARAM_DEFINE_INT32(RPM_CAP_ENABLE, 0); /** - * RPM Pulses per Revolution + * Voltage pulses per revolution * - * Number of pulses per revolution for the RPM sensor. + * Number of voltage pulses per one rotor revolution on the capturing pin. * * @group System * @min 1 * @max 50 * @reboot_required true */ -PARAM_DEFINE_INT32(RPM_PULSES_PER_REV, 1); +PARAM_DEFINE_INT32(RPM_PULS_PER_REV, 1);