亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機恒流恒阻恒功率電子負載開源設計

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

制作出來的實物圖如下:


電路原理圖如下:



單片機源程序如下:
  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. }
復制代碼


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


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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

地板
ID:262783 發表于 2019-4-11 01:37 來自觸屏版 | 只看該作者
謝謝分享,學習了
回復

使用道具 舉報

5#
ID:531743 發表于 2019-5-9 16:53 | 只看該作者
不錯的設計,值得學習
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

8#
ID:262783 發表于 2019-10-29 00:32 來自觸屏版 | 只看該作者
好厲害,代碼看不懂,好多英文,但這個是好東東
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

16#
ID:375228 發表于 2020-1-29 22:27 | 只看該作者
很NB的設計
回復

使用道具 舉報

17#
ID:233015 發表于 2020-2-1 11:40 來自觸屏版 | 只看該作者
樓主有負載部分的電路圖嗎?
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

21#
ID:276790 發表于 2020-9-18 23:38 來自觸屏版 | 只看該作者
厲害最近在研究這個,謝謝
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

27#
ID:430492 發表于 2021-9-14 16:09 | 只看該作者
樓主厲害呀,大俠級!!強!!
回復

使用道具 舉報

28#
ID:506805 發表于 2021-10-12 11:13 | 只看該作者
恒阻恒功率通過軟件調節實現?
回復

使用道具 舉報

29#
ID:47634 發表于 2021-11-9 21:20 | 只看該作者
很好很好,感謝樓主,學習了
回復

使用道具 舉報

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

使用道具 舉報

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

程序是完整的
回復

使用道具 舉報

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

這個設計有嚴重缺陷,今年會重做
回復

使用道具 舉報

33#
ID:8222 發表于 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和上一次狀態相比,為上升沿
  •     {
  •        
  •                 if((EC11_SIB_Last == 1)&&(EC11_SIB == 0))   //EC11_B和上一次狀態相比,為下降沿
  •                         {
  •                     Ec11State.EncoderState=EncoderSub;                         //反轉
  •                         }
  •                 if((EC11_SIB_Last == 0)&&(EC11_SIB == 1))   //EC11_B和上一次狀態相比,為上升沿
  •                                 {
  •                    Ec11State.EncoderState=EncoderAdd;                       //正轉
  •                                 }
  •                                 //>>>>>>>>>>>>>>>>下面為正轉一次再反轉或反轉一次再正轉處理<<<<<<<<<<<<<<<<//
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 0))  //A上升沿時,采集的B不變且為0
  •                                 {
  •                     Ec11State.EncoderState=EncoderSub;                                //反轉
  •                                 }
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 1))  //A上升沿時,采集的B不變且為1
  •                                 {
  •                      Ec11State.EncoderState=EncoderAdd;                                //正轉
  •                                 }
  •         }
  •    else        if((EC11_SIA_Last==1)&&(EC11_SIA==0))          //EC11_SIA和上一次狀態相比,為下降沿
  •    {
  •                          if((EC11_SIB_Last == 1)&&(EC11_SIB == 0))   //EC11_B和上一次狀態相比,為下降沿
  •                                 {
  •                      Ec11State.EncoderState=EncoderAdd;                           //正轉
  •                                 }
  •                 if((EC11_SIB_Last == 0)&&(EC11_SIB == 1))   //EC11_B和上一次狀態相比,為上升沿
  •                                 {
  •                     Ec11State.EncoderState=EncoderSub;                          //反轉
  •                                 }
  •                                 //>>>>>>>>>>>>>>>>下面為正轉一次再反轉或反轉一次再正轉處理<<<<<<<<<<<<<<<<//
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 0))  //A上升沿時,采集的B不變且為0
  •                                 {
  •                      Ec11State.EncoderState=EncoderAdd;                          //正轉
  •                                 }
  •                 if((EC11_SIB_Last == EC11_SIB)&&(EC11_SIB == 1))  //A上升沿時,采集的B不變且為1
  •                                 {
  •                    Ec11State.EncoderState=EncoderSub;                                  //反轉
  •                                 }
  •    }
  •         EC11_SIA_Last = EC11_SIA;   //更新編碼器上一個狀態暫存變量
  •         EC11_SIB_Last = EC11_SIB;   //更新編碼器上一個狀態暫存變量
  •        
  •        
  •                  /************************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;

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



回復

使用道具 舉報

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

使用道具 舉報

35#
ID:928284 發表于 2022-3-7 17:29 | 只看該作者
做的很強大,學習您!
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

38#
ID:128989 發表于 2022-9-11 01:29 | 只看該作者
不錯,學習了。51有ADC,DAC嗎
回復

使用道具 舉報

39#
ID:284433 發表于 2022-11-3 10:02 | 只看該作者
學習下  
恒阻模式是怎么實現的
回復

使用道具 舉報

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

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表