赞
踩
常用的单片机有Arduino,51单片机,STM32,MSP432等,本文使用的是STM32F103C8T6最小系统板。
***{理解}:***
单片机相当于是人的大脑,能够控制与其连接的设备进行某种工作。
***{疑问}:***
人脑产生的是神经信号来控制整个人体。那单片机是通过什么信号来控制和他相连接的设备呢,如何控制呢?
***{答案}:***
单片机通过电信号,也就是高电平或低电平来控制外部设备和获取信息。和电平机连接的外部设备一般也是通过接收高电平或者低电平来执行某种动作,或者根据外界环变化来转化成高低电平,传回给单片机。
***{完善}:***
我们刚刚的例子可以说成:
eg:单片机可以通过单片机上的某个特定地方输出信号,使和这个地方用导线相连接的器件进行某种工作。
eg:单片机通过某个特定地方(IO口)输出高电平的电信号,使和这个IO端口用导线相连接的LED灯接收到高电平信号,从而点亮LED灯。驱动其他外设同理。
此单片机教程可参考B站正点原子官方教程,只需看重点的几个部分即可,后续整理后给出。
【智能小车,要有能够处理事情的大脑,有能够观察环境的眼睛,有能够走动的腿】
这便是整个小车项目的总览,我们需要用到:
- STM32F103C8T6最小系统板 1块
- 小车底盘 1个
- 直流减速电机 2个
- 电机驱动 1个
- 12V电源 1个
- 降压模块 1个
- 循迹模块 4个
- 蓝牙模块 1个
- 杜邦线 若干
电机分类很多很杂,比如直流电机,步进电机等。由于能力有限,读者可查询其他文章,详细了解各个电机的区别及适用场合。针对智能小车项目,本文将介绍直流减速电机和带编码器的直流减速电机。
带编码器的直流减速电机,顾名思义,就是直流减速电机加上编码器。
线数:单位是ppr,含义是编码器的分辨率,也就是电机转一圈发出的脉冲数。
eg:如500线,也就是500ppr,代表电机转动1圈,编码器发射出了500个脉冲。当编码器的线数越高,其分辨率越高,代表能够识别到电机转动的最小刻度越小,代表能够控制的越精准。
倍频:编码器没有倍频技术,是单片机接收编码器的脉冲后,处理编码器脉冲时通过编码器输出脉冲(A与B相)的相位差关系实现倍频技术,STM32通常将读取到的编码器脉冲设置成4倍频,这样分辨率提高,方便更精准的控制。
电机驱动,顾名思义,就是驱动电机的装置。
- 疑问:电机不是只需要给两个端口加上电压就可以转动了,为什么还要用到电机驱动呢?
- 回答:因为直流电机是大电流感性负载,单片机IO口的带负载能力较弱,因此我们需要功率放大器件,也就是用到了电机驱动,并且使用电机驱动后,就可以通过单片机IO口输出高低电平的不同排列组合,从而控制电机的前进,后退,停止等。
- 模块:常用的电机驱动模块有TB6612FNG电机驱动模块和L298N电机驱动模块。
- 介绍:本文电机驱动原理不做讲解,可以通过阅读其他文章了解。本文仅从应用的角度介绍L298N电机驱动模块的使用方法。
一个L298N模块可以驱动两个电机,假设为电机1和电机2,且L298N电机驱动模块供电部分已连接好:
前置知识:板载5V输出使能,是一个电平为5V的控制信号,当此信号输入有效时,且电机驱动模块供电正常时,电机正常工作。否则即使电机驱动模块供电正常,电机也不能正常工作。
模块供电:
1.1: 常规接法:输入电压为12V时,将板载5V输出使能处的跳线帽插上,将12V输入接入12V电压,电源地接负极,5V不接入。
1.2 :非常规接法:输入电压为18V左右时,首先要将板载5V输出使能处的跳线帽拔除,将12V输入接入18V电压,电源地接负极,5V输入端口外部接入5V电压对L298N内部逻辑电路供电。注意的是,若5V输入端口输入的电源和给单片机供电的电源不是一个的话,需要将L298N的地和单片机的地连接在一起。
马达输出:
马达A输出的两个端口对应了一个电机的电源线正负极,马达B输出的两个端口对应了另一个电机的电源线正负极。
信号输入:
3.1: 控制电机全速运动:对于使电机1全速运动而言,逻辑输入端IN1, IN2经过电机驱动内部转化后,对应马达A输出口,全速则不用拔去ENA的跳线帽,此时使能端为5V电机满占空比驱动,全速运行;电机2同理。
3.2: 控制电机变速运动:对于使电机1变速运动,只需要将ENA跳线帽拔出,在A通道使能引脚上接上单片机输出的PWM即可,其他操作同控制电机全速运动;电机2同理。
PWM使啥?:不完全理解就是,在合适的信号频率下,通过改变一个周期内的占空比,来改变输出的有效电压。可参考:链接: STM32学习笔记(白话文理解版)—搞懂PWM输出
一定要根据自己购买的L298N资料来对应逻辑关系:
以上图为例:
降压模块,就是将高电压转化成适合单片机工作的低电压的模块,可根据自己的需求,自行选择对应的降压模块。例如本文用到的电机驱动需要12V的电压,所以我购买了可以输出12V电压的电池,但给单片机供电需要5V的电压,故利用降压模块,将12V电压转化成5V电压,这样我就可以利用每转化前的12V给电机驱动供电,用转化后的5V给单片机供电,用一块电池解决了不同模块需要用到不同电压的问题。用到的模块为LM2596HVS降压模块。
常用的循迹方式有,利用摄像头OpenMV进行循迹,灰度传感器进行循迹,红外传感器进行循迹,本文详细介绍TCRT5000红外反射传感器
TCRT5000传感器的红外发射二极管不断发射红外线
总结:
感应到黑线,指示灯灭,DO引脚输出高电平
感应到白线,指示灯亮,DO引脚输出低电平
当XJ1、XJ2、XJ3、XJ4都没有碰触到黑线时,小车执行直走程序
当XJ1、XJ2、XJ4没有碰到黑线,XJ3碰到黑线时,小车执行右转程序
当XJ1、XJ2、XJ3没有碰到黑线,XJ4碰到黑线时,小车执行右转程序,只不过右转程度更大
左转同理,如此循环,便达到了只能使黑线在小车正中间行驶的效果,也就是小车沿着黑线行驶,这便是循迹效果。可对比上图小车转弯角度。
蓝牙我们在熟悉不过了,同无线蓝牙耳机的使用方法一样,我们将蓝牙模块和单片机连接后,就能通过特定的手机端APP发送给蓝牙信息,蓝牙根据得到的信息,就可以告诉小车该进行什么操作。
注意:蓝牙只是传递信息,具体控制小车执行前进,后退,转向等操作还是单片机完成的,只不过我们可以设置成,当蓝牙接收到前进指令后,单片机根据蓝牙传来的数据去执行让小车前进的操作。
蓝牙模块一共有两种模式:配置模式和正常模式
配置模式接线:
(1) 准备一个USB转串口的模块:
(2)蓝牙模块有四个引脚:TX、RX、VCC、GND接线方式如下:
(3)将USB端口插入电脑,即可利用AT指令对蓝牙模块进行自定义设置
eg:主从机、波特率、密码、连接等一系列信息,并且蓝牙模块具有断电保存的功能,一般只需要配置一次。
正常模式接线:
按照下图将蓝牙模块引脚和单片机相连接即可:
配置模式:配置模式需要将蓝牙模块经过USB转串口模块连接到电脑上,按住蓝牙模块上小按键,即可进入配置模式。在电脑上通过串口调试助手,利用AT指令,对蓝牙模块进行设置,如设置蓝牙名称,蓝牙密码等,能力有限,本文不做介绍。
正常模式:配置后断电在上电,进入正常模式,通过手机蓝牙串口APP连接蓝牙,即可通过蓝牙给单片机无线发送数据,通过编写软件程序,起到控制小车运动状态的效果。注:一般蓝牙模块在买回来时都是配置好的,可根据对应的使用说明进行蓝牙的连接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。