
STM32电机培训online,大佬带你玩电机) ~4 P& v& G( G0 q x& ~- c* X) ~ A: X$ l , Q1 N, i$ g( H7 _- Y! G& G 第一篇。基于Stm32f103红外蓝牙寻迹智能小车设计$ Q. y0 Y8 A- o, J3 N 之前的一个小项目,基于stm32f103这款单片机,实现红外遥控,超声波避障,黑白寻迹,pwm调速,齿轮测速等功能,这里上传下之前的工程文件,附部分项目笔记,希望对需要的人有帮助,有不对的地方还请指出来,谢谢!" }2 U f' B4 k4 | 下面是设计报告的内容节选(清晰图片版请下载附件)3 d0 w5 ?1 w/ G- S4 U9 h 项目设计:智能小车1、项目简介 本次项目中我们利用SMART103平台中的硬件资源控制电机驱动、红外遥控模块从而实现对小车的前进,后退,左右转弯以及速度调整,并能够持续加减速。速度状态通过LED指示状态来识别。通过此次项目,可以掌握电机驱动模块跟红外遥控模块的使用、I/O口作为输出模式时,CPU对I/O口的基本操作和控制,系统滴答定时器的工作原理、高级定时器TIM1的PWM调制原理、以及红外遥控器的工作原理、对系统工作有个整体认识。 2、电机驱动模块' s, g: T+ `! ~; {, g1 u' q, C![]() 接口说明: 输出口:OUT1、OUT2、OUT3、OUT4 四路输出口分别对应小车左右两侧的电机;其中1、2为一组,对应左侧电机的正负极;3、4位一组,对应右侧电机的正负极,在安装电机之前对电机正负极进行检测。 输入口:ENA、IN1、IN2、IN3、IN4、ENB ENA、ENB为电机控制使能端口,改口接入PWM波可以根据波形占空比调节电机转速IN1、IN2、IN3、IN4 分别对应单片机IO口,用来控制电机正反转。 电源输入:12V输入、GND 12V接入电源正极,GND接入电源负极,供电机驱动模块正常驱动电机,该模块自带5V板载输出。 原理图: ![]() ![]() ![]() 图中假定IN1、IN2分别对应输入1、0;电流流经方向为黄色荧光笔轨迹,驱动电路一侧电机电机正传,反之输入0、1电机反转;同样电路另一侧原理相同。 MOTO_GPIO初始化:General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。 在STM32中,每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。 根据数据手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成如下8中工作模式:
o' e( N0 t) U8 b H3 ] 1 F s4 n! G( J" t STM32的GPIO端口位配置表如下图所示: STM32的输出模式配置如下表所示: 下面编写电机驱动模块IO初始化函数: 7 d! p6 y( X, o2 m1 `. ?! n. X ) I! C) i( m% F4 T8 Q8 d E8 K Init_PWM_GPIO初始化% b/ i5 j- H G: o" i6 J 脉冲宽度调制(PWM),是英文“ Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制, PWM 原理如图: 图中,我们假定定时器工作在向上计数 PWM模式,且当 CNT<CCRx 时,输出 0,当 CNT>=CCRx 时输出 1。那么就可以得到如上的 PWM示意图:当 CNT 值小于CCRx 的时候, IO 输出低电平(0),当 CNT 值大于等于 CCRx 的时候,IO 输出高电平(1),当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的 STM3内部PWM波产生原理: PWM产生的流程:
使能GPIOF时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用功GPIOA8,GPIO9复用映射到定时器TIM1
使能预装载寄存器:TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
) D5 n' A% @' Q! S9 v7 X, | 一个通用的红外遥控系统由发射和接收两大部分组成,如图 ![]() 编码格式: 目前广泛使用较普遍的两种:一种是NEC Protocol 的PWM( 脉冲宽度调制) 标准;另一种是Philips RC-5 Protocol 的PPM( 脉冲位置调制) 标准。 NEC 标准(代表芯片WD6122):遥控载波的频率为38kHz( 占空比为1:3) ;当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开即停止发射。NTC编码,引导码由一个9ms的载波波形和4.5ms的关断时间构成,它作为随后发射的码的引导,这样当接收系统是微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系。编码采用脉冲位置调制方式(PPM) 红外NEC协议编码![]() 利用脉冲之间的时间间隔来区分“0”和“1”:数据0 可用“高电平0.56ms +低电平0.56ms”表示,数据1 可用“高电平0.56ms +低电平1.68ms”表示。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这110ms发射代码由一个引导码(9ms),一个结果码(4.5ms),8位地址码,8位地址反码,8位数据码和这8位数据的反码组成。如果键按下超过110ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。 编码构成: ![]() Init_TELECONTRAL_IO初始化 红外遥控初始化流程:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);
5 V* \% u. E* E1 I0 @2 G ![]() 中断优先级分组% x: s! e/ y6 `1 }4 ^ w. Q 4 N) {# e8 r! T' J$ ] ![]() Control_Init9 C5 k7 ]2 y3 k1 H 红外遥控按键值获取: ![]() ![]() ![]() 通过获取到的按键值,编写小车控制的程序,并设置模式标志位,切换模式完成小车的前进、后退、左转、右转、停止、加减速等功能。同时将当前获取到的速度值跟小车的模式状态显示到LCD1602上面。 设置按键模式 :判断当前按键5是否被按下,在模式一与模式二之间进行切换。 ![]() 编写两种模式下的控制函数: ![]() ![]() 单片机源程序如下(主程序):
[color=rgb(51, 102, 153) !important]复制代码 ![]() 所有资料51hei提供下载(内含完整源码与word格式清晰版的设计论文):2 K9 w, _( t+ D% e2 _( `0 I8 ^) L% r 出处---http://www.51hei.com/bbs/dpj-101997-1.html ======================= : Y( v+ ], b, [) L& x0 i 第2篇。STM32智能小车 资料下载5 b D! W6 i9 b/ U( b2 V& D 出处---http://www.51hei.com/bbs/dpj-88766-1.html + m9 ]& k$ u5 u; ^' N4 } =======================! ?; U& K4 \% [9 ^# @. X8 U 第3篇。STM32智能小车硬件结构与程序资料下载 带蓝牙,避障,跟踪等功能' `) o+ G% t6 X4 { 一款stm32单片机主控的智能小车,具有蓝牙和红外遥控,黑线循迹,自动避障,红外跟踪以及超声波测距等功能,是一款很典型功能非常全面的的智能小车。下面是他的硬件结构:: I$ Q! L5 H) a1 F. [# G# y& C8 O ![]() 小车外形:" Z4 T, f' B& o) J R ![]() * F- k* I) q% \ 智能小车各个部分的原理图: ![]() ![]() ![]() & C. ~& `* X& F8 U5 i ) e8 ?. Y' v& h6 S; I4 Y 手机蓝牙连线智能小车教程
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]() ![]() 11、模式选择好之后进入操控主画面,目前支持前进、后退、左转、右转指令 ![]() http://www.51hei.com/bbs/dpj-79827-1.html. n% t+ C) \6 h4 ~ STM32智能小车源码程序: http://www.51hei.com/bbs/dpj-91757-1.html8 I, y l6 G* c: ` |
1 S( t/ \6 P& U: y/ i) W
(出处网上)第4篇。STM32智能小车之路
1 F& |3 o1 l: p2 z% p/ o& \& Z
: B- ^/ s+ F* H
智能遥控小车原理介绍:
本系统采用STM32F401作为手柄的主控芯片,STM32F103作为小车的主控芯片。小车采用L298N驱动电机, FUBATA-S3003型舵机转向,并搭载DHT11数字温湿度传感器采集温度和湿度数据,再通过NRF24L01无线通信模块把温度和湿度数据发送给手柄,手柄接收到数据后在mini12864液晶上显示出来温度和湿度。手柄采用按键和重力感应两种控制方式来控制小车的运动可以任意切换以达到不同类型用户的需求和服务。
本系统软件设计分为两个部分:手柄部分、小车部分。手柄部分使用STM32F401作为平台,使用无线模块NRF24L01作为通讯模块向小车发送动作指令。8 k3 K3 x6 Z' N, g2 d7 [+ w! z. j q
视频演示:+ P5 |9 y ]' E4 M
智能遥控小车硬件模块组成:
1.手柄部分) {6 Q$ K3 H2 h8 `2 X) a+ Z
该设计中,手柄为一块将评估板、液晶显示器、MPU6050模块、NRF24L01无线通信模块和6个按键连接在一起的万能洞洞板。6 {: n8 c0 [7 ~3 k# l
小车部分(如截图)。
该设计中,小车是有一块STM32最小系统板、L298N电机驱动、DHT11数字温湿度传感器、NRF24L01无线通信模块、HC-SR04超声波测距模块、FUBATA-S3003型舵机和两个减速电机组成(如截图)。
手柄部分5 @7 l' Z$ U7 B' N# w
小车部分
附件内容:
1.智能小车主控板电路原理图PDF档
2.手柄评估板原理图
3.小车端源代码(有详细的中文注释): f- {6 J+ H/ c$ @- k
4.手柄端源代码(有详细的中文注释)
5.智能小车论文、PPT讲解
6.相关的传感器模块资料等 H, u: c3 O. A; P
/ {# Z7 m: c3 F0 Q
详细请看---http://www.cirmall.com/circuit/1 ... D%E5%B0%8F%E8%BD%A6(%E5%8E%9F%E5%88%9B)#/details( ?8 i4 J; K: T8 k) w6 ~4 G o
6 q8 l* f% W+ `+ ?$ W: f3 W" j* p1 _
$ K+ r2 f, h/ N0 \
5 X. s+ F# E: D- l4 A8 r5 x: E
, I0 e: x" J1 M! U
# a4 l6 W1 F0 A- K
http://jingyan.baidu.com/article ... 54.html?allowHTTP=1
简单介绍:( d: C: M0 W" D5 _5 y0 e7 b
智能小车主要有以下功能:超声波避障模式、红外避障模式、寻迹模式、跟随模式、手势控制模式、体感模式。对于想学习智能小车软件编程的同学,首先要知道怎么下载调试好的程序。下面是智能小车下载程序的方法。- V; {4 s3 P* D7 M
先把小车和串口模块连接好在插上电脑,模块的VCC RXD TXD GND 分别于USB串口模块的3V TX RX GND对应相接,注意TX和RX需要交叉,即TXD接RX,RXD接TX(连接线已经组合好,正确插上即可)。
安装驱动:USB串口模块通常需要安装驱动程序CP210X,安装成功以后,将会再电脑的设备管理器里面看到对应的COM号。
。。。$ N* m! }' a: K4 R* S) `6 ?
【详细看上面连接】
+ h7 x3 Q8 U( _% b, ] X0 Q