当前位置:技术支持>典型实例
核心板v10x 网络通信v20x F407系列 通信定位v70x 底层类库 最小系统板

[Micropython]TPYBoardV10X 红外防坠落小车

原创版权归山东萝卜科技有限公司所有,转载必须以链接形式注明作者和原始出处。


   

    一、实验器材


    1、TPYboard v102板  一块

    2、电机驱动模块L298N  一个

    3、电机 两个

    4、小车底盘  一个

    5、4路循迹模块 一个


    二、4路循迹模块


    什么是循迹模块


    循迹模块检测黑线的原理是红外发射管发射光线到路面,红外光遇到白底则被反射,接收管接收到反射光,经施密特触发器整形后输出低电平;当红外光遇到黑线时则被吸收,接收管没有接收到反射光,经施密特触发器整形后输出高电平。检测灵敏度可以通过循迹模块上的电位器进行调节。 传感器模块输出端口OUT可直接与单片机IO口连接即可,连接方式:首先,把循迹模块跟中间驱动板连接起来,一共有4路,按照顺序接起来就行;


1.png


    其次,将控制板跟TPYBoard v102连接起来VCC-VCC;GND-GND;OUT1-X1;OUT2-X2;OUT3-X3;OUT4-X4。注意四路循迹模块的IN1-IN4是和OUT1-OUT4一一对应的。


2.jpg


    小车防坠落原理


    四路循迹模块红外探头在检测到物体存在的时候,在OUT端会持续的输出低电平。那么调节调距电阻,调节到一个适合的检测距离。在小车行驶路面检测到物体的时候,说明是前面是有路的,不是悬空的。那么小车保持直行。如果前方检测到没有返回,没返回说明没有检测到物体,就说明前面是没有路的,是悬空的,那么小车就会后退,在进行右转(也可以左转,也可以一次右转一次左转,这个根据程序设计)防坠落其实跟循迹原理一样。


    三、L298N电机驱动板


    1、什么是电机驱动模块


    电机驱动模块主要是可以控制电机的运行:调速、运行、停止、步进、匀速等操作。


    2、L298N的连接及使用方法


    L298N模块是2路的H桥驱动,所以可以同时驱动两个电机,接法如图所示使能ENA ENB之后,可以分别从IN1 IN2输入PWM信号驱动电机1的转速和方向,可以分别从IN3 IN4输入PWM信号驱动电机2的转速和方向。我们将电机1接口的OUT1与OUT2与小车的一个电机的正负极连接起来,将电机2接口的OUT3与OUT2与小车的另一个电机的正负极连接起来。接线端子+5v连接TPYboard的VIN,+12v连接TPYBoard的VIN,中间的接线端子GND连接板子GND,In1-In4连接TPYBoard的Y1,Y2,Y3,Y4,通过Y1,Y2与Y3,Y4的高低电平,来控制电机的转动,从而让小车前进,后退,向左,向右。


3.png

    四、接线图

TPYBoard v102

4路循迹模块

L298N驱动模块

VIN

VCC


GND

GND


X1

OUT1


X2

OUT2


X3

OUT3


X4

OUT4


Y1


In1

Y2


In2

Y3


In3

Y4


In4

VIN


+12V

GND


GND

VIN


+5V


    五、源程序

import pyb
from pyb import UART
from pyb import Pin
 
M0 = Pin('X1', Pin.IN)
M1 = Pin('X2', Pin.IN)
M2 = Pin('X3', Pin.IN)
M3 = Pin('X4', Pin.IN)
N1 = Pin('Y1', Pin.OUT_PP)
N2 = Pin('Y2', Pin.OUT_PP)
N3 = Pin('Y3', Pin.OUT_PP)
N4 = Pin('Y4', Pin.OUT_PP)
 
 
while True:
    if(M2.value()|M1.value()|M3.value()|M0.value()==0):
        N1.low()
        N2.high()
        N4.high()
        N3.low()
        pyb.LED(2).on()
        pyb.LED(3).off()
    elif(M2.value()|M1.value()|M3.value()|M0.value()==1):
        N1.high()
        N2.low()
        N4.low()
        N3.high()
        pyb.delay(250)
        N1.low()
        N2.high()
        N3.high()
        N4.low()
        pyb.delay(250)
        pyb.LED(3).on()
        pyb.LED(2).off()