|
給大家分享一個基于STM32單片機的正弦波逆變器設(shè)計項目
Altium Designer畫的逆變控制板與逆變直流升壓電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (109.99 KB, 下載次數(shù): 156)
下載附件
2018-3-17 23:17 上傳
0.png (54.75 KB, 下載次數(shù): 135)
下載附件
2018-3-17 23:17 上傳
0.jpg (61.69 KB, 下載次數(shù): 140)
下載附件
2018-3-17 23:18 上傳
0.jpg (57.83 KB, 下載次數(shù): 158)
下載附件
2018-3-17 23:18 上傳
0.jpg (65.34 KB, 下載次數(shù): 145)
下載附件
2018-3-17 22:56 上傳
0.png (13.62 KB, 下載次數(shù): 147)
下載附件
2018-3-17 22:57 上傳
逆變電源設(shè)計概要
大家知道, 市電或其他的交流電可以通過二極管或可控硅的單向?qū)щ娦哉鞒芍绷麟姽┙o需要使用直流電的場合。這種把交流電變換成直流電的過程我們叫做整流,也叫做順變。那么逆變呢?我們自然地就會想到,應(yīng)該就是把直流電變換成交流電的過程。逆變電源就是相對于整流器而言通過半導(dǎo)體功率開關(guān)器件的開通和關(guān)斷把直流電變換成交流電的這么一個裝置。 逆變電源也叫做逆變器, 下面分單元地講一下逆變器主要的單元電路。 主要內(nèi)容為:
一.電池輸入電路
二.輔助電源電路
1. 12V 電池輸入的輔助電源電路
2. 24V-48V電池輸入的輔助電源電路
3. 多路隔離輔助電源電路
三.高頻逆變器前級電路的設(shè)計
1. 閉環(huán)前級變壓器匝數(shù)比的設(shè)計
2. 準開環(huán)前級變壓器匝數(shù)比的設(shè)計
四.高頻逆變器后級電路的設(shè)計
1. 米勒電容對高壓 MOS 管安全的影響及其解決辦法
2. IR2110應(yīng)用中需要注意的問題
3. 正弦波逆變器 LC 濾波器的參數(shù)
五.逆變器的部分保護電路
1. 防反接保護電路
2. 電池欠壓保護
3. 逆變器的過流短路保護電路的設(shè)計
4. IGBT 的驅(qū)動和短路保護
0.png (75.47 KB, 下載次數(shù): 137)
下載附件
2018-3-17 23:20 上傳
0.png (151.4 KB, 下載次數(shù): 137)
下載附件
2018-3-17 23:20 上傳
stm32單片機逆變器控制軟件源程序如下:
- /****************************************************************
- * Copyright (c) 2010 ,
- * All rights reserved.
- *
- *
- *文件名稱:
- *文件標示:
- *摘要 :
- *當(dāng)前版本:v1.0
- *****************************************************************/
- #include "includes.h"
- #include "math.h"
- __align(8) static OS_STK TaskStartStk[500];
- __align(8) static OS_STK TaskLedStk[500];
- #define START_PRIO 1u
- #define LED_PRIO 5u
- OS_EVENT * spk;
- OS_EVENT * lcd;
- OS_EVENT * time_10;
- static void TaskStart( void *parg);
- static void TaskLed(void *parg);
- void MenusTask( void *parg);
- int main()
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
- OSInit();
-
- spk=OSSemCreate( 1 );
- lcd=OSSemCreate( 1 );
- time_10=OSSemCreate( 1 );
- OSTaskCreateExt( TaskStart,
- (void *)0,
- &TaskStartStk[500-1],
- START_PRIO,
- START_PRIO,
- TaskStartStk,
- 500,
- ( void *)0,
- OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR);
-
- OSStart();
- return 0;
- }
- #include "math.h"
- static float x_est_last1 = 0;
- static float P_last1 = 0;
- /*/the noise in the system */
- static float Q1 = 0.1;
- static float R1 = 0.8;
-
- static float K1;
- static float P1;
- static float P_temp1;
- static float x_temp_est1;
- static float x_est1;
- static float z_measured1; /*/the 'noisy' value we measured */
- // float z_real = 0.5; /*/the ideal value we wish to measure */
- static float sum_error_kalman1 = 0;
- static float sum_error_measure1 = 0;
- static float kalman1(float z_real)
- {
- /*/do a prediction */
- x_temp_est1 = x_est_last1;
- P_temp1 = P_last1 + Q1;
- /*/calculate the Kalman gain */
- K1 = P_temp1 * (1.0/(P_temp1 + R1));
- /*/measure*/
- z_measured1 = z_real ;
- x_est1 = x_temp_est1 + K1 * (z_measured1 - x_temp_est1);
- P1 = (1- K1) * P_temp1;
-
- sum_error_kalman1 += fabs(z_real - x_est1);
- sum_error_measure1 += fabs(z_real-z_measured1);
-
- P_last1 = P1;
- x_est_last1 = x_est1;
- return x_est1;
- }
- void halfword(FP32 j);
- static void TaskStart( void *parg)
- {
- INT16U i=0,j=0,l=0;
- FP32 vbat=0,k=0,oldk=0,dianliu=0,wendu=0;
- (void)parg;
- OS_CPU_SysTickInit();
- OSStatInit();
-
- OSTaskCreateExt( TaskLed,
- (void *)0,
- &TaskLedStk[500-1],
- LED_PRIO,
- LED_PRIO,
- TaskLedStk,
- 500,
- ( void*)0,
- OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR );
-
- LedInit(); //初始化LED指示燈燈
- PWMTimer(25000); //初始化PWM
- DCOut(ENABLE);
-
- ADC1_Configuration(); //采樣初始化
- Getk_adc();
- ReadCanShu();
- OSTimeDlyHMSM( 0, 0, 1, 0 );
- vbat=GetDC310();
- gotoxy(0,0);
- dprintf8("12");
- k=310/vbat;
- k=kalman1(k);
- if(k<1)
- {
- halfword(k);
- ban();
- }
- Time1Config(); //SPWM
- SPWMState(ENABLE );
- //halfword();
- while(1)
- {
- OSTimeDlyHMSM( 0, 0, 0, 50 );
- vbat=GetBATE();
-
- if((vbat<10.5)||(vbat>14.5))
- {
- i++;
- if(i==60)
- while(1)
- {
- LedGreen(0);
- WenKong(0);
- DCOut(DISABLE);
- SPWMState(DISABLE );
- }
- }
- else
- i=0;
-
- dianliu=GetElectric();
- if(dianliu>32)
- {
- j++;
- if(j==40)
- while(1)
- {
- LedGreen(0);
- WenKong(0);
- DCOut(DISABLE);
- SPWMState(DISABLE );
- }
- }
- else
- j=0;
- if(dianliu>55)
- {
- while(1)
- {
- LedGreen(0);
- WenKong(0);
- DCOut(DISABLE);
- SPWMState(DISABLE );
- }
- }
- if(dianliu>2)
- WenKong(1);
- if(dianliu<1.5)
- WenKong(0);
-
- vbat=GetDC310();
- vbat=kalman1(vbat);
- k=310/vbat;
- //k=kalman1(k);
- if(k<1)
- {
- halfword(k);
- }
- else
- halfword(1);
-
- }
- }
- float k_dianya=0.14143920; //電池電壓比例
- extern volatile FP32 vref;
- static void TaskLed(void *parg) //測試任務(wù)
- {
- INT32U j=0,b=0;
- FP32 vbat=0,k=0;
- //ADC_Config();
- Init_ST7576();
- //Usart1Init(9600);
- DianLiuInit();
- while(1)
- {
- LedGreen(1);
- OSTimeDlyHMSM( 0, 0, 0, 500 );
- LedGreen(0);
- OSTimeDlyHMSM( 0, 0, 0, 500 );
- Getk_adc();
- vbat=GetBATE();
- gotoxy(0,0);
- dprintf("vbat=%0.2f ",vbat);
- vbat=GetDC310();
- gotoxy(0,2);
- dprintf("DC=%0.2f ",vbat);
- k=310/vbat;
- gotoxy(0,4);
- dprintf("k=%0.1f ",k);
- k=GetWenDu();
- gotoxy(0,6);
- dprintf("wen=%0.1f",k);
- k=GetElectric();
- dprintf(" %0.1f",k);
- if(GetAnJian()==0)
- {
- DCOut(DISABLE);
- SPWMState(DISABLE );
- OSTimeDlyHMSM( 0, 0, 3, 500 );
- Getele();
- SaveCanShu();
- DCOut(ENABLE);
- SPWMState(ENABLE );
-
- }
- }
- }
復(fù)制代碼
SPWM數(shù)據(jù)生成軟件VB源程序如下:
所有資料51hei提供下載:
原理圖和PCB.7z
(5.88 MB, 下載次數(shù): 1228)
2021-8-24 17:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
逆變器控制軟件.7z
(2.56 MB, 下載次數(shù): 980)
2021-8-24 17:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
逆變電源設(shè)計概要.PDF
(312.79 KB, 下載次數(shù): 925)
2018-3-17 20:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
SPWM生成軟件.zip
(11.38 KB, 下載次數(shù): 936)
2018-3-17 20:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|