经过数个月的奋斗,恒流恒阻恒功率三种模式的电子负载终于做好了
恒流部分使用了Gandf大侠的PWM模拟DAC方案,在此表示感谢。这种方案虽然不如使用DAC芯片转换迅速,但成本低廉,分辨率也可以做的比较高,对于diy而言已经足够了。主控芯片使用的是最新的STC8A8K64S4A12-LQFP44,带12位ADC,用于检测电压电流很方便。
其实原理很简单,其关键在于程序的编写,网上关于Gandf大侠的电子负载很少开源程序,我在这里开源的程序可以供大家参考,其中LCD2004的驱动程序来自blog.csdn点net/yagnruinihao/article/details/19999551,在此表示感谢!
这其实只是最基础的功能实现,还有许许多多可以改进的地方,比如增加散热风扇,散热器温度检测,蜂鸣器,改差分四线测量等等,但我精力有限,没有时间弄了,所以开源出来大家可以参考着进行改进。
制作出来的实物图如下:
电路原理图如下:
单片机源程序如下:
- /*!
- * COPYRIGHT NOTICE
- * Copyright (c) 2018,CQ
- * All rights reserved.
- *
- *
- *
- *
- * @file main.c
- * @brief
- * @author CQ
- * @version V1.1
- * @date 2018-11-4
- * latest amendment time:2018.12.2
- */
- #include"STC8A.h"
- #include"LCD2004.h"
- #include"config.h"
- #include <intrins.h>
- void main(void)
- {
- GPIOInit();
- lcd2004Init();
- TimerInit();
- PWMInit();
- lcd2004CleanAll();
- ADCInit();
- lcd2004AddressWriteString(0,0,Menu.NormalInterface.Line[0]);
- lcd2004AddressWriteString(1,0,Menu.NormalInterface.Line[1]);
- lcd2004AddressWriteString(2,0,Menu.NormalInterface.Line[2]);
- lcd2004AddressWriteString(3,0,Menu.NormalInterface.Line[3]);
- lcd2004AddressWriteByte(2,19,0xF4) ;//display Ohm symbol
- /* if(MenuDataTable.SysInfo.LoadState==Running)
- {
- lcd2004AddressWriteString(3,16,"ON");
- }
- else
- {
- lcd2004AddressWriteString(3,16,"OFF");
- }*/
- EA=1;
- if(IapRead(IAPUSEDFLAG)==0x56)//check whether there is some data in eeprom
- {
- MenuDataTable.Current.Coefficient=IapReadF32(CURRENTCOEADDR);
- MenuDataTable.Voltage.Coefficient=IapReadF32(VOLTAGECOEADDR);
- MenuDataTable.SysInfo.PWMCoe=IapReadF32(PWMCOEADDR);
- }
- while(1)
- {
- ;
- }
- }
复制代码
所有资料51hei提供下载:
Electronic load.rar
(358.83 KB, 下载次数: 777)
|