You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
2.2 KiB

#pragma once
#include <stdbool.h>
#include <stdint.h>
#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();
/***********************************************************************************************************************
* ==============================================异常检查逻辑提供的接口=============================================== *
***********************************************************************************************************************/