MW22-02A/APP/Device/device_Other/device_heatresistor.h

62 lines
2.2 KiB
C

#ifndef __PTZ_HEAT_RESISTOR_H_
#define __PTZ_HEAT_RESISTOR_H_
#include "gd32f4xx.h"
//两个加热电阻的型号阻值都是一模一样的
#define PTZ_HEAT_RESISTOR_A_PORT GPIOE
#define PTZ_HEAT_RESISTOR_A_PIN GPIO_PIN_0
#define PTZ_HEAT_RESISTOR_A_ON (gpio_bit_set(PTZ_HEAT_RESISTOR_A_PORT, PTZ_HEAT_RESISTOR_A_PIN))
#define PTZ_HEAT_RESISTOR_A_OFF (gpio_bit_reset(PTZ_HEAT_RESISTOR_A_PORT, PTZ_HEAT_RESISTOR_A_PIN))
#define PTZ_HEAT_RESISTOR_B_PORT GPIOE
#define PTZ_HEAT_RESISTOR_B_PIN GPIO_PIN_1
#define PTZ_HEAT_RESISTOR_B_ON (gpio_bit_set(PTZ_HEAT_RESISTOR_B_PORT, PTZ_HEAT_RESISTOR_B_PIN))
#define PTZ_HEAT_RESISTOR_B_OFF (gpio_bit_reset(PTZ_HEAT_RESISTOR_B_PORT, PTZ_HEAT_RESISTOR_B_PIN))
#define PTZ_HEAT_RESISTOR_R 24.0 //电阻阻值 单位: 欧姆 Ω
#define PTZ_HEAT_RESISTOR_I_MAX 1.0 //电阻允许通过的最大电流 单位:安培 A
#define PTZ_HEAT_RESISTOR_V_MAX 24.0//电阻两端最大的电压 单位:伏 V
#define PTZ_HEAT_RESISTOR_PWM_T 20 //加热PWM的总周期 单位:毫秒 ms
#define PTZ_HEAT_RESISTOR_TEMP 30.0//25.0//加热电阻能够被打开的最高温度
//即云台内部温度超过PTZ_HEAT_RESISTOR_TEMP
//就自动关闭加热或者无法打开加热功能
//关闭加热
#define PTZ_HEAT_RESISTOR_OFF_0 0
#define PTZ_HEAT_RESISTOR_OFF_1 1
//打开加热
#define PTZ_HEAT_RESISTOR_ON 2
//打开加热并输入PWM波
#define PTZ_HEAT_RESISTOR_ON_PWM 3
//#define PTZ_TMP75_COLLECT_NUM 5
//云台电阻加热
/*加热电阻*/
typedef struct _HeatResistor_
{
//加热电阻1
unsigned char heat_switch; //加热开关
unsigned short int pwm_t; //电阻PWM控制周期
unsigned short int pwm_power_on_t;//PWM电源打开时间
unsigned short int pwm_power_off_t;//PWM电源关闭时间
float pwm_duty_cycle;//占空比
float pwm_duty_cycle_max;//允许的最大占空比
unsigned short int heat_timer_min;//加热总时间计时,单位分钟
unsigned short int heat_timer_s;//加热总时间计时,单位秒
unsigned short int heat_timer_ms;//加热总时间计时,单位毫秒
float resistor_v;//电阻两端电压
float resistor_i;//通过电阻两端电流
}HeatResistor;
void ptz_heat_resistor_switch(PTZ_DATA_PACK *pack);
void init_heat_resistor_module();
#endif