DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1319|回复: 0
打印 上一主题 下一主题

[待整理] 基于PIC16F877单片机的简易测速计设计方案

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 07:38:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
0引言
       
        随着微电子技术的迅猛发展,单片机在汽车、通信、办公自动化、工业控制、高级玩具、家用电器等方面都得到了广泛的应用。如果将Proteus作为单片机系统仿真工具,则不用制作电路板,而可以使用Proteus进行系统虚拟实现,这样不仅能完成所需功能设计验证,还能降低硬件成本的耗用,从而缩短整个设计周期,从根本上提高了电子产品的开发效率。
       
        测速是工农业生产中经常遇到的问题,基于单片机的各种优势,将单片机应用于测速系统,具有很重要的意义。而对于测速技术,首先要解决的就是采样问题。在使用模拟技术制作测速设备时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低;而使用单片机进行测速,则可以使用简单的脉冲计数法。
       
        只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数,最终计算出单位时间内的脉冲个数,即可获得转速的相关信息。本文将基于PIC16F877单片机的捕捉功能来完成脉冲计数,利用软件编程实现相关物理关系的转换,最终得出齿轮线速度,并显示在数码管上。
       
        1测速计原理
       
        1.1 CCP1捕捉功能
       
        PIC16F877单片机中有两个CCP模块,其构造基本相同,分别记为CCP1和CCP2.每个CCP模块可以任意配置为捕捉(Capture)、比较(Compare)和脉宽调制(PWM)3个功能模式之一。
       
        CCP1的捕捉模式具有如下三个功能:其一是可以捕捉RC2/CPP1引脚出现的跳变并保存当时TMR1计数寄存器内容;其二是具有预分频器,可以实现每1个脉冲、每4个脉冲或16个脉冲捕捉一次;其三是捕捉时间能产生中断。
       
        1.2 CCP测速计原理
       
        在捕捉模式下,单片机可以捕捉引脚电平变化时刻的时间值,即引脚输入脉冲上升沿或下降沿出现时刻的精确时间值。
       
        PIC16F877的CCP1模块工作于捕捉模式时,当特定的跳变沿出现时,TMR1定时器的计数值会立即复制到CCPR1H和CCPR1L中并产生中断信号,通过在中断服务程序中读取这个16位计数值。当使用CCP1模块的捕捉功能实现相邻两次上升沿时间间隔的测量时,此时间间隔就是输入信号的周期g-Period.由于主频是4 MHz,即每个指令周期为1μs,将预分频比设置为1:1,测得周期结果单位为微秒级。所以最终测得的速度值speed通过以下公式得出:
       
        speed=(1M*60s*0.01m*pi)/g_Period
       
        其中,pi为圆周率值;0.01m为被测对象齿轮的直径,通过物理方法测得。
       
        speed=(1M*60s*0.01m*pi)/g_Period
       
        其中,pi为圆周率值;0.01m为被测对象齿轮的直径,通过物理方法测得。
       
        2功能实现
       
        2.1系统设计框图
       
        测速计功能的实现可由基于PIC16F877的主控制模块、显示模块、齿轮和光电传感器构成的被测模块等几部分构成。
       
        通过单片机的RC2/CCP1引脚分别连接被测模块和测量子模块,在Proteus软件仿真时,分别由信号发生器SG1和频率计作为硬件设备连接。SG1用来模拟被测模块产生信号,F1采用频率计方式运行,用来显示当前信号频率,用来做参考值与显示模块数据,即测速计测速结果值进行比较,以验证测速计测速结果的正确与否。各模块之间的连接关系如图1所示。
         
       
       
       
        2.2方案设计与实现
       
        该简易速度计的设计实现主要基于PIC16F877的CCP模块功能,这里我们首先将PIC16F877的CCP1配置为捕捉模式,预分频比设置为1:1,每个上升沿触发。
       
        当捕捉到跳变后CPP1中断标志位置位,直接采用中断方式进行处理,即在中断服务子程序中处理相关寄存器的数值或状态变化,计算并储存相关物理量,以上设置均由软件编程来完成。
       
       
        2.3设计与实现
       
        该简易速度计的设计实现主要基于PIC16F877的CCP模块功能,这里我们首先将PIC16F877的CCP1配置为捕捉模式,预分频比设置为1:1,每个上升沿触发。
       
        当捕捉到跳变后CPP1中断标志位置位,直接采用中断方式进行处理,即在中断服务子程序中处理相关寄存器的数值或状态变化,计算并储存相关物理量,以上设置均由软件编程来完成。
         
       
         
       
        3功能仿真
       
        3.1 Proteus下仿真电路的搭建
       
        要在Proteus下完成测速计功能的仿真,首先应在其界面新建设计文件并搭建仿真电路图,本例的测速计功能电路图如图4所示。
         
       
       
       
        在Proteus软件下进行仿真时,库里各电子模块本身集成有驱动功能,故各模块与单片机之间只需要用连接线简易连接即可,而无需外加任何驱动电路。但是,实际制作电路版时,还是需外加各模块的驱动电路,并考虑各器件之间的间距,以避免电磁干扰。
       
        3.2功能仿真
       
        在PIC系列单片机的专用开发环境MPLAB IDE 8.90下分别完成各个模块的代码编写,编译运行后,用调试工具Proteus VSM加载Proteus软件下建立好的设计文件,并运行,其结果如图5所示。
         
       
       
       
        3.3仿真结果分析
       
        如上图5所示,当信号频率配置为3 000 Hz时,仿真结果即测速计的速度显示为5 660 m/s,且以速度值为中心,小范围内上下波动。而经过理论计算的速度值约为5 655 m/s,与仿真值基本相同。事实上,经过连续测量n个周期后求平均值的办法,其理论值与仿真值之间的误差会明显减小。
       
        4结语
       
        本文提出了一种基于PIC16F877单片机捕捉功能实现的简易测速计设计方案,经过Proteus软件下的仿真验证,该设计方案基本符合预期结果。方案中的整个测速计设计简单方便、成本低、测速误差较小、易于实现,在模块化后,可作为一个集成测速模块直接应用于其他设计当中。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-2 11:21 , 耗时 0.093165 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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