久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7098|回復: 6
打印 上一主題 下一主題
收起左側

STM32逆變器spwm源碼+原理圖PCB文件+vb上位機源程序

  [復制鏈接]
跳轉到指定樓層
樓主
逆變器spwm仿真源碼,可以下載

vb上位機源程序

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)



STM32單片機源程序如下:
  1. /****************************************************************
  2. *文件名稱:
  3. *文件標示:
  4. *摘要         :
  5. *
  6. *
  7. *當前版本:v1.0
  8. *作者         :蘋安
  9. *****************************************************************/

  10. #include "includes.h"
  11. #include "math.h"

  12. __align(8) static OS_STK         TaskStartStk[500];
  13. __align(8) static OS_STK        TaskLedStk[500];


  14. #define START_PRIO                1u
  15. #define LED_PRIO                        5u


  16. OS_EVENT        * spk;
  17. OS_EVENT        * lcd;
  18. OS_EVENT         * time_10;


  19. static void TaskStart( void *parg);
  20. static void TaskLed(void *parg);
  21. void MenusTask( void *parg);

  22. int main()

  23. {


  24.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  25.         OSInit();
  26.         
  27.         spk=OSSemCreate( 1 );
  28.         lcd=OSSemCreate( 1 );
  29.         time_10=OSSemCreate( 1 );


  30.         OSTaskCreateExt( TaskStart,
  31.                                                                          (void *)0,
  32.                                                                          &TaskStartStk[500-1],
  33.                                                                          START_PRIO,
  34.                                                                          START_PRIO,
  35.                                                                          TaskStartStk,
  36.                                                                          500,
  37.                                                                          ( void *)0,
  38.                                                                          OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR);        
  39.                                                         
  40.         OSStart();
  41.         return 0;
  42. }

  43. //#include "math.h"
  44. static float x_est_last1 = 0;
  45. static float P_last1 = 0;
  46. /*/the noise in the system */
  47. static float Q1 = 0.1;
  48. static float R1 = 0.8;

  49. static float K1;
  50. static float P1;
  51. static float P_temp1;
  52. static float x_temp_est1;
  53. static float x_est1;
  54. static float z_measured1; /*/the 'noisy' value we measured  */
  55. //   float z_real = 0.5; /*/the ideal value we wish to measure */
  56. static float sum_error_kalman1 = 0;
  57. static float sum_error_measure1 = 0;

  58. static float kalman1(float z_real)
  59. {                 
  60.         /*/do a prediction */
  61.         x_temp_est1 = x_est_last1;
  62.         P_temp1 = P_last1 + Q1;
  63.         /*/calculate the Kalman gain */
  64.         K1 = P_temp1 * (1.0/(P_temp1 + R1));
  65.         /*/measure*/
  66.         z_measured1 = z_real ;
  67.         x_est1 = x_temp_est1 + K1 * (z_measured1 - x_temp_est1);  
  68.         P1 = (1- K1) * P_temp1;
  69.          
  70.         sum_error_kalman1 += fabs(z_real - x_est1);
  71.         sum_error_measure1 += fabs(z_real-z_measured1);
  72.          
  73.         P_last1 = P1;
  74.         x_est_last1 = x_est1;

  75.         return x_est1;
  76. }


  77. void halfword(FP32 j);
  78. static void TaskStart( void *parg)
  79. {
  80.         INT16U i=0,j=0,l=0;
  81.         FP32 vbat=0,k=0,oldk=0,dianliu=0,wendu=0;
  82.         (void)parg;
  83.         OS_CPU_SysTickInit();
  84.         OSStatInit();
  85.         
  86.         OSTaskCreateExt( TaskLed,         
  87.                                                                          (void *)0,
  88.                                                                          &TaskLedStk[500-1],        
  89.                                                                          LED_PRIO,
  90.                                                                          LED_PRIO,
  91.                                                                          TaskLedStk,
  92.                                                                          500,
  93.                                                                          ( void*)0,  
  94.                                                                          OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR );
  95.         

  96.         LedInit();                //初始化LED指示燈燈
  97.         PWMTimer(25000);        //初始化PWM         
  98.         DCOut(ENABLE);
  99.         
  100.         ADC1_Configuration();                //采樣初始化
  101.         Getk_adc();
  102.         ReadCanShu();
  103.         OSTimeDlyHMSM( 0, 0, 1, 0 );
  104.         vbat=GetDC310();
  105.         gotoxy(0,0);
  106.         dprintf8("12");
  107.         k=310/vbat;
  108.         k=kalman1(k);
  109.         if(k<1)
  110.         {
  111.                         halfword(k);
  112.                         ban();
  113.         }
  114.         Time1Config();                        //SPWM
  115.         SPWMState(ENABLE );
  116.         //halfword();
  117.         while(1)
  118.         {
  119.                 OSTimeDlyHMSM( 0, 0, 0, 50 );
  120.                 vbat=GetBATE();
  121.                
  122.                 if((vbat<10.5)||(vbat>14.5))
  123.                 {
  124.                         i++;
  125.                         if(i==60)
  126.                                 while(1)
  127.                                 {
  128.                                         LedGreen(0);
  129.                                         WenKong(0);
  130.                                         DCOut(DISABLE);
  131.                                         SPWMState(DISABLE );
  132.                                 }
  133.                 }
  134.                 else
  135.                         i=0;
  136.                
  137.                 dianliu=GetElectric();
  138.                 if(dianliu>32)
  139.                 {
  140.                         j++;
  141.                         if(j==40)
  142.                                 while(1)
  143.                                 {
  144.                                         LedGreen(0);
  145.                                         WenKong(0);
  146.                                         DCOut(DISABLE);
  147.                                         SPWMState(DISABLE );
  148.                                 }
  149.                 }
  150.                 else
  151.                         j=0;
  152.                 if(dianliu>55)
  153.                 {
  154.                                 while(1)
  155.                                 {
  156.                                         LedGreen(0);
  157.                                         WenKong(0);
  158.                                         DCOut(DISABLE);
  159.                                         SPWMState(DISABLE );
  160.                                 }
  161.                 }
  162.                 if(dianliu>2)
  163.                         WenKong(1);
  164.                 if(dianliu<1.5)
  165.                         WenKong(0);
  166.                
  167.                 vbat=GetDC310();
  168.                 vbat=kalman1(vbat);
  169.                 k=310/vbat;
  170.                 //k=kalman1(k);
  171.                 if(k<1)
  172.                 {
  173.                         halfword(k);
  174.                 }
  175.                 else
  176.                         halfword(1);
  177.                
  178.         }
  179. }


  180. float k_dianya=0.14143920;        //電池電壓比例

  181. extern volatile FP32 vref;
  182. static void TaskLed(void *parg)          //測試任務
  183. {        
  184.         INT32U j=0,b=0;
  185.         FP32 vbat=0,k=0;
  186.         //ADC_Config();
  187.         Init_ST7576();
  188.         //Usart1Init(9600);
  189.         DianLiuInit();
  190.         while(1)
  191.         {
  192.                 LedGreen(1);               
  193.                 OSTimeDlyHMSM( 0, 0, 0, 500 );               
  194.                 LedGreen(0);                 
  195.                 OSTimeDlyHMSM( 0, 0, 0, 500 );
  196.                 Getk_adc();
  197.                 vbat=GetBATE();
  198.                 gotoxy(0,0);
  199.                 dprintf("vbat=%0.2f ",vbat);
  200.                 vbat=GetDC310();
  201.                 gotoxy(0,2);
  202.                 dprintf("DC=%0.2f ",vbat);
  203.                 k=310/vbat;
  204.                 gotoxy(0,4);
  205.                 dprintf("k=%0.1f ",k);
  206.                 k=GetWenDu();
  207.                 gotoxy(0,6);
  208.                 dprintf("wen=%0.1f",k);
  209.                 k=GetElectric();
  210.                 dprintf(" %0.1f",k);

  211.                 if(GetAnJian()==0)
  212.                 {
  213.                         DCOut(DISABLE);
  214.                         SPWMState(DISABLE );
  215.                         OSTimeDlyHMSM( 0, 0, 3, 500 );
  216.                         Getele();
  217.                         SaveCanShu();
  218.                         DCOut(ENABLE);
  219.                         SPWMState(ENABLE );
  220.                         
  221.                 }
  222.         }
  223. }
復制代碼

所有資料51hei提供下載:
spwm.rar (10.07 MB, 下載次數: 386)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏16 分享淘帖 頂4 踩
回復

使用道具 舉報

沙發
ID:202142 發表于 2020-10-22 16:02 | 只看該作者
下來學習學習,有空也搞個試試~
回復

使用道具 舉報

板凳
ID:711539 發表于 2020-10-22 21:42 | 只看該作者
感謝樓主分享,很好的資料,贊一個
回復

使用道具 舉報

地板
ID:691573 發表于 2021-7-1 12:59 | 只看該作者
下來學習學習,有空也搞個試試~
回復

使用道具 舉報

5#
ID:686311 發表于 2021-8-5 19:47 | 只看該作者
這方案多少瓦?
回復

使用道具 舉報

6#
ID:663676 發表于 2022-3-27 14:15 | 只看該作者

下來學習學習,有空也搞個試試~
回復

使用道具 舉報

7#
ID:102702 發表于 2024-5-11 12:35 | 只看該作者
不知道樓主這個設計功率有多大?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲激情在线观看 | 日韩免费一区二区 | 亚洲精品白浆高清久久久久久 | 久久精品免费 | 五月婷婷亚洲 | 一二三在线视频 | 亚洲三级av | 99这里只有精品视频 | 国产精品久久久久久久久图文区 | 国产精品久久久久无码av | 中文字幕一区二区三区精彩视频 | 免费观看av | 91国产精品在线 | 99精品一区二区三区 | 中文字幕免费视频 | 天天操夜夜操免费视频 | 国产视频观看 | 精品久久av | 国产在线不卡视频 | 99re热精品视频 | 国产精品一区二区久久精品爱微奶 | www.日本国产 | 日韩av黄色 | 在线观看黄色电影 | 欧美一级特黄aaa大片在线观看 | 欧美日韩专区 | 日韩视频一区 | 国产成人福利 | 久久九九免费 | 久久逼逼 | 国产欧美一区二区三区久久手机版 | 久热9| 久久精品国产亚洲 | 黄色91在线 | 一区二区三区四区毛片 | 欧美成人精品二区三区99精品 | 精品久久久久久红码专区 | 亚洲最大福利网 | 九色 在线 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲国产精品成人久久久 |