需求
- DC-DC模式的小型数控电源
- 输入电压9 ~ 24V,输出6 ~ 20V,最大电流3A
- 结构简单,清晰
- 控制上不准备采用PWM来控制电压(个人觉得稳定度和风险度不符合要求),而采用标准的DAC来控制
基础分析
- DC-DC部分采用广大电子爱好者最熟悉,资料最多的著名的3R33模块
- 在mcu的选型上,本想用原来的stm32F100c8t6,但是发现F100的价格已经上天了,后来经过筛选,发现F072有2个DAC,而且价格也不贵,因此决定采用072搞
- 屏与辅助单片机采用串口通信,这样E1 ~ E6 端口空余,可以和T12白光烙铁集成
通信协议
上行数据
辅助单片机将采集到的AD值送到屏幕:
app.da("adi|adv|ad24");
串口每秒1次左右发送此字符串,注意字符串后面有0d0a(回车换行),因此这个也是标准的cmd模式调用;
其中:
- adi 是电流的AD值 0 ~ 4095
- adv 是电压的AD值 0 ~ 4095
- ad24 是输入电压的AD值 0 ~ 4095
下行数据
下行协议主要控制辅助单片机设置DAC,控制IO等操作,我们俗称动作指令:
[DAV:1234] 设置电压 [DAI:1234]:设定电流 [SON:1]:设置开关
指令全部被括在半角中括号中,这样可以防止一些调试信息的干扰,在中括号中分为两个部分,冒号隔开,前面的是命令描述,后面是值,因此:
- 当收到[DAV:1234] 辅助单片机需要执行将电压DAC的值设置成1234
- 当收到[DAI:1234] 辅助单片机需要执行将电流DAC的值设置成1234
- 当收到[SON:1] 辅助单片机需要执行GPIO接3R33的EN电平为高电平,3R33有输出,当收到[SON:0]时,低电平关闭3R33的输出;
- 为了在一个指令中同步完成多个设置,系统允许:[DAV:1000|DAI:2000]这种组合指令,这种指令要么不执行,要么接收完一同执行。