查看:
33845
回复: 45 |
参赛作品《高精度电源》
本帖主对外承接开发,
联系作者
|
|
该帖子为嘉立创认证过的开发案例,案例是对作者实际开发产品的介绍,您可以通过这些案例去找到和自己产品相关的一些方案或解决途径。
查看更多案例 >>
发表于2017-06-06 15:35:25
|
显示全部楼层
1#
电梯直达
【报名阶段需要填写的内容】 1. 参赛者姓名(必填项):张孝贤 2. 单位或学校名称(必填项):绵阳智芯科技有限公司 3. 当前职务或职称(必填项):研发工程师 4. 参赛作品的名字(必填项):高精度电源 5. 简要陈述您的idea和作品(必填项):当前使用的电源的电流和电压都不是高精度的,于是诞生了一个自己做高精度电源的想法 6. 拟用到的立创商城在售物料(必填项):STM32F103vet6,REF3030 7. 拟用到的非立创商城物料或其它补充(必填项):TFT LCD 【作品正式发表(报名成功后进入设计阶段)需要填写的内容】 一、作品简介 例如,可以包括但不局限于以下内容: 1.作品的整机外观图片或焊接组装好的PCBA图片; 2.作品的研究背景、目的和功能、市场应用前景; 3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现? 实物图片如下: 开机图如下: 电压电流设置界面如下: 恒流模式界面如下: 自己日常用的电源是GPD-3030D,显示界面只有一个,通过拨码开关选择显示电压或者电流。而且电压显示只精确到0.1V,电流显示精确到0.01A。 总是感觉到看显示不方便,但是看很多高精度显示的电源要么价格很贵,要么也都是LED显示。于是想到了自己做一个直流模块的想法。 该模块能够在常规 条件下替代高精度电源。输入部分使用一个30V的电源输入即可。在模块的屏幕上,可以观察输入电压,输出电压和电流。 整体成本比商业高精度电源的成本低很多很多,很适合电子爱好者业余条件下、低成本条件下替代高精度电源,市场有很大空间。 模块使用了5寸液晶屏显示常用参数,可以在一个屏幕上显示常规关注的各项参数。 屏幕使用电阻触摸屏,方便用户在使用的时候,符合平常的操作习惯。 总结: 本模块可以在一定程度上替代高精度电源。而且整体成本基本只有高精度电源的1/10(以GPD-3303S为例,没计算Tek,Agilent等国外品牌)
二、系统构架图 用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。 三、硬件部分的描述 1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的; 2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。 原理图如上连接所示 实现的过程其实很简单: 1.上电,系统通电 2.设置电压电流,DA通过设置的值,输出合适的DA值。 3.根据设置的值,电源芯片输出合适的电压 4.系统随时采集输出的电压和电流,根据采集到的情况,进行实时调节 PCB截图如下:
PCB 连接如下: 四、材料清单(BOM列表) 列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。 如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。 主要物料清单如下: 1 ADS7843 U12 ssop16,http://www.szlcsc.com/product/details_9473.html 五、软件部分的描述(选填) 如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。 关键代码 如下: void adj_output(void) { static int amp_cnt=0; static unsigned char amp_limit=0; amp_cnt++; if(info.amp_read>set.pset.amp*10 && amp_limit==0) { info.vol_set--; ltc2600_out(0x00,info.vol_set); } else if(abs(info.amp_read-set.pset.amp*10)-10>0) { if(info.vol_read>set.pset.vol+1) { info.vol_set--; ltc2600_out(0x00,info.vol_set); } else if(info.vol_read<set.pset.vol-1) { info.vol_set++; ltc2600_out(0x00,info.vol_set); } amp_limit=0; } else { if(amp_cnt>abs(info.amp_read<set.pset.amp*10)*10) { amp_cnt=0; amp_limit=1; if(info.amp_read>set.pset.amp*10) { info.vol_set--; ltc2600_out(0x00,info.vol_set); } else if(info.amp_read<set.pset.amp*10) { info.vol_set++; ltc2600_out(0x00,info.vol_set); } } } }DA输出部分代码如下: void ltc2600_write_byte(unsigned char b) { int i=0; for(i=0;i<8;i++) { DACLK_LO(); if(b&0x80) { DASI_HI(); } else { DASI_LO(); } b<<=1; DACLK_HI(); } DACLK_HI(); DACLK_LO(); } void ltc2600_out(unsigned char ch,unsigned short data) { DACS_LO(); DACLR_HI(); //delay(1000); ltc2600_write_byte(0x20|ch); ltc2600_write_byte(data>>8); ltc2600_write_byte(data&0xff); //delay(1000); DACS_HI(); }整体工程代码如下: 六、作品演示 请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得5分,具体详见活动规则。 演示链接如下: https://v.qq.com/x/page/p0520bx6d17.html 七、总结 例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。 精度计算: 通过视频可以看出,设置输出5000mV,实际输出5025mV,误差为(5025-5000)/5000=0.5% 设置输出24000mV,实际输出24078mV,误差为(24078-24000)/24000=0.325% 电压总体输出误差较小 设置电流22mA,实际输出22.267mA,误差为(22.267-22)/22=1.2% 整体大多数使用的是1%精度的电阻,部分为5%,输出效果能够有这样,个人觉得很不错了。
DIY体会: 因为第一次搞电源这个行业,总体没啥经验,所以diy过程中碰到不少的问题。 第一个问题,在处理反馈的时候,没有加比例电阻,因此调节范围很窄。 然后,因为没考虑到ADC的输入阻抗,因此,采集电流总有偏差。 经过艰苦的排查问题,总算把这些都给解决掉了。 当前只实现了电压设置,电流设置,电流限流,输入电压显示等功能。 后期还准备利用TFT的优势,增加电压,电流的实时记录功能,后期可以通过用户选择,查询某段时间的输出电压和电流曲线。 最后: 感谢嘉立创,提供了这么好一个展示平台,让我有机会施展一点拳脚。 同时,也感谢ST,提供了这么好用而且便宜的芯片。 |
|
发表于2019-12-20 16:00:59
|
显示全部楼层
46#
请问楼主,可不可以留一个连方式。
|
|