中型无刷,加热版本齿轮传动,蜗轮蜗杆传动比80,增加如下修改{磁编修改、电机速度计算修改、电机过流保护修改、485读写延时减小、顶部开关保存、加热探头},初始版本未实测

This commit is contained in:
REASEARCHER\18383 2025-08-18 13:33:48 +08:00
parent d383b1e5ac
commit 02d17c179c
10 changed files with 577 additions and 54 deletions

View File

@ -49,6 +49,7 @@
#include "Timer.h" #include "Timer.h"
#include "systick.h" #include "systick.h"
#include "service_error_count.h" #include "service_error_count.h"
#include "device_heat.h"
void task_printf_init(); void task_printf_init();
@ -176,6 +177,7 @@ static void task_start (void *p_arg)
// term_printf("\n power off init \r\n\r\n"); // term_printf("\n power off init \r\n\r\n");
//数据采集初始化电压、电流、温度 //数据采集初始化电压、电流、温度
init_data_collect_module(); init_data_collect_module();
Init_ptz_heat_data_collect_task();
// term_printf("\n data collect init \r\n\r\n"); // term_printf("\n data collect init \r\n\r\n");
OSTimeDlyHMSM(0u, 0u, 1u, 0u); OSTimeDlyHMSM(0u, 0u, 1u, 0u);
@ -195,7 +197,7 @@ static void task_start (void *p_arg)
// term_printf("\n angle init \r\n\r\n"); // term_printf("\n angle init \r\n\r\n");
// task_printf_init(); task_printf_init();
//自检模块初始化 //自检模块初始化
@ -268,21 +270,23 @@ int main (void)
*/ */
static void task_print() static void task_print()
{ {
OS_TCB *p_tcb; // OS_TCB *p_tcb;
OS_STK_DATA stkDat; // OS_STK_DATA stkDat;
p_tcb = &OSTCBTbl[0]; // p_tcb = &OSTCBTbl[0];
//
// char cpuusage = OSCPUUsage;
//
// term_printf(" Prio Used Free Per cpuusage TaskName\r\n");
// while(p_tcb != NULL)
// {
// OSTaskStkChk(p_tcb->OSTCBPrio, &stkDat);
// term_printf(" %2d %5d %5d %02d%% %d %s\r\n ",p_tcb->OSTCBPrio, stkDat.OSUsed, stkDat.OSFree, (stkDat.OSUsed * 100)/(stkDat.OSUsed + stkDat.OSFree), cpuusage, p_tcb->OSTCBTaskName);
// p_tcb = p_tcb->OSTCBPrev;
// }
// term_printf("\r\n");
ptz_uart_dev_send(uart_485_handle, TempInfoGet(),80 );
char cpuusage = OSCPUUsage; OSTimeDlyHMSM(0u, 0u, 10u, 0u);
term_printf(" Prio Used Free Per cpuusage TaskName\r\n");
while(p_tcb != NULL)
{
OSTaskStkChk(p_tcb->OSTCBPrio, &stkDat);
term_printf(" %2d %5d %5d %02d%% %d %s\r\n ",p_tcb->OSTCBPrio, stkDat.OSUsed, stkDat.OSFree, (stkDat.OSUsed * 100)/(stkDat.OSUsed + stkDat.OSFree), cpuusage, p_tcb->OSTCBTaskName);
p_tcb = p_tcb->OSTCBPrev;
}
term_printf("\r\n");
OSTimeDlyHMSM(0u, 0u, 1u, 0u);
} }
static void task_print_task() static void task_print_task()

View File

@ -98,11 +98,12 @@
/**********************************************************/ /**********************************************************/
///磁编码器和电机之间的减速比 ///磁编码器和电机之间的减速比
#define PTZ_VERT_MOTOR_RATIO 75.0//(50.0 * (52.0 / 35.0))//20.0 // #define PTZ_VERT_MOTOR_RATIO 75.0//(50.0 * (52.0 / 35.0))//20.0
#define PTZ_VERT_MOTOR_RATIO 35.15//(50.0 * (52.0 / 35.0))//20.0
///磁编码器与云台轴之间的减速比 ///磁编码器与云台轴之间的减速比
#define PTZ_VERT_BIG_GEAR_RATIO 80.0//54.00 #define PTZ_VERT_BIG_GEAR_RATIO 80.0//54.00
///垂直总减速比 ///垂直总减速比
#define PTZ_VERT_RATIO 6000.0//4011.429//1080.0 #define PTZ_VERT_RATIO 2812.0//4011.429//1080.0
///垂直电机调速模拟电压最大值 ///垂直电机调速模拟电压最大值
#define PTZ_VERT_VR_MAX 1999 #define PTZ_VERT_VR_MAX 1999
///垂直电机调速模拟电压最小值 ///垂直电机调速模拟电压最小值
@ -114,11 +115,11 @@
///垂直电机最小转速 ///垂直电机最小转速
#define PTZ_VERT_MOTOR_MIN_SPEED 400.0//600.0 #define PTZ_VERT_MOTOR_MIN_SPEED 400.0//600.0
///垂直云台最大转速 ///垂直云台最大转速
#define PTZ_VERT_MAX_SPEED 0.5//0.74//2.7 #define PTZ_VERT_MAX_SPEED 1.0//0.74//2.7
///垂直云台最小转速 ///垂直云台最小转速
#define PTZ_VERT_MIN_SPEED 0.07//0.1//0.15//0.5 #define PTZ_VERT_MIN_SPEED 0.15//0.1//0.15//0.5
///垂直云台默认最佳速度 ///垂直云台默认最佳速度
#define PTZ_VERT_BEST_SPEED 0.4//0.7//2.0 #define PTZ_VERT_BEST_SPEED 0.75//0.7//2.0
//电机磁极对数 //电机磁极对数

View File

@ -350,7 +350,7 @@ static void Ntc_value()//ADC1
float H_temp_f,V_temp_f;//놓迦侊똑,역랑匡侊똑 float H_temp_f,V_temp_f;//놓迦侊똑,역랑匡侊똑
short int H_temp,V_temp;//시攣侊똑,<2C>幹侊똑 short int H_temp,V_temp;//시攣侊똑,<2C>幹侊똑
adc_software_trigger_enable(ADC1,ADC_INSERTED_CHANNEL); adc_software_trigger_enable(ADC1,ADC_REGULAR_INSERTED_CHANNEL);
asm ("nop"); asm ("nop");
asm ("nop"); asm ("nop");
H_temp_f = Ntc_temp(ADC_IDATA2(ADC1)); H_temp_f = Ntc_temp(ADC_IDATA2(ADC1));
@ -424,7 +424,8 @@ static void ptz_Current_collect_adc1_task()
adc_software_trigger_enable(ADC1,ADC_INSERTED_CHANNEL); adc_software_trigger_enable(ADC1,ADC_INSERTED_CHANNEL);
value_I = ADC_IDATA0(ADC1); value_I = ADC_IDATA0(ADC1);
adc1_i[adc0_num] = (((float)value_I / 4096.0 * 3.3)-3.3/2) / 0.132;//(float)value_I;// // adc1_i[adc0_num] = (((float)value_I / 4096.0 * 3.3)-3.3/2) / 0.132;//(float)value_I;//
adc1_i[adc0_num] = ((float)value_I / 4096.0 * 3.3) / 0.25;//(float)value_I;//
adc0_num ++; adc0_num ++;
if(adc0_num >= 5) if(adc0_num >= 5)
@ -495,7 +496,7 @@ static void ptz_temperature_collect_tmp75_task()
//꽃섞훨蛟 //꽃섞훨蛟
static char ptz_data_collect_task() static char ptz_data_collect_task()
{ {
int i=0,j=0; // int i=0,j=0;
while(1) while(1)
{ {
@ -510,30 +511,30 @@ static char ptz_data_collect_task()
V_ADC0_Phase_current(); V_ADC0_Phase_current();
} }
if(j >= 100) // if(j >= 100)
{ // {
j=0; // j=0;
//云台不自检关闭,打开采集任务 // //云台不自检关闭,打开采集任务
#ifndef PTZ_NO_SELF_CHECK //#ifndef PTZ_NO_SELF_CHECK
ptz_Voltage_collect_adc1_task(); // ptz_Voltage_collect_adc1_task();
#endif //#endif
OSTimeDlyHMSM(0u, 0u, 0u, 2u); // OSTimeDlyHMSM(0u, 0u, 0u, 2u);
ptz_Current_collect_adc1_task(); // ptz_Current_collect_adc1_task();
// OSTimeDlyHMSM(0u, 0u, 0u, 50u); //// OSTimeDlyHMSM(0u, 0u, 0u, 50u);
} // }
//
if(i >= 3000) // if(i >= 3000)
{//降低温度采集频率 // {//降低温度采集频率
ptz_temperature_collect_tmp75_task(); // ptz_temperature_collect_tmp75_task();
//驱动电路温度采集 // //驱动电路温度采集
Ntc_value(); // Ntc_value();
i=0; // i=0;
} // }
OSTimeDlyHMSM(0u, 0u, 0u, 1u); OSTimeDlyHMSM(0u, 0u, 0u, 1u);
i++; // i++;
j++; // j++;
} }
} }
@ -569,7 +570,7 @@ static void creat_task_data_collect(void)
void init_data_collect_module(void) void init_data_collect_module(void)
{ {
//#ifndef PTZ_NO_SELF_CHECK //#ifndef PTZ_NO_SELF_CHECK
ADC1_Init();//AD采集引脚初始化 // ADC1_Init();//AD采集引脚初始化
//#endif //#endif
ADC2_Init();//AD꽃섞多신놓迦뺏 ADC2_Init();//AD꽃섞多신놓迦뺏
ADC0_Init();//AD꽃섞多신놓迦뺏 ADC0_Init();//AD꽃섞多신놓迦뺏

View File

@ -0,0 +1,493 @@
#include "stdio.h"
#include "device_heat.h"
#include "gd32f4xx.h"
#include "ptz_struct.h"
#include "agent_hyt.h"
#include "pdebug.h"
#include "cpu.h"
#include "tmp75.h"
/*
* 使ADC1
*/
#define HC4051_S0_PIN GPIO_PIN_14
#define HC4051_S0_PORT GPIOB
#define HC4051_S1_PIN GPIO_PIN_15
#define HC4051_S1_PORT GPIOB
#define HEAT_PIN GPIO_PIN_12
#define HEAT_PORT GPIOA
#define R_constant 10.0 //千欧姆——分压电阻值
// #define R_25 10000.0//热敏电阻常温下的电阻值
// #define Ntc_B 3435.0//常量B
// #define Kelvin_temp 273.15+25//常温——开尔文温度
//NTC电流
static float Ntc_current(uint16_t data)
{
static float curr;
curr = ((float)data / 4096.0 * 3.3)/R_constant;
return curr;
}
//NTC电压
static float Ntc_voltage(uint16_t data)
{
static float voltage;
voltage = 3.3 - ((float)data / 4096.0 * 3.3);
return voltage;
}
//NTC电阻
static float Ntc_resis(uint16_t data)
{
static float resis,curr,voltage;
curr = Ntc_current(data);
voltage = Ntc_voltage(data);
resis = voltage / curr * 1000.0;//因为电流值放大了1000倍
return resis;
}
/*!
\brief ADC1初始化,,,NTC温度采集
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void ADC1_Init()
{
//配置引脚时钟
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOB);
//引脚复用PC2——电压ADC1-CH12PC3——电流ADC1-CH13
gpio_mode_set(GPIOC,GPIO_MODE_ANALOG,GPIO_PUPD_NONE,GPIO_PIN_2);
gpio_mode_set(GPIOC,GPIO_MODE_ANALOG,GPIO_PUPD_NONE,GPIO_PIN_3);
/* H_NTC-PB0 ,V_NTC-PB1 */
// gpio_mode_set(GPIOB,GPIO_MODE_ANALOG,GPIO_PUPD_NONE,GPIO_PIN_0);
gpio_mode_set(GPIOB,GPIO_MODE_ANALOG,GPIO_PUPD_NONE,GPIO_PIN_1);
rcu_periph_clock_enable(RCU_ADC1);
//总线时钟20分频=6MHZ
adc_clock_config(ADC_ADCCK_PCLK2_DIV4);
/***********************************************/
//对齐方式 ADC_INSERTED_CHANNEL
adc_data_alignment_config(ADC1,ADC_DATAALIGN_RIGHT);
//扫描模式
adc_special_function_config(ADC1,ADC_SCAN_MODE,ENABLE);
//外部触发关闭
adc_external_trigger_config(ADC1,ADC_REGULAR_CHANNEL,DISABLE);
//采集通道数
adc_channel_length_config(ADC1,ADC_INSERTED_CHANNEL, 3);
//通道注入顺序
adc_inserted_channel_config(ADC1, 0, ADC_CHANNEL_13, ADC_SAMPLETIME_480);//电流
adc_inserted_channel_config(ADC1, 1, ADC_CHANNEL_12, ADC_SAMPLETIME_480);//电压
adc_inserted_channel_config(ADC1, 2, ADC_CHANNEL_9, ADC_SAMPLETIME_480);
adc_enable(ADC1);
adc_calibration_enable(ADC1);
/* 初始化分时复用IO */
gpio_mode_set(HC4051_S0_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, HC4051_S0_PIN);
gpio_output_options_set(HC4051_S0_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, HC4051_S0_PIN);
gpio_mode_set(HC4051_S1_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, HC4051_S1_PIN);
gpio_output_options_set(HC4051_S1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, HC4051_S1_PIN);
/* 初始化加热引脚 */
gpio_mode_set(HEAT_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, HEAT_PIN);
gpio_output_options_set(HEAT_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, HEAT_PIN);
}
/*!
\brief 使
\param[in] none
\param[out] none
\retval none
\note psx @2025.07.31
*/
void heat_Init()
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOB);
/* 初始化分时复用IO */
gpio_mode_set(HC4051_S0_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, HC4051_S0_PIN);
gpio_output_options_set(HC4051_S0_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, HC4051_S0_PIN);
gpio_mode_set(HC4051_S1_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, HC4051_S1_PIN);
gpio_output_options_set(HC4051_S1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, HC4051_S1_PIN);
gpio_bit_reset(HC4051_S0_PORT, HC4051_S0_PIN);
gpio_bit_reset(HC4051_S1_PORT, HC4051_S1_PIN);
/* 初始化加热引脚 */
gpio_mode_set(HEAT_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, HEAT_PIN);
gpio_output_options_set(HEAT_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, HEAT_PIN);
}
/*!
\brief H_NTC
*/
static void choose_H_NTC(void)
{
gpio_bit_reset(HC4051_S0_PORT, HC4051_S0_PIN);
gpio_bit_reset(HC4051_S1_PORT, HC4051_S1_PIN);
}
/*!
\brief V_NTC
*/
static void choose_V_NTC(void)
{
gpio_bit_set(HC4051_S0_PORT, HC4051_S0_PIN);
gpio_bit_reset(HC4051_S1_PORT, HC4051_S1_PIN);
}
/*!
\brief EXT_NTC1
*/
static void choose_EXT_NTC1(void)
{
gpio_bit_reset(HC4051_S0_PORT, HC4051_S0_PIN);
gpio_bit_set(HC4051_S1_PORT, HC4051_S1_PIN);
}
/*!
\brief EXT_NTC2
*/
static void choose_EXT_NTC2(void)
{
gpio_bit_set(HC4051_S0_PORT, HC4051_S0_PIN);
gpio_bit_set(HC4051_S1_PORT, HC4051_S1_PIN);
}
typedef void(*pctr) (void);
pctr choose_ntc_func[4] = {&choose_H_NTC, &choose_V_NTC, &choose_EXT_NTC1, &choose_EXT_NTC2};
/*!
\brief
*/
static void startHeat()
{
gpio_bit_set(HEAT_PORT, HEAT_PIN);
}
/*!
\brief
*/
static void closeHeat()
{
gpio_bit_reset(HEAT_PORT, HEAT_PIN);
}
//电压采集
static void ptz_Voltage_collect_adc1_task()
{
static uint32_t adc1_v[5];
static unsigned char adc1_num;
int j,k;
float tem;
float curadc1;
uint16_t value_V;
adc1_v[adc1_num] = ADC_IDATA1(ADC1);
// adc1_v[adc1_num] = (float)value_V / 4096.0 * 11 *3.3;//(float)value_V;//
adc1_num++;
if (adc1_num >= 5) {
adc1_num = 0;
for (j = 0; j < 5-1; j++) {//采样值由小到大排列
for (k = 0; k < 5-j-1; k++) {
if (adc1_v[k] > adc1_v[k+1]) {
tem = adc1_v[k];
adc1_v[k] = adc1_v[k+1];
adc1_v[k+1] = tem;
}
}
}
for (uint8_t i = 1; i < 5 - 1; i++) {
curadc1 = curadc1 + adc1_v[i];
}
curadc1 = curadc1 /((float)(5 - 2));//去掉一个最大值和一个最小值求平均值
g_ptz.Voltage = (float)curadc1 / 4096.0 * 11 *3.3;;
memset(adc1_v,0,sizeof(adc1_v));
}
}
//电流采集
static void ptz_Current_collect_adc1_task()
{
static uint32_t adc1_i[5];
static unsigned char adc1_num;
int j,k;
float tem;
float curadc0;
uint16_t value_I;
adc1_i[adc1_num] = ADC_IDATA0(ADC1);
adc1_num ++;
if (adc1_num >= 5) {
adc1_num = 0;
for (j = 0; j < 5-1; j++) {//采样值由小到大排列
for (k = 0; k < 5-j-1; k++) {
if (adc1_i[k] > adc1_i[k+1]) {
tem = adc1_i[k];
adc1_i[k] = adc1_i[k+1];
adc1_i[k+1] = tem;
}
}
}
for (uint8_t i = 1; i < 5 - 1; i++) {
curadc0 = curadc0 + adc1_i[i];
}
curadc0 = curadc0 /((float)(5 - 2));//去掉一个最大值和一个最小值求平均值
g_ptz.electric_current = ((float)curadc0 / 4096.0 * 3.3) / 0.25;
// memset(adc1_i, 0, sizeof(adc1_i));
}
}
typedef struct _heat_data {
float ext_ntc1;
float ext_ntc2;
float ntcT;
} heat_data;
heat_data m_heatData;
//NTC温度计算,开尔文温度
static float Ntc_temp(uint16_t adc_data, float Ntc_B)
{
float R_ntc;//实际电阻
double temp,K,j,l,m;//实际温度
R_ntc = Ntc_resis(adc_data);
K = R_ntc/10000.0;
j = log(K);//log e为底数
l = j / Ntc_B;
m = 1.0 /298.15;
temp = 1/(l+m);
// temp = 1/(j / Ntc_B + 1/Kelvin_temp);
return (float)temp;
}
//温度采集并加热
static void ptz_heat_collect_adc1_task()
{
static uint32_t adc1_T[4][5];
static uint8_t adc1_num = 0;
static uint8_t ntc_num = 0;
adc1_T[ntc_num][adc1_num] = ADC_IDATA2(ADC1);
if (++ntc_num < 4) {
choose_ntc_func[ntc_num]();
return;
}
ntc_num = 0;
choose_ntc_func[ntc_num]();
if (++adc1_num < 5) {
return;
}
adc1_num = 0;
uint32_t temp;
uint32_t adc_data = 0;
/* 采集H_NTC温度 */
for (int j = 0; j < 5-1; j++) {//采样值由小到大排列
for (int k = 0; k < 5-j-1; k++) {
if (adc1_T[0][k] > adc1_T[0][k+1]) {
temp = adc1_T[0][k];
adc1_T[0][k] = adc1_T[0][k+1];
adc1_T[0][k+1] = temp;
}
}
}
for(uint8_t i = 1; i < 5 - 1; i++) {
adc_data += adc1_T[0][i];
}
adc_data = adc_data / 3;
g_ptz.H_boad_temp = (short int)(Ntc_temp(adc_data, 3450.0f) - 273.15 + 0.5);
adc_data = 0;
/* 采集V_NTC温度 */
for (int j = 0; j < 5-1; j++) {
for (int k = 0; k < 5-j-1; k++) {
if (adc1_T[1][k] > adc1_T[1][k+1]) {
temp = adc1_T[1][k];
adc1_T[1][k] = adc1_T[1][k+1];
adc1_T[1][k+1] = temp;
}
}
}
for(uint8_t i = 1; i < 5 - 1; i++) {
adc_data += adc1_T[1][i];
}
adc_data = adc_data / 3;
g_ptz.V_boad_temp = (short int)(Ntc_temp(adc_data, 3450.0f) - 273.15 + 0.5);
adc_data = 0;
/* 采集EXT_NTC1温度 */
for (int j = 0; j < 5-1; j++) {
for (int k = 0; k < 5-j-1; k++) {
if (adc1_T[2][k] > adc1_T[2][k+1]) {
temp = adc1_T[2][k];
adc1_T[2][k] = adc1_T[2][k+1];
adc1_T[2][k+1] = temp;
}
}
}
for(uint8_t i = 1; i < 5 - 1; i++) {
adc_data += adc1_T[2][i];
}
adc_data = adc_data / 3;
m_heatData.ext_ntc1 = (short int)(Ntc_temp(adc_data, 3950.0f) - 273.15 + 0.5);
adc_data = 0;
/* 采集EXT_NTC2温度 */
for (int j = 0; j < 5-1; j++) {
for (int k = 0; k < 5-j-1; k++) {
if (adc1_T[3][k] > adc1_T[3][k+1]) {
temp = adc1_T[3][k];
adc1_T[3][k] = adc1_T[3][k+1];
adc1_T[3][k+1] = temp;
}
}
}
for(uint8_t i = 1; i < 5 - 1; i++) {
adc_data += adc1_T[3][i];
}
adc_data = adc_data / 3;
m_heatData.ext_ntc2 = (short int)(Ntc_temp(adc_data, 3950.0f) - 273.15 + 0.5);
adc_data = 0;
//判定是否需要加热
if (g_ptz.H_boad_temp < -25 || g_ptz.V_boad_temp < -25
|| m_heatData.ext_ntc1 < -25 || m_heatData.ext_ntc2 < -25) {
startHeat();
}
else if (g_ptz.H_boad_temp > -15 && g_ptz.V_boad_temp > -15
&& m_heatData.ext_ntc1 > -15 && m_heatData.ext_ntc2 > -15) {
closeHeat();
}
}
//温度采集
static void ptz_temperature_collect_tmp75_task()
{
static float tmp75[5];
static unsigned char tmp75_num;
float curtmp75;
float tem;
int j,k;
tmp75[tmp75_num] = tmp75_read_temp();
tmp75_num ++;
if(tmp75_num >= 5)
{
tmp75_num = 0;
for(j = 0; j < 5-1; j++)//采样值由小到大排列
{
for(k = 0; k < 5-j-1; k++)
{
if(tmp75[k] > tmp75[k+1])
{
tem = tmp75[k];
tmp75[k] = tmp75[k+1];
tmp75[k+1] = tem;
}
}
}
for(uint8_t i = 1; i < 5 - 1; i++)
{
curtmp75 = curtmp75 + tmp75[i];//去掉一个最大值和一个最小值
}
curtmp75 = curtmp75 / ((float)(5 - 2));
g_ptz.temperature = curtmp75;
memset(tmp75,0,sizeof(tmp75));
// pdebug(DEBUG_LEVEL_INFO,"get ptz Temperature: %.3f℃",g_ptz.temperature);
}
}
/*!
\brief
*/
static char ptz_heat_data_collect_task()
{
static uint16_t ntc_num = 0;
while (1) {
adc_software_trigger_enable(ADC1, ADC_INSERTED_CHANNEL);
// OSTimeDlyHMSM(0u, 0u, 0u, 1u);
while (!adc_flag_get(ADC1, ADC_FLAG_EOC)) {
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
}
adc_flag_clear(ADC1, ADC_FLAG_EOC);
ptz_Voltage_collect_adc1_task();
ptz_Current_collect_adc1_task();
ptz_temperature_collect_tmp75_task();
ptz_heat_collect_adc1_task();
OSTimeDlyHMSM(0u, 0u, 0u, 100u);
}
}
static OS_STK task_heat_data_collect_stk[TASK_PTZ_HEAT_DATA_COLLECT_STK_SIZE];
static void creat_heat_task_data_collect(void)
{
CPU_INT08U task_err;
CPU_INT08U name_err;
task_err = OSTaskCreateExt((void (*)(void *)) ptz_heat_data_collect_task,
(void *) 0,
(OS_STK *)&task_heat_data_collect_stk[TASK_PTZ_HEAT_DATA_COLLECT_STK_SIZE - 1],
(INT8U ) TASK_PTZ_HEAT_DATA_COLLECT_PRIO,
(INT16U ) TASK_PTZ_HEAT_DATA_COLLECT_PRIO,
(OS_STK *)&task_heat_data_collect_stk[0],
(INT32U ) TASK_PTZ_HEAT_DATA_COLLECT_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
#if (OS_TASK_NAME_EN > 0)
OSTaskNameSet(TASK_PTZ_HEAT_DATA_COLLECT_PRIO, "ptz_heat_data_collect_task", &name_err);
#endif
if ((task_err == OS_ERR_NONE) && (name_err == OS_ERR_NONE)) {
pdebug(DEBUG_LEVEL_INFO,"create ptz_heat_data_collect_task success\r\n");
} else {
pdebug(DEBUG_LEVEL_FATAL,"create ptz_heat_data_collect_task failed\r\n");
}
}
void Init_ptz_heat_data_collect_task()
{
ADC1_Init();
heat_Init();
creat_heat_task_data_collect();
}
static char g_str[80];
char* TempInfoGet(void)
{
/*加热*/
if ( gpio_input_bit_get(HEAT_PORT, HEAT_PIN) )
{
sprintf(g_str, "extTemp1 = %.2f, extTemp2 = %.2f,heating!\r\nH_Temp = %.2f, V_Temp = %.2f\r\n\r\n", m_heatData.ext_ntc1, m_heatData.ext_ntc2, g_ptz.H_boad_temp, g_ptz.V_boad_temp);
}
else
{
sprintf(g_str, "extTemp1 = %.2f, extTemp2 = %.2f,Noheating!\r\nH_Temp = %.2f, V_Temp = %.2f\r\n\r\n", m_heatData.ext_ntc1, m_heatData.ext_ntc2, g_ptz.H_boad_temp, g_ptz.V_boad_temp);
}
return &g_str[0];
}

View File

@ -0,0 +1,12 @@
#ifndef __DEVICE_HEAD_H_
#define __DEVICE_HEAD_H_
#define TASK_PTZ_HEAT_DATA_COLLECT_PRIO 52u
#define TASK_PTZ_HEAT_DATA_COLLECT_STK_SIZE 200u
void Init_ptz_heat_data_collect_task();
char* TempInfoGet(void);
#endif

View File

@ -2,7 +2,7 @@
#define __AS5047D_H_ #define __AS5047D_H_
#include "gd32f4xx.h" #include "gd32f4xx.h"
//#define TMR3109 1 #define TMR3109 1
#if !(AS5047) && !(TMR3109) #if !(AS5047) && !(TMR3109)
#define AS5047 #define AS5047

View File

@ -370,9 +370,9 @@ void h_bldc_six_step()
if(g_ptz.hori_direction_set == PTZ_HORI_DIR_RIGHT) if(g_ptz.hori_direction_set == PTZ_HORI_DIR_RIGHT)
{//电机正转- 1 {//电机正转- 1
h_six_step_commu[H_Hall_state.Hall_value -1]();
}else{//电机反转
h_six_step_commu[(7-H_Hall_state.Hall_value) -1](); h_six_step_commu[(7-H_Hall_state.Hall_value) -1]();
}else{//电机反转
h_six_step_commu[H_Hall_state.Hall_value -1]();
} }
@ -397,9 +397,9 @@ void v_bldc_six_step()
{ {
if(g_ptz.vert_direction_set == PTZ_VERT_DIR_UP) if(g_ptz.vert_direction_set == PTZ_VERT_DIR_UP)
{//电机正转- 1 {//电机正转- 1
v_six_step_commu[V_Hall_state.Hall_value -1]();
}else{//电机反转
v_six_step_commu[(7-V_Hall_state.Hall_value) -1](); v_six_step_commu[(7-V_Hall_state.Hall_value) -1]();
}else{//电机反转
v_six_step_commu[V_Hall_state.Hall_value -1]();
} }

View File

@ -2,9 +2,9 @@
/*-Editor annotation file-*/ /*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/ /*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08010000; define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/ /*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08010000; define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF; define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF; define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF;

View File

@ -825,7 +825,7 @@
</option> </option>
<option> <option>
<name>IlinkIcfFile</name> <name>IlinkIcfFile</name>
<state>$TOOLKIT_DIR$/config/linker/GigaDevice/GD32F450xE.icf</state> <state>D:\CompanyCode\NeedChange_AddFunction\4_MedBldc\MedBldc_RxCode\Hyt2\BSP\IAR\GD32F450xE.icf</state>
</option> </option>
<option> <option>
<name>IlinkIcfFileSlave</name> <name>IlinkIcfFileSlave</name>
@ -2368,6 +2368,12 @@
<file> <file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_dac_out.h</name> <name>$PROJ_DIR$\..\APP\Device\device_Other\device_dac_out.h</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_heat.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_heat.h</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_heatresistor.c</name> <name>$PROJ_DIR$\..\APP\Device\device_Other\device_heatresistor.c</name>
</file> </file>

View File

@ -2945,6 +2945,12 @@
<file> <file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_dac_out.h</name> <name>$PROJ_DIR$\..\APP\Device\device_Other\device_dac_out.h</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_heat.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_heat.h</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\APP\Device\device_Other\device_heatresistor.c</name> <name>$PROJ_DIR$\..\APP\Device\device_Other\device_heatresistor.c</name>
</file> </file>