A41339. 主题: 姿态传感器控制双直流电机转动器件: ESP32 主控 1 块、 MPU6050 姿态传感器模块 1 个、 直流电机 2 个(分别为电机 A 和电机 B) 、 直流电机驱动器及相关器件, 以上模块也可以采用分立器件结合面包板进行搭建。任务要求:获取 MPU6050 姿态传感器的姿态角, 使用俯仰角和滚转角控制两个直流电机的转速、 转向和启停。 具体要求如下:(1) 将当前姿态传感器的俯仰角…
题目描述
主题: 姿态传感器控制双直流电机转动
器件: ESP32 主控 1 块、 MPU6050 姿态传感器模块 1 个、 直流电机 2 个(分别为电机 A 和
电机 B) 、 直流电机驱动器及相关器件, 以上模块也可以采用分立器件结合面包板进行搭建。
任务要求:
获取 MPU6050 姿态传感器的姿态角, 使用俯仰角和滚转角控制两个直流电机的转速、 转
向和启停。 具体要求如下:
(1) 将当前姿态传感器的俯仰角和滚转角分别输出到串口监视器;
(2) 当俯仰角的角度值位于-10~10 度间时, 直流电机处于停止状态;
(3) 当俯仰角的角度值位于-80~-10 度间时, 直流电机正转, 直流电机的转速随着倾角
的增大而增大, 随着倾角的减小而减慢;
(4) 当俯仰角的角度值位于 10~80 度间时, 直流电机反转, 直流电机的转速随着倾角
的增大而增大, 随着倾角的减小而减慢;
(5) 当滚转角的角度值位于-10~10 度间时, 直流电机启停不做变化;
(6) 当滚转角的角度值小于-10 度时, 电机 A 停止转动, 电机 B 保持原有状态不变;
(7) 当滚转角的角度值大于 10 度时, 电机 B 停止转动, 电机 A 保持原有状态不变;
(8) 程序采用 Arduino C/C++代码编写;
(9) MPU6050 姿态传感器的数据读取可以调用类库。 直流电机的控制不得调用类库;
(10) 程序编写过程中不得打开库例程和其它程序, 如发现, 实操成绩按照 0 分处理;
(11) 未作规定处可自行处理, 无明显与事实违背即可。
说明: 请考生在考试结束前, 按照如下要求提交相关文件:
(1) 将程序放在一个文件夹中, 并将文件夹命名为: DJKS6_身份证号;
(2) 将程序文件夹压缩为 1 个“rar 或 zip”格式文件, 大小 5M 以下;
(3) 将程序文件通过“上传附件”按钮进行上传。
参考资料:
教材所使用类库 MPU6050_tockn-1.5.2 的例程如下, 供参考。
#include <MPU6050_tockn. h>
#include <Wire. h>
MPU6050 mpu6050(Wire) ;
void setup() {
Serial. begin(9600) ;
Wire. begin() ;
mpu6050. begin() ;
mpu6050. calcGyroOffsets(true) ;
}
void loop() {
mpu6050. update() ;
Serial. print("angleX : ") ;
Serial. print(mpu6050. getAngleX() ) ;
Serial. print("\tangleY : ") ;
Serial. print(mpu6050. getAngleY() ) ;
Serial. print("\tangleZ : ") ;
Serial. println(mpu6050. getAngleZ() ) ;
}
参考答案
评分组成
实操题总分100分,由两部分组成,分别为:电路搭设和功能实现。其中电路搭设分值20分,功能实现80分。
1、电路搭设(20分)
元器件:
(1)装置中包含2个直流电机及直流电机驱动模块;(4分)
(2)装置中包含MPU6050姿态传感器;(4分)
电路搭设:
(3)MPU6050姿态传感器与主控板正确连接;(4分)
(4)直流电机驱动模块与主控板正确连接;(4分)
(5)直流电机与电机驱动模块正确连接。(4分)
2、功能实现(80分)
(1)实现将当前姿态传感器的俯仰角和滚转角分别输出到串口监视器;(20分)
(2)实现当俯仰角的角度值位于-10~10度间时,直流电机处于停止状态;(10分)
(3)实现当俯仰角的角度值位于-80~-10度间时,直流电机正转,直流电机的转速随着倾角的增大而增大,随着倾角的减小而减慢;(15分)
(4)实现当俯仰角的角度值位于10~80度间时,直流电机反转,直流电机的转速随着倾角的增大而增大,随着倾角的减小而减慢;(15分)
(5)实现当滚转角的角度值小于-10度时,电机A停止转动,电机B的转速和转向随着俯仰角的变化而变化;(10分)
(6)当滚转角的角度值大于10度时,电机B停止转动,电机A的转速和转向随着俯仰角的变化而变化。(10分)