循迹小车原理简单介绍

这篇文章对循迹小车原理进行简单讲解,为初学者提供简单的思路。不会直接放一堆代码,建议新手看。

准备工作:
  首先硬件网上有很多,自己选一套就可以了。(电池,电机,电机驱动模块,小黄车,单片机(这里会以stm32进行说,下载器也需要,我喜欢dap_link)等)。oled,陀螺仪可有可无(后面可以自己加着玩)。如果能在网上找一个PCB最好(可以去立创开源广场搜一下,有很多,找一个好的)
  软件需要学习最基本的GPIO的输入,输出,串口,按键,定时器,pwm,不说掌握,起码函数能看懂,会用就可以。

原理简介:
  上面需要自己提前准备,下面我再说原理。
  我们为什么要学pwm,因为我们想直接通过调整PWM的占空比进行速度控制。要是没有pwm,你的电机就只有转和不转,这里转速没办法调整,比如小车转弯,你可以通过pwm控制两边转速不同来转弯(一边速度大,一边速度小,可以达到转弯的目的)。我建议在做循迹小车前先测试pwm是否可以控制小车两边电机使轮子以不同占空比进行转动。(就比如右边pwm给大点,左边小一点,看看是否往左转,多测试一下,但是两边占空比一样不一定走直线)。


  之后便是循迹原理。你首先应该看你买的循迹模块的详情或者资料,知道检测到黑线和白线分别返回什么电压,然后检测对应的IO口引脚状态来判断车子的大致位置。还要理清楚每个探头对应你单片机哪个引脚(这个是自己接的)

比如四路寻迹模块,采取的办法就是根据四个红外测距模块的高低电平反馈信号直接控制小车的一个转向速度。从左到右四个探头我们分别叫它1234,当你的小车行驶的时候,比如刚开始2号探头(行驶的时候2在左边)检测到了黑线,这时候会使IO电压变化,你的单片机检测到其对应IO口的信号,你就应该用代码使左轮速度减小,右轮速度增加(即左电机pwm减小,右电机pwm增加,一个变化另一个不动也是一个意思)。这时候右边速度大了,小车就会往左走。如果要是3号探头检测到了黑线,同理,左电机pwm给大点,右电机给小点。要是1号呢,就是右电机的pwm给的更大一点,左电机pwm给的更小一点…

  这里要注意的是要将每个探头对应的IO口配置为输入模式。

         比如探头检测到黑线为低电平,这里以1号探头检测到黑线为例

#define DH1_GPIO GPIOA
#define DH1_port GPIO_Pin_0

#define DH2_GPIO GPIOA
#define DH2_port GPIO_Pin_1

#define DH3_GPIO GPIOA
#define DH3_port GPIO_Pin_2

#define DH4_GPIO GPIOA
#define DH4_port GPIO_Pin_3
//按照自己对应的引脚改,这里仅仅举例

if(RESET == GPIO_ReadInputDataBit(DH1_GPIO, DH1_port)&&SET == GPIO_ReadInputDataBit(DH2_GPIO, DH2_port)&&SET == GPIO_ReadInputDataBit(DH3_GPIO, DH3_port)&&SET == GPIO_ReadInputDataBit(DH4_GPIO, DH4_port))
{
  motor_forward(right,5500);//右电机pwm给5500(大一点)
  motor_forward(left,2500); //左电机pwm给2500(小一点)
}

这样配置右轮应该就会比左轮速度快,小车就会往左走,然后2号探头碰到黑线,把两边pwm差值减小一点(这时候应该右电机pwm仍大于左电机的,只不过差值减小了),小车就会往黑线中间走

思路就是这样,分析一下不同的情况,判断小车不同情况怎么走。具体情况pwm给多少还需要依据自己电机进行测试。

注意:是GPIO_ReadInputDataBit()不是GPIO_ReadOutputDataBit()函数;

           判断的时候是==不是=;

           硬件接线看对应物品的详情,别接错;

            pwm(占空比)太小也可能不转,不同情况根据自己电机实际分析。

  如果有错误的话欢迎在评论区指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值