机器人
返回首页

如何使用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);

}

 


 

进入机器人查看更多内容>>
相关视频
  • 财哥说钛丝

  • 直播回放: Keysight 小探头,大学问,别让探头拖累你的测试结果!

  • 控制系统仿真与CAD

  • MIT 6.622 Power Electronics

  • 直播回放:基于英飞凌AIROC™ CYW20829低功耗蓝牙芯片的无线组网解决方案

  • 直播回放:ADI & WT·世健MCU痛点问题探索季:MCU应用难题全力击破!

精选电路图
  • 光控音效发生器电路

  • 离子检测器电路分析

  • 优化电路板布局的简单方法

  • 一个简单的立体声平衡指示器电路

  • 分享一个电网倾角计电路

  • 使用NE555和磁簧开关的橱柜照明电路

    相关电子头条文章