乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      STM32正弦波逆變器設計資料 含SPWM數(shù)據生成軟件VB源碼+PCB+原理圖等

       共同成長888 2019-06-24

      Altium Designer畫的逆變控制板與逆變直流升壓電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)







      逆變電源設計概要
      大家知道, 市電或其他的交流電可以通過二極管或可控硅的單向導電性整流成直流電供給需要使用直流電的場合。這種把交流電變換成直流電的過程我們叫做整流,也叫做順變。那么逆變呢?我們自然地就會想到,應該就是把直流電變換成交流電的過程。逆變電源就是相對于整流器而言通過半導體功率開關器件的開通和關斷把直流電變換成交流電的這么一個裝置。 逆變電源也叫做逆變器, 下面分單元地講一下逆變器主要的單元電路。 主要內容為:  
      一.電池輸入電路
      二.輔助電源電路
      1. 12V 電池輸入的輔助電源電路
      2. 24V-48V電池輸入的輔助電源電路
      3. 多路隔離輔助電源電路
      三.高頻逆變器前級電路的設計
      1. 閉環(huán)前級變壓器匝數(shù)比的設計
      2. 準開環(huán)前級變壓器匝數(shù)比的設計
      四.高頻逆變器后級電路的設計
      1. 米勒電容對高壓 MOS 管安全的影響及其解決辦法
      2. IR2110應用中需要注意的問題
      3. 正弦波逆變器 LC 濾波器的參數(shù)
      五.逆變器的部分保護電路
      1. 防反接保護電路
      2. 電池欠壓保護
      3. 逆變器的過流短路保護電路的設計
      4. IGBT 的驅動和短路保護


      stm32單片機逆變器控制軟件源程序如下:
      1. /****************************************************************

      2. * Copyright (c) 2010 ,

      3. * All rights reserved.

      4. *

      5. *

      6. *文件名稱:

      7. *文件標示:

      8. *摘要         :

      9. *當前版本:v1.0

      10. *****************************************************************/


      11. #include "includes.h"

      12. #include "math.h"


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

      14. __align(8) static OS_STK        TaskLedStk[500];



      15. #define START_PRIO                1u

      16. #define LED_PRIO                        5u



      17. OS_EVENT        * spk;

      18. OS_EVENT        * lcd;

      19. OS_EVENT         * time_10;



      20. static void TaskStart( void *parg);

      21. static void TaskLed(void *parg);

      22. void MenusTask( void *parg);


      23. int main()


      24. {



      25.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

      26.         OSInit();


      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.         OSStart();

      40.         return 0;

      41. }


      42. #include "math.h"

      43. static float x_est_last1 = 0;

      44. static float P_last1 = 0;

      45. /*/the noise in the system */

      46. static float Q1 = 0.1;

      47. static float R1 = 0.8;


      48. static float K1;

      49. static float P1;

      50. static float P_temp1;

      51. static float x_temp_est1;

      52. static float x_est1;

      53. static float z_measured1; /*/the 'noisy' value we measured  */

      54. //   float z_real = 0.5; /*/the ideal value we wish to measure */

      55. static float sum_error_kalman1 = 0;

      56. static float sum_error_measure1 = 0;


      57. static float kalman1(float z_real)

      58. {                

      59.         /*/do a prediction */

      60.         x_temp_est1 = x_est_last1;

      61.         P_temp1 = P_last1 + Q1;

      62.         /*/calculate the Kalman gain */

      63.         K1 = P_temp1 * (1.0/(P_temp1 + R1));

      64.         /*/measure*/

      65.         z_measured1 = z_real ;

      66.         x_est1 = x_temp_est1 + K1 * (z_measured1 - x_temp_est1);  

      67.         P1 = (1- K1) * P_temp1;


      68.         sum_error_kalman1 += fabs(z_real - x_est1);

      69.         sum_error_measure1 += fabs(z_real-z_measured1);


      70.         P_last1 = P1;

      71.         x_est_last1 = x_est1;


      72.         return x_est1;

      73. }



      74. void halfword(FP32 j);

      75. static void TaskStart( void *parg)

      76. {

      77.         INT16U i=0,j=0,l=0;

      78.         FP32 vbat=0,k=0,oldk=0,dianliu=0,wendu=0;

      79.         (void)parg;

      80.         OS_CPU_SysTickInit();

      81.         OSStatInit();


      82.         OSTaskCreateExt( TaskLed,         

      83.                                                                          (void *)0,

      84.                                                                          &TaskLedStk[500-1],       

      85.                                                                          LED_PRIO,

      86.                                                                          LED_PRIO,

      87.                                                                          TaskLedStk,

      88.                                                                          500,

      89.                                                                          ( void*)0,  

      90.                                                                          OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR );



      91.         LedInit();                //初始化LED指示燈燈

      92.         PWMTimer(25000);        //初始化PWM        

      93.         DCOut(ENABLE);


      94.         ADC1_Configuration();                //采樣初始化

      95.         Getk_adc();

      96.         ReadCanShu();

      97.         OSTimeDlyHMSM( 0, 0, 1, 0 );

      98.         vbat=GetDC310();

      99.         gotoxy(0,0);

      100.         dprintf8("12");

      101.         k=310/vbat;

      102.         k=kalman1(k);

      103.         if(k<1)

      104.         {

      105.                         halfword(k);

      106.                         ban();

      107.         }

      108.         Time1Config();                        //SPWM

      109.         SPWMState(ENABLE );

      110.         //halfword();

      111.         while(1)

      112.         {

      113.                 OSTimeDlyHMSM( 0, 0, 0, 50 );

      114.                 vbat=GetBATE();


      115.                 if((vbat<10.5)||(vbat>14.5))

      116.                 {

      117.                         i++;

      118.                         if(i==60)

      119.                                 while(1)

      120.                                 {

      121.                                         LedGreen(0);

      122.                                         WenKong(0);

      123.                                         DCOut(DISABLE);

      124.                                         SPWMState(DISABLE );

      125.                                 }

      126.                 }

      127.                 else

      128.                         i=0;


      129.                 dianliu=GetElectric();

      130.                 if(dianliu>32)

      131.                 {

      132.                         j++;

      133.                         if(j==40)

      134.                                 while(1)

      135.                                 {

      136.                                         LedGreen(0);

      137.                                         WenKong(0);

      138.                                         DCOut(DISABLE);

      139.                                         SPWMState(DISABLE );

      140.                                 }

      141.                 }

      142.                 else

      143.                         j=0;

      144.                 if(dianliu>55)

      145.                 {

      146.                                 while(1)

      147.                                 {

      148.                                         LedGreen(0);

      149.                                         WenKong(0);

      150.                                         DCOut(DISABLE);

      151.                                         SPWMState(DISABLE );

      152.                                 }

      153.                 }

      154.                 if(dianliu>2)

      155.                         WenKong(1);

      156.                 if(dianliu<1.5)

      157.                         WenKong(0);


      158.                 vbat=GetDC310();

      159.                 vbat=kalman1(vbat);

      160.                 k=310/vbat;

      161.                 //k=kalman1(k);

      162.                 if(k<1)

      163.                 {

      164.                         halfword(k);

      165.                 }

      166.                 else

      167.                         halfword(1);


      168.         }

      169. }



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


      171. extern volatile FP32 vref;

      172. static void TaskLed(void *parg)          //測試任務

      173. {       

      174.         INT32U j=0,b=0;

      175.         FP32 vbat=0,k=0;

      176.         //ADC_Config();

      177.         Init_ST7576();

      178.         //Usart1Init(9600);

      179.         DianLiuInit();

      180.         while(1)

      181.         {

      182.                 LedGreen(1);               

      183.                 OSTimeDlyHMSM( 0, 0, 0, 500 );               

      184.                 LedGreen(0);                 

      185.                 OSTimeDlyHMSM( 0, 0, 0, 500 );

      186.                 Getk_adc();

      187.                 vbat=GetBATE();

      188.                 gotoxy(0,0);

      189.                 dprintf("vbat=%0.2f ",vbat);

      190.                 vbat=GetDC310();

      191.                 gotoxy(0,2);

      192.                 dprintf("DC=%0.2f ",vbat);

      193.                 k=310/vbat;

      194.                 gotoxy(0,4);

      195.                 dprintf("k=%0.1f ",k);

      196.                 k=GetWenDu();

      197.                 gotoxy(0,6);

      198.                 dprintf("wen=%0.1f",k);

      199.                 k=GetElectric();

      200.                 dprintf(" %0.1f",k);


      201.                 if(GetAnJian()==0)

      202.                 {

      203.                         DCOut(DISABLE);

      204.                         SPWMState(DISABLE );

      205.                         OSTimeDlyHMSM( 0, 0, 3, 500 );

      206.                         Getele();

      207.                         SaveCanShu();

      208.                         DCOut(ENABLE);

      209.                         SPWMState(ENABLE );


      210.                 }

      211.         }

      212. }




      復制代碼

      SPWM數(shù)據生成軟件VB源程序如下:
      1. VERSION 5.00

      2. Begin VB.Form SPWM

      3.    Caption         =   "SPWM數(shù)據生成軟件(Howe.Chen)"

      4.    ClientHeight    =   4560

      5.    ClientLeft      =   120

      6.    ClientTop       =   450

      7.    ClientWidth     =   8310

      8.    Icon            =   "SPWM.frx":0000

      9.    LinkTopic       =   "Form1"

      10.    ScaleHeight     =   4560

      11.    ScaleWidth      =   8310

      12.    StartUpPosition =   3  '窗口缺省

      13.    Begin VB.CommandButton Command1

      14.       Caption         =   "清空結果"

      15.       Height          =   615

      16.       Left            =   7320

      17.       TabIndex        =   18

      18.       Top             =   3600

      19.       Width           =   855

      20.    End

      21.    Begin VB.TextBox Text7

      22.       Height          =   1695

      23.       Left            =   240

      24.       MultiLine       =   -1  'True

      25.       ScrollBars      =   2  'Vertical

      26.       TabIndex        =   17

      27.       Top             =   2520

      28.       Width           =   6855

      29.    End

      30.    Begin VB.TextBox Text4

      31.       Height          =   375

      32.       Left            =   6720

      33.       TabIndex        =   9

      34.       Top             =   1560

      35.       Width           =   975

      36.    End

      37.    Begin VB.Frame Frame1

      38.       Caption         =   "參數(shù)設置"

      39.       Height          =   2055

      40.       Left            =   360

      41.       TabIndex        =   1

      42.       Top             =   120

      43.       Width           =   6015

      44.       Begin VB.TextBox Text6

      45.          Height          =   390

      46.          Left            =   1560

      47.          TabIndex        =   16

      48.          Top             =   1440

      49.          Width           =   1455

      50.       End

      51.       Begin VB.TextBox Text5

      52.          Height          =   375

      53.          Left            =   4320

      54.          TabIndex        =   13

      55.          Top             =   840

      56.          Width           =   1335

      57.       End

      58.       Begin VB.TextBox Text3

      59.          Height          =   375

      60.          Left            =   1560

      61.          TabIndex        =   7

      62.          Top             =   840

      63.          Width           =   735

      64.       End

      65.       Begin VB.TextBox Text2

      66.          BeginProperty Font

      67.             Name            =   "宋體"

      68.             Size            =   12

      69.             Charset         =   134

      70.             Weight          =   400

      71.             Underline       =   0   'False

      72.             Italic          =   0   'False

      73.             Strikethrough   =   0   'False

      74.          EndProperty

      75.          Height          =   375

      76.          Left            =   4800

      77.          TabIndex        =   6

      78.          Top             =   240

      79.          Width           =   855

      80.       End

      81.       Begin VB.TextBox Text1

      82.          BeginProperty Font

      83.             Name            =   "宋體"

      84.             Size            =   12

      85.             Charset         =   134

      86.             Weight          =   400

      87.             Underline       =   0   'False

      88.             Italic          =   0   'False

      89.             Strikethrough   =   0   'False

      90.          EndProperty

      91.          Height          =   375

      92.          Left            =   1080

      93.          TabIndex        =   3

      94.          Top             =   240

      95.          Width           =   735

      96.       End

      97.       Begin VB.Label Label9

      98.          Caption         =   "調制度(M)"

      99.          BeginProperty Font

      100.             Name            =   "宋體"

      101.             Size            =   12

      102.             Charset         =   134

      103.             Weight          =   400

      104.             Underline       =   0   'False

      105.             Italic          =   0   'False

      106.             Strikethrough   =   0   'False

      107.          EndProperty

      108.          Height          =   255

      109.          Left            =   120

      110.          TabIndex        =   15

      111.          Top             =   1560

      112.          Width           =   1335

      113.       End

      114.       Begin VB.Label Label8

      115.          Caption         =   "V"

      116.          BeginProperty Font

      117.             Name            =   "宋體"

      118.             Size            =   12

      119.             Charset         =   134

      120.             Weight          =   400

      121.             Underline       =   0   'False

      122.             Italic          =   0   'False

      123.             Strikethrough   =   0   'False

      124.          EndProperty

      125.          Height          =   255

      126.          Left            =   5760

      127.          TabIndex        =   14

      128.          Top             =   960

      129.          Width           =   255

      130.       End

      131.       Begin VB.Label Label7

      132.          Caption         =   "交流峰值電壓(Vsin)"

      133.          BeginProperty Font

      134.             Name            =   "宋體"

      135.             Size            =   12

      136.             Charset         =   134

      137.             Weight          =   400

      138.             Underline       =   0   'False

      139.             Italic          =   0   'False

      140.             Strikethrough   =   0   'False

      141.          EndProperty

      142.          Height          =   495

      143.          Left            =   2760

      144.          TabIndex        =   12

      145.          Top             =   840

      146.          Width           =   1575

      147.       End

      148.       Begin VB.Label Label6

      149.          Caption         =   "V"

      150.          BeginProperty Font

      151.             Name            =   "宋體"

      152.             Size            =   12

      153.             Charset         =   134

      154.             Weight          =   400

      155.             Underline       =   0   'False

      156.             Italic          =   0   'False

      157.             Strikethrough   =   0   'False

      158.          EndProperty

      159.          Height          =   255

      160.          Left            =   2400

      161.          TabIndex        =   11

      162.          Top             =   960

      163.          Width           =   375

      164.       End

      165.       Begin VB.Label Label5

      166.          Caption         =   "直流BUS電壓(Vbus)"

      167.          BeginProperty Font

      168.             Name            =   "宋體"

      169.             Size            =   12

      170.             Charset         =   134

      171.             Weight          =   400

      172.             Underline       =   0   'False

      173.             Italic          =   0   'False

      174.             Strikethrough   =   0   'False

      175.          EndProperty

      176.          Height          =   495

      177.          Left            =   120

      178.          TabIndex        =   10

      179.          Top             =   840

      180.          Width           =   1335

      181.       End

      182.       Begin VB.Label Label3

      183.          Caption         =   "半周期取樣點數(shù)(N)"

      184.          BeginProperty Font

      185.             Name            =   "宋體"

      186.             Size            =   12

      187.             Charset         =   134

      188.             Weight          =   400

      189.             Underline       =   0   'False

      190.             Italic          =   0   'False

      191.             Strikethrough   =   0   'False

      192.          EndProperty

      193.          Height          =   375

      194.          Left            =   2640

      195.          TabIndex        =   5

      196.          Top             =   360

      197.          Width           =   2295

      198.       End

      199.       Begin VB.Label Label1

      200.          Caption         =   "頻率(F)"

      201.          BeginProperty Font

      202.             Name            =   "宋體"

      203.             Size            =   12

      204.             Charset         =   134

      205.             Weight          =   400

      206.             Underline       =   0   'False

      207.             Italic          =   0   'False

      208.             Strikethrough   =   0   'False

      209.          EndProperty

      210.          Height          =   375

      211.          Left            =   120

      212.          TabIndex        =   4

      213.          Top             =   360

      214.          Width           =   855

      215.       End

      216.       Begin VB.Label Label2

      217.          Caption         =   "Hz"

      218.          BeginProperty Font

      219.             Name            =   "宋體"

      220.             Size            =   12

      221.             Charset         =   134

      222.             Weight          =   400

      223.             Underline       =   0   'False

      224.             Italic          =   0   'False

      225.             Strikethrough   =   0   'False

      226.          EndProperty

      227.          Height          =   255

      228.          Left            =   1920

      229.          TabIndex        =   2

      230.          Top             =   360

      231.          Width           =   375

      232.       End

      233.    End

      234.    Begin VB.CommandButton CmdOutPut

      235.       Caption         =   "生成(CREATE)"

      236.       BeginProperty Font

      237.          Name            =   "宋體"

      238.          Size            =   12

      239.          Charset         =   134

      240.          Weight          =   400

      241.          Underline       =   0   'False

      242.          Italic          =   0   'False

      243.          Strikethrough   =   0   'False

      244.       EndProperty

      245.       Height          =   615

      246.       Left            =   6600

      247.       TabIndex        =   0

      248.       Top             =   240

      249.       Width           =   1575

      250.    End

      251.    Begin VB.Label Label4

      252.       Caption         =   "PWM幅值"

      253.       BeginProperty Font

      254.          Name            =   "宋體"

      255.          Size            =   12

      256.          Charset         =   134

      257.          Weight          =   400

      258.          Underline       =   0   'False

      259.          Italic          =   0   'False

      260.          Strikethrough   =   0   'False

      261.       EndProperty

      262.       Height          =   255

      263.       Left            =   6720

      264.       TabIndex        =   8

      265.       Top             =   1200

      266.       Width           =   1095

      267.    End

      268. End

      269. Attribute VB_Name = "SPWM"

      270. Attribute VB_GlobalNameSpace = False

      271. Attribute VB_Creatable = False

      272. Attribute VB_PredeclaredId = True

      273. Attribute VB_Exposed = False

      274. Dim Freq As Double

      275. Dim Vbus As Double

      276. Dim Vsin As Double

      277. Dim M As Double

      278. Dim N As Double

      279. Dim PwmPeriod As Double

      280. Dim K As Double

      281. Const PI As Double = 3.1415926

      282. Dim Out() As Double

      283. Dim SpwmOut() As Integer



      284. Private Sub CmdOutPut_Click()

      285.     On Error GoTo endsub

      286.     Dim i As Double

      287.     Dim w As Double

      288.     Dim temp1 As Double

      289.     Dim temp2 As Double

      290.     w = Freq * 2 * PI


      291.     temp1 = Cos(((1 - 1) * PI) / N)

      292.     temp2 = Cos((1 * PI) / N)

      293.     Out(1) = (M / w * (temp1 - temp2)) * 1000000


      294.     For i = 2 To N Step 1

      295.         temp1 = Cos(((i - 1) * PI) / N)

      296.         temp2 = Cos((i * PI) / N)

      297.         Out(i) = (M / w * (temp1 - temp2)) * 1000000 - Out(1)

      298.     Next i

      299.     Out(1) = 0


      300.     For i = 1 To N Step 1

      301.         SpwmOut(i) = CInt(PwmPeriod / (Out(N / 2 + 1)) * Out(i))

      302.     Next i


      303.     Text7.Text = ""

      304.     For i = 1 To N / 2 Step 1

      305.         Text7.Text = Text7.Text & "0x" & CStr(Hex(SpwmOut(i))) & ","

      306.     Next i

      307.     Text7.Text = Text7.Text & vbCrLf


      308.     For i = N / 2 + 1 To N - 1 Step 1

      309.         Text7.Text = Text7.Text & "0x" & CStr(Hex(SpwmOut(i))) & ","

      310.     Next i

      311.     Text7.Text = Text7.Text & "0x" & CStr(Hex(SpwmOut(N)))

      312. Exit Sub

      313. endsub:

      314.     MsgBox "Error", vbOKOnly, Error

      315. End Sub


      316. Private Sub Command1_Click()

      317.     Text7.Text = ""

      318. End Sub


      319. Private Sub Form_Load()

      320.     Text1.Text = 50

      321.     Text2.Text = 66

      322.     Text3.Text = 380

      323.     Text4.Text = 255

      324.     Text5.Text = 311

      325. End Sub


      326. Private Sub Text1_Change()

      327.     Freq = Val(Text1.Text)

      328. End Sub


      329. Private Sub Text2_Change()

      330.     N = Val(Text2.Text)

      331.     ReDim Out(N)

      332.     ReDim SpwmOut(N)

      333. End Sub


      334. Private Sub Text3_Change()

      335.     On Error Resume Next

      336.     Vbus = Val(Text3.Text)

      337.     M = Vsin / Vbus

      338.     Text6.Text = CStr(M)

      339. End Sub


      340. Private Sub Text4_Change()

      341.     PwmPeriod = Val(Text4.Text)

      342. End Sub


      343. Private Sub Text5_Change()

      344.     On Error GoTo endsub

      345.     If (Val(Text5.Text) > Vbus) Then

      346.         MsgBox "Vsin must be below Vbus", vbOKOnly, "Error"

      347.         Text5.Text = CStr(311)

      348.     Else

      349.         Vsin = Val(Text5.Text)

      350.         M = Vsin / Vbus

      351.         Text6.Text = CStr(CSng(M))

      352.     End If

      353. endsub:

      354. End Sub


      355. Private Sub Text6_Change()

      356.     On Error GoTo endsub

      357.     If (Val(Text6.Text) > 1) Then

      358.         MsgBox "M must be Between 0 to 1", vbOKOnly, "Error"

      359.         Text6.Text = CStr(0.818421052631579)

      360.     Else

      361.         M = Val(Text6.Text)

      362.         Vsin = Vbus * M

      363.         Text5.Text = CStr(CSng(Vsin))

      364.     End If

      365. endsub:

      366. End Sub

      367. 復制代碼

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多