如何使用MSP430启动板制作一个线路跟随机器人
2022-11-08 来源:circuitdigest
线路跟随因其简单性而成为学生和初学者中流行的机器人项目之一。它遵循一条线,黑色或白色,具体取决于您如何对微控制器进行。在这里,我们使用的 启动板制作一个线路跟随机器人,它遵循黑线。
所需材料
德州仪器 () 的 MSP430G2 启动板
L298D 驱动模块
连接线
模块
底盘,轮子,过山车
Energia IDE
(3.3v) 和 5v-12v
线路跟随器的概念
线跟随器的概念与光有关。我们在黑白表面上使用了光的行为。当光线落在白色表面上时,它几乎会完全反射,如果是黑色表面,光线会被黑色表面吸收。这种解释的光行为用于该线跟随机器人。
在这个基于 MSP430 的线路跟随机器人中,我们使用了红外发射器和红外接收器,也称为。它们用于发送和接收光。红外透射红外光。当红外线落在白色表面上时,它会被反射回来并被光电二极管捕获,从而产生一些电压变化。当红外光落在黑色表面上时,光被黑色表面吸收,没有光线被反射回来,因此光电二极管不会接收任何光或光线。要了解有关红外传感器的更多信息,请点击链接。
在这个基于 MSP430 的线路跟随机器人中,当传感器到白色表面时,MSP 得到 1 作为输入,当感应黑线 MSP 得到 0 作为输入时。
电路说明
我们可以将全线跟随机器人分为不同的部分,如传感器部分、控制部分和驱动器部分。
传感器部分:本节包含红外二极管、电位计、()和 LED。电位计用于在比较器的一个端子上设置基准电压,红外传感器检测线路并在比较器的第二个端子上提供电压变化。然后比较器比较两个电压并在输出端产生数字信号。在本电路中,我们为两个传感器使用了两个比较器。LM358用作比较器。LM358 内置两个低噪声运算放大器。
控制部分:MSP430启动板用于控制随行机器人的整个过程。比较器的输出连接到数字引脚P1_3和 430 启动板的P1_4。MSP430 快速启动板读取这些信号,并将命令发送到以驱动线路跟随器。
驱动程序部分:驱动器部分由和两个直流电机组成。电机驱动器用于驱动电机,因为 MSP430 启动板不能为电机提供足够的电压和。因此,我们增加了一个电机驱动电路,为电机提供足够的电压和电流。在这里,我们使用L298d驱动器来驱动直流电机。MSP430 快速启动板向此电机驱动程序发送命令,然后驱动电机。
我们开发了使用不同 Micrcontroller 的线路跟随机器人:
使用8051微控制器的线路跟随机器人
使用的线路跟随机器人
使用的线跟随机器人
使用C微控制器的线路跟随机器人
使用MSP430的随线机器人的工作
线路跟随器的工作非常有趣。线路跟随机器人使用传感器感应黑线,然后将信号发送到 MSP430 启动板。然后 MSP430 启动板根据传感器的输出驱动电机。
在这个项目中,我们使用两个红外传感器模块,即左传感器和右传感器。当左右传感器都感应到白色时,机器人向前移动。
如果左侧传感器出现在黑线上,则机器人转向左侧。
如果右传感器感应到黑线,则机器人向右转动,直到两个传感器都位于白色表面。当白色表面出现时,机器人再次开始向前移动。
如果两个传感器都位于黑线上,则机器人停止。
电路图
这款MSP430 线路跟随机器人的电路非常简单。比较器的输出直接连接到 MSP430 快速启动板的数字引脚编号p1_3和P1_4。电机驱动器的输入引脚 IN1、IN2、IN3 和 IN4 分别连接到 MSP430 Launchpad 的数字引脚 P1_5、P2_0、P2_1 P2_2。一个电机连接在电机驱动器OUT1和OUT2的输出引脚上,另一个电机连接在OUT3和OUT4上。这里我们使用3.3v电源为除电机驱动器模块以外的整个电路供电。我们为电机驱动器模块提供了 8v。用户可以使用5v-12v。
您还可以构建自己的 IR 模块,就像我在 Pe Board 上构建的那样。以下是红外模块的电路:
编程说明
完整的程序和可以在本文末尾找到。
在程序中,首先,我们定义传感器和电机的输入和输出引脚。然后为线路跟随器的方向定义一些宏,然后编写指令来选择传感器输出
注意:传感器可能是低电平有效或高电平有效,因此首先检查传感器的输出是什么,然后通过注释或取消注释 acTIveLowMode 来选择指令。对于活动高电平,请注释活动低模式宏。
#define l_sensor P1_3
#define r_sensor P1_4
int pins[4]={P1_5,P2_0,P2_1,P2_2};
#define forward 0x05
#define left 0x06
#define right 0x09
#define stop 0x00
//#define acTIveLowMode
#ifdef acTIveLowMode
int res[4]={forward,left,right,stop};
#else
int res[4]={stop,right,left,forward};
#endif
之后,在设置功能中,我们为传感器和电机引脚提供方向。然后在循环功能中,我们检查输入并将输出发送到电机驱动器模块以运行电机。
void setup()
{
for(int i=0;i<4;i++)
pinMode(pins[i], OUTPUT);
pinMode(l_sensor, INPUT);
pinMode(r_sensor, INPUT);
}
void loop() { int sense=(digitalRe(l_sensor)<<1) | digitalRead(r_sensor); for(int i=0;i<4;i++) digitalWrite(pins[i], (res[sense]>>i) & 0x01); }
我们使用 MSP430 启动板读取此行追随者中的四个条件。我们使用了两个传感器,即左传感器和右传感器。
条件:高电平有效输出
输入 | 输出 |
运动 机器人的 |
||||
左传感器 | 正确的传感器 | 左电机 | 右电机 | |||
LS | 微型企业 | 彩信 | 马币1 | 马币2 | ||
0 | 0 | 0 | 0 | 0 | 0 | 停 |
0 | 1 | 1 | 0 | 0 | 0 | 右转 |
1 | 0 | 0 | 0 | 1 | 0 | 左转 |
1 | 1 | 1 | 0 | 1 | 0 | 向前 |
#define l_sensor P1_3
#define r_sensor P1_4
int pins[4]={P1_5,P2_0,P2_1,P2_2};
#define forward 0x05
#define left 0x06
#define right 0x09
#define stop 0x00
//#define activeLowMode
#ifdef activeLowMode
int res[4]={forward,left,right,stop};
#else
int res[4]={stop,right,left,forward};
#endif
void setup()
{
for(int i=0;i<4;i++)
pinMode(pins[i], OUTPUT);
pinMode(l_sensor, INPUT);
pinMode(r_sensor, INPUT);
}
void loop()
{
int sense=(digitalRead(l_sensor)<<1) | digitalRead(r_sensor);
for(int i=0;i<4;i++)
digitalWri(pins[i], (res[sense]>>i) & 0x01);
}