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

標題: 自制0-5V數字可調精密電壓源 基于12位DAC模塊MCP4725 支持鍵盤輸入和上位機設置電壓 [打印本頁]

作者: zsw3721    時間: 2021-3-18 14:53
標題: 自制0-5V數字可調精密電壓源 基于12位DAC模塊MCP4725 支持鍵盤輸入和上位機設置電壓
大家好,測試工程師又來了啦。在測試16串BMS的工作中,非常希望有一個各串電壓可方便調節的模擬電池。要求有一定的負載驅動能力。
為此,先做出單節0-5V可調的電壓源進行方案驗證。實驗取得了理想的結果,以后可考慮基于此方案制作16串分別可調的模擬電池。

先上原理圖


本設計使用STC15W408AS單片機,控制12位DAC模塊MCP4725輸出設定的電壓,再經過運放和射極輸出器提高帶載能力。輸出能力約400mA。
支持矩陣鍵盤輸入電壓設定值,支持RS485通訊,可用串口助手下發報文進行電壓設置。

實物照片:



按鍵輸入設置電壓:



使用串口助手發送報文:(格式,~開頭,!結尾,中間4位ASCII碼,0不可省略)



報文發送后立即生效,電壓調整到了設定值:


實測精度足夠高,半程以上的精度在3mV以內。以后可用16位的DAC進一步提高精度,可達1mV。

單片機main.c程序:(其余見附件)
  1. #include "MAIN.H"
  2. #include "OLED.H"
  3. #include "mcp4725.h"
  4. #include "KEY.H"


  5. uint set_voltage,set_voltage1;                //設定值
  6. uchar digit4,digit3,digit2,digit1;        //設定值千百十個位
  7. uchar i=0;
  8. uchar buffer[7]={0,0,0,0,0,0,0};        //485緩存
  9. bit flag=0;                                                        //接收完標志位


  10. void UartInit(void)        //9600bps@11.0592MHz
  11. {
  12.         SCON = 0x50;        //8位數據,可變波特率
  13.         AUXR |= 0x01;        //串口1選擇定時器2作為波特率發生器
  14.         AUXR &= 0xFB;        //定時器2時鐘FOSC/12,即12T
  15.         T2L = 0xE8;                //設定定時器初值
  16.         T2H = 0xFF;                //設定定時器初值
  17.         AUXR |= 0x10;        //啟動定時器2
  18.         ES=1;                        //打開接收中斷
  19.         EA=1;                        //打開總中斷
  20. }


  21. void init()
  22. {
  23.         OLED_Init();
  24.         OLED_CLS();
  25.         OLED_hzStr(16,0,2); //數
  26.         OLED_hzStr(32,0,3); //字
  27.         OLED_hzStr(48,0,0); //電
  28.         OLED_hzStr(64,0,1); //壓
  29.         OLED_hzStr(80,0,4); //源
  30.         SDA=0;SCL=0;
  31.         MCP4725_WriteData_Digital(0);
  32.         Display();
  33.         OLED_hzStr(96,6,7);  //實
  34.         OLED_hzStr(112,6,8); //際
  35.         UartInit();
  36. }

  37. void communication(void)
  38. {
  39.         if(flag==1)                        //當接收完報文,開始處理
  40.         {
  41.                 flag=0;
  42.                 set_digit4=buffer[1]-0x30;
  43.                 set_digit3=buffer[2]-0x30;
  44.                 set_digit2=buffer[3]-0x30;
  45.                 set_digit1=buffer[4]-0x30;
  46.                 set_voltage=set_digit1+set_digit2*10+set_digit3*100+set_digit4*1000;
  47.                 set_voltage1=set_voltage*0.8192;  //轉化為數字量
  48.                 if(set_voltage1>=4096)        //如輸入值超上限,則輸出最大值
  49.                         set_voltage1=4095;
  50.                 if(set_voltage>=5000)        //如輸入值超上限,則輸出顯示值顯示最大值5000mV
  51.                         set_voltage=5000;
  52.                 set_digit1=0;set_digit2=0;set_digit3=0;set_digit4=0;
  53.                 MCP4725_WriteData_Digital(set_voltage1);  //寫入DA模塊
  54.                 Display();        //更新顯示

  55.         }
  56. }

  57. void main()
  58. {
  59.         init();        //初始化;
  60.         while(1)
  61.         {
  62.                 keyprocess(); //調用按鍵掃描處理
  63.                 communication(); //RS485通信處理
  64.         }
  65. }


  66. void Usart() interrupt 4 using 1        //串口1中斷處理
  67. {
  68.         buffer[i]=SBUF;
  69.         if(buffer[i]==0x7E)          //接收的報文以~開頭(即0x7E)
  70.                 {
  71.                         i=0;
  72.                         buffer[i]=SBUF;
  73.                 }
  74.         RI=0;                  
  75.         i++;
  76.         if(buffer[i-1]==0x21) //接收的報文以!結尾(即0x21)
  77.         {
  78.                 i=0;
  79.                 flag=1;
  80.         }
  81. }
復制代碼

附原理圖和程序。

全部資料51hei下載地址:
數字電壓源程序 V1.0 20210318.rar (171.87 KB, 下載次數: 274)

作者: 源代碼    時間: 2021-4-9 10:35
你好,你這有沒有MCP4725的中文資料
作者: SURUBU1976    時間: 2022-9-15 08:00
屏型號是?
作者: 小白艾世雄    時間: 2022-10-26 10:20
好創意,,,收藏了慢慢學。
作者: angmall    時間: 2023-4-2 08:35
SURUBU1976 發表于 2022-9-15 08:00
屏型號是?

我認為屏型號是OLED1306 SSD1306 四針腳oled
作者: fj51hei    時間: 2023-4-2 09:28
怎么模擬電池充電電流 充飽電流?
作者: 1399905010    時間: 2023-4-26 14:18
最近剛好想做一個數控電源,樓主資料給了我很大幫助

作者: qhp777    時間: 2023-4-28 17:00
這個不錯,尤其學習一下串口程序
作者: coody_sz    時間: 2023-4-30 11:51
我用的MCP4822,雙通道12位DAC,控制輸出電壓和限流設置。TM7705檢測電壓電流,4+4數碼管同時顯示電壓和電流。
作者: 新鄉家電維修    時間: 2023-5-1 09:05
MCP4725太貴了,用不起啊
作者: vcd2760    時間: 2023-5-3 21:16
你好,你這有沒有MCP4725的中文資料
作者: ZFDQ    時間: 2023-6-12 16:39
感謝老師!很好的學習例子!
作者: 3wjkdhus    時間: 2024-10-12 21:37
成功修改在89c52單片機上運行,下一步搞實物出來

屏幕截圖 2024-10-12 213521.png (89.85 KB, 下載次數: 6)

屏幕截圖 2024-10-12 213521.png

作者: 3wjkdhus    時間: 2024-10-12 21:40
成功修改在89c52單片機上面運行

屏幕截圖 2024-10-12 213521.png (89.85 KB, 下載次數: 0)

屏幕截圖 2024-10-12 213521.png

作者: 3wjkdhus    時間: 2024-10-12 21:42
成功修改在89c52單片機上面運行

屏幕截圖 2024-10-12 213521.png (89.85 KB, 下載次數: 0)

屏幕截圖 2024-10-12 213521.png

作者: 3wjkdhus    時間: 2024-10-12 21:44
成功修改在89c52單片機上運行
作者: user2402167    時間: 2024-10-12 23:43
強迫癥,毫伏請使用mV
作者: sjh7366    時間: 2024-12-3 18:35
user2402167 發表于 2024-10-12 23:43
強迫癥,毫伏請使用mV

rr?sz?




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产成人免费在线视频 | 丁香九月婷婷 | 精品久久视频 | 一区二区三区高清 | 一区二区三区久久久 | 日韩精品视频在线播放 | 欧美一区二区在线观看 | 亚洲区视频 | 日韩一区精品 | 国产a视频 | 国产一区在线看 | www.97超碰| 天堂成人网 | 一本一道久久a久久精品蜜桃 | 国产成人午夜精品 | 欧美成人精品一区二区三区在线看 | 日本a级大片 | 青青草视频在线观看 | 国产成人综合网 | 一级片日韩 | 亚洲成人欧美 | 三级黄色在线观看 | 久久av片 | 日韩综合精品 | 亚洲色综合 | 中文字幕三区 | 免费观看一区二区 | 亚洲 欧美 激情 另类 校园 | 91av视频在线 | 中文在线观看免费高清 | 国产午夜一区二区 | 亚洲精品福利 | 欧美在线| 在线国产一区 | 欧美性猛交xx | www.狠狠操.com | 毛片一区 | 欧美一区二区三区的 | 欧美日韩一区二区在线 | 4438成人网| 在线看片你懂的 |