佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

12
返回列表 发新帖
楼主: pic

【分享】精彩博文欣赏

[复制链接]
发表于 2-10-2013 09:06 PM | 显示全部楼层
pic 发表于 1-10-2013 11:46 PM
作者: 黄 利
2013 年 09 月 26 日 by HuangLi       

我最认同这
3. 如果团队的整体技术水平是6分(满分10分),但候选人是个10分,你觉得他会很乐意跟水平是6的人合作吗?就像把詹姆斯请到cba来打球,即便你付得起薪水,詹姆斯自己也会很郁闷,在他眼中“不怕神一样的对手,就怕猪一样的队友”。
要麻聘请5至7分的,不然就自我升级。
如果没有本事,跟10分的人合作,他随时会“吃”了你。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 30-10-2013 10:33 AM | 显示全部楼层

(005)小小代码失误竟是丰田汽车暴冲真正元凶?


2007年9月,美国奥克拉荷马高速公路出口闸道上,有一辆2005年份的丰田(Toyota) Camry发生汽车暴冲事故,导致一死一重伤的惨剧,当时认为事故是车地板的踏垫松动、或是油门踏板黏腻所导致;但最新调查结果显示,电子节气门控制系统(electronic throttle control system)才是意外事故元凶。

上述调查结果是原告律师的结案陈词,但被告丰田汽车的辩护律师却声称,事故原因是驾驶人疏失;而这起缠讼数年的案件,终于在日前由奥克拉荷马法院的陪审团做出决议,认为丰田汽车所采用的汽车技术必须承担事故法律责任。

根据美联社(AP)报导,法院陪审团决议,在该起事故中受重伤的驾驶人Jean Bookout应获得150万美元的赔偿金,而在事故中丧生的Barbara Schwarz家属也应获得150万美元的赔偿。陪审团并认为,丰田汽车犯下“罔顾他人权利”的罪责,法院将在接下来继续针对被告在此案件所需支付的惩罚性赔偿金,进行第二阶段的审理。

专家将此奥克拉荷马案件视为一个先例──据了解,已经有数百位丰田汽车车主声称车辆发生无预警加速暴冲状况;而该案例也是第一次有测试结果声称,问题可能出在车辆的电子节气门控制系统。曾检视过丰田电子节流阀系统软件原始码的嵌入式系统专家表示,它们在其中发现缺陷,所包含的错误码就是导致车辆暴冲事故的原因。


但值得一提的是,美国太空总署(NASA)专家也曾经调查过丰田汽车的电子节气门控制系统,却并未发现导致车辆暴冲的电子缺陷。据了解,NASA的专家花了十个月的时间进行调查后,美国国家高速公路交通安全局(National Highway Traffic Safety Administration)早在2011年2月就结束了对丰田汽车多款车型的测试。

嵌入式系统产业界的专家们并不认为NASA有足够的时间做出完整的报告,而更重要的是,NASA在该报告中并没有排除软件导致车辆无预警加速暴冲的可能性;当时的报告指出,调查小组定义出了两个假设性的丰田ETSC-i 电子节气门控制系统故障模式(相对于非电子性的原因,例如黏腻的油门踏板、地垫压迫或是驾驶员操作不当等问题)。

这两种故障模式之一,是油门踏板位置感测系统(pedal position sensing system)故障,与未被汽车监视系统侦测到的中央处理器(CPU)的系统软件故障;它们不会产生诊断故障代码(diagnostic trouble code,DTC),有可能导致无预警的车辆加速暴冲。

第二种假设情况是主CPU的系统软件故障导致节流阀在驾驶员未动作的前提下开启,并持续控制燃油喷射与点火。报告指出,虽然并没有证据显示报告中所假设的ETSC-i状况发生,并不意味着可能性不存在。

为了让奥克拉荷马案件水落石出,有一组新的嵌入式系统专家受命接手NASA的调查;而究竟是怎样的一个小小软件码失误,可能导致驾驶人无法控制引擎速度,还需要专家们更详尽的解释。而由于目前法院要求案件律师与参与调查的专家,在判决前不得进行公开发言,未来有更新的资讯出炉,将会有更进一步的报导,敬请期待!


作者: Junko Yoshida 上网日期: 2013年10月29日
翻译:Judith Cheng

转载: http://info.ec.hc360.com/2013/10/280904690977.shtml
回复

使用道具 举报

 楼主| 发表于 30-10-2013 10:39 AM | 显示全部楼层
pic 发表于 30-10-2013 10:33 AM
2007年9月,美国奥克拉荷马高速公路出口闸道上,有一辆2005年份的丰田(Toyota) Camry发生汽车暴冲事故,导 ...

曾经有人要求我去写汽车ECU的程序, 也就是改装, 提升汽车的动力。。
我都没有去做, 主要的原因是我不会那种程序。
第二就是我怕死, 关于life threatening (生死攸关)的程序,如汽车引擎,医疗器材 (会影响生命的),军事用的,  我统统都不敢做。。。   
回复

使用道具 举报

发表于 31-10-2013 06:56 PM | 显示全部楼层
pic 发表于 30-10-2013 10:39 AM
曾经有人要求我去写汽车ECU的程序, 也就是改装, 提升汽车的动力。。
我都没有去做, 主要的原因是我不 ...

别说人命关天,就算财务处理软件我也不敢接,一个不小心,原本口袋没几个钱的我,可能要破产了。
回复

使用道具 举报

 楼主| 发表于 19-11-2013 09:55 AM | 显示全部楼层

(006)保险丝是不是真的足够保险

作者: 戴上举, 呢称:sj_dai
又有人问我怎么没有发新博文了,要说真原因,就一个字:“懒”。好早就想聊聊对保险丝这一常用安规元件的个人看法,因为懒,一直拖到了今天。

对于功率电子产品,设计上是有保险丝的要求的,因为我有做LED调光电源,今天就以LED电源为例来说一说保险丝的那些事儿,对于电源来说,保险丝是一个非常关键的元件,所以个人观点的对错,就非常重要,如果我个人观点有不对的地方,严重感谢朋友批评指正。

先发一个免责申明:文中观点只限于技术探讨,不表明作者和讨论者观点一定正确,所有涉及人身财产安全的设计,一切以当地安规标准为准,如因参考文中内容导致产品设计出现安全问题,作者和讨论者不承担任何责任。

如果按照传统的电子学理论基础,电源前面肯定会串联一个保险丝,尤其是开关电源,当电源发生短路等异常情况时,保险丝会自己熔断切断回路,防止故障影响进一步扩大。

在我接触电源的过程中,发现一个问题,就是电源在工作的时候损坏,电源内部电路短路导致大电流,按照常规理解此时应该只是保险丝迅速烧断,不会有其它的影响才对。但是在我们同客人的沟通了解中发现不是这样,会有一定几率出现空气开关跳闸、电源板走线铜皮爆裂和冒烟等现象,坏的时候动静比较大,会吓人一跳。既然保险丝烧了,按说是不会出现这些情况的,看来其中原因值得分析。

先上一个示意图,说明一下是什么地方的铜皮爆裂,让大家清楚了问题表征,才好对其进行理解、分析。
fuse-01.jpg
当电源损坏时,如果内部发生类似图一示意位置的短路,就会烧掉保险丝,我们在实际应用中发现有时标“爆裂”字样位置铜皮也会因电流过大烧焦、烧断,更有甚者有时候居然会出现桥堆的脚都烧断的现象。

看来保险丝虽然也熔断了,但并没有起到我们所期望的效果,在保险丝熔断的同时,电源内部的短路还是进一步导致了部分电路的损坏,保险丝的响应速度好像有点偏慢,没有我们期望的那么快。

我查阅了保险丝的相关资料,找到一张图,我们先来看下这张图,通过这张图我们可以知道流过保险丝不同电流时其具体熔断时间。
fuse-02.jpg

假定我们现在用的是250V/1A的普通保险丝,从图二我们可以知道:电流为2A时大约要5秒熔断,电流为4A时可在0.1秒内熔断,显然不管多大电流,保险丝熔断都存在一个熔断时间,电流越大,熔断时间越短。

如果结合我们现有国情,我觉得对这个熔断时间要打点折扣才行,我从市场上随机抽取了几种250V/1A的普通保险丝进行测试,测试电流2A,可以看到保险丝逐渐变红,然后熔断。这几种保险丝熔断时间都是7~8秒,显然比图二种的时间要偏长。因为我没有好的仪器设备,无法进行大电流测试,这里就不能给大家给出大电流情况下熔断时间的实测数据。


从图二和我的测试可知道保险丝也是需要熔断时间的,而且这个熔断时间并不短。从原理上讲,保险丝也是流过电流,其存在的内阻发热,电流越大,发热越快,当发热速度超过散热速度时,其温度就会持续上升,直到熔断。我用万用表量了一下测试的保险丝,其电阻都很小,不到0.5欧(万用表量小阻值电阻偏差比较大),这样不管电流多大,保险丝都要经过一段熔断时间后才能熔断。


我们回过头来再看图一,当短路发生时,我们会看到和保险丝串联的只有铜皮(为便于分析这里我把开关电源的MOS管和变压器主绕组省略掉)和整流桥,其内阻都很小(铜皮也有内阻的),回路中消耗的能量可以认为是接近平均的,这个时候就看保险丝、铜皮和整流桥谁先烧断,因为内阻都很小,从短路到烧断这个过程中的电流会非常大,就算加上MOS管和变压器主绕组也会达到几十安,所以这个过程动静就会比较大,有可能出现跳闸、嘭的一声和冒黑烟等现象。

到这里就不难理解为什么会有文中开头客人所反映的现象,原因就是保险丝响应速度不够快,就算使用快烧保险丝,只是加快熔断速度,还是不能解决问题,而且选了快烧保险丝后,需要考虑通电冲击电流的影响,如果选择的电流余量不够大,冲击电流会误烧保险丝,如果电流余量留大,又会回到类似使用普通保险丝的慢响应状态。

看来保险丝虽然名字中有保险二字,但实际应用中还是存在不足,虽然保险丝可以把问题的严重程度控制在客人可以接受的范围之内,但跳闸、嘭一声、冒烟这样的现象还是会吓到使用者,如果能够消除那肯定是最好不过。


一开始我们思维被禁锢在必须使用保险丝这一框框中,如果客人遇到此类问题,只好耐心象他们解释,并没有好的应对措施。后来看到一些产品使用电阻当保险丝,心想是不是对解决此类问题有帮助,可又担心用电阻的方式不符合安规标准,还是不敢用。

再后来,我们看到知名家电厂商出日本和美国的产品,器阻容降压电路大量使用电阻当保险,而且出美国的产品还是实过了UL认证的,心想难道真的可以用电阻来当保险丝使用?

接下来了解了一些安规要求,发现安规要求中存在保险电阻的提法,这样看来用电阻方式替代保险丝的做法是符合安规要求的,只是保险电阻的选用存在一定要求,这里先不讨论如何选取合适的电阻,有兴趣的朋友请自己查阅相关资料。

既然可以用电阻做保险丝,那电阻的效果如何呢?如果我们用一个10欧的保险电阻,图一的情况最大电流就会降低许多,220V输入电压下,最大电流肯定小于22A。这个最大电流还不是最关键的,因为22A的电流也还是非常大,不过实际中是达不到这么大电流的,下面我们用一个例子来进行分析。

一个30瓦的电源使用10欧保险电阻,220V输入时平均工作电流约为0.14A,短路发生后,电流就会从这个电流附近迅速上升,这个时候因为10欧保险电阻的存在,回路中的能量几乎都集中到10欧保险电阻上,这个保险电阻会在极短的时间内烧断,当其烧断时,我个人认为电流远达不到22A的极限值,保险电阻应该在电流上升的过程中就已经烧断。我们计算一下,在22A的电流下,10欧保险电阻的功率可以达到22*22*10=4840瓦,估计离这个功率还远着的时候保险电阻就已经灰飞烟灭了。

接下来我们做了详细的验证测试,测试证明推测是正确的,自从加了保险电阻,无论是生产测试还是实际应用,再也没有出现电源损坏时动静大得吓人一跳的情况。可能有人会有疑问,如果出现客人不接受保险电阻的方式,坚持要用保险丝怎么办?没事,我们也遇到这样的客人,如果客人坚持必须用保险丝,那我们就给他用保险丝和保险电阻串联的方式,这样处理还没有遇到客人不接受的,只是成本增加了一点而已。

既然保险电阻比保险丝好用,那直接用保险电阻不就得了?这个问题我也想过,个人看法是保险电阻只适合小功率的电源,如果是一个220V100W的电源,满负荷下平均工作电流有0.45A,这样10欧保险电阻的功耗就会达到2W以上,发热过于厉害,无法长时间工作,所以不适用。另外常用开关电源在整流桥后面会有一个高压电解电容,这个电容的存在会让电源上电时的冲击电流加大,适用保险电阻需要考虑这电解电容对其的冲击影响,如果余量不够会明显影响保险电阻的使用寿命。

前两天《电子工程专辑》的Mike Zhang问我有些LED电源不用保险丝的看法,这些做法都是现阶段以低价为终极目的的市场现导致的畸形做法,也不能全把责任怪在厂家头上。现阶段,对于大多数国内厂家来说,认证就是一张纸,好多次有客人问我:“能不能做过认证的MINI苹果充电器?”我回答做不了,再告诉客人以我知道的情况,还没有人能做得了,可客人不信,因为已经有不少厂家告诉他能做,而且给他看了证书。

正是这种情况,就出现了后面的这种局面:既然你说能做,那我也说可以做,既然你敢省元件,那我就比你更敢省,收钱做货,有人敢要,我自然敢做,真要出了事,钱已经收了,客户能把我怎么地?“有问题拿回来我给你修”就是不错的态度了,既然你要找便宜的,我不做别人也会做,那不如我做算了。

正是这个原因,就有人想到用一条细铜皮来替代保险丝,这样还不够,更猛的人连那条细铜线都省了,直接把输入线连到整流桥管脚上,因为PCB也需要钱,那条细铜皮会占用PCB板面积。

有时候,厂家也并不一定愿意那么做,好多时候是被客人逼的。我经常看到客人要求我们签有问题按整机赔和承担客人全部损失的质保协议,我不知道客人是怎么想的?反正我们是认为天底下没有只赚不赔的买卖,既然自己想从中赚钱,就要承担自己该承担的风险,不要总想着把风险转嫁给上游的供应商。我们会用到不少芯片,对于供应商我们只是要求如果是假货需要承担全部责任,别的我们基本上不会做太多要求,在我们看来这些风险应该是我们自己承担的。(这个话题说远了,留在后面做专题牢骚吧)

转载: http://forum.eet-cn.com/BLOG_ARTICLE_18664.HTM 本帖最后由 pic 于 19-11-2013 09:58 AM 编辑

回复

使用道具 举报

发表于 21-11-2013 10:20 PM | 显示全部楼层
(007)传统8位MCU岌岌可危,基于Cortex-M0及M0+的32位单片机全面入侵
与传统的8位单片机相比,基于Cortex-M0内核的32位MCU有明显的性能、功能优势。
首先,基于32位Cortex-M0内核的MCU处理数据性能上比8位有明显的优势,一次能处理32位的数据宽度,换句话说,能用更少的时间完成相同的任务。
其次,M0采用了Thumb-2指令集技术,支持16/32位指令,代码大小比8位设备小30%,这不但大大节省了闪存的利用率,更能通过更低的总线速度完成和8位单片机相同的任务,从而降低了功耗。
第三,ARM内核独有的嵌套向量中断控制器(NVIC),为处理器提供了卓越的中断处理能力。
然而,这些还不是基于M0内核的微控制器最大的优势,更重要的是各大厂商将M0与自身产品优势的整合,针对不同领域提供了丰富的差异化的外设接口功能,这对于外设功能薄弱的传统8位单片机形成了强有力的竞争力。
Cortex-M0的出现真可谓是司马昭之心,其一,ARM公司出于自身产品线考虑,想让自己的产品线覆盖到低端的8位、16位MCU市场;其二,全面侵噬8位、16位MCU的市场份额,最终目的,当然是全面取代现有的8位单片机市场。
但是,事情的发展不是你一厢情愿就行的,ARM Cortex-M0在功能和性能上的优势并未使它一举推翻8位单片机的地位,在初期的推行效果并不显著,首先,传统单片机如51系列、AVR系列牢牢把控着市场、链接着上下游,很难撼动其地位;其次,当时的传统8位单片机完全满足产品的性能、应用要求,在利益没有足够大的前提下,冒风险随意变更产品线不符合商家的习惯。
但如今,随着人们对生活质量的要求越来越高,以家电行业为例,其功能也变的越来越多,越来越智能,单一的8位、16位低端单片机在性能、功能上有些乏力、疲软,此时,ARM Cortex-M0的优越性能才得以发挥用武之地,成为杀入低端市场的32位单片机。一旦形成契机,ARM公司百尺竿头更进一步,相应适宜的推出了M0的升级版--M0+,在能效比和功能上做了进一步优化和增设。
文章太长了,具体请看: http://www.eeboard.com/evaluation/cortex-m0m0/

好了,现在轮到西门庆发表了
各位已经知道Arduino UNO是使用Atmega16U2 8位微控制器,与duemilanove的ATMega328类似,只是多了usb-serial接口。

ATMega328规格如下:
  • Core Size: 8bit
  • No. of I/O's: 23
  • Supply Voltage Min: 1.8V
  • Supply Voltage Max: 5.5V
  • Digital IC Case Style: QFN
  • No. of Pins: 28
  • Program Memory Size: 32KB
  • EEPROM Memory Size: 1KB
  • RAM Memory Size: 2KB
  • CPU Speed: 20MHz
  • Peripherals: ADC, Comparator, PWM, RTC, Timer
  • Embedded Interface Type: SPI
QFN封装,Fanell现卖RM8.17

再看Arduino Due,其处理器为ATMEL公司的AT91SAM3XE8 Cortex-M3 ARM 32位微控制器,由于它是基于Cortex-M3,我就不作比较了。

现在看看Cortex-M0的微控制器,其中有
  • Cypress Semiconductor PSoC 4
  • Infineon Technologies XMC 1000
  • NXP LPC1100, LPC1200
  • Nordic Semiconductor nRF51
  • nuvoTon NuMicro
  • Sonix SN32F700
  • STMicroelectronics STM32 F0


这里用STMicroelectronics STM32 F0系列作比较,且看STM32F050K6U6的规格:
  • MCU, 32BIT, CORTEX-M0, 48MHZ, UFQFPN-32
  • Controller Family/Series: STM32F
  • Core Size: 32bit
  • No. of I/O's: 27
  • Supply Voltage Min: 2V
  • Supply Voltage Max: 3.6V
  • Digital IC Case Style: UFQFPN
  • No. of Pins: 32
  • Program Memory Size: 32KB
  • RAM Memory Size: 4KB
  • CPU Speed: 48MHz
  • Peripherals: ADC, DMA, RTC, Timer
  • Embedded Interface Type: I2C, SPI, USART
Fanell现卖RM7.93

看到了吗?除了没有EEPROM,无论Core Size,RAM,IO,速度,甚至价钱,属于Cortex-M0 32位的STM32F050K6U6都尤于8位的ATMega328

最后只剩下一个问题,为什么Arduino UNO或者Arduino  Duemilanove不使用更强且更便宜的处理器呢?
本帖最后由 pic 于 14-9-2014 10:52 AM 编辑

回复

使用道具 举报

Follow Us
发表于 23-11-2013 11:08 PM | 显示全部楼层
西门庆33 发表于 21-11-2013 10:20 PM
传统8位MCU岌岌可危,基于Cortex-M0及M0+的32位单片机全面入侵
与传统的8位单片机相比,基于Cortex-M0内核 ...

cortex m 取代8 bit controller 我看只是时间上的问题而已。

可能要等多一下, 等m0成熟, 大厂家才开始会转去m0吧。



回复

使用道具 举报

发表于 25-11-2013 08:07 PM | 显示全部楼层
“大比拼”–基于ARM Cortex-M0及M0+内核的MCU开发板
从全球各大知名厂商力推基于ARM Cortex-M0及M0+的32位微控制器的决心,我们不难看到32位MCU已逐渐在代替8位MCU成为嵌入式领域的新宠儿,自古就有“江山代有才人出、一代新人换旧人”的美言,从生物进化学角度来说,适者生存是最客观的市场规律。

如果你是对ARM Cortex-M0及M0+情有独钟的工程师,那一定非常熟悉这几块板卡,这里有基于M0的板卡,也有基于M0+的板卡。总之,五颜六色,应有尽有。
ARM-Cortex-M0-25-500x281.jpg

文章还是很长,有兴趣者请浏览
http://www.eeboard.com/evaluation/cortex-m0/


回复

使用道具 举报


ADVERTISEMENT

发表于 25-11-2013 10:25 PM | 显示全部楼层
西门庆33 发表于 25-11-2013 08:07 PM
“大比拼”–基于ARM Cortex-M0及M0+内核的MCU开发板
从全球各大知名厂商力推基于ARM Cortex-M0及M0+的32位 ...

对programmer来说, 没什么分别。
对于我用8bit mcu的经验来说, m0的确很好, 尤其是debugging.
stm有一般的JTAG,或者可以选择用SWD.
在development上好过8051, avr, pic等的mcu.
虽然avr (ATMEGA),pic 等也是有provide debugging interface, 速度上来说还是太慢了。


回复

使用道具 举报

发表于 29-11-2013 09:50 PM | 显示全部楼层
(008)即时喷墨电路
对于小规模,低电流和低频率应用,这是一个非常有趣的技术。只使用一般的墨水打印机,然后使用特别的(silver nanoparticle ink)墨水,直接打印在纸上如coated paper, PET film, photo paper等,电子元件就可以焊接在纸上了。
http://www.elektor.com/news/instant-inkjet-circuits.2593770.lynkx 本帖最后由 pic 于 14-9-2014 10:52 AM 编辑

回复

使用道具 举报

 楼主| 发表于 14-9-2014 10:57 AM | 显示全部楼层

(009)RS485总线应用与选型指南


一、RS485总线介绍:
RS485总线是一种常见的串行总线标准,采用平衡发送与差分接收的方式,因此具有抑制共模干扰的能力。在一些要求通信距离为几十米到上千米的时候,RS485总线是一种应用最为广泛的总线。而且在多节点的工作系统中也有着广泛的应用。

二、RS485总线典型电路介绍:
RS485电路总体上可以分为隔离型与非隔离型。隔离型比非隔离型在抗干扰、系统稳定性等方面都有更出色的表现,但有一些场合也可以用非隔离型。
我们就先讲一下非隔离型的典型电路,非隔离型的电路非常简单,只需一个RS485芯片直接与MCU的串行通讯口和一个I/O控制口连接就可以。如图1所示:

rs485-01.gif

图1、典型485通信电路图(非隔离型)
当然,上图并不是完整的485通信电路图,我们还需要在A线上加一个4.7K的上拉偏置电阻;在B线上加一个4.7K的下拉偏置电阻。中间的R16是匹配电阻,一般是120Ω,当然这个具体要看你传输用的线缆。(匹配电阻:485整个通讯系统中,为了系统的传输稳定性,我们一般会在第一个节点和最后一个节点加匹配电阻。所以我们一般在设计的时候,会在每个节点都设置一个可跳线的120Ω电阻,至于用还是不用,由现场人员来设定。当然,具体怎么区分第一个节点还是最后一个节点,还得有待现场的专家们来解答呵。)TVS我们一般选用6.8V的,这个我们会在后面进一步的讲解。

RS-485标准定义信号阈值的上下限为±200mV。即当A-B>200mV时,总线状态应表示为“1”;当A-B<-200mV时,总线状态应表示为“0”。但当A-B在±200mV之间时,则总线状态为不确定,所以我们会在A、B线上面设上、下拉电阻,以尽量避免这种不确定状态。

三、隔离型RS485总线典型电路介绍
在某些工业控制领域,由于现场情况十分复杂,各个节点之间存在很高的共模电压。虽然RS-485接口采用的是差分传输方式,具有一定的抗共模干扰的能力,但当共模电压超过RS-485接收器的极限接收电压,即大于+12V或小于-7V时,接收器就再也无法正常工作了,严重时甚至会烧毁芯片和仪器设备。

    解决此类问题的方法是通过DC-DC将系统电源和RS-485收发器的电源隔离;通过隔离器件将信号隔离,彻底消除共模电压的影响。实现此方案的途径可分为:
    (1)传统方式:用光耦、带隔离的DC-DC、RS-485芯片构筑电路;
    (2)使用二次集成芯片,如ADM2483、ADM2587E等。

传统光电隔离的典型电路:(如图2所示)

rs485-02.gif
图2、光电隔离RS485典型电路

图中我们以高速光耦6N137为例(当然只是示意图)来说明一下隔离型RS485电路。VDD与VCC485是两组不共地的电源,一般用隔离型的DC-DC来实现。通过光耦隔离来实现信号的隔离传输,ADM487与MCU系统不共地,完全隔离则有效的抑制了高共模电压的产生,大大降低了485的损坏率,提高了系统的稳定性。但也存在电路体积过大、电路繁琐、分立器件过多、传输速率受光电器件限制等缺点,对整个系统的稳定性也有一定的影响。

隔离型RS485器件来实现隔离传输:(如图3所示)
rs485-03.jpg

图3、隔离型RS485芯片ADM2483应用图
ADM2483是ADI推出的隔离型485芯片,SOW-16封装,内部集成了一个三通道的磁隔离器件和一个半双工485收发器,2500V隔离电压、传输速率500K、共模电压抑制能力25KV/μS。但此电路仍需双电源供电,因此也会在一定程度上存在电路体积过大的问题。

完全隔离型RS485器件实现隔离传输:(如图4所示)
rs485-04.jpg

图4、完全隔离型RS485/422芯片ADM2587E应用图
ADM2587E是ADI继ADM2483之后,推出的单电源隔离型485芯片。SOW-20封装,2500V隔离电压,全/半双工、传输速率500K、共模电压抑制能力25KV/μS、±15KV的ESD保护。适合用于工控、电力、仪表、安防等各种485隔离场合。

四、RS485总线保护电路
隔离虽然能有效的抑制高共模电压,但总线上还会存在浪涌冲击、电源线与485线短路、雷击等潜在危害,所以我们一般会在总线端采取一定的保护措施。

一般我们会在VA、VB上各串接一个4~10Ω的PTC电阻,并在VA、VB各自对地端接6、8V的TVS管,当然也可用普通电阻与稳压二极管代替。更多的还可以加热保险丝、防雷管,不过并不是说这些加的越多越好,具体要看实际应用,如果这些保护太多的话,也会影响到整个系统的节点数,与通信稳定性。

五、485应用的一些小经验
1、收发时序不匹配:
   485是半双工的通信,收发转换是需要一定的时间的,所以一般在收发转换之间,和每发送完一帧数据之后,都要有相应的延时,如果出现收发不正常、或第一帧数据之后就出现误码现象,则可以适当的增加一下延时时间,以观问题是否解决。

2、R0接上拉电阻:
  异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,建议RO外接10kΩ上拉电阻。

3、合理选用芯片。
例如,对外置设备为防止强电磁(雷电)冲击,建议选用TI的75LBC184等防雷击芯片,对节点数要求较多的可选用SIPEX的SP485R。此外经我们实验发现,ADI的非隔离型485芯片ADM487E、隔离型芯片ADM2483、ADM2587在多节点、防雷击方面也有着很好的表现。

六、维护RS-485的常用方法
   1)若出现系统完全瘫痪,大多因为某节点芯片的VA、VB对电源击穿,使用万用表测VA、VB间差模电压为零,而对地的共模电压大于3V,此时可通过测共模电压大小来排查,共模电压越大说明离故障点越近,反之越远;

    2)总线连续几个节点不能正常工作。一般是由其中的一个节点故障导致的。一个节点故障会导致邻近的2~3个节点(一般为后续)无法通信,因此将其逐一与总线脱离,如某节点脱离后总线能恢复正常,说明该节点故障;

    3)集中供电的RS-485系统在上电时常常出现部分节点不正常,但每次又不完全一样。这是由于对RS-485的收发控制端TC设计不合理,造成微系统上电时节点收发状态混乱从而导致总线堵塞。改进的方法是将各微系统加装电源开关然后分别上电;

    4)系统基本正常但偶尔会出现通信失败。一般是由于网络施工不合理导致系统可靠性处于临界状态,最好改变走线或增加中继模块。应急方法之一是将出现失败的节点更换成性能更优异的芯片;

    5)因MCU故障导致TC端处于长发状态而将总线拉死一片。提醒读者不要忘记对TC端的检查。尽管RS-485规定差模电压大于200mV即能正常工作。但实际测量:一个运行良好的系统其差模电压一般在1.2V左右(因网络分布、速率的差异有可能使差模电压在0.8~1.5V范围内)。

后记:
作者:jerrymiao,QQ:253263136, jerrymiao@adum.com.cn    由于作者水平有限,文章难免有纰漏之外,部分电路与经验仅为作者个人观点,欢迎大家验证,并联系作者批评指证,谢谢!


本帖最后由 pic 于 14-9-2014 11:06 AM 编辑

回复

使用道具 举报

发表于 15-1-2015 10:21 PM | 显示全部楼层
用习惯了PIC和51,转去用M0或者其他ARM的话,会有很强的失落感。以前在8位机上需要精打细算使用资源。还有很多经典的算法都不适用了。感觉ARM的不是那么容易掌控
回复

使用道具 举报

 楼主| 发表于 19-1-2015 01:34 PM | 显示全部楼层
jerrytxi 发表于 15-1-2015 10:21 PM
用习惯了PIC和51,转去用M0或者其他ARM的话,会有很强的失落感。以前在8位机上需要精打细算使用资源。还有很 ...

欢迎你到这个帖子闲聊
【闲聊】心情故事,咖啡座~
http://cforum.cari.com.my/forum.php?mod=viewthread&tid=2227866&extra=page%3D1


或在这个帖子做电子技术交流
[交流] 电子技术交流区
http://cforum.cari.com.my/forum.php?mod=viewthread&tid=1530722&highlight=%B5%E7%D7%D3%BC%BC%CA%F5

回复

使用道具 举报

发表于 12-2-2015 03:37 PM | 显示全部楼层
jerrytxi 发表于 15-1-2015 10:21 PM
用习惯了PIC和51,转去用M0或者其他ARM的话,会有很强的失落感。以前在8位机上需要精打细算使用资源。还有很 ...

有经历过 精打细算使用资源 的阶段, arm掌控不是问题。
回复

使用道具 举报

 楼主| 发表于 26-7-2015 03:10 PM | 显示全部楼层

(010)形象解释PID算法+PID算法源代码

本帖最后由 pic 于 26-7-2015 03:16 PM 编辑

小明接到这样一个任务:
有一个水缸点漏水(而且漏水的速度还不一定固定不变),
要求水面高度维持在某个位置,
一旦发现水面高度低于要求位置,就要往水缸里加水。

小明接到任务后就一直守在水缸旁边,
时间长就觉得无聊,就跑到房里看小说了,
每30分钟来检查一次水面高度。水漏得太快,
每次小明来检查时,水都快漏完了,离要求的高度相差很远
,小明改为每3分钟来检查一次,结果每次来水都没怎么漏
,不需要加水,来得太频繁做的是无用功。几次试验后,
确定每10分钟来检查一次。这个检查时间就称为采样周期。

开始小明用瓢加水,水龙头离水缸有十几米的距离,
经常要跑好几趟才加够水,于是小明又改为用桶加,
一加就是一桶,跑的次数少了,加水的速度也快了,
但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,
我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,
也不会让水溢出。这个加水工具的大小就称为比例系数。

小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多
,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,
每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,
但加水的速度又慢了,有时还赶不上漏水的速度。
于是他试着变换不同大小口径的漏斗来控制加水的速度
,最后终于找到了满意的漏斗。漏斗的时间就称为积分时间 。

小明终于喘了一口,但任务的要求突然严了,
水位控制的及时性要求大大提高,一旦水位过低,
必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。
小明又为难了!于是他又开努脑筋,终于让它想到一个办法,常放一盆备用水在旁边,
一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。
他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。
这个水漏出的快慢就称为微分时间。


PID算法源代码:

  1. #define PID_Uint struct pid_uint
  2. PID_Uint
  3. {
  4.         int U_kk;
  5.         int ekk;
  6.         int ekkk;
  7.         int Ur;                                //限幅输出值,需初始化
  8.         int Un;                                //不灵敏区
  9.         //int multiple;                //PID系数的放大倍数,用整形数据的情况下,提高PID参数的设置精度          固定为256
  10.         int Kp;                                //比例,从小往大调
  11.         int Ti;                                //积分,从大往小调
  12.         int Td;                                //微分,用巡线板时设为0
  13.         int k1;                                //
  14.         int k2;
  15.         int k3;
  16. };

  17. /********************************************************************
  18. 函 数 名:void Init_PID_uint(PID_uint *p)
  19. 功    能:初始化PID参数
  20. 说    明:调用本函数之前,应该先对Kp,Ti,Td做设置        ,简化了公式
  21. 入口参数:PID单元的参数结构体 地址
  22. 返 回 值:无
  23. ***********************************************************************/
  24. void Init_PID_uint(PID_Uint *p)
  25. {
  26.         p->k1=(p->Kp)+(p->Kp)*1024/(p->Ti)+(p->Kp)*(p->Td)/1024;
  27.         p->k2=(p->Kp)+2*(p->Kp)*(p->Td)/1024;
  28.         p->k3=(p->Kp)*(p->Td)/1024;
  29. }
  30. /********************************************************************
  31. 函 数 名:void reset_Uk(PID_Uint *p)
  32. 功    能:初始化U_kk,ekk,ekkk
  33. 说    明:在初始化时调用,改变PID参数时有可能需要调用
  34. 入口参数:PID单元的参数结构体 地址
  35. 返 回 值:无
  36. ***********************************************************************/
  37. void reset_Uk(PID_Uint *p)
  38. {
  39.         p->U_kk=0;
  40.         p->ekk=0;
  41.         p->ekkk=0;
  42. }
  43. /********************************************************************
  44. 函 数 名:int PID_commen(int set,int jiance,PID_Uint *p)
  45. 功    能:通用PID函数
  46. 说    明:求任意单个PID的控制量
  47. 入口参数:期望值,实测值,PID单元结构体
  48. 返 回 值:PID控制量
  49. ***********************************************************************/
  50. int PID_common(int set,int jiance,PID_Uint *p)
  51. {
  52.         int ek,U_k=0;
  53.         ek=jiance-set;
  54.         if((ek>(p->Un))||(ek<-(p->Un)))                //积分不灵敏区
  55.                 U_k=(p->U_kk)+(p->k1)*ek-(p->k2)*(p->ekk)+(p->k3)*(p->ekkk);
  56.         p->U_kk=U_k;
  57.            p->ekkk=p->ekk;
  58.         p->ekk=ek;
  59.         if(U_k>(p->Ur))                                        //限制最大输出量,
  60.                 U_k=p->Ur;
  61.         if(U_k<-(p->Ur))
  62.                 U_k=-(p->Ur);        
  63.         return U_k/1024;
  64. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 26-4-2024 05:12 PM , Processed in 0.077329 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表