stm32智能小车笔记

输入输出按键等笔记

输出、输入选择

首先需要明确输出、输入的意思。输出是指STM32控制外设(主要指输出高电平或低电平)或STM32发送数据给外设,输入是指外设发送数据给STM32。
推挽输出可以输出两种状态,分别是0V和3.3V,对应低电平和高电平。大多数情况下都会选择这个模式。
开漏输出借助下图讲解,INT端为单片机引脚(可以由单片机控制为1(高电平)或0(低电平)),OUT端为最终的输出。Us端接地始终为低电平0,当INT端为1时Ug>Us,NMOS导通,此时OUT直接接地,OUT端输出电压为0;当INT端为0时Ug=Us,NMOS截止,此时可以认为电路断开,4.7K电阻上没有电流通过,OUT端与VDD连接,OUT端的输出电压与VDD相等。开漏输出一般应用于电压不匹配的场合,STM32可以直接输出3.3V的电压,但如果需要5V或者更高的电压,此时单片机无法直接提供,则可以借助开漏输出完成高电压的输出。这里的VDD是外部电源提供的电压。
复用输出则是该端口被其他外设使用,如一个外设需要读取另一个外设的数据时可以使用复用输出模式

什么时候选择上拉,什么时候选择下拉

如果按键按下是高电平有效的话,我们就下拉,让该IO口在默认状态下处于低电平(即没有按键按下时IO口检测到的总是低电平,只有按键按下的时候IO口才会检测到高电平);

如果按键按下是低电平有效的话,我们就上拉,让该IO口在默认状态下处于高电平(即没有按键按下时IO口检测到的总是高电平,只有按键按下的时候IO口才会检测到低电平)。

简单点来说:
上拉输入就是指在IO口上(芯片内部)串一个电阻到vcc,正常情况IO监测到的是高电平,适用于外部接GND的按键输入;

下拉输入是指在IO口上(芯片内部)串一个电阻到GND,正常情况IO监测到的是低电平,适用于外部接VCC的按键输入。(实在还不理解,记住会用也行)

GPIO_ReadInputDataBit

函数 GPIO_ReadInputDataBit 读的是 GPIOx_IDR
读的是当 IO 口设置为输入状态时候的 IO 口电平状态值。

/*读取引脚当前电平状态*/
CurrLevel = GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8 );

pwm调速原理

在这里插入图片描述
在这里插入图片描述
PWM,就是脉冲宽度调制技术,其具有两个很重要的参数:频率和占空比。频率,就是周期的倒数;占空比,就是高电平在一个周期内所占的比例。
为什么要采用PWM调速?
电机不能 时刻保持在全速运转的过程当中,必须要可控制速度才能完成一些特定功能,例如循迹,小车速度过快,传感器来不及反应做出方向调整,小车很容易跑离轨道。pwm调速是目前电机的主流调速方式。

循迹的原理

红外光线会有一个反射特性,对于不同的物体反射特性是不一样的,特别是对白色反光的物体,红外光线的反射量将会多一些。对黑色不反光的物体,红外反射量会减少。利用这个特性进行黑与白的判断。
当平面的颜色不是黑色时,传感器发射出去的红外光大部分被反射回来,传感器输出低电平0.
平面是黑线时,反射回来的红光很少,达不到传感器动作的水平,传感器输出1
若右边的探头检测到黑线,小车往右边运动,所以左电机向前运动而右电机静止。同样的道理,左边探头检测到,小车向左运动。

避障的原理

利用障碍物对光线的反射特点,当前面有障碍物的时候,传感器发射出的红外光被大部分反射回来,传感器输出低电平0,点亮模块上的信号灯。
当没有障碍物的时候,反射回来的红外光很少,达不到传感器动作的水平,传感器输出1
循迹和避障,小车行驶速度不同,循迹需要精细的调节左右电机运动,而避障只需要判断障碍物后作出一般性躲避,避障时电机速度可快于循迹。
左边有障碍物,右转;右边有障碍物,左转;左右都有障碍物,后退,再左转

超声波避障

HC-SR04超声波特点,电压5V,探测距离2cm到4m,但是2cm之内是盲区。
超声波测距模块可提供2cm-400cm的非接触距离感测功能,测距精度3mm,模块包括超声波发射器,接收器与控制电路。
在这里插入图片描述
基本工作原理
(1)采用IO口trig出发测距,给Echo最少10us的高电平信号。
(2)模块自动发送40khz的方波,自动检测是否有信号返回
(3)有信号返回,通过IO口ECHO(如上图)输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。
公式:距离=(高电平时间*340m/s)/ 2
Echo接收,Trig控制
在这里插入图片描述

舵机

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。

在这里插入图片描述

红外遥控

红外接收头,当红外线合成信号进入红外接收模块,在其输入端可以得到原先发射器发出的数字编码,通过单片机解码程序进行解码,就可以得知按下了哪一个按键,完成遥控的相应动作。
红外发送协议:引导码+客户码1+客户码2+操作码+操作反码
引导码:检测到了引导码才确认接收后面的数据,保证数据接收的正确性
客户码:区分遥控设备,互不干扰
操作码:用户实际需要的编码,按不同按键产生不同的操作码,待接收端进行操作
操作反码;目的是接收端接收到数据后,将其取反与操作码比较,不相等就表示传输过程中发生了变化,数据无效,可以提高数据的准确性。
接收头特性,接收到红外线时输出低电平,静态时为高电平。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32智能小车设计是基于STM32系列微控制器的一种嵌入式系统设计方案。智能小车集成了各种传感器和执行器,以实现自主移动、避障、跟随等功能。 设计中,首先需要选择合适的STM32系列微控制器,根据项目需求选择不同型号的芯片。在硬件设计上,需要设计与芯片相兼容的电路板,包括电源、外设等连接。同时,还需要考虑到小车的体积、重量、稳定性等因素。 在软件设计上,我们可以使用STM32Cube软件包进行开发,该软件包提供了丰富的库函数和示例代码。可以通过CubeMX工具进行芯片的初始化设置,并通过STM32CubeIDE进行代码的编写和调试。 在传感器部分,可以选择红外传感器、超声波传感器等,用于检测障碍物,并实现智能避障功能。同时,还可以添加陀螺仪、加速度计等传感器,用于姿态控制和位置定位。 在执行器部分,可以使用直流电机或舵机控制小车的移动和转向。通过PWM信号控制电机的转速和舵机的角度,以实现小车的自主行驶和导航。 此外,还可以添加蓝牙或WiFi模块,实现与手机或电脑的通信,通过手机APP或上位机控制小车。同时,还可以搭建摄像头模块,实现图像识别和跟随功能。 综上所述,STM32智能小车设计涉及到硬件和软件两个方面。通过合理选择芯片、设计电路板、添加传感器和执行器,并编写相应的软件代码,可以实现小车的智能化控制和功能扩展。这样的设计不仅具有应用前景,还可以培养学生的嵌入式开发能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值