基于stm32单片机的两路循迹小车直角转弯怎么实现?

版权声明:本文为博主原创文章,遵循 版权协议,转载请附上原文出处链接和本声明。

Sharp GP2Y0A21是一颗红外线测距传感器,易于使用,价钱廉宜,且低功耗。 规格如下:
距离测量范围:10至80cm(4“到32”)
峰值功耗:约200mA
允许的最大角度:> 40°

Sharp GP2Y0A21是一颗非线性(nonlinear)测距传感器,且是非连续性(non-continuity)输出,当距离小于8厘米,传感器将不能正常工作。其测距特性如图所示。


excel添加趋势线。得到电压和距离的关系公式。

本实用新型公开了一种驾考倒车入库项目模拟考试系统,包括控制电源,断路器,控制单元,沿倒车入库考场的路线边界设置的机械支架和安装在机械支架上的多个光电传感器,所述控制单元包括逻辑控制器,语音控制器,扬声器,与所述逻辑控制器的一路输入端连接的启动开关,所述光电传感器根据倒车入库考场的路线边界分成10组,每组光电传感器并联连接后,分别与所述逻辑控制器的一路输入端连接,所述逻辑控制器的输出端分为8路,分别与语音控制器的8路输入端连接,驱动语音控制器和扬声器播放8种不同的语音信息.该系统成本低廉,易于安装,结构简单,安装拆卸方便,采用非接触式传感技术,可靠性高,易于维护,且操作简单.

常见的有三轮车,四轮车两种;
三轮车,主要是后面两个主动轮,前面一个万向轮组成;

四轮车,比赛中常见的有4个都是直轮,或者4个是麦克纳姆轮两种;


(2)由于是新手,所以简单说下三轮车的原理;
四轮的,自己学习解决;

A、三轮车,主要有五种动作。
其中,左转,右转又可以分为大转弯,和小转弯;

B、其中左转,右转,都是根据两个轮子的速度差实现;

左轮速度>右轮速度;则向右边转弯;
左轮速度<右轮速度;则向左转弯;

速度差越大,转弯越大;
因此可以设置速度差,实现大转弯和小转弯的目的;

当一个轮子的速度为0,另外一个轮子有速度的时候,会绕着速度为0的轮子转圈,转圈的半径为两个轮子的轮间距,但是实际上,会发生轮子打滑的情况,所以会有点偏移;

由于是直流电机作为动力,因此,可以控制电机的速度,进行小车的速度控制。

因此,实际控制小车的几个动作,实际就转化为控制电机的速度;

(3)直流电机控制的基本内容:

直流电机,比赛常用的有几种,一种是黄色的T电机;一种是带编码的电机;带编码的电机可以测速等等,稍贵,但是扭矩大,运行性能好。因此在比赛常用。。
这里由于黄色的电机比较便宜,用这个入手。进行学习。

由于是直流电机,所以两个引脚,A,B。
如果给5V电压,A接正极,B接负极,那么电机往一个方向运动;如果A接负极,B接正极,那么电机反方向运动。

所以通过调节A和B的接线,就能控制电机正反转;

如果给3.5V电压,那么电机的速度会比5V的慢,因此,可以通过控制电机的电压控制转速。

如果我们人为去交换A、B的接线,就太复杂了,怎么解决呢?

如果我们人为去改变电机的电压,调节滑动变阻器等,也比较复杂,而且不够实时,怎么办呢?

而且,一般要驱动电机,需要带电机驱动模块。

比如常用的有L298N模块,TB6612模块,或者mos管自己搭建驱动电路;

新手可以用TB6612模块或者L298N模块;

这里对TB6612模块进行讲解,如何对电机进行速度控制和方向控制。

首先介绍PWM的概念。
PWM是脉冲宽度调制的意思。简单这么理解,如下图的波形。
T是周期,t1是高电平的时间,t2是低电平的时间。
t1高电平的时间越长,如果等于周期,那么整个周期,IO口的电平就是5V ,如果是50%,那么是2.5V.
因此可以控制t1的时间,控制t1/T的比例,从而控制输出的电压,从而控制电机的速度。

一般直流电机的频率是7K-13K,没实验过,可以实验看下效果区别。

所以,控制小车的轮子的速度,就是控制各自的PWM的高电平比例,就是占空比。

那么怎么产生一个PWM波形,可以控制比例呢?
我们者利用的51单片机,有四种方法产生PWM。

定时器,定时一段时间,P10=1,定时一段时间,P10=0;

第三,就是增强型的51单片机,我们现在用的stc8a单片机,有内置的PWM模块。
这里我们用的就是这个。

我已经写好函数,直接包含头文件,和c文件,初始化之后,就能直接使用了。
我这里是低电平的时间,第三个参数,所以要1-0.3转为高电平比例。
所以改变最后的参数(比例,所以参数在0-1之间),就能控制电机的速度了。


TB6612模块的具体介绍,网上很多。

(A),TB6612是双驱动,也就是可以驱动两个电机。
这个合适我们三轮车,因为有两个电机,一个是万向轮,因此我们的小车,就需要一个TB6612模块就行了。

下面分别是控制两个电机的IO口
因此,我们可以设置STBY为5V,让电机可以得到单片机的控制;
这个根据电机的特性和小车运动的场合进行选取。我们这里可以接5V。
PWMA:接单片机的PWM口,通过PWM的占空比,控制电机的速度;
通过控制下面的00,01,10组合,控制电机的方向,顺时针,逆时针转动。
PWMB:接单片机的PWM口,通过PWM的占空比,控制电机的速度;

通过控制00,01,10组合,控制电机的方向,顺时针,逆时针转动。


综上,根据电路原理图,我们的电机是

假如左轮是A路电机,右轮是B路电机。

同时,可以调节PWMA和PWMB的比例大小,决定小车的转弯方向;

如果PWMA>PWMB,左轮速度大于右轮速度,那么右转;
如果PWMA<PWMB,左轮速度小于右轮速度,那么左转;
但是,由于电机的制造误差等等,特性会有偏差。
因此相同的比例,小车也可能会偏离。
如PWMA=0.4=PWMB。小车也可能越走越不是一条直线。。

因此,需要有一条引导线,引导小车直行。或者加测速装置,测得左轮的速度,右轮的速度,单片机调整到一样,就能直走了。

这里,我们用循迹的方法实现。

一般用的是黑线,白纸的方法。

那么怎识别到是黑线呢?

用的是传感器,当做小车的感觉器官;

这个传感器有多种类型,有视觉的,有光电的等等。

我们这里暂时红外传感器,比较便宜。

而且用的是数字式的红外传感器。。
一般用的是TCRT5000红外模块,原理图等如下。


使用比较简单,接上VCC=5V,GND,将D0接到单片机的一个引脚IO,不断读取IO的状态电平,如果是得到0,那么是白线(黑线),如果是1,那么是相反的线。
这里,用红外的模块划过黑线,看看是什么状态才确定。

如果接A0,那么需要ADC转换,后面有时间再做这个吧。


我们这里,用了5个IO口,检测5个模块。

从而得到实际的小车的状态。
如果3号模块检测到黑线,(0或者1)那么,小车继续直行;
如果1号检测到黑线,那么就左转,而且是左大转弯;
如果是2号,检测到,那么就左小转弯
同理,进行右转弯,大转弯。

通过PWMA和PWMB的实际差值,差值越大,转弯越大;

5个传感器,有3个以上碰到黑线,那么就是判断,到了十字路口

如果在其他地方也放置传感器,那么可以检测多种道路的状态。

上面就是循迹小车的原理。

后面说下如果用单片机进行循迹。如何导入文件,如何使用函数。
待续。。。。。。。。。。。

我要回帖

更多关于 51单片机和stm32区别 的文章

 

随机推荐