提高单片机设计的10个细节

  • 前言

  • 1 干扰对单片机应用系统的影响

    • 1.1测量数据误差加大

    • 1.2 控制系统失灵

    • 1.3 影响单片机RAM存储器和E2PROM等

    • 1.4 程序运行失常

  • 2 如何提高我们设备的抗干扰能力

    • 2.1 解决来自电源端的干扰

    • 2.2 模拟信号采样抗干扰技术

    • 2.3 数字信号传输通道的抗干扰技术

    • 2.4 硬件监控电路

    • 2.5 PCB电路合理布线

    • 2.6 软件抗干扰原理及方法

  • 3 总结

前言

随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。

然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变,故障,开关操作等引起的电磁振荡会波及很多电气设备。

这对我们单片机系统的可靠性与安全性构成了极大的威胁。单片机测控系统必须长期稳定、可靠运行,否则将导致控制误差加大,严重时会使系统失灵,甚至造成巨大损失。

因此单片机的抗干扰问题已经成为不容忽视的问题。

1 干扰对单片机应用系统的影响

1.1测量数据误差加大

干扰侵入单片机系统测量单元模拟信号的输入通道,叠加在测量信号上,会使数据采集误差加大。特别是检测一些微弱信号,干扰信号甚至淹没测量信号。

1.2 控制系统失灵

单片机输出的控制信号通常依赖于某些条件的状态输入信号和对这些信号的逻辑处理结果。若这些输入的状态信号受到干扰,引入虚假状态信息,将导致输出控制误差加大,甚至控制失灵。

1.3 影响单片机RAM存储器和E2PROM等

在单片机系统中,程序及表格、数据存在程序存储器EPROMFLASH中,避免了这些数据受干扰破坏。但是,对于片内RAM、外扩RAME2PROM 中的数据都有可能受到外界干扰而变化。

1.4 程序运行失常

外界的干扰有时导致机器频繁复位而影响程序的正常运行。若外界干扰导致单片机程序计数器PC值的改变,则破坏了程序的正常运行。

由于受干扰后的PC 值是随机的,程序将执行一系列毫无意义的指令,最后进入“死循环”,这将使输出严重混乱或死机。

2 如何提高我们设备的抗干扰能力

2.1 解决来自电源端的干扰

单片机系统中的各个单元都需要使用直流电源,而直流电源一般是市电电网的交流电经过变压、整流、滤波、稳压后产生的,因此电源上的各种干扰便会引入系统

e26d7f870f5f0f3c3a889c94786003df.png

除此之外,由于交流电源共用,各电子设备之间通过电源也会产生相互干扰,因此抑制电源干扰尤其重要。电源干扰主要有以下几类:

2.1.1电源线中的高频干扰(传导骚扰)

供电电力线相当于一个接受天线,能把雷电、电弧、广播电台等辐射的高频干扰信号通过电源变压器初级耦合到次级,形成对单片机系统的干扰;

解决这种干扰,一般通过接口防护;在接口增加滤波器、或者使用隔离电源模块解决

2.1.2 感性负载产生的瞬变噪音(EFT)

切断大容量感性负载时,能产生很大的电流和电压变化率,从而形成瞬变噪音干扰,成为电磁干扰的主要形式;

解决这种干扰,一般通过屏蔽线与双胶线,或在电源接口、信号接口进行滤波处理。

这二种方法都需要在系统接地良好的情况下进行,滤波器、接口滤波电路都必须良好的接地,这样才能有效的将干扰泄放。

2.2 模拟信号采样抗干扰技术

单片机应用系统中通常要对一个或多个模拟信号进行采样,并将其通过A/D转换成数字信号进行处理。

为了提高测量精度和稳定性;

  1. 要保证传感器本身的转换精度;

  2. 传感器供电电源的稳定;

  3. 测量放大器的稳定;

  4. A/D转换基准电压的稳定;

  5. 要防止外部电磁感应噪声的影响;

如果处理不当,微弱的有用信号可能完全被无用的噪音信号淹没

在实际工作中,可以采用具有差动输入的测量放大器,采用屏蔽双胶线传输测量信号,或将电压信号改变为电流信号,以及采用阻容滤波等技术。

a735c254d20bf22203f9f6ebb34dc904.png

2.3 数字信号传输通道的抗干扰技术

数字输出信号可作为系统被控设备的驱动信号(如继电器等),数字输入信号可作为设备的响应回答和指令信号(如行程开关、启动按钮等)。

数字信号接口部分是外界干扰进入单片机系统的主要通道之一。

在工程设计中,对数字信号的输入/输出过程采取的抗干扰措施有:

  1. 传输线的屏蔽技术,如采用屏蔽线、双胶线等;

  2. 采用信号隔离措施;

  3. 合理接地,由于数字信号在电平转换过程中形成公共阻抗干扰,选择合适的接地点可以有效抑制地线噪声。

2.4 硬件监控电路

在单片机系统中,为了保证系统可靠、稳定地运行,增强抗干扰能力,需要配置硬件监控电路,硬件监控电路从功能上包括以下几个方面:

  1. 上电复位:保证系统加电时能正确地启动;

  2. 掉电复位:当电源失效或电压降到某一电压值以下时,产生复位信号对系统进行复位;

  3. 电源监测:供电电压出现异常时,给出报警指示信号或中断请求信号;

  4. 硬件看门狗:当处理器遇到干扰或程序运行混乱产生“死锁”时,对系统进行复位。

2.5 PCB电路合理布线

PCB板设计的好坏对抗干扰能力影响很大。因此,在进行PCB 设计时,必须遵守PCB 设计的一般原则,并应符合抗干扰设计的要求。下面着重说明两点:

2.5.1关键器件放置

在器件布置方面与其它逻辑电路一样,应把相互有关的器件尽量放得靠近些,这样可以获得较好的抗噪声效果。

  1. 时钟发生器、晶振和CPU 的时钟输入端都易产生噪声,要相互靠近些;

  2. CPU 复位电路、硬件看门狗电路要尽量靠近CPU相应引脚;

  3. 易产生噪声的器件、大电流电路等应尽量远离逻辑电路。

6e979c556b4ea17a07551fb393bac260.png

2.5.2 D/A、A/D 转换电路地线的正确连接

D/A、A/D 芯片及采样芯片均提供了数字地和模拟地,分别有相应的管脚。

在线路设计中,必须将所有器件的数字地和模拟地分别相连,但数字地与模拟地仅在一点上相连。另外,也可以采用屏蔽保护,屏蔽可用来隔离空间辐射。

对噪声特别大的部件(如变频电源、开关电源)可以用金属盒罩起来以减少噪声源对单片机的干扰,对容易受干扰的部分,可以增加屏蔽罩并接地,使干扰信号被短路接地。

330c748311645e2a091436f37ab19451.png

2.6 软件抗干扰原理及方法

尽管我们采取了硬件抗干扰措施,但由于干扰信号产生的原因错综复杂,且具有很大的随机性,很难保证系统完全不受干扰。

因此,往往在硬件抗干扰措施的基础上,采取软件抗干扰技术加以补充,作为硬件措施的辅助手段。软件抗干扰方法具有简单、灵活方便、耗费低等特点,在系统中被广泛应用。

2.6.1 数字滤波方法

数字滤波是在对模拟信号多次采样的基础上,通过软件算法提取最逼近真值数据的过程。数字滤波的的算法灵活,可选择权限参数,其效果往往是硬件滤波电路无法达到的。

2.6.2 输入信号重复检测方法

输入信号的干扰是叠加在有效电平信号上的一系列离散尖脉冲,作用时间很短。

当控制系统存在输入干扰,又不能用硬件加以有效抑制时,可用软件重复检测的方法,达到“去伪存真”的目的,直到连续两次或连续两次以上的采集结果完全一致时方为有效。

若信号总是变化不定,在达到最高次数限额时,则可给出报警信号。对于来自各类开关型传感器的信号,如限位开关、行程开关、操作按钮等,都可采用这种输入方式。

如果在连续采集数据之间插入延时,则能够对付较宽的干扰。

2.6.3 输出端口数据刷新方法

开关量输出软件抗干扰设计,主要是采取重复输出的方法,这是一种提高输出接口抗干扰性能的有效措施。对于那些用锁存器输出的控制信号,这些措施很有必要。

在尽可能短的周期内,将数据重复输出,受干扰影响的设备在还没有来得及响应时,正确的信息又到来,这样就可以及时防止误动作的产生。在程序结构的安排上,可为输出数据建立一个数据缓冲区,在程序的周期性循环体内将数据输出。

对于增量控制型设备不能这样重复送数,只有通过检测通道,从设备的反馈信息中判断数据传输的正确与否。在执行重复输出功能时,对于可编程接口芯片,工作方式控制字与输出状态字一并重复设置,使输出模块可靠地工作。

2.6.4 软件拦截技术

当窜入单片机系统的干扰作用在CPU 部位时,后果更加严重,将使系统失灵。

最典型的故障是破坏程序计数器PC 的状态,导致程序从一个区域跳转到另一个区域,或者程序在地址空间内“乱飞”,或者陷入“死循环”。

使用软件拦截技术可以拦截“乱飞”的程序或者使程序摆脱“死循环”,并将运行程序纳入正轨,转到指定的程序入口。

2.6.5 “软件看门狗”技术

PC 受到干扰而失控,引起程序“乱飞”,也可能使程序陷入“死循环”。当软件拦截技术不能使失控的程序摆脱“死循环”的困境时,通常采用程序监视技术WDT TIMER(WDT),又称看门狗技术,使程序脱离“死循环”。

WDT 是一种软、硬件结合的抗程序跑飞措施,其硬件主体是一个用于产生定时T 的计数器或单稳,该计数器或单稳基本独立运行,其定时输出端接至CPU 的复位线,而其定时清零则由CPU 控制。

在正常情况下,程序启动WDT 后,CPU 周期性的将WDT 清零,这样WDT 的定时溢出就不会发生,如同睡眠一般不起任何作用。在受到干扰的异常情况下,CPU 时序逻辑被破坏,程序执行混乱,不可能周期性的将WDT 清零,这样当WDT 的定时溢出时,其输出使系统复位,避免CPU因一时干扰而陷入瘫痪的状态。

3 总结

随着单片机系统的广泛应用和技术的进步,电磁干扰问题越来越突出,推广现有的、成熟的抗干扰技术,研究抗干扰的新技术、新方向是单片机应用技术的当务之急。在单片机应用系统设计及应用中,只要充分考虑设备的电磁兼容性,并通过各种技术措施来消除干扰,就可以大大提高设备的稳定性和可靠性。

(陈翀 珠海格力电器股份有限公司;张建勇 中智经济技术合作公司)


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bzoj 2653 洛谷 P2839 [国家集训队] middle

2653: middle Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2381 Solved: 1340[Submit][Status][Discuss]Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给你一个长度为n的序…

linux统计单拷贝基因家族,为什么要进行基因家族分析?

原标题:为什么要进行基因家族分析?某物种基因组被测序后,大部分课题组都会发表一些基因家族分析的文章,此举常常被误解为“灌水”,其实不然,理清基因组内基因家族成员分类组成,是挖掘和物种特性…

童继龙:论ERP顾问的创新分享与专业精神

童继龙:论ERP顾问的创新分享与专业精神出处:51CTO博客 文: 童继龙 评论( 0 )条 论坛 博客导读:公司的核心价值观中有一部分为“持续创新”,对实施同事的行为态度考核中有两项为“创新分享”和“专业精神”,因为上海实施部的新同事…

图解分析 Linux 网络包发送过程

大家好,下面的文章转发一个鹅厂同学的文章,这篇文章从应用到内核,写的非常不错,希望大家分析某个技术也可以从这方面入手。-----大家好,我是飞哥!半年前我以源码的方式描述了网络包的接收过程。之后不断有粉丝提醒我还…

linux下shell编程课程设计,Linux下shell编程实例

1. 推断一文件是不是块或字符设备文件。假设是将其复制到 /dev 文件夹下read -p "input a file:" filenameif [ -b $filename -o -c $filename ]thencp $filename /dev/fi2.编写一个脚本。进行简单的减法运算。要求提示输入变量#!/bin/bashread -p "input a num…

[Pku 2774] 字符串(六) {后缀数组的构造}

{ 从这一篇开始介绍后缀数组 一个强大的字符串处理工具 可以先研读罗穗骞的论文 后缀数组——处理字符串的有力工具 再行阅读本文 本文仅作参考和补充 } 字符串的后缀很好理解 譬如对于字符串"aabaaaab" 后缀有{"b","ab","aab","…

使用ReflectionToStringBuilder实现toString方法

org.apache.commons.lang.builder.ReflectionToStringBuilder是commons-lang里的一个类。 import org.apache.commons.lang3.builder.ReflectionToStringBuilder; Overridepublic String toString() {return ReflectionToStringBuilder.toString(this); } 如果需要排除某些字段…

linux下I2C驱动发送IO时序,笔记四:linux下IO口模拟实现I2C协议

一、i2c总线是什么?1、i2c总线是一种物理总线及实实在在的总线,通过板子pcb等图能看到。2、i2c总线是一种主从结构。3、i2c总线是一种通信协议。4、i2c总线是两线制半双工串行总线:两线制:数据线(SDA)——>数据传输、时钟线(SC…

rails3异步发邮件

actionmailer 3.0 结合ar_mailer_rails3 异步发送邮件3 次投票jerry 分享于 3 个月 前, 0 条回复, 244 次浏览Share|actionmailer 3.0 的用法有所改进,并结合ar_mailer_rails3做异步邮件的发送,是比较方便的一种选择,把邮件都交给后台任务来发…

我见过的极品代码bug

程序员写代码有bug是很难避免的,也是因为程序员的bug存在,才让另一个职业有了更好的发展,那就是软件测试行业。但是程序员写bug,对于自己肯定是一件非常难忘的事情。我记得我在之前做一个TP固件升级的功能,也就是开机的…

Linux监控服务并主动重启

Linux查询后台进程,如果没有进程号,则重启服务: #!/bin/sh basepath$(cd dirname $0; pwd) while true doprocnumps -ef|grep "服务名称"|grep -v grep|wc -lif [ $procnum -eq 0 ]then#启动命令echo date %Y-%m-%d date %H:%M:%S …

c语言数组传递技术作用特点,C语言笔试题总结3

4. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用&…

双一流大学毕业的我,应该何去何从?

内卷时代,万物皆可卷!什么是内卷,比如,你在电影院看电影,有一个人站起来了,那么就会有第二个人站起来,没一会儿所有的人就站起来了,但是和坐着相比,站着看电影体验感很差…

[Error]SyntaxError: unindent does not match any outer indentation level

刚开始学习Python 解析器用的IDLE&#xff0c;Python3.1&#xff0c;照着某个入门教程敲代码&#xff0c;敲到if的时候&#xff0c;总是出现这个错误 >>> if x<0:x0elif x0:SyntaxError: unindent does not match any outer indentation level 因为x0这行回车后&am…

go

我放弃Python转Go语言的9大理由&#xff08;附优秀书籍推荐&#xff09; https://www.jb51.net/article/126998.htm 转载于:https://www.cnblogs.com/charlieLeo/p/9512713.html

【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并

转载请注明出处&#xff1a;https://www.cnblogs.com/oceanicstar/p/9517159.html★像R语言里头有rep函数可以让向量的值重复&#xff0c;在python里面可以直接对列表用乘法让列表进行重复注&#xff1a;这里生成的重复列表是个新列表&#xff08;我们可以打印id查看一下&#…

c语言找出最大值和最小值并按降序排输出,大学一年级下学期C语言程序设计实验报告答案 完整版...

for(j7;j>i;j--)//将插入点以后的元素顺序往后移一位 a[j1]a[j];a[i]number;//插入数据 printf(\输出改变后的数组\\n\for(i0;i<8;i)//输出插入后仍有序的数组 printf(\ }(3)写一个3 x 5矩阵的转置程序&#xff0c;输出其原矩阵的值和转置以后的结果。提示&#xff1a;1)…

如何正确的使用微信公众号

我发现很多人可能不知道怎么在微信公众号里面查找自己想要的内容。所以制作了两个视频第一个是如何搜索文章&#xff0c;通过关键字搜索可以找到很多自己想要的内容还有通过微信公众号查找资料&#xff0c;这个是我最近刚增加的功能。~就这两件事~喜欢C/C语言或者正在学习C/C语…

shell替换程序里的代码

需求&#xff1a; 扩展名类型: .php .html .shtml .inc 将http://market.pk.com/files/union/ad_union_5.js替换为http://market.pk.com/files/union/union_5.jshttp://market.pk.com/files/advertisement/27/ad_27.js替换http://market.pk.com/files/upload/27/27.js http://m…

接上电就工作的单片机

对于手边的一盒STC单片机&#xff0c;测试一下它们使用相同的ISP方案在下载过程中是否都可以按照相同的方式完成程序的下载。同时对它们建立各自的元器件库&#xff0c;以便于后期的应用。通过这个实验&#xff0c;看到STC的单片机使用起来真实简捷明了&#xff0c;接上电就工作…