历史上的今天
今天是:2025年03月09日(星期日)
2021年03月09日 | 基于MSP430F149和nRF905的 无线血氧指夹的设计
2021-03-09 来源:elecfans
0 引言
智能小车又称轮式移动机器人,能够按预设模式在特定环境中自动移动,无需人工干预,可用于科学勘测、现代物流等方面。针对路面采用黑色标记线条作为路径引导线的应用场合,反射式光电传感器是常用的路径识别传感器。反射式光电传感器因信号处理方式和物理结构简单的特点而被广泛应用于结构化环境和低成本产品中,虽然存在检测距离近、预测性差的弱点,但通过合理设计和选择反射式光电传感器并结合合适的信息处理软件能够满足上述简单环境场合应用。随着汽车ECU 电子控制的发展,在汽车上配备远程信息处理器,传感器和接收器,通过这些器件的协调控制可以实现汽车的无人驾驶。本文提出基于MSP430单片机的控制装置,通过反射式光电传感器寻迹,MSP430单片机处理反射式光电传感器检测到的信号,从而控制智能车的转向,实现智能小车的自动寻迹。
1 系统总体设计方案
在小车车体的前端贴近地面的地方安装有4 组寻迹模块,如图1所示,单片机通过判断4个寻迹模块发送来的信号进行自动循迹。寻迹模块在遇到黑线时发送低电平信号,遇到空白的地方发送高电平信号,单片机通过判断高低电平即可作出相应的操作。通过4组寻迹模块发送的信号组合,可将小车行驶状态分成如表1所示7种状态。

单片机通过判断当前的运行状态,然后对L298 驱动模块进行相应的操作。当正常时,不进行调整;当左偏时,通过对L298 驱动模块进行调整,使小车的左轮速度大于右轮速度,即可实现小车向右调整。由于左偏有三种情形,但每种情形只是使能端的PWM 参数不同。当右偏时,处理流程与左偏类似。
2 寻迹模块的硬件设计
绘制完成的反射式光电传感器电路图如图2 所示。该电路的工作原理为:当光耦TCRT5000 有光线反射回来,即遇到白色等反光能力强的跑道,放大器LM324AD 的输出端输出为高电平,反之,输出为低电平。单片机通过控制LM324AD 的输出端电压即可做出相应的控制操作。四个相同的此模块分别与单片机的P41,P42,P43,P44引脚相连。单片机模块如图3所示。


3 循迹模块的软件设计
在小车的自动控制模式下,单片机通过判断4个寻迹模块发送回来的不同信号进行相应的操作。整体的思路为:小车左偏则左轮的速度要大于右轮的速度小车才能恢复正常,小车右偏则右轮的速度要大于左轮的速度小车才能恢复正常,当小车正常时两侧轮子的速度相同[6].由上面的分析可知速度的快慢可通过对L298使能端PWM值的控制进行调节。通过多次调试可得出如表2所示的PWM数值。

4 MCU控制与算法实现
系统控制由微处理器完成,微处理器采用MSP430单片机,当单片机读入传感器的信号后即可判断小车当前的行驶状态,具体流程如图4所示。

5 系统设计方案
本文设计的智能小车寻迹系统的电路如图5 所示。其中U1、U5、U7、U8 分别为反射式光电传感器A、B、C、D,布局如图5 所示,负责采集轨道信息。U6 为L298驱动模块,负责控制智能小车两侧直流电机。

6 结语
本文所设计的方案通过对智能车寻迹模块的研究,分析MSP430单片机的应用,利用感光传感器信息来控制智能车的自动转向,实现了智能车的自动寻迹。该寻迹系统的工作流程可概括为:通过四个外置的反射式红外线传感器收集轨道信息,在通过微处理器对采集到的信息进行处理,然后将处理后的信息通过PWM 信号传递给L298 驱动模块,L298 模块根据接收到的轨道信号控制智能车两侧直流电机的运行状态,最终达到寻迹的目的。智能车在军事、工业和民用领域的实际应用中,涉及到如何构造完整的导航系统以及多种传感器数据融合及控制算法等,这需要在实践中不断研究探索
史海拾趣
|
一、前言 随着系统功率预算的不断紧缩,迫切需要新型低功率元器件。对通信基础设施而言,电路板冷却、机箱体积小型化以及系统可靠性在系统设计中都起着重要的作用。对e-应用,电池寿命、热耗散和小体积尺寸是主要的设计难点。选用智 ...… 查看全部问答> |
|
wince下用IImage显示jpeg图片后不能删除图片的问题 wince下用IImage显示jpeg图片,不退出程序,结果不能删除该jpg文件,这是怎么回事呀? 只要执行过一片test() 函数, \\\\NandFlash\\\\test.jpg 文件就不能删除,删除时出现“文件共享,不能删除” 难道是我没释放什么吗? 函数如下: void tes ...… 查看全部问答> |
|
想找个兼职,VC、单片机、arm嵌入式开发 作过基于microchip系列、msp430系列、S3C44B0、AT91RM9200、ST710等mcu的项目, 包括电力系统监控、税控等行业. 可承担四层板电路设计,底层嵌入式程序设计及上位机配套程序编写。… 查看全部问答> |
|
请教:我在src/common/intr.c里定义一个全局变量来保存中断号,怎样才能在我自己的驱动里引用这个变量? 我要写一个键盘驱动, 首先在src/common/intr.c里定义了一个全局变量“volatile UINT32 g_keyIntIrq”用来记录发生中断的引脚; 怎样才能在我自己的驱动程序文件platform\\smdk2440a\\src\\drivers\\keybd\\kbdcommon\\S3c2440kbd.cpp里使用这个 ...… 查看全部问答> |
|
用P1来读取。然后0804的CS给P2.7,WR给P2.6,RD给P2.5。用外部中断0来接收INTR。下面是程序。我用示波器看P1口一直都没有变化啊,都是高。。。。都要疯掉了。 #include #define uchar unsigned char; uchar Tcount,ADnum; sbit ADcs=P2^7; sbi ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 1.1任务设计并制作一个水位监测与控制装置,1.2 要求1. 基本要求(1)通过键盘可以设定B瓶里的液位(0-25cm内的任意值),并通过控制电磁阀(或类似于电磁阀的装置)使B瓶的液位达到设定值。(2)液 ...… 查看全部问答> |
|
我刚学习zigbee,整了一套装备,在做两个指示灯交替闪烁实验时,模块的指示灯根本就没有反应。 这个实验我是按照买的资料提示做的,程序也是人家编好的,只需我下载到模块即可,但当我Debug后PC上的程序好像在运行,但模块上根本就没有什么变化, ...… 查看全部问答> |
|
首先我用的板子是stm32f103zc系列的,关于这个芯片,st官方的库中有一个spi全双工通信的例子,这个例子据我的分析是有问题的。 例子的readme中是这么说的: - STM3210C-EVAL Set-up - Connect SPI3 SCK pin (PC.10) ...… 查看全部问答> |
|
DIY 有关 LED应急灯的 注意事项 1、一些LED应急电源产品,停电后把电池组储存的电能逆变器为市电220V,相当于市电的延续,那么驱动电源是必须要存在的。 2、一部分LED应急电源产品,在停电后的输出是直流低电压,通用在20---80V之 ...… 查看全部问答> |




