標(biāo)題:
雙路DC-DC 電流成比例 STM32程序
[打印本頁]
作者:
zs6666
時(shí)間:
2019-6-29 20:05
標(biāo)題:
雙路DC-DC 電流成比例 STM32程序
類似15年國賽電源題目,兩路DC-DC電壓控制,電流成比例
單片機(jī)源程序如下:
#include "stm32f10x.h"
#include "BSP_Config.H"
#include "oled.h"
#include "pwm_output.h"
#include "adc.h"
#include "stdio.h"
#include "pid.h"
#include "key.h"
/*---------------變量區(qū)------------------*/
/*sprintf顯示所用數(shù)組*/
u8 dataStr[30];
/*DMA存儲(chǔ)的值,volatile類型*/
extern __IO u16 ADC_ConvertedValue[50][3];
float Current;
/*ADC濾波后原始數(shù)據(jù)*/
u16 ADC_Data_raw[3]={0,0,0};//adc原始數(shù)據(jù)
u8 Load_flag=0;
extern u8 mode;//按鍵設(shè)置模式
extern float adc[3];
float PID1,PID2,PID3,Cur1,Cur2,Vol;
u16 pid_except=2480;
u16 pid_except1=2480;
/*---------------變量區(qū)------------------*/
int main(void)
{
SystemInit();
SysTick_init(); //延時(shí)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
TIM1_Mode_Config(6000-1,0);
TIM3_Mode_Config(6000-1,0);
SPI2_Init(); //初始化SPI硬件口
KEY_Init();
OLED_Init(); //初始化OLED
TIM2_base();//初始化定時(shí)器,定時(shí)器中斷中處理adc讀數(shù)
ADC1_Init();
while (1)
{
if(mode==0)
{
Current=(0.9341*(float)ADC_Data_raw[1]-11.4)/4096*3.3;
if(Current>2.5)
{
OLED_Clear();
OLED_ShowString(40,32,"Warning");
TIM1->CCR2=0;
delay_ms(5000);
TIM1->CCR2=PID1;
delay_ms(500);
OLED_Clear();
}
else if(Current<=2.5)
{
PID1=Pid_TIM1_control(pid_except);
TIM1->CCR2=PID1;
sprintf((char *)dataStr,"V:%1.3fv A1-9",adc[0]*4);// a1
//sprintf(dataStr,"V:%1.3fv (PA1)",(float)ADC_ConvertedValue[0][0]/4096*3.3);// a1
OLED_ShowString(1,0,dataStr);
sprintf((char *)dataStr,"A:%1.3fa (PA4)",Current);
OLED_ShowString(1,16,dataStr);
sprintf((char *)dataStr,"w:%1.3f",Current*adc[0]*4.0);//
OLED_ShowString(1,32,dataStr);
sprintf((char *)dataStr,"e:%4d",pid_except);//功率
OLED_ShowString(1,48,dataStr);
sprintf((char *)dataStr,"m:%d",mode);
OLED_ShowString(90,48,dataStr);
} //else if
//TIM3->CCR1=PID2;
}//if(mode==0)
else
{
PID2=Pid_TIM1_control((0.9773*(float)ADC_Data_raw[1]-47.5)*1.07);
TIM1->CCR2=PID2;
PID3=Pid_TIM3_control(pid_except1);
TIM3->CCR1=PID3;
//// Cur1=(0.9341*(float)ADC_Data_raw[0]+8.688)/4096*3.3;
Cur1=(0.9341*(float)ADC_Data_raw[0]-11.4)/4096*3.3;
Cur2=(0.9773*(float)ADC_Data_raw[1]-47.5)/4096*3.3;
Vol=(float)ADC_Data_raw[2]/4096*3.3*4;
sprintf((char *)dataStr,"A:%1.3fa",Cur1);
OLED_ShowString(1,0,dataStr);
sprintf((char *)dataStr,"A:%1.3fa",Cur2);
OLED_ShowString(1,16,dataStr);
sprintf((char *)dataStr,"V:%1.3fv",Vol);
OLED_ShowString(1,32,dataStr);
sprintf((char *)dataStr,"e:%1.2f",(float)pid_except1/4096*3.3);
OLED_ShowString(80,32,dataStr);
sprintf((char *)dataStr,"P:%1.3fw",Vol*(Cur1+Cur2));
OLED_ShowString(1,48,dataStr);
sprintf((char *)dataStr,"m:%d",mode);
OLED_ShowString(90,48,dataStr);
}
key_scan();
}//while(1)
}
復(fù)制代碼
所有資料51hei提供下載:
并聯(lián) -隨動(dòng) - mode.7z
(180.3 KB, 下載次數(shù): 33)
2019-6-29 21:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
QQ截圖20190629200240.jpg
(122.77 KB, 下載次數(shù): 60)
下載附件
2019-6-29 20:05 上傳
作者:
778903125
時(shí)間:
2019-7-21 21:23
參考一下
作者:
aaaaaa。
時(shí)間:
2019-7-23 10:08
樓主,能不能解釋一下
作者:
鵬博士PBs
時(shí)間:
2019-7-23 11:31
芯鵬偉的電源芯片不錯(cuò)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1