基于51单片机的电机测速及显示系统设计
私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!
本设计是基于 51 单片机的电机测速与显示系统,主要方案是利用 STC 公司推出的8051内核单片机作为系统的控制单元,用单片机内部的定时器功能生成 PWM 信号,对电机进行调速控制;用 PCA 模块进行电机转速的反馈。电机采用直流电机,转速反馈用霍尔传感器,当电机旋转后,根据霍尔效应,霍尔传感器会根据转速线性输出脉冲,用单片机进行脉冲捕获,根据恒定时间内脉冲捕获的数量得到电机的转速信息,霍尔传感器的 AB 相位差得到电机的转向。电机的驱动与控制采用双 H桥电路控制,系统的输入电源是 12V 直流电,经过开关型稳压器得到 5V 电,供给单片机与电机驱动芯片的逻辑参考电压,当单片机向电机驱动输出可变的 PWM 信号时,电机会根据当前的 PWM 信号进行转速的调节。经过理论分析与实物的制作,电机转速能够按照目标设定值进行运转,当电机负载发生变化时,电机也能根据扰动量变化实时调节转速大小,不仅强化了微机与电路的设计知识,而且对动手能力也有很大的提升 。
主要研究内容
进行系统建模。根据系统的物理模型,得到系统的微分方程,然后进行拉普拉斯变换,得到传递函数,将时域转换成复数域然后分析系统的稳定性。加入 PI 校正网络,改良系统的暂态与稳态性能,将系统的稳态误差控制在一定的范围内,使电机转速和预设的靠近。当理论分析能够实现目标要求后,将传递函数进行 Z 变换,使其能够在单片机这种的纯离散系统中能正确实现[6]。
以 STC12C5A60S2 单片机作为控制单元,通过编写 C 语言程序,配置内部寄存器使其能够实现控制功能。由于 STC12C5A60S2 属于离散型控制器,需要将传递函数进行 Z 变换,然后将修正后的 PID 计算公式让单片机能够正确反应,从而实现精准控制。
按照需求,设计电路原理图,然后根据原理图绘制 PCB。使系统能够按照预期工作,从而实现目标功能。本设计针对电机测速与显示系统实现,利用自动控制原理与微处理器应用技术相结合,完善自身的理论分析与动手能力,拓展眼界。
系统设计框图如所示:
部分原理图:
PCB截图:
3D状态下:
实物图:
单片机实例分享,简易网络测试仪
网络已经融入了当今生活的各个方面,成为绝大多数人生活中不可或缺的重要组成部分。因为职业的关系,笔者经常会接触到网线的铺设以及网络的测试等方面工作,在工作中我发现借助专业的网络测试仪,可以极大地减少网络故障的排查时间,并能很好地提高工作效率。
专业的网络测试仪功能很强大:电缆查找、扫描线序、PING功能、寻找端口以及数据包分析等。然而,不容忽视的是,尽管一个专业的网络测试仪功能很强大,但价格往往不菲,动辄上万,因此相对于国外来说,国内使用范围还很有限。能不能自己设计一个简单实用的网络测试仪呢?当然可以。
网线制作的线序可以使用网线测试仪进行测试,并且价格也很便宜,因此,暂且忽略这个功能。综合考虑常用的几个功能,笔者设计的简易网络测试仪(以下简称测试仪)支持:PING功能、DHCP功能测试以及网络访问测试,也就是说,此测试仪建立在网络数据传输之上,能直观地反映网络传输性能。
笔者的设计思路如图30.1所示。
图30.1 简易网络测试仪结构
元器件选择
图30.2所示是此测试仪所用元器件,使用的元器件清单如表30.1所示。
图30.2 元器件实物
表30.1 元器件清单
1.网络传输接口芯片
网络传输接口是本测试仪的重点,选择一款合适的接口芯片对于简化制作及日后工作的稳定性都尤为重要。在这里,笔者选择了 ENC28J60,ENC28J60 是 Microchip Technology(美国微芯科技公司)2005年推出的28引脚封装独立以太网控制器。自从推出以来,应用极其广泛,这得益于它的引脚非常少、外围电路很简单、使用3线SPI串行接口和单片机通信。由于它占用芯片引脚非常少,所以焊接容易,甚至可以直接在洞洞板上进行电路布局。
2.MCU 主控芯片
由于选定ENC28J60作为网络接口芯片,MCU的引脚只需保证以下条件即可:
(1)支持3/4线SPI接口,用于与ENC28J60通信,当然,用I/O模拟也可,只是速度会稍慢;
(2)网络需要一定的数据包RAM缓存,因此主控芯片RAM至少为1KB以上;
(3)网络协议占用大量的代码空间,考虑到扩展性,片内Flash最好大于32KB。
在此,从通用与易上手方面综合考虑,笔者选用了51内核的1T单片机STC12C5A60S2,此单片机的特点为:改进传统51单片机12T的指令运行周期,达到了1T,速度大大提高;内部Flash空间达到了60KB,不用担心因程序代码的空间过大而放不下的问题。
电路设计规划
此测试仪的电路非常简单,主体由3片IC组成,外加带网络变压器的RJ45接口座HR911105A以及少量的阻容元器件。
显示器采用最常用的LCM1602字符型液晶显示屏,虽然只能显示16×2个字符,但经过优化的主菜单看起来效果也不错。
电路图如图30.3所示。
图30.3 简易网络测试仪电路图
工作流程简介
从笔者的设计思路中可以看出,测试仪采用菜单的形式对功能进行分类,包括TCP网页测试页面、PING命令以及通过DHCP功能从路由器自动获取IP这3大功能。其中,对网络协议的数据包处理与分发是测试仪工作的重点,在此,笔者就对此进行简要的介绍。
网络数据传输中,最常用的协议组就是“TCP/IP协议”,是一个协议组。相对测试仪系统而言,用到的协议有以下几个。
(1)ARP协议:该协议为大部分数据传输的前提,用于询问对方的MAC地址,以便在后期点对点传输中发送含有正确MAC的数据包。
(2)IP 协议:该协议用于点对点数据传输过程,通过 IP 地址判别接收方的数据包,它是ICMP、UDP和TCP协议的“容器”。
(3)ICMP协议:换个通俗的说法,该协议就是PING,用于确认对方的连接状态,正常连接就能收到PING回应。
(4)UDP协议:该协议是简单的面向数据包的传输层协议,不需要通过复杂的握手协议,只需要知道对方的IP地址和MAC即可进行数据传输,因此具有高效、却不可靠的特点。
(5)TCP协议:该协议是高可靠性的包交换传输协议,通过复杂的握手、重发、回应协议机制进行传输,和UDP相反,具有冗余、可靠的特点。
(6)DHCP协议:该协议是用来实现自动从路由器上获取IP地址、子网掩码以及网关IP地址的功能,免去了手动设置IP的麻烦。
这6个常用的协议只是众多网络协议中的很小一部分,但却负担着大部分网络传输任务,因此,网络传输其实并非很多人想象得那么不可捉摸。
焊接安装与调试
由于元器件不多,电路结构比较简单,遂采用Protel 99SE设计,完成后的PCB布局如图30.4所示。只要焊接无误,上电烧写程序后即能正常工作。笔者试制了几个均一次成功。
图30.4 PCB 布局
实际效果
焊接完成之后的效果如图30.5所示,之后进行液晶显示屏装配,效果如图30.6所示。
图30.5 焊接完成图
图30.6 装配上液晶显示屏
上电初始化完成后,进入主菜单,如图30.7所示,可以按动Next按键选择相应的功能,按Enter按键确认。
选择功能1是WebServer,是运行TCP网页测试的页面,用于网络中的电脑对测试仪进行数据访问测试。与测试仪在同一网络中的电脑均可以通过IE浏览器访问测试仪,在浏览器地址栏输入测试仪的地址即可,图30.8所示为测试仪运行界面,图30.9所示为电脑访问测试仪的网页,网页上可以显示电脑的IP地址以及MAC地址。
图30.7 主菜单
图30.8 运行网页服务器
选择功能2为PING功能,它是用于测试仪对网络中的电脑进行数据交换测试,不仅可以对同一局域网内的电脑进行测试,也可对跨越路由器的远程IP地址进行PING。如果对端电脑未能对测试仪进行回应,测试仪就会显示“Response TTL= ???”;如果收到回应,则显示TTL=064(也可能是255、128、32等);如果对端的电脑跨越路由器,则每跨越一层路由器,TTL的数值就会减1,这个数据也可以粗略地估计数据包经过的路由器层数。All后的数据表示总共进行了几次PING,Succ后的数据表示成功的PING次数,All与Succ之差就是丢包的次数。网络状况良好时,一般All和Succ的数据相等。图30.10为PING功能的PING通状态。
图30.9 电脑访问网页服务
选择功能3为设置功能,可以对测试仪的IP地址、子网掩码以及网关进行设置,也可在开启DHCP功能的路由器网络内,通过打开测试仪的DHCP功能从路由器处自动获取上述3个参数,这样就更加方便使用了,图30.11所示为设置的参数。
图30.10 PING 功能的PING 通状态
图30.11 设置菜单
总结
测试仪在设计之初,就本着尽量精简的原则,在完成支持ARP、ICMP、DHCP以及TCP协议的情况下,删除不必要的协议。因此,系统代码相当精简,只占用了大约16KB的代码空间。当然,它也仅能完成菜单选择PING命令、自动获取IP和网页显示电脑参数等简单的功能,一些复杂的网络功能,例如数据协议分析显示、网络数据包存储等,由于体积和硬件所限,在本测试仪中尚未涉及。
经过一段时间的试用,该系统运行稳定,在日常工作中与网线测试仪搭配,能够完成大部分测试和故障判断工作,完全可以满足日常的应用。
■ 为了方便大家制作,下位机、上位机的代码与 PCB 文件均可从qq群657864614下载。
相关问答
单片机 期末如何考试?在单片机期末考试中,通常会涉及到单片机的基本原理、编程语言、电路设计和实际应用等方面的知识。考试形式可能包括选择题、填空题、编程题和设计题等。考试内...
用示波器如何测试 单片机 是否处于正常工作状态?用根电线短一点,串个10K电阻,一头去捅探头插座的芯,一头接示波器自带的方波发生器接头用根电线短一点,串个10K电阻,一头去捅探头插座的芯,一头接示波器自带的...
怎样才能成为 单片机 工程师?一般来说,单片机属于硬件工程师的工作范畴。毕竟单片机驱动编程和电路设计是分不开,只有明白了单片机如何驱动才能设计出更为合理的电路产品。如果想更好的从...
大侠们 有没有谁知道,内阻测试仪的特点是什么?[回答]电池内阻测试仪bk-300怎么用?插上电源220V,关上电源开关,接通测试架,就可以检测了测试类型交流内阻测试测试方法四线制测量交流电流频率1KHZ±0...
英语翻译各位大侠出手相救下希望能有两篇关于 单片机测速 或者...[最佳回答]摘要:提出了一种基于MC68332单片机系统的脉冲式测速传感器的测评的方法.详细论述了对脉冲式速度传感器的速度,脉冲占空比,幅度,相位差各个指标的测...
请教 单片机 和运算放大器的不同,两者有什么不同啊,还有运算放...把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O口和中断系统、定时器/计时器等集成在一个芯片中,具有执行较复杂程序的器件叫单片机。运算放大器是一种放...
单片机 8051的晶振频率怎么算?根据使用需要确定,举例:如果要产生标准的串口波特率,应使用11.0592MHz,如果要让51单片机产生整数的时钟频率可使用12MHz或者24MHz单片机。另外根据单片机本...
51 单片机 如何测试串口连接正常[回答]直接传就行了,把中文放在一个数组中如a[]="无线传输";传的时候就取数组的首地址,再依次累加直到传完就行了。收到的东西还放在一个数组中就还原了,...
单片机 应用程序的开发步骤是什么?1:针对需要开发的设备构建原理图,可以用AD09,PROTEUS软件2:针对需要实现的功能编程,使用KEIL编写调试(51,AVR单片机)3:程序编好测试,测试包括功能测...1:...
手机蓝牙与 单片机 的通信如何实现?本篇回答,前半部分简单介绍一下,后半部分很详细!欢迎大家关注:电气电子视界手机蓝牙与单片机的通信实现方式如下。使用蓝牙转串口模块连接51单片机的RX和TX...