本月累计签到次数:

今天获取 积分

单片机

单片机

766 浏览

80后工程师独白:那些年,我们一起玩过的单片机

电气控制类 Amazing 2017-03-23 13:05 发表了文章 来自相关话题

“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。





51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。






经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。





经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。






丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。





有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络 查看全部
“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。

QQ截图20170323130105.png

51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。

QQ截图20170323130229.png


经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。

QQ截图20170323130314.png

经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。

QQ截图20170323130349.png


丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。

QQ截图20170323130416.png

有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络
375 浏览

单片机程序跑飞 如何是好

电气控制类 冲上云霄 2017-03-23 12:53 发表了文章 来自相关话题

单片机程序死机,跑飞了可以从以下几个方面查找原因:

1、意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;

2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3、地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4、无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5、看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。
 
来源:网络 查看全部
单片机程序死机,跑飞了可以从以下几个方面查找原因:

1、意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;

2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3、地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4、无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5、看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。
 
来源:网络
401 浏览

PLC与单片机的本质区别在哪里?

电气控制类 金玉兰 2017-03-02 11:58 发表了文章 来自相关话题

1、PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品。有较强的通用性。

2、而单片机可以构成各种各样的应用系统,使用范围更广。单就“单片机”而言,它只是一种集成电路,还必须与其它元器件及软件构成系统才能应用。

3、从工程的使用来看,对单项工程或重复数极少的项目,采用PLC快捷方便,成功率高,可靠性好,但成本较高。

4、对于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但这要有相当的研发力量和行业经验才能使系统稳定。

从本质上说,PLC其实就是一套已经做好的单片机(单片机范围很广的)系统。

但PLC也有其特点:PLC广泛使用梯形图代替计算机语言,对编程有一定的优势。你可以把梯形图理解成是与汇编等计算器语言一样,是一种编程语言,只是使用范围不同!而且通常做法是由PLC软件把你的梯形图转换成C或汇编语言(由PLC所使用的CPU决定),然后利用汇编或C编译系统编译成机器码!PLC运行的只是机器码而已。梯形图只是让使用者更加容易使用而已。

如所说,那么MCS-51单片机当然也可以用于PLC制作,只是8位CPU在一些高级应用如: 大量运算(包括浮点运算),嵌入式系统(现在UCOS也能移植到MCS-51)等,有些力不从心而已,不过加上DSP就已经能满足一般要求了,而且同样使用梯形图编程,我们可把梯形图转化为C51再利用KEIL的C51进行编译。我们也能发现不用型号的PLC会选用不同的CPU,其实也说明PLC就是一套已经做好的单片机系统。

既然如此,当然也可以用单片机直接开发控制系统,但是对开发者要求相当高(不是一般水平可以胜任的),开发周期长,成本高(对于一些大型一点的系统你需要做实验,印刷电路板就需要一笔相当的费用,你可以说你用仿真器,用实验板来开发,但是我要告诉你,那样做你只是验证了硬件与软件的可行性,并不代表可以用在工业控制系统,因为工业控制系对抗干扰的要求非常高,稳定第一,而不是性能第一,所以你的电路板设计必须不断实验,改进)。

当你解决了上述问题,你就发现你已经做了一台PLC了,当然如果需要别人能容易使用你还需要一套使用软件,这样你可以不需要把你的电路告诉别人。你也不可能告诉别人。

这样一看PLC其实并不神秘,不少PLC是很简单的,其内部的CPU除了速度快之外,其他功能还不如普通的单片机。

通常PLC采用16位或32位的CPU,带1或2个的串行通道与外界通讯,内部有一个定时器即可,若要提高可靠性再加一个看门狗定时器问题就解决了。

另外,PLC的关键技术在于其内部固化了一个能解释梯形图语言的程序及辅助通讯程序,梯形图语言的解释程序的效率决定了PLC的性能,通讯程序决定了PLC与外界交换信息的难易。对于简单的应用,通常以独立控制器的方式运作,不需与外界交换信息,只需内部固化有能解释梯形图语言的程序即可。

实际上,设计PLC的主要工作就是开发解释梯形图语言的程序。现在的单片机完全可以取代PLC。以前的单片机由于稳定性和抗电磁干扰能力比较的弱和PLC是没有办法相比的,现在的单片机可能已经做到了高稳定性和很强的抗干扰能力在某些领域已经实现了替换。
 
 
 
来源:网络 查看全部
1、PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品。有较强的通用性。

2、而单片机可以构成各种各样的应用系统,使用范围更广。单就“单片机”而言,它只是一种集成电路,还必须与其它元器件及软件构成系统才能应用。

3、从工程的使用来看,对单项工程或重复数极少的项目,采用PLC快捷方便,成功率高,可靠性好,但成本较高。

4、对于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但这要有相当的研发力量和行业经验才能使系统稳定。

从本质上说,PLC其实就是一套已经做好的单片机(单片机范围很广的)系统。

但PLC也有其特点:PLC广泛使用梯形图代替计算机语言,对编程有一定的优势。你可以把梯形图理解成是与汇编等计算器语言一样,是一种编程语言,只是使用范围不同!而且通常做法是由PLC软件把你的梯形图转换成C或汇编语言(由PLC所使用的CPU决定),然后利用汇编或C编译系统编译成机器码!PLC运行的只是机器码而已。梯形图只是让使用者更加容易使用而已。

如所说,那么MCS-51单片机当然也可以用于PLC制作,只是8位CPU在一些高级应用如: 大量运算(包括浮点运算),嵌入式系统(现在UCOS也能移植到MCS-51)等,有些力不从心而已,不过加上DSP就已经能满足一般要求了,而且同样使用梯形图编程,我们可把梯形图转化为C51再利用KEIL的C51进行编译。我们也能发现不用型号的PLC会选用不同的CPU,其实也说明PLC就是一套已经做好的单片机系统。

既然如此,当然也可以用单片机直接开发控制系统,但是对开发者要求相当高(不是一般水平可以胜任的),开发周期长,成本高(对于一些大型一点的系统你需要做实验,印刷电路板就需要一笔相当的费用,你可以说你用仿真器,用实验板来开发,但是我要告诉你,那样做你只是验证了硬件与软件的可行性,并不代表可以用在工业控制系统,因为工业控制系对抗干扰的要求非常高,稳定第一,而不是性能第一,所以你的电路板设计必须不断实验,改进)。

当你解决了上述问题,你就发现你已经做了一台PLC了,当然如果需要别人能容易使用你还需要一套使用软件,这样你可以不需要把你的电路告诉别人。你也不可能告诉别人。

这样一看PLC其实并不神秘,不少PLC是很简单的,其内部的CPU除了速度快之外,其他功能还不如普通的单片机。

通常PLC采用16位或32位的CPU,带1或2个的串行通道与外界通讯,内部有一个定时器即可,若要提高可靠性再加一个看门狗定时器问题就解决了。

另外,PLC的关键技术在于其内部固化了一个能解释梯形图语言的程序及辅助通讯程序,梯形图语言的解释程序的效率决定了PLC的性能,通讯程序决定了PLC与外界交换信息的难易。对于简单的应用,通常以独立控制器的方式运作,不需与外界交换信息,只需内部固化有能解释梯形图语言的程序即可。

实际上,设计PLC的主要工作就是开发解释梯形图语言的程序。现在的单片机完全可以取代PLC。以前的单片机由于稳定性和抗电磁干扰能力比较的弱和PLC是没有办法相比的,现在的单片机可能已经做到了高稳定性和很强的抗干扰能力在某些领域已经实现了替换。
 
 
 
来源:网络
4 回答

单片机怎么入门?

IT软件类 JGSZHDFS 2017-01-05 14:31 回复了问题 • 6 人关注 来自相关话题

365 浏览

单片机死机了怎么办?

设备硬件类 邓紫棋 2016-12-12 09:54 发表了文章 来自相关话题

一、振荡器停止振荡

又可以分为电源电压不稳,或者强干扰引起的振荡器停振。

二、PC指针跑飞

电源电压不稳或强干扰引起PC跑飞,如果看门狗不好,也会引起死机。

三、设计上对长引出线的IO没有保护,静电打在IO口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。

四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。

综上所述:

设计电路时,应该注意:
1.电源稳定
2.IO保护
3.振荡器PCB布线要注意
4.复位电路设计和PCB布线
5.电源,信号线干扰路径的保护,加滤波TVS等
6.高速信号输出远离信号输入端,如SPI总线,I2C总线布线要远离ADC,复位,时钟等布线处,以及其他模拟前端。

一家之言,欢迎纠正

电源电压的地不稳定造成电源电压瞬间负电压导致单片机故障程序不发运行。

我的理解:

1、"跑飞"是因为程序隐患或外部干扰引起的误动作,致使PC被写入"出界"数据,跑到了RAM区,或者跑到了FLASH的空白区。如果PC指向了RAM区,哪情况就不好说了!因为程序译码器可能得到任意译码结果。如果PC指向了FLASH空白区,则可以事先将所有FLASH空白区填入某个你想要的数据,迫使程序译码器在这里翻译出你想要的指令,从而进行相应的处理。在IAR Workbench中好象有在空白区填充数据的设置。

2、"死机"是指PC进入了"死循环",或者是MCLK等于近似为零的值。此时,要想救活MCU,非外狗不可。

*程序运行过程中,如果MCU电源出现问题(电源供电问题,或其它外部电路引起的电源扰动),比较容易出现"跑飞"现象。程序跑飞应该是PC出错;软件和硬件都可能出这样的问题。

死机应该是CPU根本没有运行,多是硬件方面的问题造成的,比如POR复位不成功,430比较容易出现掉电不完全后重新上电。

有了看门狗就不会死机?

死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句--FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,

有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。

双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0

这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点。

目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机在分之百不死机的。

在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗--定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。

简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表)中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。
 
 
 
来源:网络 查看全部
一、振荡器停止振荡

又可以分为电源电压不稳,或者强干扰引起的振荡器停振。

二、PC指针跑飞

电源电压不稳或强干扰引起PC跑飞,如果看门狗不好,也会引起死机。

三、设计上对长引出线的IO没有保护,静电打在IO口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。

四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。

综上所述:

设计电路时,应该注意:
1.电源稳定
2.IO保护
3.振荡器PCB布线要注意
4.复位电路设计和PCB布线
5.电源,信号线干扰路径的保护,加滤波TVS等
6.高速信号输出远离信号输入端,如SPI总线,I2C总线布线要远离ADC,复位,时钟等布线处,以及其他模拟前端。

一家之言,欢迎纠正

电源电压的地不稳定造成电源电压瞬间负电压导致单片机故障程序不发运行。

我的理解:

1、"跑飞"是因为程序隐患或外部干扰引起的误动作,致使PC被写入"出界"数据,跑到了RAM区,或者跑到了FLASH的空白区。如果PC指向了RAM区,哪情况就不好说了!因为程序译码器可能得到任意译码结果。如果PC指向了FLASH空白区,则可以事先将所有FLASH空白区填入某个你想要的数据,迫使程序译码器在这里翻译出你想要的指令,从而进行相应的处理。在IAR Workbench中好象有在空白区填充数据的设置。

2、"死机"是指PC进入了"死循环",或者是MCLK等于近似为零的值。此时,要想救活MCU,非外狗不可。

*程序运行过程中,如果MCU电源出现问题(电源供电问题,或其它外部电路引起的电源扰动),比较容易出现"跑飞"现象。程序跑飞应该是PC出错;软件和硬件都可能出这样的问题。

死机应该是CPU根本没有运行,多是硬件方面的问题造成的,比如POR复位不成功,430比较容易出现掉电不完全后重新上电。

有了看门狗就不会死机?

死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句--FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,

有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。

双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0

这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点。

目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机在分之百不死机的。

在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗--定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。

简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表)中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。
 
 
 
来源:网络
371 浏览

单片机常见故障及处理方法

电气控制类 上海明日之星科技有限公司 2016-12-07 17:04 发表了文章 来自相关话题

工作和生活中会遇到许许多多的问题,可能让你一时陷于其中,但是总有解决的办法。随时记下遇到的问题,并做好总结,一方面有助于积累,另一方面也避免同一次错误再犯。
 
    1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
 
    2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
 
    3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
 
    4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
 
    5.看门狗溢出会导致单片机从休眠中醒来。
 
    6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
 
    7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
 
    8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz算出最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
 
    9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
 
    10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。
 
    11.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大。
 
    12.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。 查看全部

工作和生活中会遇到许许多多的问题,可能让你一时陷于其中,但是总有解决的办法。随时记下遇到的问题,并做好总结,一方面有助于积累,另一方面也避免同一次错误再犯。
 
    1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
 
    2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
 
    3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
 
    4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
 
    5.看门狗溢出会导致单片机从休眠中醒来。
 
    6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
 
    7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
 
    8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz算出最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
 
    9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
 
    10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。
 
    11.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大。
 
    12.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。
455 浏览

出租车计价器系统设计

智能制造类 自动化 2016-11-21 09:57 发表了文章 来自相关话题

现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
本电路以89S51 单片机为中心、附加A44E 霍尔传感器测距,实现对出租车计价统计,采用AT24C02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。
来源:网络




链接:http://pan.baidu.com/s/1mirubEC 密码:3pmy 查看全部

现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
本电路以89S51 单片机为中心、附加A44E 霍尔传感器测距,实现对出租车计价统计,采用AT24C02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。
来源:网络
20160712144845189.png

链接:http://pan.baidu.com/s/1mirubEC 密码:3pmy
376 浏览

大型轴齿轮专用机床设计

智能制造类 自动化 2016-11-21 09:57 发表了文章 来自相关话题

结合机电一体化的需要,设计以单片机作为控制系统的X-Y型工作台。通过对X-Y型工作台机械结构设计和控制电路接口的设计,阐述了机电一体化设计中的共性和关键技术。这种工作台通常与整机设计成一个整体,其形状,尺寸,结构因机器类型不同而有较大差异,但其工作原理有着共同点。
来源:网络




链接:http://pan.baidu.com/s/1nv8na2H 密码:5jlg 查看全部
结合机电一体化的需要,设计以单片机作为控制系统的X-Y型工作台。通过对X-Y型工作台机械结构设计和控制电路接口的设计,阐述了机电一体化设计中的共性和关键技术。这种工作台通常与整机设计成一个整体,其形状,尺寸,结构因机器类型不同而有较大差异,但其工作原理有着共同点。
来源:网络
20160712145329514.png

链接:http://pan.baidu.com/s/1nv8na2H 密码:5jlg
431 浏览

单片机实现的步进电机控制系统

智能制造类 自动化 2016-11-21 09:57 发表了文章 来自相关话题

单片微型计算机简称单片机。它是把组成微型计算机的各功能部件:中央处理器、CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通信接口等制作在一块集成芯片中,构成一个完整的微型计算机。单片机主要应用于控制领域,由于其具有可靠性高、体积小、价格低、易于产品化等特点,因而在智能仪器仪表、实时工业控制、智能终端、通信设备、导航系统、家用电器等自控领域获得广泛应用[1]。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,实质上是一种数字/角度转换器步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成.步进控制器由缓冲寄存器,环形分配器,控制逻辑及正,反转控制门等组成,能把输入的脉冲转换成环形脉冲,以便控制步进电机,并能进行正反向控制.但由于步进控制器线路复杂.成本高.采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器.软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式并可实现一台单片机控制多台电机.提供灵活多样的控制手段和提高控制精度对复杂繁琐的控制易于实现,尤其在本系统中更显示出微机控制的优越性。
本设计采用凌阳16 位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用 4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。
来源:网络




链接:http://pan.baidu.com/s/1dFNw0iX 密码:w2b5 查看全部

单片微型计算机简称单片机。它是把组成微型计算机的各功能部件:中央处理器、CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通信接口等制作在一块集成芯片中,构成一个完整的微型计算机。单片机主要应用于控制领域,由于其具有可靠性高、体积小、价格低、易于产品化等特点,因而在智能仪器仪表、实时工业控制、智能终端、通信设备、导航系统、家用电器等自控领域获得广泛应用[1]。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,实质上是一种数字/角度转换器步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成.步进控制器由缓冲寄存器,环形分配器,控制逻辑及正,反转控制门等组成,能把输入的脉冲转换成环形脉冲,以便控制步进电机,并能进行正反向控制.但由于步进控制器线路复杂.成本高.采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器.软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式并可实现一台单片机控制多台电机.提供灵活多样的控制手段和提高控制精度对复杂繁琐的控制易于实现,尤其在本系统中更显示出微机控制的优越性。
本设计采用凌阳16 位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用 4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。
来源:网络
20160713140018104.png

链接:http://pan.baidu.com/s/1dFNw0iX 密码:w2b5
浏览

上海明日之星科技有限公司 发表了文章 来自相关话题

4 回答

单片机怎么入门?

IT软件类 JGSZHDFS 2017-01-05 14:31 回复了问题 • 6 人关注 来自相关话题

3 回答

只有一个电机接口的单片机能不能接上两个电机呢?

电气控制类 Gaoshenghan 2016-04-27 13:51 回复了问题 • 4 人关注 来自相关话题

1 回答

51单片机和gsm模块的联接电路怎么设计啊?

IT软件类 匿名用户 2016-04-21 08:02 回复了问题 • 3 人关注 来自相关话题

766 浏览

80后工程师独白:那些年,我们一起玩过的单片机

电气控制类 Amazing 2017-03-23 13:05 发表了文章 来自相关话题

“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。





51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。






经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。





经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。






丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。





有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络 查看全部
“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。

QQ截图20170323130105.png

51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。

QQ截图20170323130229.png


经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。

QQ截图20170323130314.png

经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。

QQ截图20170323130349.png


丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。

QQ截图20170323130416.png

有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络
375 浏览

单片机程序跑飞 如何是好

电气控制类 冲上云霄 2017-03-23 12:53 发表了文章 来自相关话题

单片机程序死机,跑飞了可以从以下几个方面查找原因:

1、意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;

2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3、地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4、无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5、看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。
 
来源:网络 查看全部
单片机程序死机,跑飞了可以从以下几个方面查找原因:

1、意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;

2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3、地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4、无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5、看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。
 
来源:网络
401 浏览

PLC与单片机的本质区别在哪里?

电气控制类 金玉兰 2017-03-02 11:58 发表了文章 来自相关话题

1、PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品。有较强的通用性。

2、而单片机可以构成各种各样的应用系统,使用范围更广。单就“单片机”而言,它只是一种集成电路,还必须与其它元器件及软件构成系统才能应用。

3、从工程的使用来看,对单项工程或重复数极少的项目,采用PLC快捷方便,成功率高,可靠性好,但成本较高。

4、对于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但这要有相当的研发力量和行业经验才能使系统稳定。

从本质上说,PLC其实就是一套已经做好的单片机(单片机范围很广的)系统。

但PLC也有其特点:PLC广泛使用梯形图代替计算机语言,对编程有一定的优势。你可以把梯形图理解成是与汇编等计算器语言一样,是一种编程语言,只是使用范围不同!而且通常做法是由PLC软件把你的梯形图转换成C或汇编语言(由PLC所使用的CPU决定),然后利用汇编或C编译系统编译成机器码!PLC运行的只是机器码而已。梯形图只是让使用者更加容易使用而已。

如所说,那么MCS-51单片机当然也可以用于PLC制作,只是8位CPU在一些高级应用如: 大量运算(包括浮点运算),嵌入式系统(现在UCOS也能移植到MCS-51)等,有些力不从心而已,不过加上DSP就已经能满足一般要求了,而且同样使用梯形图编程,我们可把梯形图转化为C51再利用KEIL的C51进行编译。我们也能发现不用型号的PLC会选用不同的CPU,其实也说明PLC就是一套已经做好的单片机系统。

既然如此,当然也可以用单片机直接开发控制系统,但是对开发者要求相当高(不是一般水平可以胜任的),开发周期长,成本高(对于一些大型一点的系统你需要做实验,印刷电路板就需要一笔相当的费用,你可以说你用仿真器,用实验板来开发,但是我要告诉你,那样做你只是验证了硬件与软件的可行性,并不代表可以用在工业控制系统,因为工业控制系对抗干扰的要求非常高,稳定第一,而不是性能第一,所以你的电路板设计必须不断实验,改进)。

当你解决了上述问题,你就发现你已经做了一台PLC了,当然如果需要别人能容易使用你还需要一套使用软件,这样你可以不需要把你的电路告诉别人。你也不可能告诉别人。

这样一看PLC其实并不神秘,不少PLC是很简单的,其内部的CPU除了速度快之外,其他功能还不如普通的单片机。

通常PLC采用16位或32位的CPU,带1或2个的串行通道与外界通讯,内部有一个定时器即可,若要提高可靠性再加一个看门狗定时器问题就解决了。

另外,PLC的关键技术在于其内部固化了一个能解释梯形图语言的程序及辅助通讯程序,梯形图语言的解释程序的效率决定了PLC的性能,通讯程序决定了PLC与外界交换信息的难易。对于简单的应用,通常以独立控制器的方式运作,不需与外界交换信息,只需内部固化有能解释梯形图语言的程序即可。

实际上,设计PLC的主要工作就是开发解释梯形图语言的程序。现在的单片机完全可以取代PLC。以前的单片机由于稳定性和抗电磁干扰能力比较的弱和PLC是没有办法相比的,现在的单片机可能已经做到了高稳定性和很强的抗干扰能力在某些领域已经实现了替换。
 
 
 
来源:网络 查看全部
1、PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品。有较强的通用性。

2、而单片机可以构成各种各样的应用系统,使用范围更广。单就“单片机”而言,它只是一种集成电路,还必须与其它元器件及软件构成系统才能应用。

3、从工程的使用来看,对单项工程或重复数极少的项目,采用PLC快捷方便,成功率高,可靠性好,但成本较高。

4、对于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但这要有相当的研发力量和行业经验才能使系统稳定。

从本质上说,PLC其实就是一套已经做好的单片机(单片机范围很广的)系统。

但PLC也有其特点:PLC广泛使用梯形图代替计算机语言,对编程有一定的优势。你可以把梯形图理解成是与汇编等计算器语言一样,是一种编程语言,只是使用范围不同!而且通常做法是由PLC软件把你的梯形图转换成C或汇编语言(由PLC所使用的CPU决定),然后利用汇编或C编译系统编译成机器码!PLC运行的只是机器码而已。梯形图只是让使用者更加容易使用而已。

如所说,那么MCS-51单片机当然也可以用于PLC制作,只是8位CPU在一些高级应用如: 大量运算(包括浮点运算),嵌入式系统(现在UCOS也能移植到MCS-51)等,有些力不从心而已,不过加上DSP就已经能满足一般要求了,而且同样使用梯形图编程,我们可把梯形图转化为C51再利用KEIL的C51进行编译。我们也能发现不用型号的PLC会选用不同的CPU,其实也说明PLC就是一套已经做好的单片机系统。

既然如此,当然也可以用单片机直接开发控制系统,但是对开发者要求相当高(不是一般水平可以胜任的),开发周期长,成本高(对于一些大型一点的系统你需要做实验,印刷电路板就需要一笔相当的费用,你可以说你用仿真器,用实验板来开发,但是我要告诉你,那样做你只是验证了硬件与软件的可行性,并不代表可以用在工业控制系统,因为工业控制系对抗干扰的要求非常高,稳定第一,而不是性能第一,所以你的电路板设计必须不断实验,改进)。

当你解决了上述问题,你就发现你已经做了一台PLC了,当然如果需要别人能容易使用你还需要一套使用软件,这样你可以不需要把你的电路告诉别人。你也不可能告诉别人。

这样一看PLC其实并不神秘,不少PLC是很简单的,其内部的CPU除了速度快之外,其他功能还不如普通的单片机。

通常PLC采用16位或32位的CPU,带1或2个的串行通道与外界通讯,内部有一个定时器即可,若要提高可靠性再加一个看门狗定时器问题就解决了。

另外,PLC的关键技术在于其内部固化了一个能解释梯形图语言的程序及辅助通讯程序,梯形图语言的解释程序的效率决定了PLC的性能,通讯程序决定了PLC与外界交换信息的难易。对于简单的应用,通常以独立控制器的方式运作,不需与外界交换信息,只需内部固化有能解释梯形图语言的程序即可。

实际上,设计PLC的主要工作就是开发解释梯形图语言的程序。现在的单片机完全可以取代PLC。以前的单片机由于稳定性和抗电磁干扰能力比较的弱和PLC是没有办法相比的,现在的单片机可能已经做到了高稳定性和很强的抗干扰能力在某些领域已经实现了替换。
 
 
 
来源:网络
365 浏览

单片机死机了怎么办?

设备硬件类 邓紫棋 2016-12-12 09:54 发表了文章 来自相关话题

一、振荡器停止振荡

又可以分为电源电压不稳,或者强干扰引起的振荡器停振。

二、PC指针跑飞

电源电压不稳或强干扰引起PC跑飞,如果看门狗不好,也会引起死机。

三、设计上对长引出线的IO没有保护,静电打在IO口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。

四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。

综上所述:

设计电路时,应该注意:
1.电源稳定
2.IO保护
3.振荡器PCB布线要注意
4.复位电路设计和PCB布线
5.电源,信号线干扰路径的保护,加滤波TVS等
6.高速信号输出远离信号输入端,如SPI总线,I2C总线布线要远离ADC,复位,时钟等布线处,以及其他模拟前端。

一家之言,欢迎纠正

电源电压的地不稳定造成电源电压瞬间负电压导致单片机故障程序不发运行。

我的理解:

1、"跑飞"是因为程序隐患或外部干扰引起的误动作,致使PC被写入"出界"数据,跑到了RAM区,或者跑到了FLASH的空白区。如果PC指向了RAM区,哪情况就不好说了!因为程序译码器可能得到任意译码结果。如果PC指向了FLASH空白区,则可以事先将所有FLASH空白区填入某个你想要的数据,迫使程序译码器在这里翻译出你想要的指令,从而进行相应的处理。在IAR Workbench中好象有在空白区填充数据的设置。

2、"死机"是指PC进入了"死循环",或者是MCLK等于近似为零的值。此时,要想救活MCU,非外狗不可。

*程序运行过程中,如果MCU电源出现问题(电源供电问题,或其它外部电路引起的电源扰动),比较容易出现"跑飞"现象。程序跑飞应该是PC出错;软件和硬件都可能出这样的问题。

死机应该是CPU根本没有运行,多是硬件方面的问题造成的,比如POR复位不成功,430比较容易出现掉电不完全后重新上电。

有了看门狗就不会死机?

死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句--FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,

有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。

双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0

这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点。

目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机在分之百不死机的。

在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗--定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。

简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表)中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。
 
 
 
来源:网络 查看全部
一、振荡器停止振荡

又可以分为电源电压不稳,或者强干扰引起的振荡器停振。

二、PC指针跑飞

电源电压不稳或强干扰引起PC跑飞,如果看门狗不好,也会引起死机。

三、设计上对长引出线的IO没有保护,静电打在IO口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。

四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。

综上所述:

设计电路时,应该注意:
1.电源稳定
2.IO保护
3.振荡器PCB布线要注意
4.复位电路设计和PCB布线
5.电源,信号线干扰路径的保护,加滤波TVS等
6.高速信号输出远离信号输入端,如SPI总线,I2C总线布线要远离ADC,复位,时钟等布线处,以及其他模拟前端。

一家之言,欢迎纠正

电源电压的地不稳定造成电源电压瞬间负电压导致单片机故障程序不发运行。

我的理解:

1、"跑飞"是因为程序隐患或外部干扰引起的误动作,致使PC被写入"出界"数据,跑到了RAM区,或者跑到了FLASH的空白区。如果PC指向了RAM区,哪情况就不好说了!因为程序译码器可能得到任意译码结果。如果PC指向了FLASH空白区,则可以事先将所有FLASH空白区填入某个你想要的数据,迫使程序译码器在这里翻译出你想要的指令,从而进行相应的处理。在IAR Workbench中好象有在空白区填充数据的设置。

2、"死机"是指PC进入了"死循环",或者是MCLK等于近似为零的值。此时,要想救活MCU,非外狗不可。

*程序运行过程中,如果MCU电源出现问题(电源供电问题,或其它外部电路引起的电源扰动),比较容易出现"跑飞"现象。程序跑飞应该是PC出错;软件和硬件都可能出这样的问题。

死机应该是CPU根本没有运行,多是硬件方面的问题造成的,比如POR复位不成功,430比较容易出现掉电不完全后重新上电。

有了看门狗就不会死机?

死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句--FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,

有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。

双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0

这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点。

目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机在分之百不死机的。

在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗--定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。

简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表)中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。
 
 
 
来源:网络
371 浏览

单片机常见故障及处理方法

电气控制类 上海明日之星科技有限公司 2016-12-07 17:04 发表了文章 来自相关话题

工作和生活中会遇到许许多多的问题,可能让你一时陷于其中,但是总有解决的办法。随时记下遇到的问题,并做好总结,一方面有助于积累,另一方面也避免同一次错误再犯。
 
    1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
 
    2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
 
    3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
 
    4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
 
    5.看门狗溢出会导致单片机从休眠中醒来。
 
    6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
 
    7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
 
    8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz算出最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
 
    9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
 
    10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。
 
    11.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大。
 
    12.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。 查看全部

工作和生活中会遇到许许多多的问题,可能让你一时陷于其中,但是总有解决的办法。随时记下遇到的问题,并做好总结,一方面有助于积累,另一方面也避免同一次错误再犯。
 
    1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
 
    2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
 
    3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
 
    4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
 
    5.看门狗溢出会导致单片机从休眠中醒来。
 
    6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
 
    7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
 
    8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz算出最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
 
    9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
 
    10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。
 
    11.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大。
 
    12.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。
455 浏览

出租车计价器系统设计

智能制造类 自动化 2016-11-21 09:57 发表了文章 来自相关话题

现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
本电路以89S51 单片机为中心、附加A44E 霍尔传感器测距,实现对出租车计价统计,采用AT24C02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。
来源:网络




链接:http://pan.baidu.com/s/1mirubEC 密码:3pmy 查看全部

现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
本电路以89S51 单片机为中心、附加A44E 霍尔传感器测距,实现对出租车计价统计,采用AT24C02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。
来源:网络
20160712144845189.png

链接:http://pan.baidu.com/s/1mirubEC 密码:3pmy
376 浏览

大型轴齿轮专用机床设计

智能制造类 自动化 2016-11-21 09:57 发表了文章 来自相关话题

结合机电一体化的需要,设计以单片机作为控制系统的X-Y型工作台。通过对X-Y型工作台机械结构设计和控制电路接口的设计,阐述了机电一体化设计中的共性和关键技术。这种工作台通常与整机设计成一个整体,其形状,尺寸,结构因机器类型不同而有较大差异,但其工作原理有着共同点。
来源:网络




链接:http://pan.baidu.com/s/1nv8na2H 密码:5jlg 查看全部
结合机电一体化的需要,设计以单片机作为控制系统的X-Y型工作台。通过对X-Y型工作台机械结构设计和控制电路接口的设计,阐述了机电一体化设计中的共性和关键技术。这种工作台通常与整机设计成一个整体,其形状,尺寸,结构因机器类型不同而有较大差异,但其工作原理有着共同点。
来源:网络
20160712145329514.png

链接:http://pan.baidu.com/s/1nv8na2H 密码:5jlg
431 浏览

单片机实现的步进电机控制系统

智能制造类 自动化 2016-11-21 09:57 发表了文章 来自相关话题

单片微型计算机简称单片机。它是把组成微型计算机的各功能部件:中央处理器、CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通信接口等制作在一块集成芯片中,构成一个完整的微型计算机。单片机主要应用于控制领域,由于其具有可靠性高、体积小、价格低、易于产品化等特点,因而在智能仪器仪表、实时工业控制、智能终端、通信设备、导航系统、家用电器等自控领域获得广泛应用[1]。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,实质上是一种数字/角度转换器步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成.步进控制器由缓冲寄存器,环形分配器,控制逻辑及正,反转控制门等组成,能把输入的脉冲转换成环形脉冲,以便控制步进电机,并能进行正反向控制.但由于步进控制器线路复杂.成本高.采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器.软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式并可实现一台单片机控制多台电机.提供灵活多样的控制手段和提高控制精度对复杂繁琐的控制易于实现,尤其在本系统中更显示出微机控制的优越性。
本设计采用凌阳16 位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用 4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。
来源:网络




链接:http://pan.baidu.com/s/1dFNw0iX 密码:w2b5 查看全部

单片微型计算机简称单片机。它是把组成微型计算机的各功能部件:中央处理器、CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通信接口等制作在一块集成芯片中,构成一个完整的微型计算机。单片机主要应用于控制领域,由于其具有可靠性高、体积小、价格低、易于产品化等特点,因而在智能仪器仪表、实时工业控制、智能终端、通信设备、导航系统、家用电器等自控领域获得广泛应用[1]。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,实质上是一种数字/角度转换器步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成.步进控制器由缓冲寄存器,环形分配器,控制逻辑及正,反转控制门等组成,能把输入的脉冲转换成环形脉冲,以便控制步进电机,并能进行正反向控制.但由于步进控制器线路复杂.成本高.采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器.软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式并可实现一台单片机控制多台电机.提供灵活多样的控制手段和提高控制精度对复杂繁琐的控制易于实现,尤其在本系统中更显示出微机控制的优越性。
本设计采用凌阳16 位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用 4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。
来源:网络
20160713140018104.png

链接:http://pan.baidu.com/s/1dFNw0iX 密码:w2b5
431 浏览

AVR单片机实现的直流电机PWM调速控制器

电气控制类 hongzaomeigui 2016-11-10 15:17 发表了文章 来自相关话题

8535和L298驱动构成的直流电机PWM调速控制器。详细介绍了本调速控制系统的工作原理、光电编码器接口电路、PWM驱动接口电路和相应的各种控制软件设计。设计了。可实现两个编码器信号的采集。

对INT1的中断次数计数来测量通道B的脉冲数,读取PC6(即A相信号)的电平状态来判断电机的转动方向。以上升沿触发为例,即当B路信号的上升沿引起中断时,单片机判断PC6信号的电平高低。若PC6为低电平,则电机为正转,计数器N的值加1,若为高电平,则电机为反转,计数器N值减1.则电机的速度即为一个采样周期中N值的变化量。电机的转速《为:c AN十c――标度变换系数,可根据转速的量纲来选择AN个采样周期中的计数值,它的符号反映电机的转动方向-采样周期1.3L298驱动接口号需经过功率放大才能驱动电机,本调速控制系统采用的是L298驱动芯片,驱动接口电路如所示。

L298有单极性、双极性2种工作方式。单极性工作方式指的是在一个PWM周期内,电机的电枢只承受单极性的电压;双极性工作方式是指在一个PWM周期内电机电枢两端的电压呈正负变化。调速控制系统采用的是单极性工作方式。单片机的EnB引脚,它控制着电机转速大小;单片机的PD6或PD7经过一定的逻辑电路接到L298的IN1~IN4输入引脚上,它控制电机的转动方向。为了增强L298的驱动能力,本调速控制系统对L298的两路驱动进行了并联使用,最大驱动能力可以达到3A.比较器LM393主要起到了限制过流和保护L298的作用。LM393的同相端直接连到了一个可变电位计上,电位计的电压是可调的。调节电位计的电压能调节L298的限流电压。LM393的反相端接到L298的SENSEA和SENSEB两检测端。当检测电阻两端的电压大于限流电压时,比较器的反相端的电压大于同相端的电压,输出端输出低电平,从而把L298的EnA和EnB使能端拉低,L298停止工作。这就起到了限制过流和保护L298的作用。

2控制软件2.1总体程序框图启动定时中断。在主程序的循环内,首先从上位机(或是单片机系统自行给定)获得电机转速的命令字,包括控制电机的速度和转动方向。接着调用读编码器模块,获得电机的实际转速,把给定速度与实际速度作差,得出控制量偏差。然后,调用控制算法(如PI)模块。检查、等待定时的到来。若定时没到,调用显示模块,显示一些系统特定参数;若定时到了,调用PWM驱动模块,驱动电机。这就形成了本控制系统的速度闭环。

2编码器接口软件编码器接口软件包括编码器中断响应程序和读编码器程序两部分。编码器中断响应程序原理:若编码器的A相接PC6,B相接的是INT1.当编码器中断(INT1)到来时,检查方向引脚PC6,若是1,表示高电平,N值的寄存器加1;反之若是0,则N值寄存器减1.编码器中断响应程序如下。

;保护现场,压枝为1,跳行执行;PC6为,顺行执行;N值的寄存器减1;中断返回读编码器模块程序原理:把上一个采样周期的N值和当前采样周期的N值作差,得出脉冲变化的个数AN,由(1)式可以计算出电机的转速。

3控制算法软件AVR单片机8535通过编码器模块程序得到电机速度反馈信号,再与上位机给定(或是系统自行给定)的速度信号相减,得控制量偏差,经过一定的控制算法(如PI)得出控制量输出值。PI控制算法的程序如下:的是上位机给定的速度量乘于比例系数,结果放在;比例和积分结果相加,得控制输出量L298驱动接口软件中,AVR单片机8535主要进行的工作是对电机的转动方向控制、把控制输出量以PWM的形式输出。驱动接口软件的程序如下:outocrlaH,temp19是控制输出量,其再以PWM形式输出outocrlaL,tempi8为正传位反转3,从实验曲线可以看出,超调量小于10%,稳定时间为150ms左右,稳态误差小于5%.系统具有较好的快速性和控制精度。

4结束语直流调速控制器采用AVR单片机8535,实现了对直流电机的PWM调速控制。

从实际运用来看,它较好的实现了对直流电机的速度控制,并具有精度高、快速响应性好、稳定性好等优点。AVR单片机8535是一种新型的单片机,有很好的应用前景。将它运用于直流电机的PWM调速,不仅有良好性能,而且经济可靠,因而有很大的实用价值。
 
来源:网络 查看全部
8535和L298驱动构成的直流电机PWM调速控制器。详细介绍了本调速控制系统的工作原理、光电编码器接口电路、PWM驱动接口电路和相应的各种控制软件设计。设计了。可实现两个编码器信号的采集。

对INT1的中断次数计数来测量通道B的脉冲数,读取PC6(即A相信号)的电平状态来判断电机的转动方向。以上升沿触发为例,即当B路信号的上升沿引起中断时,单片机判断PC6信号的电平高低。若PC6为低电平,则电机为正转,计数器N的值加1,若为高电平,则电机为反转,计数器N值减1.则电机的速度即为一个采样周期中N值的变化量。电机的转速《为:c AN十c――标度变换系数,可根据转速的量纲来选择AN个采样周期中的计数值,它的符号反映电机的转动方向-采样周期1.3L298驱动接口号需经过功率放大才能驱动电机,本调速控制系统采用的是L298驱动芯片,驱动接口电路如所示。

L298有单极性、双极性2种工作方式。单极性工作方式指的是在一个PWM周期内,电机的电枢只承受单极性的电压;双极性工作方式是指在一个PWM周期内电机电枢两端的电压呈正负变化。调速控制系统采用的是单极性工作方式。单片机的EnB引脚,它控制着电机转速大小;单片机的PD6或PD7经过一定的逻辑电路接到L298的IN1~IN4输入引脚上,它控制电机的转动方向。为了增强L298的驱动能力,本调速控制系统对L298的两路驱动进行了并联使用,最大驱动能力可以达到3A.比较器LM393主要起到了限制过流和保护L298的作用。LM393的同相端直接连到了一个可变电位计上,电位计的电压是可调的。调节电位计的电压能调节L298的限流电压。LM393的反相端接到L298的SENSEA和SENSEB两检测端。当检测电阻两端的电压大于限流电压时,比较器的反相端的电压大于同相端的电压,输出端输出低电平,从而把L298的EnA和EnB使能端拉低,L298停止工作。这就起到了限制过流和保护L298的作用。

2控制软件2.1总体程序框图启动定时中断。在主程序的循环内,首先从上位机(或是单片机系统自行给定)获得电机转速的命令字,包括控制电机的速度和转动方向。接着调用读编码器模块,获得电机的实际转速,把给定速度与实际速度作差,得出控制量偏差。然后,调用控制算法(如PI)模块。检查、等待定时的到来。若定时没到,调用显示模块,显示一些系统特定参数;若定时到了,调用PWM驱动模块,驱动电机。这就形成了本控制系统的速度闭环。

2编码器接口软件编码器接口软件包括编码器中断响应程序和读编码器程序两部分。编码器中断响应程序原理:若编码器的A相接PC6,B相接的是INT1.当编码器中断(INT1)到来时,检查方向引脚PC6,若是1,表示高电平,N值的寄存器加1;反之若是0,则N值寄存器减1.编码器中断响应程序如下。

;保护现场,压枝为1,跳行执行;PC6为,顺行执行;N值的寄存器减1;中断返回读编码器模块程序原理:把上一个采样周期的N值和当前采样周期的N值作差,得出脉冲变化的个数AN,由(1)式可以计算出电机的转速。

3控制算法软件AVR单片机8535通过编码器模块程序得到电机速度反馈信号,再与上位机给定(或是系统自行给定)的速度信号相减,得控制量偏差,经过一定的控制算法(如PI)得出控制量输出值。PI控制算法的程序如下:的是上位机给定的速度量乘于比例系数,结果放在;比例和积分结果相加,得控制输出量L298驱动接口软件中,AVR单片机8535主要进行的工作是对电机的转动方向控制、把控制输出量以PWM的形式输出。驱动接口软件的程序如下:outocrlaH,temp19是控制输出量,其再以PWM形式输出outocrlaL,tempi8为正传位反转3,从实验曲线可以看出,超调量小于10%,稳定时间为150ms左右,稳态误差小于5%.系统具有较好的快速性和控制精度。

4结束语直流调速控制器采用AVR单片机8535,实现了对直流电机的PWM调速控制。

从实际运用来看,它较好的实现了对直流电机的速度控制,并具有精度高、快速响应性好、稳定性好等优点。AVR单片机8535是一种新型的单片机,有很好的应用前景。将它运用于直流电机的PWM调速,不仅有良好性能,而且经济可靠,因而有很大的实用价值。
 
来源:网络
446 浏览

基于单片机用软件实现直流电机PWM调速系统

电气控制类 hongzaomeigui 2016-11-10 15:04 发表了文章 来自相关话题

随着社会的发展,各种智能化的产品日益走人寻常百姓家。为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。

对直流电机的速度调节,我们可以采用多种办法,本文在给出直流电机调整和PWM实现方法的基础上,提供一种用单片机软件实现PWM调速的方法。

1直流电机调速原理根据励磁方式不同,直流电机分为自励和他励两种类型。不同励磁方式的直流电机机械特性曲线有所不同。对于直流电机来说,人为机械特性方程式为:Ke、K,――与电机有关的常数;Rad,Ra――电枢外加电阻、电枢内电阻;n0An理想空载转速、转速降。

分析(1)式可得,当分别改变%、和尺时,可以得到不同的转速〃,从而实现对速度的调节。由于=,当改变励磁电流(时,可以改变磁通量()的大小,从而达到变磁通调速的目的。但由于励磁线圈发热和电动机磁饱和的限制,电动机的励磁电流//和磁通量只能在低于其额定值的范围内调节,故只能弱磁调速。而对于调节电枢外加电阻时,会使机械特性变软,导致电机带负载能力减弱。

对于他励直流电机来说,当改变电枢电压时,分析人为机械特性方程式,得到人为特性曲线如所示。理想空载转速%随电枢电压升降而发生相应的升降变化。不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速。

基于以上特性,改变电枢电压,实现对直流电机速度调节的方法被广泛采用。改变电枢电压可通过多种途径实现,如晶闸管供电速度控制系统、大功率晶体管速度控制系统、直流发电机供电速度控制系统及晶体管直流脉宽调速系统等。

2PWM基本原理及其实现方法2.1PWM基本原理PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。

如所示,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

设电机始终接通电源时,电机转速最大为=则电机的平均速度为肪冲信号由公式(2)可见,当我们改变占空比Dd/r时,就可以得到不同的电机平均速度从而达到调速的目的。严格地讲,平均速度K与占空比D并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。

2.2实现方法PWM信号的产生通常有两种方法:一种是软件的方法;另一种是硬件的方法。硬件方法的实现已有很多文章介绍,这里不做赘述。本文主要介绍利用单片机对PWM信号的软件实现方法。

器7;和。通过控制定时器初值'和,从而可以实现从8051的任意输出口输出不同占空比的脉冲波形。由于PWM信号软件实现的核心是单片机内部的定时器,而不同单片机的定时器具有不同的特点,即使是同一台单片机由于选用的晶振不同,选择的定时器工作方式不同,其定时器的定时初值与定时时间的关系也不同。因此,首先必须明确定时器的定时初值与定时时间的关系。如果单片机的时钟频率为/,定时器/计数器为yv位,则定时器初值与定时时间的关系为:N个机器周期的时钟数。

W随着机型的不同而不同。在应用中,应根据具体的机型给出相应的值。这样,我们可以通过设定不同的定时初值7,从而改变占空比/>,进而达到控制电机转速的目的。

2.3控制程序设计控制程序的设计有两种方法:软件延时法和计数法。软件延时法的基本思想是:首先求出占空比/>,再根据周期T分别给电机通电M个单位时间t.,所以M=¢,A……然后,再断电ST个单位时间,所以M=t2/tQ.改变M和M的值,从而也就改变了占空比。计数法的基本思想是:当单位延时个数M求出之后,将其作为给定值存放在某存储单元中。在通电过程中,对通电单位时间的次数进行计数,并与存储器的内容进行比较。

若不相等,则继续输出控制脉冲,直到计数值与给定值相等,使电机断电。

3应用举例以89C51单片机为核心的油辊电机控制系统控制简图如所示。单片机按预定算法计算出定时初值,由软件转换成PWM信号,并由P3.输出,经放大器及固态继电器输出给电机,从而控制电机得电与失电。

软件采用计数法加软件延时法进行设计。如所示,单片机上电后,系统进入准备状态。当按动启动按钮后,判断P 3.0是否高电平。然后,根据P3.0分别进人计数值与预定值比较环节,当计数值与预定值相等时,清计数寄存器,并置P 3.0为相反状态,进人延时程序。根据不同的加减速按钮,调整P3.0输出高低电平时的预定值,从而可以控制P3.0输出高低电平时的延时时间,进而控制电压的大小。控制程序成功的应用于纺织机油辊电机的加减速控制。

4结束语通过单片机来实现电机调整有多种途径。相对于其他用硬件或者硬软结合的方法实现对电机进行调整,采用PWM用纯软件的方法来实现调速过程,具有更大的灵活性和更低的成本,能够充分发挥单片机的效能,对于简易速度控制系统的实现提供了一种有效的途径。对于软件,采用计数法加软件延时法进行设计的思路,为采用纯软件对电机速度的平滑调节提供了一种不错的解决方案,经过在“油辊电机控制系统”中的实际应用证明,能够取得满意的效果。
 
 
来源:网络 查看全部
随着社会的发展,各种智能化的产品日益走人寻常百姓家。为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。

对直流电机的速度调节,我们可以采用多种办法,本文在给出直流电机调整和PWM实现方法的基础上,提供一种用单片机软件实现PWM调速的方法。

1直流电机调速原理根据励磁方式不同,直流电机分为自励和他励两种类型。不同励磁方式的直流电机机械特性曲线有所不同。对于直流电机来说,人为机械特性方程式为:Ke、K,――与电机有关的常数;Rad,Ra――电枢外加电阻、电枢内电阻;n0An理想空载转速、转速降。

分析(1)式可得,当分别改变%、和尺时,可以得到不同的转速〃,从而实现对速度的调节。由于=,当改变励磁电流(时,可以改变磁通量()的大小,从而达到变磁通调速的目的。但由于励磁线圈发热和电动机磁饱和的限制,电动机的励磁电流//和磁通量只能在低于其额定值的范围内调节,故只能弱磁调速。而对于调节电枢外加电阻时,会使机械特性变软,导致电机带负载能力减弱。

对于他励直流电机来说,当改变电枢电压时,分析人为机械特性方程式,得到人为特性曲线如所示。理想空载转速%随电枢电压升降而发生相应的升降变化。不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速。

基于以上特性,改变电枢电压,实现对直流电机速度调节的方法被广泛采用。改变电枢电压可通过多种途径实现,如晶闸管供电速度控制系统、大功率晶体管速度控制系统、直流发电机供电速度控制系统及晶体管直流脉宽调速系统等。

2PWM基本原理及其实现方法2.1PWM基本原理PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。

如所示,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

设电机始终接通电源时,电机转速最大为=则电机的平均速度为肪冲信号由公式(2)可见,当我们改变占空比Dd/r时,就可以得到不同的电机平均速度从而达到调速的目的。严格地讲,平均速度K与占空比D并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。

2.2实现方法PWM信号的产生通常有两种方法:一种是软件的方法;另一种是硬件的方法。硬件方法的实现已有很多文章介绍,这里不做赘述。本文主要介绍利用单片机对PWM信号的软件实现方法。

器7;和。通过控制定时器初值'和,从而可以实现从8051的任意输出口输出不同占空比的脉冲波形。由于PWM信号软件实现的核心是单片机内部的定时器,而不同单片机的定时器具有不同的特点,即使是同一台单片机由于选用的晶振不同,选择的定时器工作方式不同,其定时器的定时初值与定时时间的关系也不同。因此,首先必须明确定时器的定时初值与定时时间的关系。如果单片机的时钟频率为/,定时器/计数器为yv位,则定时器初值与定时时间的关系为:N个机器周期的时钟数。

W随着机型的不同而不同。在应用中,应根据具体的机型给出相应的值。这样,我们可以通过设定不同的定时初值7,从而改变占空比/>,进而达到控制电机转速的目的。

2.3控制程序设计控制程序的设计有两种方法:软件延时法和计数法。软件延时法的基本思想是:首先求出占空比/>,再根据周期T分别给电机通电M个单位时间t.,所以M=¢,A……然后,再断电ST个单位时间,所以M=t2/tQ.改变M和M的值,从而也就改变了占空比。计数法的基本思想是:当单位延时个数M求出之后,将其作为给定值存放在某存储单元中。在通电过程中,对通电单位时间的次数进行计数,并与存储器的内容进行比较。

若不相等,则继续输出控制脉冲,直到计数值与给定值相等,使电机断电。

3应用举例以89C51单片机为核心的油辊电机控制系统控制简图如所示。单片机按预定算法计算出定时初值,由软件转换成PWM信号,并由P3.输出,经放大器及固态继电器输出给电机,从而控制电机得电与失电。

软件采用计数法加软件延时法进行设计。如所示,单片机上电后,系统进入准备状态。当按动启动按钮后,判断P 3.0是否高电平。然后,根据P3.0分别进人计数值与预定值比较环节,当计数值与预定值相等时,清计数寄存器,并置P 3.0为相反状态,进人延时程序。根据不同的加减速按钮,调整P3.0输出高低电平时的预定值,从而可以控制P3.0输出高低电平时的延时时间,进而控制电压的大小。控制程序成功的应用于纺织机油辊电机的加减速控制。

4结束语通过单片机来实现电机调整有多种途径。相对于其他用硬件或者硬软结合的方法实现对电机进行调整,采用PWM用纯软件的方法来实现调速过程,具有更大的灵活性和更低的成本,能够充分发挥单片机的效能,对于简易速度控制系统的实现提供了一种有效的途径。对于软件,采用计数法加软件延时法进行设计的思路,为采用纯软件对电机速度的平滑调节提供了一种不错的解决方案,经过在“油辊电机控制系统”中的实际应用证明,能够取得满意的效果。
 
 
来源:网络