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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 11867|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

dcdc buck閉環(huán)數(shù)控型穩(wěn)壓電源仿真+單片機(jī)程序及實(shí)驗(yàn)報(bào)告

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:241835 發(fā)表于 2017-10-30 17:40 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
電子信息系統(tǒng)綜合設(shè)計(jì)實(shí)驗(yàn)報(bào)告
專業(yè):電子信息
班級(jí):電子141班
學(xué)號(hào):14072001784
姓名:劉成成
一、實(shí)驗(yàn)?zāi)康?/strong>
設(shè)計(jì)并制作一臺(tái)數(shù)控型DCDC穩(wěn)壓電源。
二、實(shí)驗(yàn)要求
1、輸出電壓范圍 :0.5v~4.5v?梢酝ㄟ^按鍵實(shí)現(xiàn)電壓調(diào)整
2、必須使用PID閉環(huán)控制算法
3、發(fā)揮部分: PID控制的三個(gè)系數(shù),可以通過遺傳算法來確定。
三、實(shí)驗(yàn)內(nèi)容
1、原理框圖

     2、實(shí)驗(yàn)原理
PID( Proportional Integral Derivative)控制是 最早發(fā)展起來的控制策略之一,由于其算法 簡(jiǎn)單、魯棒性好和可靠性高,被廣泛應(yīng)用于 工業(yè)過程控制,尤其適用于可建立精確數(shù)學(xué) 模型的確定性控制系統(tǒng)。
如圖一,
圖一
  該實(shí)驗(yàn)使用PID算法,通過按鍵控制單片機(jī)PWM波形的占空比。PWM波形通過74HC595驅(qū)動(dòng)電路之后進(jìn)入BOOST電路控制輸出電壓。
  即,通過改變占空比來改變輸出電壓。
  該實(shí)驗(yàn)實(shí)現(xiàn)的結(jié)果為,設(shè)計(jì)了五個(gè)按鍵,每個(gè)按鍵按下之后會(huì)輸出不同的電壓值,輸出電壓值在依次為1,、2、3、4、5V。
如圖二為BOOST電路部分,實(shí)現(xiàn)升壓功能。
圖二
圖三為驅(qū)動(dòng)電路部分,有了驅(qū)動(dòng)電路,才能讓PWM波形在BOOST電路上工作。
圖三
圖四為單片機(jī)部分
圖四
圖五為AD轉(zhuǎn)換部分
圖五
圖六為顯示部分:
圖六
總的原理框圖如圖七:
圖七
3、程序如下:(見附件)

  • 實(shí)驗(yàn)結(jié)果
該實(shí)驗(yàn)最后基本實(shí)現(xiàn)了實(shí)驗(yàn)要求,圖為按下輸出電壓為2V相應(yīng)的按鍵后的示波器和數(shù)碼管顯示的狀態(tài)。示波器黃線為PWM波形,藍(lán)線為電壓波形。數(shù)碼管顯示為1.9V,誤差為0.1V。
  • 實(shí)驗(yàn)總結(jié)
通過本次設(shè)計(jì),對(duì)穩(wěn)壓電源和PID算法原理有了一定的理解。初步掌握了Proteus程序的基本用法。并且在進(jìn)行模擬仿真的時(shí)候,對(duì)Proteus運(yùn)用很陌生,在網(wǎng)上大量搜索之后完成了仿真設(shè)計(jì),總體來說還需要不斷地練習(xí)。

buck型DCDC穩(wěn)壓電源的51單片機(jī)源程序如下:
  1. #include"reg52.h"
  2.   #include"iic.h"
  3.   #include"math.h"
  4.   #include"intrins.h"
  5.               #include<absacc.h>                                                         
  6.   //#define unsigend char  uchar
  7. unsigned
  8. char code shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};            
  9. char code sho[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x7f};
  10. sbit SHCP=P2^2;                           
  11. sbit DS=P2^3;                           
  12. sbit STCP=P2^4;                           
  13. sbit P11=P3^5;
  14. sbit P12=P3^7;
  15.   sbit  pwm=P2^7;

  16.   sbit CS  = P1^2;
  17.   sbit CLK = P1^3;
  18.   sbit DIO = P1^4;

  19.   sbit button1=P3^0;
  20.   sbit button2=P3^1;
  21.   sbit button3=P3^2;
  22.   sbit button4=P3^3;
  23.   sbit button5=P3^4;
  24. unsigned char j,k,m,n,i,a,l;               
  25. unsigned int b;

  26.   int pwm_add=0;               
  27.   int PWM_control=0;            

  28.   float voltage_get=0;                           
  29.   float voltage_set=0;                             

  30.   float voltage_kp=0.01;                           
  31.   float voltage_ki=0.12;                                         
  32.   float voltage_output=0;               
  33.   float voltage_error=0;                           
  34.   float voltage_error_last=0;            

  35.   void timer_init();
  36.               void display();
  37.   unsigned char Get_ADC(bit ch);

  38.   void main()
  39.   {

  40.                             float x1=0.5,x2=1.5,x3=2,x4=2.5,x5=3;
  41.       timer_init();               
  42.                            
  43.                                          
  44.                            
  45.                 while(1)
  46.                 {
  47.                             if(button1==0)                      {voltage_set=1;}
  48.                                if(button2==0)                {voltage_set=2;}
  49.                                             if(button3==0)                  {voltage_set=3; }
  50.                                   if(button4==0)     {voltage_set=4;}
  51.                                                             if(button5==0)    {voltage_set=5;}
  52.                                          
  53.                                          
  54.                                           a=Get_ADC();                                         
  55.    b=a*9;                           
  56.    m=b%1000/100;            
  57.    n=b%100/10;            
  58.    //l=b%1000/100/10            
  59.                                           display();
  60.                                              }               
  61.                            
  62.   }
  63.               void delay(unsigned char t)      //?óê±3ìDò   
  64.   {
  65.    while(t--);
  66.    }
  67.   void timer_irq() interrupt 1
  68.   {
  69.      pwm_add++;
  70.               if      (pwm_add==PWM_control)  {pwm=0;}
  71.               else if (pwm_add>=50)                                          {pwm=1;pwm_add=0;}

  72.   }

  73.   void timer1_irq() interrupt 3
  74.   {
  75.       TH1=(65536-50000)>>8;
  76.                 TL1= 65536-50000;

  77.                 voltage_get=(Get_ADC(0)/10.2);
  78.               // voltage_get=17;
  79.                 voltage_error=voltage_set-voltage_get;

  80.                 voltage_output+=voltage_kp*(voltage_error-voltage_error_last)
  81.                                +voltage_ki*voltage_error;

  82.                 voltage_error_last=voltage_error;

  83.                 if     (voltage_output>49)                voltage_output=49;
  84.                 else if(voltage_output<1)                              voltage_output=1;
  85.                
  86.                 PWM_control=(int)voltage_output;            


  87.   }
  88.                
  89.   void timer_init()
  90.               {
  91.                 TMOD=0X12;  
  92.                 TH0=TL0=256-200;
  93.                 TH1=(65536-50000)>>8;
  94.                 TL1= 65536-50000;
  95.       EA=1;ET0=1;ET1=1;TR0=1;TR1=1;
  96.               }


  97. unsigned char Get_ADC(bit ch)
  98. {
  99.   unsigned char i,dat1 = 0,dat2 = 0;
  100.   CS = 0; CLK = 0;
  101.   DIO = 1; _nop_(); _nop_();
  102.   CLK = 1; _nop_(); _nop_();
  103.   CLK = 0; DIO = 1; _nop_(); _nop_();
  104.   CLK = 1;          _nop_(); _nop_();
  105.   CLK = 0; DIO = ch; _nop_(); _nop_();
  106.   CLK = 1;          _nop_(); _nop_();
  107.   CLK = 0; DIO = 1; _nop_(); _nop_();
  108.   for(i = 0; i < 8; i++)
  109.   {
  110.     CLK = 1; _nop_(); _nop_();
  111.     CLK = 0; _nop_(); _nop_();
  112.     dat1 = (dat1 << 1)|DIO;
  113.   }
  114.   for(i = 0; i < 8; i++)
  115.   {
  116.     dat2 = dat2|((unsigned char)DIO<<i);
  117.     CLK = 1; _nop_(); _nop_();
  118.     CLK = 0; _nop_(); _nop_();
  119.   }
  120.   CS = 1;
  121.   return dat1;
  122. }
  123. void display()                                                         
  124. {

  125.             

  126.   j=0x01;                                                                       
  127.   for(i=0;i<8;i++)
  128.   {
  129.       if((sho[m]&j)==0)                             
  130.        {
  131.                    DS=0;                                         
  132.                  }
  133.       else
  134.                  {
  135.                    DS=1;            
  136.                  }
  137.     SHCP=1;
  138.     SHCP=0;
  139.       j<<=1;            
  140.    }            
  141.               P12=0;                           
  142.     P11=1;                           
  143.     STCP=0;                                          
  144.     STCP=1;

  145.     delay(200);

  146. ……………………

  147. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載:

穩(wěn)壓電源.zip (468.82 KB, 下載次數(shù): 292)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:304545 發(fā)表于 2018-4-17 09:43 | 只看該作者
看了很有幫助
回復(fù)

使用道具 舉報(bào)

板凳
ID:20672 發(fā)表于 2018-12-23 14:41 | 只看該作者
謝謝分享~~。!
回復(fù)

使用道具 舉報(bào)

地板
ID:318489 發(fā)表于 2019-2-26 11:00 | 只看該作者
謝謝分享。。。
回復(fù)

使用道具 舉報(bào)

5#
ID:728172 發(fā)表于 2020-4-24 10:40 | 只看該作者
感謝分享,很好的資料
回復(fù)

使用道具 舉報(bào)

6#
ID:590748 發(fā)表于 2020-4-27 15:08 | 只看該作者
東西下載來看看,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

7#
ID:837828 發(fā)表于 2021-4-30 10:11 | 只看該作者
真的謝謝,你的文章剛好提供了思路
回復(fù)

使用道具 舉報(bào)

8#
ID:837828 發(fā)表于 2021-4-30 20:33 | 只看該作者
??標(biāo)題是BUCK,內(nèi)容用的是BOOST電路,說的是輸出12345V,實(shí)際仿真圖里是其他的....
回復(fù)

使用道具 舉報(bào)

9#
ID:586915 發(fā)表于 2021-6-29 16:11 | 只看該作者
代碼都不備注新手怎么看
回復(fù)

使用道具 舉報(bào)

10#
ID:156220 發(fā)表于 2021-6-29 16:32 | 只看該作者
參考參考,謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

11#
ID:586915 發(fā)表于 2021-6-29 16:45 | 只看該作者
下載后測(cè)試輸出電壓誤差大的一逼 選2V 的時(shí)候電壓從1.5-2.0在跳
回復(fù)

使用道具 舉報(bào)

12#
ID:899981 發(fā)表于 2023-10-10 18:05 | 只看該作者
lsx116 發(fā)表于 2021-6-29 16:45
下載后測(cè)試輸出電壓誤差大的一逼 選2V 的時(shí)候電壓從1.5-2.0在跳

我的壓根就沒電壓
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品美女久久久 | 欧美男人天堂 | 色综合99 | 一区二区欧美在线 | 狠狠狠干 | 99视频免费看 | 亚洲人在线观看视频 | 亚洲天堂成人在线视频 | 成人免费在线 | 欧美日韩综合精品 | 国产精品毛片一区二区三区 | 中文av网站 | 亚洲国产精品一区二区三区 | 亚洲国产精品一区二区第一页 | 一区二区三区四区国产精品 | 97日日碰人人模人人澡分享吧 | 国产精品日产欧美久久久久 | 国内久久 | 污片在线免费观看 | www.99re| 怡红院免费的全部视频 | 亚洲一区二区三区久久久 | 狠狠干美女 | av网站在线播放 | 国产一区 日韩 | 99久久精品国产一区二区三区 | 久久久久久国产一区二区三区 | 国产在线中文字幕 | 中文字幕综合 | 免费色网址 | 久草精品视频 | 性色的免费视频 | 91精品成人久久 | 亚洲精品二区 | 亚洲成人精品在线观看 | 国产在线一区二区三区 | 日韩在线观看网站 | 伊人网综合在线 | 在线视频一区二区 | 国产精品伦一区二区三级视频 | 国产成人久久 |