STM32循迹小车原理介绍和代码示例

目录

1. 循迹模块介绍

2. 循迹小车原理

3. 循迹小车核心代码

4. 循迹小车解决转弯平滑问题


1. 循迹模块介绍

  • TCRT5000传感器的红外发射二极管不断发射红外线
  • 当发射出的红外线没有被反射回来或被反射回来但强度不够大时
  • 红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态
  • 被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管饱和
  • 此时模块的输出端为低电平,指示二极管被点亮
  • 总结就是一句话,没反射回来,D0输出高电平,灭灯

接线方式

  • VCC:接电源正极(3-5V)
  • GND:接电源负极 DO:TTL开关信号输出0、1
  • AO:模拟信号输出(不同距离输出不同的电压,此脚一般可以不接)

2. 循迹小车原理

由于黑色具有较强的吸收能力,当循迹模块发射的红外线照射到黑线时,红外线将会被黑线吸收,导致 循迹模块上光敏三极管处于关闭状态,此时模块上一个LED熄灭。在没有检测到黑线时,模块上两个LED常亮

总结就是一句话,有感应到黑线,D0输出高电平 ,灭灯

3. 循迹小车核心代码

硬件接线

  • B-1A -- PA0
  • B-1B -- PB1
  • A-1A -- PA1
  • A-1B -- PB10
  • 循迹模块(左)--  PB3
  • 循迹模块(右) -- PB4

代码示例:

#define LeftWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3)
#define RightWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4)

// main函数里
while (1)
{
    if (LeftWheel_Value == GPIO_PIN_RESET && RightWheel_Value == GPIO_PIN_RESET)
        goForward();
    if (LeftWheel_Value == GPIO_PIN_SET && RightWheel_Value == GPIO_PIN_RESET)
        goLeft();
    if (LeftWheel_Value == GPIO_PIN_RESET && RightWheel_Value == GPIO_PIN_SET)
        goRight();
    if (LeftWheel_Value == GPIO_PIN_SET && RightWheel_Value == GPIO_PIN_SET)
        stop();
}

4. 循迹小车解决转弯平滑问题

原理:

两轮都有速度且一轮速度大于另一轮

代码实现:

#define LeftWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3)
#define RightWheel_Value HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4)
// main函数里
while (1)
{
    if(LeftWheel_Value == GPIO_PIN_RESET && RightWheel_Value == GPIO_PIN_RESET)
    {
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1,19);
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,19);
    }
    if(LeftWheel_Value == GPIO_PIN_SET && RightWheel_Value == GPIO_PIN_RESET)
    {
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1,15);
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,8);
    }
    if(LeftWheel_Value == GPIO_PIN_RESET && RightWheel_Value == GPIO_PIN_SET)
    {
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1,8);
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,15);
    }
    if(LeftWheel_Value == GPIO_PIN_SET && RightWheel_Value == GPIO_PIN_SET)
    {
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1,0);
        __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2,0);
    }
}

  • 17
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32循迹小车PWM是利用STM32单片机实现循迹小车控制的一种方法。PWM(Pulse Width Modulation)是一种通过改变脉冲宽度的方式来控制电子设备的技术。而CSND是中国最大的IT技术社区CSDN的简称。 在STM32循迹小车中,我们可以利用PWM技术控制电机的速度和方向。通过设置占空比来控制电机驱动器的输出电压,从而改变电机的转速。通过改变PWM信号的频率和占空比,可以实现车辆的前进、后退以及转弯等动作。 在循迹小车中,循迹传感器可以检测到黑线与白线的交界处,并将传感器检测到的信号通过模数转换器(ADC)转换为数字信号输入给STM32单片机。根据传感器的检测结果,我们可以通过编程算法判断车辆应该采取的动作,并利用PWM技术控制电机的输出从而实现循迹。 为了编写循迹小车的控制程序,我们可以借助CSDN这一IT技术社区,参考其他人的经验与分享,获取相关代码及开发工具的使用教程等。借助CSDN的开放性和交流性质,我们可以更好地学习和解决在开发循迹小车过程中遇到的问题。 总之,STM32循迹小车PWM CSND是一种利用STM32单片机和PWM技术实现循迹小车控制的方法,而借助CSDN这个IT技术社区,我们可以更好地学习和开发循迹小车的相关知识。 ### 回答2: STM32循迹小车是一种基于STM32单片机的智能小车,它能够通过PWM(脉宽调制)技术实现精确的速度调节和转向控制。CSND(CSDN)是一家提供在线技术交流和分享的平台。 循迹小车是一种能够在预定路径上进行移动的智能小车,它通常通过红外传感器等感知模块来检测路径上的黑线,并根据检测结果进行控制。使用STM32单片机作为控制核心,可以实现进行实时数据采集和控制计算。PWM技术是一种通过控制信号的占空比来调节输出信号的平均值的方法,可以实现精确的速度调节和转向控制。循迹小车通常会根据红外传感器检测到的黑线位置来调整左右轮的PWM信号,从而使小车能够在路径上保持平稳运行。 CSDN是全球最大的中文IT社区和技术交流平台,许多开发者和学习者都会在CSDN上发布他们的技术文章和分享经验。对于循迹小车的PWM控制,CSDN上有许多相关的技术文章和实例代码,开发者可以从中学习和借鉴。在CSDN上,通过搜索关键词"STM32循迹小车PWM",可以找到一些相关的技术博文和论坛贴子,其中包含了循迹小车PWM控制的详细实现方法和代码示例。借助CSDN这样的技术社区,开发者可以更好地理解和掌握循迹小车PWM控制的原理和实践应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱嵌入式的小佳同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值