【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_A1TA1CCTL0 = CCIE;            // 开启CCRx中断TA1CCR0 = 50000;        // 200msTA1CTL = 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为16MHzBCSCTL1 = CALBC1_16MHZ;     DCOCTL = CALDCO_16MHZ;// 配置SMCLK为2MHzBCSCTL2 = 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显示屏进行数据显示。实验过程中遇到了一些问题,如定时器配置和中断处理等,但通过查阅资料和调试程序,最终成功解决了这些问题,达到了预期的实验目的。

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

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

相关文章

深度剖析ElasticSearch分页原理与深分页问题|ES深分页问题|ES分页原理剖析

文章目录 ES分页|Paginate search resultsES深分页的问题一页获取数据量太大,报错分页深度太大,报错官方解释 其他解决方案Search after解决两个问题 有没有深分页查询的必要性?search after & PIT的使用方式1.创建pit2.首次查询3.之后的…

21.智能指针(上)

目录 一、概念二、Box\<T\>2.1 概念与应用场景2.2 简单应用2.3 递归类型的创建 三、通过Deref trait将智能指针当作常规引用处理3.1 常规引用3.2 像引用一样使用Box\<T\>3.3 自定义智能指针3.4 函数和方法的隐式解引用强制转换3.5 解引用强制转换与可变性交互 四、…

YOLOv8中的C2f模块

文章目录 一、结构概述二、模块功能 一、结构概述 C2f块:首先由一个卷积块(Conv)组成&#xff0c;该卷积块接收输入特征图并生成中间特征图特征图拆分:生成的中间特征图被拆分成两部分&#xff0c;一部分直接传递到最终的Concat块&#xff0c;另一部分传递到多个Botleneck块进…

用VScode打开keil下的文件中文编码乱码的问题,以及利用VScode转换字符编码的方法

目录 问题描述 解决方法 利用VScode转换字符编码的方法 问题描述 keil中默认的编码是ANIS如下图所示。 而VScode中默认的编码为UTF-8 &#xff0c;打开后如下。 解决方法 建议另存后&#xff0c;再打开目标文件&#xff0c;防止误操作&#xff01; 在VScode的最下方可以找…

一文读懂数据仓库ODS层

数据仓库一般分为三层&#xff0c;分别为数据贴源层&#xff08;ODS&#xff0c;Operation Data Store&#xff09;、数据公共层&#xff08;CDM&#xff0c;Common Data Model&#xff09;和数据应用层&#xff08;ADS&#xff0c;Application Data Service&#xff09;。其中…

【windows|008】DNS服务详解

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

多模态MLLM都是怎么实现的(10)-Chameleon和Florence-2如果你想玩多模态就不能不了解

这个也是一个补充文&#xff0c;前9章基本把该讲的讲了&#xff0c;今天这个内容主要是因为Meta出了一个Chameleon&#xff0c;这个以后可能会成为LLaMA的一个很好的补充&#xff0c;或者说都有可能统一起来&#xff0c;叫LLaMA或者Chamleon或者什么别的&#xff0c;另外我司把…

MSPM0G3507——PWM

在sysconfig中&#xff0c;左侧可以选择MCU的外设&#xff0c;我们找到并点击TIMER-PWM选项卡&#xff0c;在TIMER-PWM中点击ADD&#xff0c;就可以添加定时器下的PWM外设。 这里设置通道0为100Hz的频率&#xff0c;0%占空比的PWM&#xff0c;周期计数值为1000&#xff0c;比较…

聚类算法(2)--- ISODATA算法

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学习笔记&#…

专业技能篇---计算机网络

文章目录 前言计算机网络基础一、网络分层模型 HTTP一、从输入URL到页面显示发生了什么&#xff1f;二、Http的状态码有哪些&#xff1f;三、 HTTP与HTTPS有什么区别&#xff1f;四、URI 和 URL 的区别是什么?五、Cookie和Session有什么区别&#xff1f;六、GET与POST WebSock…

初阶 《数组》 4. 数组作为函数参数

4. 数组作为函数参数 往往我们在写代码的时候&#xff0c;会将数组作为参数传给函数。比如&#xff1a;我要实现一个冒泡排序函数&#xff08;将一个整形数组排序&#xff09; 4.1 冒泡排序函数的错误设计 #include <stdio.h> void bubble_sort(int arr[]) {int sz s…

智慧工厂监控可视化解决方案(160页WORD)

方案介绍&#xff1a; 本智慧工厂监控可视化解决方案通过集成先进的物联网和大数据技术&#xff0c;为制造业企业提供了全面的数字化转型支持。通过实时监控、数据分析、可视化展示等功能&#xff0c;帮助企业提升生产效率、降低运营成本、优化产品质量和能源利用率&#xff0…

【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、Python简介1.1 历史背景1.2 设计哲学1.3 语言特性1.4 应用场景1.5 为什么选择Python 二、Python语言基础2.1 注释规则2.1.1 单行注释2.1.2 多行注释2.1.3 文件编码声明注释 2.2 代码缩进2.3 编码规范2.3.1 命名规范…

【pytorch02】手写数字问题引入

1.数据集 现实生活中遇到的问题 车牌识别身份证号码识别快递单的识别 都会涉及到数字识别 MNIST&#xff08;收集了很多人手写的0到9数字的图片&#xff09; 每个数字拥有7000个图像train/test splitting:60k vs 10k 图片大小28 28 数据集划分成训练集和测试集合的意义…

springboot + Vue前后端项目(第十七记)

项目实战第十七记 写在前面1. 个人信息1.1 Person.vue1.2 设置路由并改动Header.vue1.3 动态刷新头像1.3.1 在保存个人信息时&#xff0c;触发方法1.3.2 父组件Manage.vue1.3.3 再将user以prop方式传递给子组件Header.vue1.3.4 Header.vue使用user 1.4 效果图 2. 修改密码2.1 前…

配置 python 脚本操作Excel 环境

在已装python的前提下 一、安装依赖库 pip install pandas pip install openpyxl安装完后&#xff0c;可以在 Python 中运行以下命令来查看 pandas 或 openpyxl 的安装路径&#xff1a; import pandas as pd print(pd.__path__)import openpyxl print(openpyxl.__path__)二、测…

【CT】LeetCode手撕—415. 字符串相加

目录 题目1- 思路2- 实现⭐415. 字符串相加——题解思路 3- ACM 实现 题目 原题连接&#xff1a;415. 字符串相加 1- 思路 模式识别&#xff1a;字符串相加 逆向遍历过程模拟 数据结构 ① String res &#xff1a;记录res 、② carry 记录进位值① 定义两个整数遍历 nums1 …

本地项目上传到gitee

本地项目通过webstorm上传到gitee 1.登录gitee选择新建仓库 2.输入新建仓库的名字&#xff08;名字与本地项目名一致&#xff09; 3.复制链接 4.找到本地项目&#xff0c;选中地址输入cmd打开命令提示框 5.输入git init初始化git&#xff0c;生成.git文件 6.webstorm中打开项目…

Android修行手册-ImageView的adjustViewBounds和设置透明度

点击跳转>GameFramework文档系列&#xff08;二&#xff09;- 场景相关 点击跳转>GameFramework文档系列&#xff08;三&#xff09;- 日志管理和UI 点击跳转>GameFramework文档系列&#xff08;四&#xff09;- 事件订阅 点击跳转>保姆式Cocos合成大西瓜案例 …

JDK19特性

JDK19特性 一、JAVA19概述 JDK 19 2022 年 9 月 20 日正式发布以供生产使用,非长期支持版本。不过,JDK 19 中有一些比较重要的新特性值得关注。 JDK 19 只有 7 个新特性: JEP 405: Record Patterns(记录模式)[1] (预览)JEP 422: Linux/RISC-V Port[2]JEP 424: Foreign …