秀操作:从硬件到软件,一个外包产品的设计过程
扫描二维码
随时随地手机看文章
网站:bbs.21ic.com
这个设备需要对工业电源的输出进行OCP,OVP,OTP检测等相关功能,并对相关测试量的信息实时显示在数码管(由于是几年前的设备,液晶比较贵,只能选择数码管的)。由于客户给出的信息比较宽泛,所以设计起来比较自由,首先完成基本参数的定义,完成原理图和PCB的设计。
一,基本参数
1.额定电压:220V 2.额定频率:50Hz 3.额定功率:20W 4.输入信号:由连接器接到相应的检测负载 CN1:电源负载1温度传感器 CN2:电源负载2温度传感器 CN3:电源负载1电流检测信号 CN4:电源负载2电流检测信号 KEY1:Stop按键 KEY2:Dec按键 KEY3:Inc按键 KEY4:Star按键 5.输出控制: SEG1:温度显示数码管 SEG2:电流显示数码管 CN5:电源负载1 PWM控制信号 CN6:电源负载2 PWM控制信号 CN7:散热风扇PWM控制信号 CN8:水冷泵PWM控制信号 led1:关断指示灯(红色) led2:电源负载1正常工作指示灯(绿色) led3:电源负载2过热指示灯(黄色) led4:电源负载1正常工作指示灯(绿色) led5:电源负载2过热指示灯(黄色)
相关的输出控制单元,比如散热风扇,水冷泵,数码显示管,都是安装在客户工业电源的外观结构上面,用线束和开发的控制板连接到一起,随后和客户定义了这些控制单元的DC电压,开始进行原理如的设,使用AD绘制。根据相关功能的需求,使用STM32F103C8可以满足需求,而且也没有overdesign,基本所有的外设都用上了。
AC-DC电源部分TNY278为电源芯片,输出DC-12V,随后选用LDO输出DC-5V。虽然12V转3V3的压差毕竟大,但经过计算3V3的耗电50mA左右,LDO芯片功耗越过400mW左右,选用TO220的插件封装,再加装散热片可以满足要求。以下是电源部分的电路图
关于layout图纸参考意义就不是很大,由于我们是小样产品,不会有EMC和安规认证方面的要求,所以画的图纸就很粗糙,就不在这里展示了,哈哈。完成了layout后,发到大家都喜欢打板的厂家-嘉立创,五天后就收到了板子,手工焊接完成,由于电源是很成熟的方案,只要元件不焊接错误,基本可以保证一次输出成功。果然测试输出电压12V,5V,3V3,一次过,没有什么问题。客户也不对纹波,动态响应性,环路稳定性有指标性的要求,只要求功能正常就可以。所以对硬件就没有过多的调试,就开始进行软件的编写。
关于软件怎么实现,这就要安装客户的要求详细实现,通过和客户多次讨论,了解到这个控制板需要实现的控制逻辑。
二,控制逻辑
以下是相关外设对软件的定义:
1. 控制芯片:STM32F103C8T6
2. 温度检测:
(1)温度传感器CN1和CN2实时检测功率负载1和功率负载2散热片的温度,通过AD采样转换后,对应R-T表计算温度,将当前较高温度显示在数码管SEG2。
(2)温度传感器CN1和CN2实时检测功率负载1和功率负载2散热片的温度。当采集温度高于设定安全温度(85℃),对应路黄色指示灯亮(led3、led5),对应路PWM输出为0,对应路绿色指示灯灭(负载2、led4),进行过热报警和保护,并将当前较高温度显示在数码管SEG2,数码管SEG2按照亮0.5秒关0.5秒的频率闪烁提示。
(3)当温度降低至安全窗口之下(55℃),取消报警状态,PWM按之前设定输出,数码管和指示灯恢复正常显示。
(4)根据CN1、CN2所检测当前温度,应在CN7、CN8输出适当PWM波,调节散热风扇和水冷泵转速,以维持功率负载1和功率负载2温度在适当范围。
3.电流输出:
(1)按KEY4,CN5、CN6按照设定电流值和“PWM-电流对应表”,输出一定占空比PWM波。
(2)定期(10ms)检测输入CN3、CN4当前电流值。当某路电流和设定电流值有偏差(超过±100mA),将提高或者减少该路(CN5、CN6)输出PWM波占空比,从而保证电源芯片输出恒定电流。
(3)按键KEY2提高功率负载1和功率负载2电流设定值,数码管SEG1以0.5s间隔闪烁显示设定电流值,CN5、CN6输出仍按照之前设定电流进行输出和反馈调节,然后按下KEY4,修改CN5、CN6 PWM输出,同时开始反馈调节。
(4)按键KEY3降低功率负载1和功率负载2电流设定值,数码管SEG1以0.5s间隔闪烁显示设定电流值,CN5、CN6输出仍按照之前设定电流进行输出和反馈调节,然后按下KEY4,修改CN5、CN6 PWM输出,同时开始反馈调节。
(5)KEY2或KEY3最后一次按键后,10秒内不按下按键KEY4,当前按键KEY2和KEY3设定无效,数码管SEG1停止闪烁,显示之前设定值。
(6)按下按键KEY1,停止CN4、CN5输出PWM波,也即无电流输出,负载1点亮,负载2、led4灭,led3、led5仍按照温度检测规则显示。
(7)关闭电流输出后,按下按键KEY4,将按照当前设定值,CN5、CN6再次输出PWM波,同时开始反馈调节。
俗话说工欲善其事必先利其器,完成了软件控制逻辑的定义,就可以具体进行软件代码的编写。
三 软件编写
使用STM32的开发工具进行代码的编写,借鉴原子哥的例程,在相关的原子哥的例程上面开发,相信很多人都有这经历,毕竟站在巨人的肩膀上面可以看得更远,哈哈;
在这个产品中,用到ADC采样,PWM调节,数码管控制,按键扫描控制等相关功能,所以以下的子函数需要用到,具体的代码就不在帖子中就一一列出来,随后会作为附件呈现出来的,
对相关子函数进行调试,实现了对应功能后。就开始Main函数的编写,调用子函数实现软件控制逻辑中要求的功能。具体代码如帖子中呈现出来的,由于当时完全是仿照例程写的,所以写的不是很规范,但是最后产品是完整跑起来了,作为送样的产品也达到了要求的,哈哈!
main函数也有些长,贴了三次完整的代码,网页都被卡死了,随便贴两端代码做个示例的,其他code只能作为附件上传的.还有相关的数码管,温度传感器的资料也附上,供有需要的小伙伴使用。
完成代码的编写,烧录进电路板后,相关功能符合要求。生产了十几套产品,送给客户展示,符合要求了。
这个产品从硬件到软件的设计都不太复杂,在学校也有足够多的时间慢慢琢磨,所以做出来的产品没有出纰漏。但这仅仅是展示样机,还不能算消费的产品,所以有差距的。这里呈现仅仅给大家做一个参考的!
本文系21ic论坛网友kk的回忆原创,资料下载请点击“阅读原文”内下载
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!