目录
一、系统设计
1.硬件设计
2.软件设计
二、硬件系统设计
2.1单片机整体系统电路设计
2.2单片机最小系统电路设计
1.晶振电路
2.复位电路
3.BOOT电路
4.电压转换模块
5.主控制器
2.3超声波传感器
2.4循迹模块
2.5红外传感器
2.6蓝牙模块
2.7电机驱动模块
三、软件系统设计
3.1 软件开发环境
3.2超声波避障程序设计
3.4循迹程序设计
3.5 蓝牙程序设计
一、系统设计
1.硬件设计
图1.1 硬件系统设计
- 主控制器:STM32F103ZET6是一款基于ARM Cortex-M3内核的微控制器,由意法半导体(STMicroelectronics)生产。该控制器具有高性能、低功耗、低成本等优点,能够满足小车控制系统的需求。
- 循迹模块: 采用TCRT5000传感器,具有探测距离远、灵敏度高、响应速度快、可靠性强等优点,可以广泛应用于机器人、智能小车、自动化生产线等场合。同时,该传感器还具有抗干扰能力强、稳定性高等特点,能够有效地降低外界干扰对传感器的影响,提高检测的准确性和稳定性。
- 超声波避障模块:HC-SR04模块包括超声波发射器、接收器和控制电路。它具有测距精度高、使用方便等优点,可广泛应用于移动机器人、智能小车、自动控制等领域。
- 蓝牙模块:HC-05是一种基于蓝牙协议的无线通信模块,常用于微控制器与其他设备之间的无线通信。可用于智能家居、远程控制、数据记录、机器人、监控系统等领域。
- 电机驱动模块:选用L298N电机驱动模块,该模块具有驱动能力强、稳定性好等优点,能够满足小车运动需求。
- 电压转换模块:采用AMS1117 ,5V转换为3.3V模块。AMS1117是一个正向低压降稳压器,在1A电流下具有1.2V的压降。这个器件主要应用于提供1A的输出电流和低至1V的压差,适用于电池供电和便携式计算机等设备。
2.软件设计
软件编程方面使用STM32CubeMX,STM32CubeMX是一款图形化工具,用于配置STM32微控制器。它可以帮助开发者通过直观的图像界面快速完成STM32微控制器的硬件配置、外设初始化以及中间件设置等工作。
使用CubeMX生成的代码是基于HAL库的,而不是标准库。HAL库是英文Hardware Abstraction Layer的缩写,中文意思是硬件抽象层。HAL库提供了一种硬件和软件的抽象层,使开发者能够更加方便地操作内核,并且让不同内核下的编程不再复杂。
之所以选择STM32CubeMX,是因为通过CubeMX,开发者可以大幅提高开发效率,降低开发难度,尤其是对于刚接触STM32的新手。
图1.2 软件系统设计
根据上图:
- 初始化:在程序开始时,需要对STM32微控制器、传感器和电机驱动模块进行初始化配置。
- 数据采集:通过编程控制HC-SR04超声波传感器和红外传感器和蓝牙HC-05模块进行数据采集,并将采集到的数据发送给STM32微控制器。
- 数据处理:在STM32微控制器中,对采集到的数据进行处理和分析,判断小车是否需要改变运动状态或方向。
- 驱动电机:根据数据处理结果,通过编程控制电机驱动模块实现小车的运动和方向控制。
二、硬件系统设计
2.1单片机整体系统电路设计
图2.1 整体硬件电路图
如图2.1硬件电路图,包括了复位电路模块、电源部分和超声波模块、HC-05蓝牙模块、红外避障模块、DDC滤波器以及3x2的GND线。
2.2单片机最小系统电路设计
1.晶振电路
STM32F103ZET6芯片内置了HSI时钟,其频率为8M。在STM32中,时钟源的选择和配置通常是通过修改相应的寄存器来完成的。对于STM32F103ZET6,可能需要修改的寄存器包括RCC_CFGR和RCC_CR。
图2.2 高速内部时钟
一般来说,如果使用HSI(High Speed Intrenal,高速内部时钟)作为时钟源,可能需要将RCC_CR寄存器的HSIRDY位设置为1,以使能HSI时钟源。然后,可以在RCC_CFGR寄存器中配置预分频器和倍频系数,以得到所需的系统时钟频率。
2.复位电路
复位电路是用于将电路恢复到初始状态的电路。在数字电路中,复位电路通常用于将寄存器或计数器等数字电路组件的输出状态设置为初始值,以确保电路的正确启动和运行。
对于STM32F103ZET6这样的微控制器,复位电路的作用是将微控制器的内部寄存器和状态机等组件的状态恢复到初始状态,以确保微控制器能够正常工作。
图2.3 复位电路
复位电路通常由复位引脚、复位去抖电路、上电复位电路和按键复位电路等部分组成。复位引脚用于接收外部的复位信号,复位去抖电路用于消除由于按键抖动等原因引起的虚假复位信号,上电复位电路用于在电源上电时自动产生复位信号,按键复位电路用于通过按键手动产生复位信号。
在STM32F103ZET6中,复位电路的设计包括低电平复位和上电复位两部分。当复位引脚保持在低电平状态时,微控制器将进行复位操作。此外,在上电时,微控制器会自动检测电源电压是否稳定,如果电源电压稳定,则自动产生复位信号,将微控制器内部组件的状态恢复到初始状态。
3.BOOT电路
STM32F103ZET6的BOOT电路是用于设置微控制器启动方式的电路。BOOT电路通过BOOT0和BOOT1两个引脚来选择不同的启动模式。
图2.4 BOOT电路
在STM32F103ZET6中,可以选择三种不同的启动模式:主闪存存储器启动模式、系统存储器启动模式和内置SRAM启动模式。这些启动模式的选择对应于不同的数据存储和读写擦除方式。
主闪存存储器启动模式是将微控制器从主闪存存储器中启动,这是最常见的启动模式。系统存储器启动模式是将微控制器从系统存储器中启动,这种模式通常用于在厂家进行生产时将启动程序设置好,不允许用户修改。内置SRAM启动模式是将微控制器从内置SRAM中启动,这种模式通常用于调试。
BOOT0 | BOOT1 | 功能 | |
---|---|---|---|
ROM启动模式 | 0 | 1 | 启动的程序功能由厂家设置,从系统存储器启动程序 |
SRAM启动模式 | 1 | 0 | 可以用于调试 |
FLASH启动模式 | 1 | 1 | 正常的工作模式 |
在BOOT电路中,通过将BOOT0和BOOT1引脚设置为不同的状态来选择不同的启动模式。例如,当BOOT0=1、BOOT1=1时,选择主闪存存储器启动模式;当BOOT0=0、BOOT1=1时,选择系统存储器启动模式;当BOOT0=1、BOOT1=0时,选择内置SRAM启动模式。
总之,BOOT电路是STM32F103ZET6中非常重要的组成部分,它能够选择不同的启动模式,从而决定微控制器的启动方式和数据存储方式。
4.电压转换模块
AMS1117是一个正向低压降稳压器,它的输出电压可以从1.2V到13.8V,并且具有低漏失电压和良好的负载调节特性。这个芯片的内部结构包括一个参考电压源、一个误差放大器、一个调整管和一个过热保护电路。本次设计可以通过AMS1117降3压芯片把5V转换为3.3V。
图2.5 AMS1117降压芯片
AMS1117技术参数 | |
---|---|
最大输出电流 | 1A |
输出电压范围 | 1.2V、1.5V、1.8V、2.5V、2.85V、3.3V、5.0V |
初始误差 | ±1.5% |
封装类型 | SOT-223、TO-252、SO-8 |
工作温度 | -40°C~125°C |
存储温度 | -65°C~150°C |
工作模式 | 低压差线性稳压器 |
工作原理 | NPN晶体管的共集电极结构改为PNP的集电极开路结构 |
5.主控制器
STM32F103ZET6是一款基于ARM Cortex-M3架构的微控制器,由意法半导体(STMicroelectronics)生产。该芯片具有高性能、低功耗、高集成度等优点,被广泛应用于各种嵌入式系统开发。
stm32f103zet6技术参数 | |
---|---|
芯片型号 | stm32f103zet6 |
封装类型 | LQFP144 |
工作电压 | 2.0V~3.6V |
温度范围 | -40°C~85°C |
存储器 | Flash: 512KB, RAM: 96KB, SRAM: 20KB |
时钟频率范围 | HSI: 8MHz, HSE: 8MHz to 24MHz, LSE: 32.768kHz |
定时器 | TIM1-TIM8为高级定时器,TIM6-TIM7基本定时器,TIM2-TIM5通用定时器 |
ADC分辨率 | 12位 |
外设接口 | SPI, I2C, USART, UART, ADC, DAC, I2S, USB |
工作模式 | 低功耗模式1/2, Stop模式, Standby模式, Power down模式, Shutdown模式 |
2.3超声波传感器
超声波传感器HC-SR04是在机器人、无人车等领域得到广泛使用,HC代表超声波传感器,SRO4是该传感器的型号。HC-SR04原理是通过Trig引脚发送超声波(Trig有触发的意思,Trig引脚也被称为触发端),Echo引脚用来接收超声波信号(Echo有回波的意思,不过一般叫做超声波的接收端)利用它们发送和接收的时间在乘以超声波的速度来得到距离。
图2.6 HC-SR04超时波传感器
HC-SR04超声波模块技术参数 | |
---|---|
工作电压 | DC 5V |
工作电流 | 15mA |
工作频率 | 40KHZ |
最远发射距离 | 4m |
最近发射距离 | 2cm |
测量角度 | 15° |
输入触发信号 | 10us 的TTL脉冲 |
输出回响信号 | 输出TTL电平信号,与射程成比例 |
它是由两个压电陶瓷片组成,其中T用来发射超声波,R用来接收反射回来的超声波信号。由于发出和接收的信号都比较弱,所以需要用到信号放大器来提高信号的功率,将反射回来的超声波信号放大。
图2.7 超声波硬件电路原理图
如上图所示,MAX232和TL074都是超声波传感器的信号放大器。
先说发送端,STC11单片机P51和P52口输出波形是TTL,但是为了使HC-SR04模块的测距变宽,MAX232对40KHZ的信号进行电平转换,功率进行放大。
接收端:TL074是一种四运算放大器,具有高电压双极晶体管(简称 三极管)的输入放大特性,它可以作为信号放大器,对接收到的超声波信号进行放大,以增强其幅度和信噪比(信噪比 是指一个电子设备中信号和噪声的比值,其计算单位是dB 也就是分贝数来表示,通俗地讲放大器的输出信号的功率于输出的噪声的比值,一般来讲,信噪比越大,输出的信号里面混着的噪声就越小,信号也就越好,声音的质量也就越好,因此一般信噪比用来衡量一个音频器件的好坏,比如:蓝牙耳机,音响)。
图2.8 超声波没有障碍物
如果这些脉冲没有被反射回来(表示没有障碍物),则回波信号将在38毫秒(38毫秒)后超时并返回低电平。因此38 ms的脉冲表示在传感器范围内没有阻塞。
图2.9 超时波检测到障碍物
当检测到障碍物时,ECHO接收到的回响信号从38US变成500US。
图2.10 超声波工作时序图
触发信号Trig端发出10us的TTL电平信号,模块内部发出8个40KHZ的周期电平信号并用来检测回波。一旦检测到有超声波返回的信号则输出回响信号,回响信号的脉冲宽度与所测的距离成正比。
由此通过发射信号到收到的回响信号时间可以计算得到距离。(不过测量周期应为60ms以上,否则发射信号对回响信号产生影响)。
2.4循迹模块
TCRT5000是一种红外循迹模块,通常用于自动驾驶或智能小车等项目中。该模块采用TCRT5000红外反射传感器,能够检测路面上的黑色线条,并通过比较器输出数字信号,指示小车是否偏离了路径。
TCRT5000的优点包括灵敏度高、稳定性好、抗干扰能力强等。该模块还具有调节灵敏度的功能,可以根据不同的环境和使用需求进行调节。使用TCRT5000循迹模块时,需要将其与小车的电机和控制器等设备进行连接,并根据具体的控制算法进行编程和调试。
图2.11 三路循迹模块
图2.12 三路循迹原理图
TCRT5000三路循迹里面内置LM339,LM339(四路差动比较器)是一种常见的集成电路,内部装有四个独立的电压比较器,主要用于高压数字逻辑门电路。它具有失调电压小、电源电压范围宽、对比较信号源的内阻限制较宽、共模范围大、差动输入电压范围大、输出端电位可灵活方便地选用等特点。
LM339内置了四个独立的电压比较器 ,当比较器的同相端电压大于反向端电压时,置1;同相端电压小于反向端电压时,置0。
功能描述 | |
---|---|
工作电压 | 2V~36V |
输入电压 | 负电源电压至正电源电压 |
电源电流最大值 | 0.8mA |
输入电压 | 最小值0V,最大值5V |
输入偏置电压最大值 | 5mV |
响应时间 | 300ns |
低电平输出电流最小值 | 6mA |
2.5红外传感器
红外传感器是一种能够接收和感应红外线信号的电子器件,主要通过变化光强来检测目标物体的存在。由于黑色具有较强的吸光能力,所以红外传感器接收管接收到的红外光比较低。
???????
图2.13 红外传感器工作原理
上图是红外传感器电路原理草图,光敏二极管接收到的光作为右边NPN三极管的基极,由于NPN型半导体的基极有电流流过起到放大作用作为模拟信号经过LM393比较器进行比较最终转换为数字信号。
图2.14 红外传感器的硬件原理图
红外传感器内置贴片式LM393是双电压比较器集成电路,由两个独立的、精确的电压比较器组成。它具有宽工作电源电压范围,既可以在单电源下工作,也可以在双电源下工作,而且其电流大小不受电源电压幅度大小的影响。
2.15 贴片式LM393
???????
图2.16 LM393内部原理图
上图是LM393的内部结构图,由两个比较器组成。 同相端电压大于反向端电压时,置1;同相端电压小于反向端电压时,置0。实物图如图2.17所示。
图2.17红外传感器实物图
2.6蓝牙模块
HC-05是一款功能强大的经典蓝牙模块,由爱信电子(EGBT)生产。它基于蓝牙2.0标准,支持多种传输协议,包括串口通信(UART)和蓝牙SPP(串口通信)。
图2.18 HC-05正面图
图2.19 HC-05背面图
HC-05模块与CH340模块(串口转USB模块)连接进行串口通信,以下是引脚对应图
CH340 | HC-05 |
---|---|
VCC | VCC |
GND | GND |
TXD | RXD |
RXD | TXD |
HC-05蓝牙串口通讯模块有两种模式:命令响应工作模式和自动连接工作模式。
在自动工作模式,模块分为主(Master)、从(Slave)、回环(Loopback)三种模式。这种模式就是不需要设置什么情况下自动进入。如果想进入这种模式,直接接上电源即可,此时指示灯会快闪
- 主模式:该模块可以主动连接其它蓝牙模块并接收发送数据。
- 从模式:只能被其它蓝牙模块搜索并连接进行接收发送数据。
- 回环:蓝牙模块就是将接收的数据原路返回给远程的主设备。
第二种命令响应模式下,我们可以给模块发送AT指令,就像给电脑发送命令一样。我们可以设置模块的各种参数,比如蓝牙的名字、波特率等。如果想进入这种模式,需要长按模块上的黑色小按钮(即PIO11),然后同时接上电源,如果指示灯慢闪,就表示成功进入了AT指令模式。
图2.20 HC-05内部原理图
如图,当SI按键按下时PIO11,PIO8上的LED会闪烁。IC1为电压调节器,里面的LDO是一个电子器件,可以将高电压输入转换为稳定的低电压输出。它是一种线性稳压器,使用在其线性区域内运行的晶体管或FET,从输入电压中减去超额的电压,产生经过调节的输出电压。
2.7电机驱动模块
由于单片机stm32f103zet6输出的电压和电流较小,需要搭配电机驱动进行电压放大来驱动电机转动。本次设计采用L298N作为电机驱动。
L298N电机驱动芯片是由意大利芯片公司SGS-Thomson Microeletronics(简称ST意法半导体公司)生产的一款电机驱动芯片。
图2.21 L298N实物图
L298N电机驱动芯片是由Multiwatt封装,N是L298的封装标识符。还有另外不同的封装方式:
- P立式封装
- HN侧安封装
图2.22 L298N封装方式
L298N电机驱动芯片由两个核心组件构成:
- L298N驱动芯片
- 7805稳压芯片
图2.23 L298N的组成
其中7805是一种三端口高性能线性稳压器,具有多种保护功能。有三个端口分别是输入端子、公共端子、输出端子。以TO-220封装。可以把<=35V电压转换为5v电压输出。
78M05稳压模块能否生效完全取决于5V使能跳帽是否启用(拔掉禁用、插入启用,默认是板载连通的),这里分两种情况,接通和未接通。
图2.24 7805内部原理图
如图2.24 7805内部原理图所示,其中LM741是一种常用的运算放大器集成电路,由美国国家半导体公司(National Semiconductor)于1968年推出。它是一种直流耦合的高增益电子电压放大器,可以同时执行数字运算和放大功能。
LM741的特点包括:
- 高增益:具有较高的电压放大倍数,通常为100倍以上。
- 低输入偏置电压:输入偏置电压仅为几毫伏,有利于信号源的准确传输。
- 高速性能:具有较低的输出阻抗和较短的响应时间,能够快速地处理信号。
- 广泛的输入电压范围:适用于各种不同的信号源。
- 稳定的性能:具有较低的噪声和良好的抗干扰能力。
L298N电机驱动原理是根据H桥电路驱动电路,H桥 ,全称H-Bridge ,因为形状像字母而得名。H桥又四个三极管组成。Q1、Q2、Q3、Q4的四个开关分别控制电机正转、反转。而D1、D2、D3、D4是四个续流二极管,抵消反电动势的作用,用来保护电路。
图2.25 H桥电路
图2.26 电机正转
图2.27 电机反转
Q1 | Q2 | Q3 | Q4 | |
---|---|---|---|---|
电机正转 | 高 | 低 | 低 | 高 |
电机反转 | 低 | 高 | 高 | 低 |
三、软件系统设计
3.1 软件开发环境
编程方面使用STM32CubeMX,STM32CubeMX是一款图形化工具,主要用于STM32微控制器的配置。它可以帮助开发者通过直观的图像界面快速完成STM32微控制器的硬件配置,外设初始化以及中间件设置等工作,进而提高开发效率,降低开发难度。在CubeMX中,用户可以选择所需芯片并设置引脚、外设等参数,同时还能进行自动识别引脚冲突、设置时钟树、功耗预测等功能。生成的代码可以选择适配IAR、KEIL以及ST自家的STM32CubeIDE(免费)。
编译环境选择Keil,MDK5是Keil公司开发的一款嵌入式系统开发工具,它是一种集成的开发环境(IDE),支持多种微控制器架构,包括ARM、8051、C16x等。MDK5提供了丰富的库函数和中间件,方便开发者进行嵌入式系统的开发。
总的来说,MDK5是一款功能强大、易于使用的嵌入式系统开发工具,可以帮助开发者快速开发出高性能、低功耗的嵌入式系统。
3.2超声波避障程序设计
图3.1 超声波避障程序设计
当超声波传感器测量到障碍物的距离在20-35cm之间时,小车可以前进;当测量距离小于20cm时,小车可以后退;当测量距离大于35cm时,小车可以停止或者结束程序。这样的设计可以有效地避免小车与障碍物发生碰撞。
3.4循迹程序设计
图3.2 循迹程序设计
循迹程序设计包括以下几个步骤:
- 启动循迹模式:设置循环模式,开始进行循迹
- 探测黑线:使用传感器或摄像头等设备探测路径上的黑线。
- 判断处理程序:根据探测到的黑线情况,进行判断和处理。
- 是否检测黑线:根据判断结果,决定是否继续循迹。
- 向前、向右、向左、停止:根据判断结果,控制车辆的行进方向和停止。
3.5 蓝牙程序设计
图3.3 蓝牙程序设计
蓝牙程序设计通常涉及到一系列的步骤和流程。根据图片信息,以下是对蓝牙程序设计的基本步骤的描述:
- 蓝牙模式:首先,设备需要进入蓝牙模式,以便与其他蓝牙设备进行通信。这通常涉及到打开设备的蓝牙功能,并确保它可被其他设备发现。
- 接收指令:在蓝牙模式下,设备需要能够接收来自其他设备的指令或数据。这可以通过定义特定的数据传输协议来实现,以确保设备正确地解析和响应接收到的指令。
- 向右、向前、向后、向左:这些箭头指示的是小车的移动方向。在蓝牙程序设计过程中,可能需要考虑到设备的位置和移动,以确保其与周围环境和其他设备的交互是有效的。例如,设备可能需要向右移动以避免障碍物,或者向左移动以接近目标设备。
- 停止:当设备完成所需的操作或任务时,它应该能够被指令停止。这可能涉及到关闭设备的蓝牙连接或将其置于待机状态,以节省电池寿命。
剩下的引言和摘要,与总结和结论,任君发挥。觉得好的欢迎打赏