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

QQ登錄

只需一步,快速開始

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

51單片機(jī)恒流恒阻恒功率電子負(fù)載開源設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
經(jīng)過數(shù)個(gè)月的奮斗,恒流恒阻恒功率三種模式的電子負(fù)載終于做好了
恒流部分使用了Gandf大俠的PWM模擬DAC方案,在此表示感謝。這種方案雖然不如使用DAC芯片轉(zhuǎn)換迅速,但成本低廉,分辨率也可以做的比較高,對(duì)于diy而言已經(jīng)足夠了。主控芯片使用的是最新的STC8A8K64S4A12-LQFP44,帶12位ADC,用于檢測(cè)電壓電流很方便。
其實(shí)原理很簡(jiǎn)單,其關(guān)鍵在于程序的編寫,網(wǎng)上關(guān)于Gandf大俠的電子負(fù)載很少開源程序,我在這里開源的程序可以供大家參考,其中LCD2004的驅(qū)動(dòng)程序來自blog.csdn點(diǎn)net/yagnruinihao/article/details/19999551,在此表示感謝!
這其實(shí)只是最基礎(chǔ)的功能實(shí)現(xiàn),還有許許多多可以改進(jìn)的地方,比如增加散熱風(fēng)扇,散熱器溫度檢測(cè),蜂鳴器,改差分四線測(cè)量等等,但我精力有限,沒有時(shí)間弄了,所以開源出來大家可以參考著進(jìn)行改進(jìn)。

制作出來的實(shí)物圖如下:


電路原理圖如下:



單片機(jī)源程序如下:
  1. /*!
  2. *     COPYRIGHT NOTICE
  3. *     Copyright (c) 2018,CQ
  4. *     All rights reserved.
  5. *
  6. *     
  7. *     
  8. *
  9. * @file                        main.c
  10. * @brief                        
  11. * @author                CQ
  12. * @version                V1.1
  13. * @date                        2018-11-4
  14. * latest amendment time:2018.12.2
  15. */
  16. #include"STC8A.h"
  17. #include"LCD2004.h"
  18. #include"config.h"
  19. #include <intrins.h>

  20. void main(void)
  21. {
  22.          GPIOInit();
  23.          lcd2004Init();
  24.          TimerInit();        
  25.    PWMInit();
  26.    lcd2004CleanAll();
  27.          ADCInit();
  28.         lcd2004AddressWriteString(0,0,Menu.NormalInterface.Line[0]);
  29.         lcd2004AddressWriteString(1,0,Menu.NormalInterface.Line[1]);
  30.         lcd2004AddressWriteString(2,0,Menu.NormalInterface.Line[2]);
  31.         lcd2004AddressWriteString(3,0,Menu.NormalInterface.Line[3]);
  32.    lcd2004AddressWriteByte(2,19,0xF4) ;//display Ohm  symbol

  33. /*         if(MenuDataTable.SysInfo.LoadState==Running)
  34.         {
  35.     lcd2004AddressWriteString(3,16,"ON");                                       
  36.         }
  37.         else
  38.         {
  39.    lcd2004AddressWriteString(3,16,"OFF");                                                
  40.         }*/
  41.          EA=1;
  42.         if(IapRead(IAPUSEDFLAG)==0x56)//check whether there is some data in eeprom
  43.         {
  44.           MenuDataTable.Current.Coefficient=IapReadF32(CURRENTCOEADDR);
  45.           MenuDataTable.Voltage.Coefficient=IapReadF32(VOLTAGECOEADDR);
  46.           MenuDataTable.SysInfo.PWMCoe=IapReadF32(PWMCOEADDR);
  47.         }
  48.          while(1)
  49.          {
  50.        ;                        
  51.          }
  52. }
復(fù)制代碼


所有資料51hei提供下載:
Electronic load.rar (358.83 KB, 下載次數(shù): 777)


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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-12-3 01:43 | 只看該作者
好東東,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:454155 發(fā)表于 2019-3-27 09:09 | 只看該作者
負(fù)載的原理圖呢
回復(fù)

使用道具 舉報(bào)

地板
ID:262783 發(fā)表于 2019-4-11 01:37 來自手機(jī) | 只看該作者
謝謝分享,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

5#
ID:531743 發(fā)表于 2019-5-9 16:53 | 只看該作者
不錯(cuò)的設(shè)計(jì),值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

6#
ID:614352 發(fā)表于 2019-9-21 11:12 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

7#
ID:244512 發(fā)表于 2019-10-22 17:27 | 只看該作者
MOS管部份沒有電路
回復(fù)

使用道具 舉報(bào)

8#
ID:262783 發(fā)表于 2019-10-29 00:32 來自手機(jī) | 只看該作者
好厲害,代碼看不懂,好多英文,但這個(gè)是好東東
回復(fù)

使用道具 舉報(bào)

9#
ID:634466 發(fā)表于 2019-11-2 18:07 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

10#
ID:136502 發(fā)表于 2019-12-8 16:52 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

11#
ID:298348 發(fā)表于 2019-12-15 13:44 | 只看該作者
好資源 謝謝分享
回復(fù)

使用道具 舉報(bào)

12#
ID:634466 發(fā)表于 2020-1-21 12:01 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

13#
ID:454211 發(fā)表于 2020-1-22 11:37 | 只看該作者
好東西,感謝樓主分享
回復(fù)

使用道具 舉報(bào)

14#
ID:688129 發(fā)表于 2020-1-25 16:21 | 只看該作者
好東西,感謝樓主分享
回復(fù)

使用道具 舉報(bào)

15#
ID:160658 發(fā)表于 2020-1-26 17:55 | 只看該作者
好資源 謝謝分享
回復(fù)

使用道具 舉報(bào)

16#
ID:375228 發(fā)表于 2020-1-29 22:27 | 只看該作者
很NB的設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

17#
ID:233015 發(fā)表于 2020-2-1 11:40 來自手機(jī) | 只看該作者
樓主有負(fù)載部分的電路圖嗎?
回復(fù)

使用道具 舉報(bào)

18#
ID:704585 發(fā)表于 2020-4-2 17:53 | 只看該作者
多謝樓主分享
回復(fù)

使用道具 舉報(bào)

19#
ID:60263 發(fā)表于 2020-4-22 10:50 | 只看該作者
下載了,謝謝分享
回復(fù)

使用道具 舉報(bào)

20#
ID:700699 發(fā)表于 2020-8-13 10:48 | 只看該作者
功率部分沒有,在哪里找得到?
回復(fù)

使用道具 舉報(bào)

21#
ID:276790 發(fā)表于 2020-9-18 23:38 來自手機(jī) | 只看該作者
厲害最近在研究這個(gè),謝謝
回復(fù)

使用道具 舉報(bào)

22#
ID:59956 發(fā)表于 2021-5-8 10:59 | 只看該作者
樓主你好我想問一下這個(gè)ADC換算部分在哪里
回復(fù)

使用道具 舉報(bào)

23#
ID:61192 發(fā)表于 2021-8-3 21:59 | 只看該作者
看看照葫蘆能不能畫出瓢出來
回復(fù)

使用道具 舉報(bào)

24#
ID:596446 發(fā)表于 2021-8-28 10:19 | 只看該作者
這程序是缺的
回復(fù)

使用道具 舉報(bào)

25#
ID:585365 發(fā)表于 2021-9-5 16:54 | 只看該作者
參考著看看能不能搞一個(gè)出來
回復(fù)

使用道具 舉報(bào)

26#
ID:648916 發(fā)表于 2021-9-8 07:49 | 只看該作者
感謝!感謝!再感謝!
回復(fù)

使用道具 舉報(bào)

27#
ID:430492 發(fā)表于 2021-9-14 16:09 | 只看該作者
樓主厲害呀,大俠級(jí)。(qiáng)!
回復(fù)

使用道具 舉報(bào)

28#
ID:506805 發(fā)表于 2021-10-12 11:13 | 只看該作者
恒阻恒功率通過軟件調(diào)節(jié)實(shí)現(xiàn)?
回復(fù)

使用道具 舉報(bào)

29#
ID:47634 發(fā)表于 2021-11-9 21:20 | 只看該作者
很好很好,感謝樓主,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

30#
ID:47634 發(fā)表于 2021-12-9 09:43 | 只看該作者
很好很好,感謝樓主的好資料,正在找資料準(zhǔn)備制作
回復(fù)

使用道具 舉報(bào)

31#
ID:284973 發(fā)表于 2022-1-14 09:16 | 只看該作者

程序是完整的
回復(fù)

使用道具 舉報(bào)

32#
ID:284973 發(fā)表于 2022-1-14 09:17 | 只看該作者
robter 發(fā)表于 2021-12-9 09:43
很好很好,感謝樓主的好資料,正在找資料準(zhǔn)備制作

這個(gè)設(shè)計(jì)有嚴(yán)重缺陷,今年會(huì)重做
回復(fù)

使用道具 舉報(bào)

33#
ID:8222 發(fā)表于 2022-1-16 17:43 | 只看該作者
  • /*!
  • *     COPYRIGHT NOTICE
  • *     Copyright (c) 2018,CQ
  • *     All rights reserved.
  • *
  • *
  • *
  • *
  • * @file                        EC11.c
  • * @brief                       
  • * @author                CQ
  • * @version                V1.1
  • * @date                        2018-11-4
  • * latest amendment time :2018.11.4
  • */
  • #include"EC11.h"
  • static bit EC11_SIA_Last;
  • static bit EC11_SIB_Last;
  • sbit EC11_SIA=P3^2;
  • sbit EC11_SIB=P3^4;
  • sbit EC11_SW=P3^3;
  • Ec11StateType                Ec11State=
  • {
  •          KeyFree,
  •         EncoderFree,       
  • };
  • /************************************************************
  • * Function name                :        EC11_Capture
  • * function discription        :        EC11 state capture
  • *
  • * input parameter        :        none
  • * output parameter        :        none
  • *
  • * amendant record  :               
  •    Add this function for the first time    2018-11-4
  • * author                  :        CQ
  • * date                                :        2018-11-4
  • *************************************************************/       
  • void Ec11Capture(void)
  • {
  •           static unsigned char EC11KeyStateTemp = 0,EC11KeyCount=0;
  •     bit EC11KeyPressTemp;
  •           EC11KeyPressTemp =EC11_SW;         
  •   if((EC11_SIA_Last==0)&&(EC11_SIA==1))//        EC11_SIA和上一次狀態(tài)相比,為上升沿
  •     {
  •        
  •                 if((EC11_SIB_Last == 1)&&(EC11_SIB == 0))   //EC11_B和上一次狀態(tài)相比,為下降沿
  •                         {
  •                     Ec11State.EncoderState=EncoderSub;                         //反轉(zhuǎn)
  •                         }
  •                 if((EC11_SIB_Last == 0)&&(EC11_SIB == 1))   //EC11_B和上一次狀態(tài)相比,為上升沿
  •                                 {
  •                    Ec11State.EncoderState=EncoderAdd;                       //正轉(zhuǎn)
  •                                 }
  •                                 //>>>>>>>>>>>>>>>>下面為正轉(zhuǎn)一次再反轉(zhuǎn)或反轉(zhuǎn)一次再正轉(zhuǎn)處理<<<<<<<<<<<<<<<<//
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 0))  //A上升沿時(shí),采集的B不變且為0
  •                                 {
  •                     Ec11State.EncoderState=EncoderSub;                                //反轉(zhuǎn)
  •                                 }
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 1))  //A上升沿時(shí),采集的B不變且為1
  •                                 {
  •                      Ec11State.EncoderState=EncoderAdd;                                //正轉(zhuǎn)
  •                                 }
  •         }
  •    else        if((EC11_SIA_Last==1)&&(EC11_SIA==0))          //EC11_SIA和上一次狀態(tài)相比,為下降沿
  •    {
  •                          if((EC11_SIB_Last == 1)&&(EC11_SIB == 0))   //EC11_B和上一次狀態(tài)相比,為下降沿
  •                                 {
  •                      Ec11State.EncoderState=EncoderAdd;                           //正轉(zhuǎn)
  •                                 }
  •                 if((EC11_SIB_Last == 0)&&(EC11_SIB == 1))   //EC11_B和上一次狀態(tài)相比,為上升沿
  •                                 {
  •                     Ec11State.EncoderState=EncoderSub;                          //反轉(zhuǎn)
  •                                 }
  •                                 //>>>>>>>>>>>>>>>>下面為正轉(zhuǎn)一次再反轉(zhuǎn)或反轉(zhuǎn)一次再正轉(zhuǎn)處理<<<<<<<<<<<<<<<<//
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 0))  //A上升沿時(shí),采集的B不變且為0
  •                                 {
  •                      Ec11State.EncoderState=EncoderAdd;                          //正轉(zhuǎn)
  •                                 }
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 1))  //A上升沿時(shí),采集的B不變且為1
  •                                 {
  •                    Ec11State.EncoderState=EncoderSub;                                  //反轉(zhuǎn)
  •                                 }
  •    }
  •         EC11_SIA_Last = EC11_SIA;   //更新編碼器上一個(gè)狀態(tài)暫存變量
  •         EC11_SIB_Last = EC11_SIB;   //更新編碼器上一個(gè)狀態(tài)暫存變量
  •        
  •        
  •                  /************************EC11_SW key scan************************************/
  •          switch(EC11KeyStateTemp)
  •          {
  •                  case 0:
  •                          if(EC11KeyPressTemp==0)
  •                                  EC11KeyStateTemp=1;
  •                           break;
  •                  case 1:
  •                           if(EC11KeyPressTemp==0)
  •                                 {
  •                                         EC11KeyStateTemp=2;
  •                                 }
  •                                 else
  •                                         EC11KeyStateTemp=0;
  •                                  break;
  •                  case 2:
  •                           if(EC11KeyPressTemp==1)
  •                                 {
  •                                           if(EC11KeyCount<100)
  •                                                 {
  •                                                     Ec11State.KeyState=KeyDown;
  •                                                 }
  •                                   EC11KeyStateTemp=0;
  •           EC11KeyCount=0;                                        
  •                                 }
  •                                 else
  •                                 {
  •           if(EC11KeyCount<100)
  •                                         {
  •              EC11KeyCount++;
  •                                         }       
  •           else if(EC11KeyCount==100)
  •                                         {
  •              Ec11State.KeyState=KeyHold;
  •                      EC11KeyCount++;                                       
  •                                         }                                                                                
  •                                 }
  •        break;                
  •          }
  •        
  • }
  • Ec11StateType                                Ec11State;

請(qǐng)問26-30行的格式和意義,小白不懂,望大師賜教。謝謝。



回復(fù)

使用道具 舉報(bào)

34#
ID:61140 發(fā)表于 2022-2-25 07:39 | 只看該作者
程序有問題,原理圖不完整,不能用
回復(fù)

使用道具 舉報(bào)

35#
ID:928284 發(fā)表于 2022-3-7 17:29 | 只看該作者
做的很強(qiáng)大,學(xué)習(xí)您!
回復(fù)

使用道具 舉報(bào)

36#
ID:854496 發(fā)表于 2022-5-20 23:19 | 只看該作者
感謝,參考研究研究
回復(fù)

使用道具 舉報(bào)

37#
ID:228452 發(fā)表于 2022-9-4 20:01 | 只看該作者
schematic diagram is incomplete ....
This is example only what can be done..
回復(fù)

使用道具 舉報(bào)

38#
ID:128989 發(fā)表于 2022-9-11 01:29 | 只看該作者
不錯(cuò),學(xué)習(xí)了。51有ADC,DAC嗎
回復(fù)

使用道具 舉報(bào)

39#
ID:284433 發(fā)表于 2022-11-3 10:02 | 只看該作者
學(xué)習(xí)下  
恒阻模式是怎么實(shí)現(xiàn)的
回復(fù)

使用道具 舉報(bào)

40#
ID:82809 發(fā)表于 2022-11-4 09:37 | 只看該作者
可以學(xué)習(xí)下思路,圖不全,程序有問題!

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表