查看:
7712
|
回复:
10
|
参赛作品《STLINK V02加装供电+充电+电压电流测量+OLED显示+IO状态测试等功...
|
|
发表于2017-05-25 14:01:43
|
显示全部楼层
1#
电梯直达
【报名阶段需要填写的内容】 1. 参赛者姓名(必填项):钱海波 2. 单位或学校名称(必填项):浙江工业大学毕业 3. 当前职务或职称(必填项):硬件工程师 4. 参赛作品的名字(必填项):STLINK V02加装供电+充电+电压电流测量+OLED显示+IO状态测试等功能 5. 简要陈述您的idea和作品(必填项):STlink作为ST公司推出的仿真器,以便宜的价格,强大的功能深受广大电子工程师的喜欢,但是官方的V02版本没有电源输出能力,调试时必须另外供电,有时比较麻烦。因此想到了给STLINK V02版本加装电压输出功能,采用STM8S单片机设计,利用STM8S内部的PWM功能做同步整流DCDC方案,配合ADC检测电压电流做恒压和恒流功能,并且可以用来对锂电池或镍氢电池充电。电压电流测量可以用于观察板子是否有焊接异常或IO配置错误导致的电压下降,电流偏大的情况。配合比例放大控制达到uA级的分辨能力,可以用来观察目标板低功耗下的电流是否满足设计。当需要更高的测量精度时通过外部加装ADC芯片来实现。使用OLED来做各种参数和工作模式显示。IO状态测试功能可以快速的测试IO是高阻输入,上拉输入状态,推挽输出,开漏输出等,因为使用万用表往往很难直观的判断出测量是高电平时是推完输出还是被上拉到高电平。并且可以测量IO的输出内阻大小,因为STM8S的IO分为高输出能力和普通输出能力和只有OD输出能力,设计时必须反复核对手册确认,一个疏忽就会搞错,手册对IO的实际输出能力也只是提供一个大概范围。本设计可以方便的测试出IO的输出能力和特性。 6. 拟用到的立创商城在售物料(必填项):STM8S单片机,电阻电容,运放,OLED显示屏,ADC芯片,MOS管 电感,按键 ,插针,PCB等。具体型号需要等设计确认后得出 7. 拟用到的非立创商城物料或其它补充(必填项):超小体积的蜂鸣器 力创的压电陶瓷型的蜂鸣器体积还是大了点。 【作品正式发表(报名成功后进入设计阶段)需要填写的内容】 一、作品简介 例如,可以包括但不局限于以下内容: 1.作品的整机外观图片或焊接组装好的PCBA图片; 第一步设计了一块小PCB放入STLINK V02中,通过2X3插针焊接到STLINK主板上。STLINK的上盖需要挖一个长方形开口用来给OLED显示和按键,图放在下面硬件部分。 因为STLINK可以利用的空间实在有限,放入的PCB很小,大大限制了能加入器件的数量。
2.作品的研究背景、目的和功能、市场应用前景; 本设计面向单片机调试中需要供电的情况,电流异常情况增加了显示和电压输出功能,在这个功能上可以后续衍生: 下一步设计增加1uA到1A动态电流测试(采用分段式测量方法,比如分1uA到1mA一段,1mA到100mA一段,100mA到1A一段,所有段同时串联在电路中同时采样,通过软件算法合并后,可以提供的计数值在1000到4000左右,这样简化了动态电流的测试难度,并且可以提供在低功耗测试时需要的不同关注点电流:比如MCU低功耗时在100uA以内,此时只需要关注uA段读数,当MCU工作后,mA级的工作电流,这个时候误差几十个uA关系不大。外部RF模块等发射时上百mA的电流,误差1mA对整体误差也在1%以内。) 使用电池供电+大容量存储+ RTC,方便的对户外的各类低功耗电池供电类产品进行长期动态电流检测。这个就是一个移动版,低精度,低成本的数字源表。使用本设备代替原电池对设备供电,可以长期检测设备的现场运行电流消耗情况。克服数字源表价格贵,需要使用220V交流供电不方便户外测量等问题。 IO测试功能:因为单片机调试时需要判断单片机的输入输出状态和驱动能力等。如何测试实际IO的状态,IO有没有被静电损坏等问题,常规方法是使用万用表或示波器来观察IO状态。但是万用表和示波器都是高输入阻抗的仪器,对于IO内阻,IO处于浮空状态等要是不配合外部负载的话无法准确测量。这个设计完成的IO测试功能已经在原理上对常见的IO状态做了自动测试和判断。后续提高ADC精度,增加更多的IO+电阻和MOS+电阻可以对从上M到0.X欧姆的情况都可以测试,增加电阻测试的范围。尤其对于一个新的MCU,通过IO测试功能可以很快的的得到IO的各类输入输出能力参数。 IO测试衍生2:配合MOS+负电源+更高电压的正电源还可以对IO的极限耐受能力得到一个直观的测试,通过对比不同的MCU的IO的极限耐受能力,IO有无参数变化也可以做一个MCU选型参考。
3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现? 作品出发点是如何在小小的STLINK V02壳子内增加电压,电流显示功能,以简洁的电路,小巧的体积实现功能,后面增加IO测试功能,大大方便了对IO特性的测试。 电流测量功能+串口助手接收+数据导入EXCEL就可以简单快速的制作一个MCU运行电流曲线。并且这个电流是在以2K速度不停的累加了,比一般万用表更能准确的反映MCU 的运行情况。 后续衍生的大范围分段电流测试功能+自身电源供电更加适合现在各类电池供电物联网设备的长期电流测试。
二、系统构架图 用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。 习惯用PCB设计工具(使用AD9)画流程图,附上流程图:
三、硬件部分的描述 STLINK伴侣到现在已经设计了2版。 V01版当时设计只有可调 电压输出+OLED显示电压电流功能:
把背面标签的两头翘开拧下黄圈部分的2个螺丝就可以打开STLINK。红色部分是自己手动贴片+回流炉焊好的PCBA。 通过焊接2X3的插针把STLINK伴侣和底下的STLINK主板固定在一起。需要飞一根5V电源线。 把上盖挡住OLED和按键的部分挖掉,盖上上盖拧上螺丝,一个带伴侣功能的STLINK就改装完毕,上图为V01版本。
上电后从左到右,从上到下分别为STLINK输入电压,经过采样电阻后电压,同步整流输出电压,输出电流。
调试STM8S005K6。 以上是V01版,V01版当时只做了一个电压电流显示和OLED显示。后面想到再增加一些功能,按照自己调试的需要性排,第一个是IO检测功能,IO检测功能用到了2个强输出能力的IO和1个ADC接口。靠这3个接口实现IO状态检测。 V02版本是作为我第三期的电路设计的一部分一起打样的,回来后自己割板。
V02版直接在力创SMT掉了,省掉了自己大量的焊接时间 红色区域是STLINK V02版本。紫色区域是FE1.1S的hub+2片CH340G组成的USB转TTL和RS485,外带2个USB口输出。后续考虑STLINK重新换一个封装画的时候就使用HUB芯片+USB转UART都放进去,这样使用笔记本调试的时候占用1个笔记本的USB后对外还是提供了1个USB口和1个TTL或485口。黄色部分为3路高边电流采样分段后合并的大动态电流测试方法,待后续做验证。 1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的; 这不知道是不是本次设计最小的板子了。V2.1版还是基于能简单安装到STLINK 内部设计。 以上基于AD设计。
安装说明:小板子上的5V需要单独从STINK上的5V(可以从5V的电容上焊接好焊些)飞线取电。小板的输出也需要飞线焊接到STLINK的VCC(SWIM的VCC和JTAG的VCC(2个脚)都是相通的,连其中一个就可以了)
IO_TEST功能只需要把IO_TEST飞线到JTAG口的空脚).
2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。 上电后初始化IO,定时器,PWM,读取校准参数等,在TIM4的0.5ms中断中读取ADC值:内部基准,输出电压,输出电流,IO_TEST电压并且进行换算为实际电压,根据恒压或恒流要求来调整PWM占空比。在主程序中有几个任务根据格式的任务开关和执行频率来执行。包含发送给电流值,处理串口接收内容,刷新OLED内容,读取按键,IO_test等。 四、材料清单(BOM列表) 列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。 MCU:http://www.szlcsc.com/product/details_19317.html N+P MOS:http://www.szlcsc.com/product/details_50705.html 0.5A 0805保险丝:http://www.szlcsc.com/product/details_67536.html 100uF大容量贴片电容(空间有限,无法放入电解,本来设计使用47uF的,后来硬是塞下了100uF)http://www.szlcsc.com/product/details_24478.html 24M晶振:http://www.szlcsc.com/product/details_92116.html
如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。 五、软件部分的描述(选填) 如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。 源代码:使用IAR FOR STM8 V1.3版本STLINK 伴侣 V02版源代码.rar 全部开源。欢迎各位电子工程师来动手设计适合自己调试的xxxx 伴侣。 内部的变量和校准参数可以看data.c文件,里面的校准参数是手动利用STVP写到芯片内部EEPROM中的。基准电压,IO内阻等需要写入实测值。 O_TEST流程说明 IO_TEST部分原理图:
说明:原理图上NET最前面的B_是因为有多个不相关的设计画在同一个PCB上,为了防止相互之间因NET出现重复而电气连接,因此第一个电路板在前面加A_,第二个加B_,以此类推,以下说明时去掉前缀。
IO测试时使用了3个IO口
IO1_TEST:带100R电阻。因为IO本身的内阻相对100R不可忽视,因此计算时用到两个电阻值:(这两个内阻值根据实际测试值保存在内部的EEPROM中) RIO1LTest ;//IO1_TEST下拉总的内阻,PC7输出0内阻+100R RIO1HTest;//IO1_TEST上拉总的内阻,PC7输出1内阻+100R
IO2_TEST:外部总电阻为11K:(也根据实际校准后参数保存在内部EEPROM中) RIO2Test ;//IO2_TEST总的内阻,PA3内阻+11K
IO_ADC:在每个500us中断中测量电压并结合AIN7的读数(读取STM8S003内部的基准电压VCoreRef)计算出IO_ADC上电压。经过换算后IO电压不随MCU的VCC电压变化而变化。
下文中的一些名词解释: VCC电压:为V_VOUT_ADC:被测试MCU系统电压(由STLINK伴侣供电的话也是实际输出电压,不供电的话STLINK伴侣输出为高阻模式,对电源造成的电流影响小于1uA)。每500us结合基准电压计算一次。消除slink伴侣自身VCC变化带来的影响。程序中中CalcVout。 接近VCC电压为:>VCC-0.1V 接近GND电压为<0.05V。 下拉100R:表示IO1_TEST输出0电平。相当于被测试IO再接一个RIO1LTest电阻到GND。 上拉100R:表示IO1_TEST输出1电平。相当于被测试IO再接一个RIO1HTest电阻到STLINK伴侣的VCC(用CalcVcc)以下计算用要根据这些电压计算,消除STINK伴侣的单片机IO输出高电压和目标MCU的VCC电压不一致的问题,通过软件来简化硬件设计并增加测试通用性。下拉11K和上拉11K以此类推。 一个扫描周期:目前设计为25ms。就是在25ms内把打开的任务全部执行一遍:比如显示,串口接收判断,IO测试等。以下除【1】,【2】是顺序执行外,其他过程1个扫描周期只执行其中一个,保证IOX_TEST切换状态后下次测试时状态已经稳定。 RIOMode ;//1:高阻输入;2:输出(内阻1K以内);3:上拉输入;4:下拉输入;5:输出1;6输出0;7:分压电阻输入 测试过程如下: 【1】 保存当前电压用于显示,和后续计算 【2】 判断电压:有三种情况:1》接近VCC电压【3】,下拉11K电阻后再去判断。 2》接近GND电压【4】上拉11K电阻后再去判断。 3》剩下的一种情况就认为是中间电平【5】,下拉11K。 【3】 到这里已经经过一个扫描周期延时,保证IO状态稳定。 判断电压: 1》接近GND,说明IO为高阻状态,RIOMode=1;判断结束,恢复IO2_TEST为输入状态。【OK】 2》IO1Volt>IO2Volt && IO1Volt-IO2Volt >IO1Volt/12 //说明IO内阻》1K, 可以直接用11K计算内阻:RIOMode=3;//上拉输入,计算上拉电阻大小,恢复IO2为输入【OK】 3》内阻<1K,按照输出1考虑,IO2设为输入,IO1下拉100R【16】 【16】读取新的电压经过100R下拉后计算,输出1,用下拉RIO1LTEST代入计算得到IO输出高电平内阻:RIOMode=5;//输出1,内阻为输出1的内阻【OK】。 【4】 判断电压: 1》接近VCC电压,说明是高阻输入RIOMode=1;【OK】。 2》内阻小于1K,认为是输出0,上拉100R后去判断【17】。 3》RIOMode=4;//说明为下拉输入,计算下拉电阻。【OK】 【17】通过上拉100R电阻后,计算输出0的内阻,RIOMode=6;//说明为输出0【OK】 【5】 第一步中为中间电平,下拉11K延时后,现在开始判断: 1》接近GND为高阻输入:RIOMode=0【OK】 2》还是中间电平认为是电阻分压:RIOMode=7;//说明IO有上下拉电阻,通过计算得出上下拉电阻值:RIOHRes//计算得到上拉电阻值 RIOLRes;//计算得到下拉电阻值【OK】
最后整理IO状态和测试电阻数据,放串口缓存中,发送测试状态。 六、作品演示 请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得5分,具体详见活动规则。 https://v.qq.com/x/page/b0540u8hu0e.html 七、总结 例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。
以上STLINK 伴侣V02版软硬件全部开源,本来还想利用IO_TEST1和2的TIM1_CH2,TIM2_CH3(为了空出TIM2,把原来由TIM2产生0.5ms中断特意改为了TIM4)做V-I数据输出,配合excel画图就可以得到一个直观的V-I图(因为很多时候需要测试LED,二极管的V-I特性来确定不同电阻或电流下的压降,硬件设计中经常需要涉及到)另外还可以设计一个测试电流可调的通断档(比万用表上的要高级使用的多,可以设置测试电流,判断电压)最近工作生活太累了,等下一个版本再说了。可以睡个安稳觉了。 |
|
发表于2017-05-25 14:49:11
|
显示全部楼层
2#
OK!报名成功! 您可以开始进行设计了。 |
|