基于MM32的电磁循迹小车制作

一.前期所需知识准备

1.制作电磁循迹小车首先要了解电磁循迹的基本原理

电磁循迹是一种利用电磁场的作用来导航或跟踪目标的技术。电磁循迹是通过小车的前端电感对赛道上的电磁导线产生电磁感应,在不同的位置,电感感应到的电流值是不相同的,并通过导线传输到运放(运算放大器)模块中,在通过导线传输到MM32单片机的ADC接口中,反馈到主控芯片内部。

(1)磁场感应:通过感应电磁场的变化,可以获取目标位置周围的磁场信息。通常使用磁敏传感器(如霍尔效应传感器)来检测磁场的变化。小编使用的是10mH的电感配套6.8nf的滤波电容进行检测磁场,各位看官要根据自己的实验场所所提供的不同的频率电磁场来选择电感和滤波电容呦。

(2)目标生成磁场:需要在目标上放置一个产生磁场的装置,例如磁铁或电流线圈。这个磁场可以是恒定的也可以是可控制的,小编使用的是逐飞科技的电磁频率发生器和漆包线做的电磁轨道。

(为了防止其他的干扰,小编对赛道线进行了一些绝缘和固定的处理)

(3)磁场检测:使用磁敏传感器在周围环境中探测磁场的变化。当目标产生的磁场靠近时,传感器会检测到磁场的变化。当磁敏传感器垂直于电磁导线是,此时磁敏传感器采取到最大值;当磁敏传感器平行于电磁导线时,磁敏传感器获得最小值。

(4)信号处理:通过对传感器输出信号的处理和分析,可以确定目标与传感器之间的相对位置关系。这通常涉及信号滤波、放大、采样和数据处理等步骤。

(5)控制与导航:根据目标与传感器之间的位置关系,采取相应的控制措施实现导航或跟踪目标的目的。例如,可以根据磁场信号的强度和方向来调整导航器或机器人的运动方向和速度。小编通过传感器采集的数据传输到主控芯片里面,通过代码的计算(在代码部分小编会进行讲解),输出PWM波,对电机和舵机进行控制,小编是用的S3010的舵机哦。

(6)电磁循迹技术的适用范围和精度取决于多种因素,包括磁场强度、传感器性能、环境噪声等。此外,为了实现更高的精度和可靠性,通常需要进行校准和校正,以减小误差和干扰。具体的电磁循迹系统设计和应用还需要结合实际情况进行详细的分析和研究。

2.对MM32芯片的了解与认知

这里小编就不进行详细的介绍了,小编能力有限,希望各位大佬包容包容我这可怜的小编吧,呜呜呜!!!

https://www.mindmotion.com.cn/download/products/DS_MM32F3270_SC.pdf

链接及就在这儿咯,大佬们请细读。

3.编程能力的准备。想必各位大佬都能轻车熟路的驾驭32的编程了,小编我呀,就不在各位关公面前耍大刀咯。放过孩子吧!

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个基于MM32F5270E芯片编写的红外循迹小车实现识别转弯的简单程序示例: ```c #include "mm32f5270.h" #define LEFT_SENSOR_PIN GPIO_Pin_0 #define RIGHT_SENSOR_PIN GPIO_Pin_1 void GPIO_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = LEFT_SENSOR_PIN | RIGHT_SENSOR_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); } void Motor_Stop(void) { // 停止电机动作 // 通过设置电机控制引脚的状态 } void Motor_Turn_Left(void) { // 向左转 // 通过设置电机控制引脚的状态 } void Motor_Turn_Right(void) { // 向右转 // 通过设置电机控制引脚的状态 } int main(void) { GPIO_Configuration(); while (1) { if (GPIO_ReadInputDataBit(GPIOA, LEFT_SENSOR_PIN) && GPIO_ReadInputDataBit(GPIOA, RIGHT_SENSOR_PIN)) { // 两侧都检测到黑线,直行 // 执行前进的动作 } else if (GPIO_ReadInputDataBit(GPIOA, LEFT_SENSOR_PIN)) { // 左侧检测到黑线,向右转 Motor_Turn_Right(); } else if (GPIO_ReadInputDataBit(GPIOA, RIGHT_SENSOR_PIN)) { // 右侧检测到黑线,向左转 Motor_Turn_Left(); } else { // 没有检测到黑线,停止 Motor_Stop(); } } } ``` 以上代码仅为示例,具体的电机控制、引脚配置和传感器读取可能需要根据你的硬件连接和具体需求进行调整。请确保在编写代码时参考芯片的数据手册和相关资料,以确保正确配置和操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值