#pragma once #include #include #include "thisdevice.h" typedef struct { uint16_t nowfreq; //当前频率 bool changefreqdirection; //频率调整方向,如果当前功率大于期望功率,则减少频率,反之亦然 bool adjustedToTheProperPower; //是否已经调整到恰当的功率 /** * @brief * 计算谐振频率,频率和功率的图像接近下图,由此可知,当设备工作正常时,在一定频率范围内,查找功率最小的点即可。 * * http://192.168.1.3:3000/project_ozone_generator/doc/src/branch/master/ref/20220815频率-功率关系图.png */ uint16_t resonant_frequency; //谐振频率点 /** * @brief * 计算频率40k附近功率的斜率,通过斜率判断设备是否工作正常。 * 如果下图,当设备正常工作时,曲线为左图,当将臭氧发生棒的断路时候,曲线为右图。 * * http://192.168.1.3:3000/project_ozone_generator/doc/src/branch/master/ref/正常工作异常工作频率截图.png */ float slope_when_freq40k; /** * @brief 计算平均功率,如果平局功率过小,说明MOS断路,如果功率过大说明MOS短路(MOS短路不需要检查,因为当设备短路的时,单片机电源已经被拉低) */ float avarage_power; } ozone_control_working_state_t; typedef enum { kIdleState, kBeforeWorkingStateSweepFrequency, kWorkingState, } ozone_control_working_state_id_t; void ozone_control_init(); void ozone_control_start(); void ozone_control_stop(); void ozone_control_schedule(); ozone_control_working_state_id_t ozone_control_get_working_state_id(); ozone_control_working_state_t* ozone_control_get_working_state(); float ozone_control_get_ozone_power(); // float ozone_control_get_fan_power(); float ozone_control_get_expect_power(); /*********************************************************************************************************************** * ==============================================异常检查逻辑提供的接口=============================================== * ***********************************************************************************************************************/