【TB作品】MSP430G2553单片机,转速测量系统,转速测量仪,霍尔传感器

文章目录

  • 题目
  • 器件
  • 原理
    • 霍尔传感器测速原理:
    • 电机如何调节速度
    • 程序设计
  • 实验报告
    • 实验题目
    • 实验目的
    • 实验器材
    • 实验原理
      • 霍尔传感器测速原理
      • 电机调速原理
      • 定时器中断原理
    • 硬件连接
    • 软件设计
      • 定时器配置
      • 主程序
      • 中断处理程序
    • 实验结果
    • 实验总结

题目

设计基于MSP430的转速测量仪的软硬件。具体要求:
(1)转速测量仪测量范围100-3000r/m,测量精度为1%。
(2)可用任何小电机和传感器。
(3)在OLED上显示转速。

器件

所需要的器件:
(1)一个直流5V电机,一个轮子,一个霍尔传感器。
在这里插入图片描述

VCC:接电源正极3.3-5V
GND:接电源负极
DO:模块数字信号输出,有磁感应是输出低电平
在这里插入图片描述

(2)oled 0.96寸 IIC通信 四脚
在这里插入图片描述
(3)MSP430G2553开发板
在这里插入图片描述

原理

霍尔传感器测速原理:

霍尔传感器DO:模块数字信号输出,有磁感应是输出低电平。所以在轮子上贴2块磁铁后,电机带着轮子传,轮子每转一圈,霍尔传感器DO会输出2个低电平脉冲。意会一下,霍尔传感器DO的波形是这样:

在这里插入图片描述
单片机用定时器设置一个时间间隔比如一秒,数一下有多少个脉冲就可以知道一秒钟轮子赚了多少圈。

电机如何调节速度

下图是一个示意图,从上到下,VCC直接连点击M1,然后电机连接到RT1滑动变阻器。变阻器电阻越大,限制了电机的电流,那电机转速就降低。反之则升高。电容C4是为了存储电能,让电机工作得更顺畅。

在这里插入图片描述

程序设计

定时器中断设置,设置200ms中断,在中断里统计每秒转速和每分钟转速,中断设置:

    // 配置 Timer_A1
    TA1CCTL0 = CCIE;            // 开启CCRx中断
    TA1CCR0 = 50000;        // 200ms
    TA1CTL = TASSEL_2 + MC_1 + ID_3 + TACLR; // SMCLK, Up模式, 分频8, 清除定时器

程序设计上,设计2个不同尺度的时间,一个是1秒钟更新一次timer_count ,timer_count 就是一秒钟电机有多少转。另一个是一分钟更新一次timer_count_minute ,timer_count_minute 就是一分钟电机有多少转。

    tim_cnt++;
    if (tim_cnt >= 5) {
        tim_cnt = 0;
        timer_count = timer_count_tmp;
        timer_count_tmp = 0;
    }
    tim_cnt_minute++;
    if (tim_cnt_minute >= 300) { //1分钟
        tim_cnt_minute = 0;
        timer_count_minute = timer_count_tmp_minute;
        timer_count_tmp_minute = 0;
    }

故也需要一个时间显示,便于观察是否已经更新了显示:

        disp[disp_cnt++] = hour / 10 + '0';
        disp[disp_cnt++] = hour % 10 + '0';
        disp[disp_cnt++] = ':';
        disp[disp_cnt++] = minute / 10 + '0';
        disp[disp_cnt++] = minute % 10 + '0';
        disp[disp_cnt++] = ':';
        disp[disp_cnt++] = second / 10 + '0';
        disp[disp_cnt++] = second % 10 + '0';
        disp[disp_cnt++] = '\0';
        OLED_ShowString(16 * 2, 2, (unsigned char *) disp);

当然,也需要显示每秒钟转速显示:

        disp_cnt = 0;
        disp[disp_cnt++] = timer_count % 1000000 / 100000 + '0';
        disp[disp_cnt++] = timer_count % 100000 / 10000 + '0';
        disp[disp_cnt++] = timer_count % 10000 / 1000 + '0';
        disp[disp_cnt++] = timer_count % 1000 / 100 + '0';
        disp[disp_cnt++] = timer_count % 100 / 10 + '0';
        disp[disp_cnt++] = timer_count % 10 + '0';
        disp[disp_cnt++] = 'r';
        disp[disp_cnt++] = '/';
        disp[disp_cnt++] = 's';
        disp[disp_cnt++] = '\0';
        OLED_ShowString(16 * 2, 4, (unsigned char *) disp);

和每分钟的转速显示:

        disp_cnt = 0;
        disp[disp_cnt++] = timer_count_minute % 1000000 / 100000 + '0';
        disp[disp_cnt++] = timer_count_minute % 100000 / 10000 + '0';
        disp[disp_cnt++] = timer_count_minute % 10000 / 1000 + '0';
        disp[disp_cnt++] = timer_count_minute % 1000 / 100 + '0';
        disp[disp_cnt++] = timer_count_minute % 100 / 10 + '0';
        disp[disp_cnt++] = timer_count_minute % 10 + '0';
        disp[disp_cnt++] = 'r';
        disp[disp_cnt++] = '/';
        disp[disp_cnt++] = 'm';
        disp[disp_cnt++] = '\0';
        OLED_ShowString(16 * 2, 6, (unsigned char *) disp);

效果展示:
在这里插入图片描述

在这里插入图片描述

原理图:
在这里插入图片描述

帮助:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

实验报告

实验题目

设计基于MSP430的转速测量仪的软硬件

实验目的

  1. 掌握使用MSP430微控制器进行转速测量的基本方法。
  2. 理解霍尔传感器的工作原理并实现其在转速测量中的应用。
  3. 学习使用OLED显示屏进行数据显示。
  4. 掌握定时器中断的配置和使用。

实验器材

  1. MSP430G2553开发板
  2. 直流5V电机
  3. 霍尔传感器模块
  4. OLED显示屏(0.96寸 IIC通信)
  5. 电源及连接线

实验原理

霍尔传感器测速原理

霍尔传感器能够检测到磁场的存在。当轮子上粘贴了磁铁后,电机带动轮子旋转,每转一圈霍尔传感器会产生相应数量的脉冲信号,通过统计这些脉冲信号可以计算出轮子的转速。

电机调速原理

通过改变电机两端电压来调节电机转速,可以使用滑动变阻器实现电压的调节,电阻越大,电机转速越低,反之亦然。

定时器中断原理

MSP430中的定时器可以配置为周期性中断,通过定时器中断可以实现对霍尔传感器脉冲信号的计数,进而计算出电机转速。

硬件连接

  1. 将霍尔传感器模块的VCC接电源正极(3.3V-5V),GND接电源负极,DO接MSP430的P1.0。
  2. 将OLED显示屏的VCC接电源正极,GND接电源负极,SCL和SDA分别接MSP430的I2C接口。
  3. 将直流电机和滑动变阻器按照实验原理图连接。

软件设计

定时器配置

使用MSP430的定时器配置为200ms中断,通过在中断中统计脉冲信号,计算出每秒和每分钟的转速。

TA1CCTL0 = CCIE;            // 开启CCRx中断
TA1CCR0 = 50000;            // 200ms
TA1CTL = TASSEL_2 + MC_1 + ID_3 + TACLR; // SMCLK, Up模式, 分频8, 清除定时器

主程序

主程序中初始化显示屏,配置定时器中断,并在主循环中更新显示屏上的转速信息。

void main(void) {
    WDTCTL = WDTPW | WDTHOLD;   // 停止看门狗定时器

    // 配置DCO为16MHz
    BCSCTL1 = CALBC1_16MHZ;     
    DCOCTL = CALDCO_16MHZ;

    // 配置SMCLK为2MHz
    BCSCTL2 = DIVS_3;           

    /* 初始化显示 */
    OLED_Init();                   
    OLED_ShowCHinese(16 * 2, 0, 0);
    OLED_ShowCHinese(16 * 3, 0, 1);
    OLED_ShowCHinese(16 * 4, 0, 2);
    OLED_ShowCHinese(16 * 5, 0, 3);
    OLED_ShowCHinese(16 * 0, 2, 4);
    OLED_ShowCHinese(16 * 1, 2, 5);
    OLED_ShowCHinese(16 * 0, 4, 6);
    OLED_ShowCHinese(16 * 1, 4, 7);
    OLED_ShowCHinese(16 * 0, 6, 8);
    OLED_ShowCHinese(16 * 1, 6, 9);



    __bis_SR_register(GIE); // 进入 LPM0 低功耗模式,启用全局中断
    while (1) {
        // 显示系统时间和转速信息
        // 代码略...
    }
}

中断处理程序

在定时器中断中统计脉冲信号并计算转速,同时更新系统时间。

#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer1_A0(void) {
    tim_cnt++;
    if (tim_cnt >= 5) {
        tim_cnt = 0;
        timer_count = timer_count_tmp;
        timer_count_tmp = 0;
        time++;
    }
    tim_cnt_minute++;
    if (tim_cnt_minute >= 300) { 
        tim_cnt_minute = 0;
        timer_count_minute = timer_count_tmp_minute;
        timer_count_tmp_minute = 0;
    }
}

实验结果

成功实现了基于MSP430的转速测量仪,能够在OLED显示屏上实时显示电机的转速,测量范围为100-3000r/m,测量精度为1%。下图展示了实验效果:

实验总结

通过本次实验,掌握了使用MSP430微控制器进行转速测量的基本方法,理解了霍尔传感器的工作原理和使用方法,学习了如何使用OLED显示屏进行数据显示。实验过程中遇到了一些问题,如定时器配置和中断处理等,但通过查阅资料和调试程序,最终成功解决了这些问题,达到了预期的实验目的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动手学深度学习(Pytorch版)代码实践 -深度学习基础-10权重衰减

10权重衰减 """ 正则化是处理过拟合的常用方法:在训练集的损失函数中加入惩罚项,以降低学习到的模型的复杂度。 保持模型简单的一个特别的选择是使用L2惩罚的权重衰减。这会导致学习算法更新步骤中的权重衰减。 """impor…

Python基础教程(三十):math模块

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

AudioSep:从音频中分离出特定声音(人声、笑声、噪音、乐器等)本地一键整合包下载

AudioSep是一种 AI 模型,可以使用自然语言查询进行声音分离。这一创新性的模型由Audio-AGI开发,使用户能够通过简单的语言描述来分离各种声音源。 比如在嘈杂的人流车流中说话的录音中,可以分别提取干净的人声说话声音和嘈杂的人流车流噪声。…

对于初学者,该如何选择大模型框架 LlamaIndex 与 LangChain ?

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

任务3.8.4 利用RDD实现分组排行榜

文章目录 1. 任务说明2. 解决思路3. 准备成绩文件4. 采用交互式实现5. 采用Spark项目实战概述:使用Spark RDD实现分组排行榜任务背景任务目标技术选型实现步骤1. 准备数据2. 数据上传至HDFS3. 启动Spark Shell4. 读取数据生成RDD5. 数据处理6. 计算TopN7. 输出结果8…

「动态规划」如何求最长湍流子数组的长度?

78. 最长湍流子数组https://leetcode.cn/problems/longest-turbulent-subarray/description/ 给定一个整数数组arr,返回arr的最长湍流子数组的长度。如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。更正式地来说,…

算法期末整理

目录 一 算法概述 二 递归与分治策略 三 动态规划 四 贪心算法 五 回溯法 六 分支限界法 七 随机化算法 八 线性规划与网络流 一 算法概述 算法的概念 通俗地讲,算法是指解决问题的一种方法或一个过程。更严格地讲,算法是由若干条指令组成的有穷…

设计模式——职责链模式

职责链模式(Chain of Responsibility) 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连接成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。   发出请求的客户端并不知道职责链中哪一个对象…

python watchdog 配置文件热更新

目录 一、Watchdog示例 二、aiohttp服务配置热更新 在同事的golang代码中学习到了config.json热更新的功能,这里自己也学习了一下python写web服务的时候怎么来实现配置的热更新。主要是利用Watchdog这个第三方python库,来监控文件系统的改变&#xff0…

实战电商大数据项目搭建||电商大数据采集||电商API接口

我会提供给你大概1亿条真实的互联网用户上网数据,至于来源,我先不告诉你,绝对是你在网络上无法找到的宝贵数据源。 此外,还会给你提供一个基于当前数据特点而设计的大数据处理方案。 当然,为了防止用户的隐私部分被泄露…

每日优秀影视分享❗❗

一、热门电影推荐 《头脑特工队 2》:皮克斯再次为观众带来了这部经典动画的续集。 影片讲述了刚步入青春期的小女孩莱莉脑海中的复杂情绪进行的一场奇妙冒险。 这部电影不仅延续了前作的优秀品质,更在情感深度和视觉呈现上有了进一步的提升。 《艾尔登…

同时使用接口文档swagger和knife4j

项目场景: springboot项目中同时使用接口文档swagger和knife4j 问题描述 在实体类中设置了字段必填的属性,在访问接口文档时出现异常 实体类关键代码片段 /*** 部门表 sys_dept*/ public class SysDept extends BaseEntity {private static final lo…

Python基础入门

目录 1. 什么是Python? 2. 安装Python 3. Python基础语法 4. 数据结构 5. 文件操作 6. Python标准库 总结 1. 什么是Python? Python是一种高级编程语言,由Guido van Rossum于1991年发布。它以其简单易读的语法和强大的功能而闻名&…

高效22KW双向DCDC储能、充电电源模块项目设计开发

22kW 双向CLL谐振变换器的目标是输出电压范围宽、高效率和高功率密度的双向应用,如电动汽车车载充电器和储能系统。研究了一种新的灵活的 CLLC 双向谐振变换器增益控制方案,以便在充放电模式下实现高效率和宽电压增益范围。得益于 Wolfspeed C3MTM 1200V…

读《文明之光》第2册总结

《文明之光》系列大致按照从地球诞生到近现代的顺序讲述了人类文明进程的各个阶段,每个章节相对独立,全景式地展现了人类文明发展历程中的多样性。《文明之光》系列第二册讲述了从近代科学兴起,到工业革命时代,以及原子能应用这一…

【代码随想录】【算法训练营】【第46天】 [121]买卖股票的最佳时机 [122]买卖股票的最佳时机II [123]买卖股票的最佳时机III

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 46,周六,坚持很困难~ 题目详情 [121] 买卖股票的最佳时机 题目描述 121 买卖股票的最佳时机 解题思路 前提: 思路: 重点: 代码实…

Springboot应用的信创适配

CentOS7在2024.6.30停止维护后,可替代的Linux操作系统-CSDN博客 全面国产化之路-信创-CSDN博客 信创适配评测-CSDN博客 Springboot应用的信创适配 Springboot应用的信创适配,如上图所示需要适配的很多,从硬件、操作系统、中间件&#xff08…

开启声音的奇幻之旅:AI声音变换器的魔法秘籍与创意应用

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/这个充满科技魔力的时代,AI Voice Changer 就像一把神奇的钥匙,能为我们打开声音的魔法之门。今天,就让我带你…

基于CentOS Stream 9平台 安装/卸载 Redis7.0.15

已更正systemctl管理Redis服务问题 1. 官方下载地址 https://redis.io/downloads/#redis-downloads 1.1 下载或上传到/opt/coisini目录下: mkdir /opt/coisini cd /opt/coisini wget https://download.redis.io/releases/redis-7.0.15.tar.gz2. 解压 tar -zxvf re…

【实战分享】雷池社区版助力构建高可用、安全的Web应用架构

引言 在日益复杂的网络环境中,构建坚不可摧的安全防线成为每一位网站守护者的重要使命。本文将深入剖析一套集CDN加速、高效Nginx代理与雷池WAF深度防护于一体的现代网站安全架构设计,特别强调雷池WAF在此架构中的核心作用及其对整体安全性的提升策略。…