KeyFansClub

首页 » - 特色讨论区 - » 土豆星 » 终于结束了,这长长的项目
xish - 2011/3/18 15:30:00
某电子秤检验系统……到这个礼拜终于是告一段落了,弄了半年呢……
废话不多说,上图:

工作环境:


某品牌的电子秤:


某人半年来的成果:


背面,焊工不好请见谅:


一块辅助板,其实做了好多:
水羊 - 2011/3/18 15:32:00
哇,這是自己做的電子秤!?
好厲害
我這裡都只是做小零件
(遙控車和音響喇叭)
焊接有做過,不過你焊的比我漂亮多
嗚哇....這電子秤越看越佩服
===============
就算單純的電路板
那也很厲害了
畢竟電路板才是主角
xish - 2011/3/18 15:35:00
接下来附上的是自己正在补充的工作笔记,老实说半路出家真的很花精力和时间:


第一、二周(9.1~9.5,9.6~9.12):
接到项目后的第一步是分析所要用到的工具。根据学长的推荐,选用了ATMega32L作为主芯片,由于芯片的变化,以及要恢复过去的记忆,重建实验平台。因此花费了不少时间。首先当然点数手头拥有的东西,发现除了工具(万用表烙铁示波器之类的东西)之外,别的东西几乎是全部没有……期间反复地去电子市场淘货。又发现自己惯用的曾氏电路板(其实就是连接线多一点的双面实验电路板,以前培训电子技术和焊接技术的教授推荐使用)买不到,于是退而求其次地求普通的实验电路板,因为说其实是可以用焊锡做短连接的(就是1~2个焊盘的链接),买了两种板子(单面板焊盘两两相连,还有一种双面板)。
附旧实验室的“遗产”:
1. 7~8块实验电路板(用过的,肯定不能用来上产品)
2. 电烙铁两把(25W,30W,一把一看就是手搭的,但没想到最后还是这把好用)
3. 乱七八糟的一坨线(没错,就是坨,0.5cm直径,多股线,搪锡困难,但导电性还是没有问题的,至少护套没有氧化变形什么的)
4. 螺丝刀两把(后来都弄掉了)
5. 示波器一台(好用,很给力,但是没有探针)
6. 指针式万用表一具(后来被压坏了,悲剧)

在下载线的选择上碰到了不少问题,厂家生产的下载线价钱比较贵(200+,原装的更加贵,要400+),最终选择了一条山寨的JTAG下载线,大约90元左右。没有想到这条线居然是后来很多问题的源头。
找了一本相关的书来看,《深入浅出AVR单片机》,内容很实用,基本上电源电路和最小系统都是照图施工的。图纸没有什么问题,倒是在具体施工时碰上了一些问题。
上一次焊接过程中虚焊和飞线脱落的阴影仍旧在我心中徘徊,因此这次焊接的过程中始终十分小心,飞线留足余量,尽量多使用焊盘,绝对不在一个焊盘上接两条线……从事后来看,在随后的半年多时间里,基本上没有碰到什么因为焊接质量而造成的电路问题。除了电源插座的安装费了不少力,焊盘孔太小插不进去,钻孔的话又怕把焊盘弄掉。最后分了两根线出来才搞定这个问题……这件事情也给后来留下了隐患。

总而言之,这两个礼拜主要是买东西,整理工具和焊接电路,具体的最小系统调试工作是第三周进行的。------------------------------------

第三周(9.13~9.19):
最小系统搭建成功了。然后有硬件也就需要安装软件,电路设计用软件DXP本来是有的,但是后来重装系统的时候丢了,又去下了一个发现不好用,然后去尝试了一下旧有的移动到移动硬盘中的DXP,结果居然还能用!神奇- -
老板从图书馆借了两本应用实例有关系的书,一边看一边在实际上进行调试。AVR调试系统用CodeVersionAVR(编译器)+AVR Studio(下载+调试器)联合调试。
示波器因为没有探头,去买了一对来,但是发现居然接上板子却看不到信号,去问了曾老板才知道——“你有没有接地吧?”Orz……
换上探头发现确实能够看到信号了,但结果好像下载线有点小问题(稍后才发现焊接发光二极管的方向搞错了- -),要卸掉焊点没有必要的工具(吸锡器),于是只好先晾着。这个时候周军提醒我可以先用软件模拟的……XD我这才想起来,于是去下了个Proteus进行仿真调试,试验了书中的几个例子。看上去是不错,但是缺乏联合调试的手段(指CodeVersionAVR和Proteus的联合调试),于是就去钻研这个去了- -花了不少时间,然而实际效果不大XD。


------------------------------------

第四周(9.20~9.26):
经观察,电子秤系统的电子系统部分主要由五块:
1. 交流变压器和蓄电池。
2. 主电路板,也是单片机所在的地方。
3. 数码管屏幕,有两组,通过排线插头与主电路板上连接,主电路板上是一组2*14的插针,没有防呆口设计。
4. 触摸式按键阵列,通过排线插头与主电路板连接,主电路板上是一组2*5的插针,没有防呆口设计。
5. 压力传感器,四根导线连接到主电路板的接线柱上。
其实电子秤电源本身是双工的,当有交流电时使用交流电(并给蓄电池充电),没有交流电是由蓄电池供电。
屏幕信号由段选信号和片选信号两个部分构成(典型的动态扫描电路)提取部分的方案暂时定为直接读取数码管信号。当然片选和位选信号都要读取。
开始按照方案甲进行工作,然而发现如果要做实验,电路板数量略显不足,“遗产”里确实还有一些废板可以用。但是没有吸锡器。插线的数量也不够,于是去北京东路补充货物(插针和DIP插座),顺便租用了曾老板的吸锡器使用。
接下来就这样搭建了第一块实验性电路板,自己准备了几个LED数码管以及插座和额外的插针,用来链接主电路板到屏幕的插针(因为自己的板子上可以多连接插针,从而调试具体的信号),结果发现读不到数码管的信号。
实验被迫陷入停顿状态,因为读不到信号让我有点不知所措,随后老爸说其实最重要的还是要搞清楚原电子秤的设计图纸……这确实挺花时间的,一边用DXP画图,一边用万用表构建整个图纸。


--------------------------------------

第五、六周(9.27~10.7):
构件图纸的工作不是很顺利,一方面也是因为人比较懒的关系,总而言之多花了一点时间,国庆节不得不加班干活。
原定的世博会志愿服务前完成整个工作计划的,现在看来估计是赶不上了,要在世博会结束之后继续工作了,通常这也意味着工程进度间会出现断档和遗忘,虽然这是不愿意看到的,但也是没有办法的事情。
经过国庆节的加班之后终于基本确定了整个电路图的结构,电子秤原本的主芯片是STC11F05E,一个只有20个引脚的简化MCS-51架构的单片机(也就是说实际上只有16个I/O端口,而且复用率很高)。其数码管的驱动是通过一个名为BL1616S的数码管驱动芯片来实现的。这个时候忽然发现没有办法从驱动芯片的输出口读到片选信号了,而且即使是接到原来的数码管阵列上也发现有显示异常的情况发生。手指轻触BL1616S的表面发现芯片过热(非常烫,属于可以煎蛋的那种),当时并不明白到底发生了什么事,老爸告诉我说要先检查周边电路是否有短路情况存在,经过一轮检查(其实没怎么用心)
然而后来才发现由于电气知识的缺乏,我却忽略了对数码管的电流进行限流。误以为数码管本身是电平控制的,实际上这个驱动模块(大多数的驱动系统都是这样)对数码管本身是电流控制的。这样的做法的结果就是驱动模块的一个片选信号点(预定就是吸收电流的点)吸收了两倍的于额定电流的电流从而被击穿,导致整个数码管驱动芯片BL1616S被部分击穿(这些都是后来才知道的),还好和主芯片STC11F05E之间有一个BL1616S的屏蔽,因此烧毁的只是不需要编程的BL1616S,如果不是这样的话,事情恐怕更加糟糕。
唉,老爸曾经提醒过我说要注意数码管是电流控制的还是电平控制的,我没放在心上,果然不听老人言吃亏在眼前……
随后老爸跟我说自己去买一个BL1616S来替换,行那就买一个,但是这几天赛格那边是关门的状态……没办法只好等待。


---------------------------------

第七周(10.8~10.15):
逛了好几次电子市场都没有办法找到这个名为BL1616S的数码管驱动芯片,根据生产商缩写,认为BL=>上海贝岭,于是上贝岭的网站,他们说这个型号的芯片只接受订货(数量1000+,后来才知道其实他们不产这个型号的芯片,BL是指另外一个广东的公司)。
当然芯片其实只是局部被击穿,和主芯片的通信还是好的,于是这个是我就想到了备用方案乙:根据BL1616S的芯片资料,其与主芯片的通信方式是一种叫做I2C的通信协议来进行的,如果能够截获这股通信信息,那么不就等于做到成功截获了显示信号信息?
I2C通信是一种半双工的串口通信协议,传输速度很快因此估计单片机处理速度跟不上(而且示波器也看不到),但是曾老板说可以先导入一个EPROM中去(又去赛格买了一组AT24C01和02),但是讨厌的是它这个半双工是总线制的,每次呼叫总线上的设备需要拨总线号,每个不同设备的总线号是不同的,而且固化好了没有办法修改。结果白白在这个上面浪费了不少时间。而且到最后也没有搞明白I2C通信是怎么回事。
关于地线方面也有不少问题,电子秤内部总共有两个稳压器,这就使得实际上电子秤内部有两个不同的电平VSS(8V)和VCC(5V),传感器的放大电路和单片机本身用的是5V,而BL1616S和数码管则使用8V的电平进行驱动。同时本检验系统使用的是独立的电源,地线不共地往往就会导致很多信号不准确,然而共地的时候有搞不明白到底为什么会有漏电现象发生(后来查明是BL1616S惹的祸)。
总而言之,一片混乱。


-------------------------------

第八、九周(11.1~11.7 11.8~11.14):
这三周很大程度上都在忙开题报告的事情,根本没有把注意力放到项目中去。因此进度很慢,加上中间两周时间的断档。显得没有什么斗志。因此进度就可以说是没有什么进展。
要说期间做过什么的话,首先说是新装备抵达:新的焊接头和吸锡电烙铁都已经就位,于是把坏掉的BL1616S换成了新的。应该说主要的工作都投到BL1616S和I2C通信上面去了- -,总算是备用的BL1616S从资方那边过来了。换了新的芯片后发现I2C通信的数据还是没有办法用示波器读取,心理有些压抑,但也没有办法。曾老板说要用带存储的程控示波器才能准确地得到其I2C通信协议的协议信息。我觉得有些绝望了……


-------------------------------
supertable - 2011/3/18 17:14:00
看着这个让我想起了咱学工的时候= =咱当是只做了辆小车。。
现在看看咱和专业的还差很远啊。。。
光~影 - 2011/3/18 18:27:00
居然不自己做板子全部用飞线。。
最后那幅图那种芯片直接焊不会烧么
xish - 2011/3/30 18:07:00
第十、十一、十二周(11.15~11.21 11.22~11.28 11.29~12.5):
心情渐渐从混乱回复到平静,冷静下来后发现I2C通信还不是我等能够处理的东西(连从EPROM中读数据都搞不定的家伙……)。最后还是将方案移回到方案甲。即从数码管的显示引脚上读取信息。
再次分析数码管驱动电路,包括在电子秤的显示用LED在工作的时候测量其段选和位选信号的波形,我们最终得到了一个悲剧的结论:这个电子秤的显示电路就是电流驱动的,这正好是我否决过老爸和曾老板的提案……
不听老人言,吃亏在眼前。
峰回路转,了解了这一点总算是有办法解决了——当然最后还是去问曾老大,“你早该来问我了,这种问题用个光电耦合器就能搞定了”。

曾老板推荐了TLP521,确实给力,一下子就把片选信号的电流问题搞定了。但是我在连接上犯了一点错误。
实际上片选信号是电流流入的方向,但是我将它接到了光耦基极的高电平位置,把它当做驱动信号处理(也就是把它当做有电流流出的信号,可以驱动芯片用的)。
这样布置的话段选信号还能够读到信号,但是信号却并不是那么稳定,而片选信号却一点都读不出来,特别是当我在读取片选信号的时候,居然会发现对应的段选信号的波峰居然会下降,结果本来可以读出的段选信号也不见了……
怎么办?我一开始是一点想法都没有……后来忽然之间想到其实光耦本身不也是一种发光二极管么?如果我就像实际连接数码管的电路那样,把段选信号接在光耦基极的高电平位置,把片选信号接在光耦基极的低电平位置不就可以了吗?
单个管脚的测试达到了效果,但是问题是我们总共要处理5*7=35个管脚。ATMega32总共就只有32个IO口,这样IO口就不够了。情急之下我忽然想到其实我们并不需要同时检测所有的二极管,虽然说电路是用7段数码管去显示,但是实际上我们只需要检测其中的5段就可以判断当时该数码管显示的数字了。根据这样的思路,其实我们只需要用5*5=25个管脚的信号,勉强算是可以用了,但是如果这样做预定要调试时显示的所需要的驱动电路没有了(即使是动态显示,也需要有7+5=12个IO口,前面已经占掉了25个IO口,这样一来IO口就不够用了。
这时忽然想到可以用数码管驱动芯片来帮助显示工作,反正备用的BL1616S数量很多,有一定的富余,而且为了读取BL1616S的I2C通信方法先前准备过一块的板子(上面甚至还包含了数码管的插座)。但是临到要把芯片焊上时才发现一件很尴尬的事情:BL1616S的引脚宽度和我手上的实验板焊盘之间的间距不一致- -。悲剧死了……
悲剧也没有办法,发挥一不怕苦,二不怕短路的精神(- -),从曾老大那边高了一组旧排线过来做连接线,废了老大劲终于把芯片链接到了电路板上,但是随后的实验却发现BL1616S没有办法启动……白干了- -
而且屋漏偏逢连夜雨,这个时候第一烙铁坏了!更悲剧的是,把备用烙铁插上后突然听到了“砰”的一声,然后实验室的其他兄弟冲着我大叫“哥……”。我知道肯定是短路了,好在现在的拖线板上都有保险丝,实验室本身又有触电保护系统,否则就是整个实验室大楼的悲剧了。
在众人鄙视的眼神中我只好灰溜溜地出去买新的拖线板……XD拖线板居然比电路板还要贵- -
事后检查了两个电烙铁(拼装的就是好,坏掉可以拆,如果是整体式的烙铁坏了就悲催了,得整个换),第一电烙铁是发热的电热丝损坏了,不得不去换个新的,而备用的电烙铁则是烙铁的插头部分接触不良导致的短路,其本身的发热系统倒是完好的。重新绕了一下,再组装好,但是颤颤巍巍的不敢再上电了……没想到上电以后居然能够用,但是还是后怕,得想办法把老的电烙铁修好。毕竟没有烙铁不能干活不是么……也正好到星期五了,把烙铁带回家去再说。

这就使得原本应该从片选信号输出口流回BL1616S的电流分流了一部分到光耦上去(光耦本身是个发光二极管),结果反而影响了数码管本身的显示)。结果就是段选信号没有什么问题确实能够读取到信号,但是片选信号就悲剧了,一点信号都读不到,而且会应为电流分流的缘故影响到段选信号的波形。
ypf - 2011/3/31 11:26:00
我是路过打酱油的:D其实现在pcb打样50元一款很适合lz……节约时间和尺寸……具体参见jlc……
然后很好奇lz用的什么ad……
电子秤的ad之前有试过一个一秒只有不到10次采样的……后果就是刷新慢……不开过采样又数据末位抖的厉害……
还有……其实3个io就可以驱动1602lcd了……不必用数码管加驱动芯片节约io资源……
至于电池部分其实很简单……一个牛出来整流滤波317稳压到7v多后面接电瓶(没317可以用7805垫高基准使用……没差……)然后用个1117之类的ldo稳压到5v即可……然后如果要智能一点可以用一个io或者一个ad做掉电检测……不做也没事……
最后……祝lz早日完成电子秤……:D
xish - 2011/4/4 21:29:00
回ypf:1. 我们要设计的产品是电子秤的检验系统,电子秤本身不是我设计的,是工业化生产的产品,主芯片STC11F05E,IO口不足只能那样设计。
2. 硬件布线什么的……不好意思DXP水平不足,根本不会布线怎么制板?

第十三周(12.6~12.12):
烙铁修好了。人也稍微冷静了下来。联想到光电耦合器在电气特性上和三极管十分类似,于是又翻看了三极管相关的资料,老实说,看得云里雾里的。在这种云里雾里的状态下我尝试了几种不同的接线方法,无一成功。无奈之下又去询问曾老板。
曾老板用一种很鄙视的眼神看了看我,然后说,“笨啊,你就不知道数码管电流控制的话是段选信号输出电流,片选信号吸入电流么?你这边是片选信号,吸入电流,应该接在光耦基极的低电平位置,而且为了保护电路,最好在接一个限流电阻。”
“啊……”
“恩,还有你那个段选信号就用不着光耦了”
“但是信号不稳定啊……”
“不稳定?接个非门就可以了,如果有问题就用带施密特触发器的7414”

雷倒……回去一试,果然神奇,好用了……一刚!
单数码管提取的程序代码早就写好了,在实验板上的测试通过。
接下来就应该处理段选信号了,按照曾老板的想法接了一组非门。好像是7404就能够搞定了,于是决定下周就正式上板。


第十四周(12.13~12.19):
按理说话就数码管信号采集电路硬件方面的设计工作也就基本到此为止了,那么首先就要把这部分电路从辅助板接回到产品用的电路板上。这个工程说说很简单,照着焊接就是了,但是没有估计到其后我还对电路做了修改,因此吃了很多苦头。
首先就是上板之后段选信号忽然读不到信号了,用示波器查看,信号似乎是上飘了(本来低电平是0.5V的,现在上飘到大概4V左右)。于是去买来了7414,但是还没有接上,就发现电路如果接在一个特定的如果好像是输入端的接地没有处理好,结果接上地以后发现如果只采集一个数码管,段选信号十分正常,但是要多接几个管子的话,信号马上就变得不稳定,为此我怀疑过接地的问题,原本信号出来后接一个电阻,然后电阻的接地是连在一块的。为了剔除掉接地与稳定的问题,我尝试把每个电阻都独立接地(其实就是分别引线出来接到地线上)。结果信号本身是稳定了不少,但是问题依旧。
无奈之下再用示波器查看片选信号和段选信号的波形图(测量点:单片机引脚),发现其实片选信号要比段选信号来得大那么一点点,把段选信号完全地“包裹”在了片选信号的范围中。虽然我们的程序也是先采集片选信号,然后再采集段选信号的,但是单片机程序的处理速度却比片选信号预留的时间余量大得多,这样一来就会发生读到片选信号选中某个二极管时段选信号上没有任何信号的尴尬情况。由于人的视觉暂留现象,肉眼是感觉不到这个问题的,但是计算机却能感觉到。
我当时问曾老板:“为什么片选信号要快一点呢?”
曾老板一脸囧样:“这样设计的目的当然是为了保证在动态显示的过程中不留下残影啊……”
“厄……也对哦……那要怎么解决呢?”
“……”这次连周围人也露出了“碰到SB了”的眼神,曾老板更是一头一脸的黑线“多采集几次后去最大的那个不就可以了么?”
好吧……没有最SB,只有更SB。
下周再进行软件程序方面的工作了。
顺便再补充两张图好了:
1. 本项目的目标系统(电子秤)的系统结构图


2. 工程目标的结构图
1
查看完整版本: 终于结束了,这长长的项目