完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
智能wifi小车项目说明:完整项目分为三个模块 1,esp8266发送方(用于控制小车) 类似遥控装置跳转链接 2,esp8266接收方(接收发送方的消息) 类似接收装置跳转链接 3.主控方(stm32c8t6用于直接驱动小车) 执行命令方 本项目为第《3》 模块,使用stm32f103c8 开发环境keil5 第《3》 模块说明:使用主控板+电机驱动芯片控制电机的前进后退,左转右转,电机驱动芯片:L293D 输出端接电机A和电机B, 3,6脚接 电机A 3+ 6- 11,14脚接电机B 11+ 14- 输入端接c8t6的: PA6–7 前进左轮 PA7–10 前进右轮 PB6–2 后退左轮 PB7–15 后退右轮 经过实验,这里使电机运动,频率使用1khz,占空比小于60% ,大于%60电机转速过快(限速) 而使电机运动的最小占空比是在35%左右,这里设定周期值为1000,占空比的范围控制在350-600左右 理论上控制相同电机输出相同pwm波就可以了,但是我这个有问题……给同样占空比两个轮子不一致,硬件问题,没办法,调了好久,大概能走个直线,这种使用pid+huo霍尔编码器解决应该挺不错,有时间再搞,思路大概是这样,霍尔编码器可以检测两个电机的转速,当两个轮子转速不一致时候,要么提高转速慢的轮子,要么降低转速快的轮子,这一过程实现闭环控制。 为了方便调节小车状态,我增加了按键的功能,通过按键调节车状态 万事俱备,只差串口,串口这里我做了对应几种状态,状态1,2,3,4分别对应前进,后退,左右转 这里还添加了一个状态0,当接收到串口的数据为0时候,LED为点亮状态,我们可以通过主板的LED,看是否建立了连接。 主要功能函数应用如下: #include "stm32f10x.h"#include "stdio.h"#include "bsp_init.h"/*智能wifi小车项目说明:esp8266之间通过mqtt协议建立连接,实现小车的远程控制(前进,后退,左右)完整项目分为三个模块 1,esp8266发送方(用于控制小车) 类似遥控装置 2,esp8266接收方(接收发送方的消息) 类似接收装置3.主控方(stm32c8t6用于直接驱动小车) 执行命令方本项目为第《3》模块本项目使用PA6,PA7,PB6,PB7四个引脚间接控制电机(通过控制电机驱动芯片控制电机)PA6,PA7控制电机前进 PA6控制左轮 PA7控制右轮PB6,PB7控制电机后退实现原理:通过控制相同周期不同占空比来调节车轮转速理论上(结合电机之间造成的原因可能会存在误差)前进时:PA6,PA7占空比相同后退时:PB6,PB7占空比相同左转时:PA6占空比为0(此时PA6会输出低电平)PA7(占空比设定值能转动轮胎即可)左转时:PA7占空比为0(此时PA7会输出低电平)PA6(占空比设定值能转动轮胎即可) #include "stm32f10x.h" #include "stdio.h" #include "bsp_init.h" /* 智能wifi小车项目说明:esp8266之间通过mqtt协议建立连接,实现小车的远程控制(前进,后退,左右) 完整项目分为三个模块 1,esp8266发送方(用于控制小车) 类似遥控装置 2,esp8266接收方(接收发送方的消息) 类似接收装置 3.主控方(stm32c8t6用于直接驱动小车) 执行命令方 本项目为第《3》模块 本项目使用PA6,PA7,PB6,PB7四个引脚间接控制电机(通过控制电机驱动芯片控制电机) PA6,PA7控制电机前进 PA6控制左轮 PA7控制右轮 PB6,PB7控制电机后退 实现原理:通过控制相同周期不同占空比来调节车轮转速 理论上(结合电机之间造成的原因可能会存在误差) 前进时:PA6,PA7占空比相同 后退时:PB6,PB7占空比相同 左转时:PA6占空比为0(此时PA6会输出低电平)PA7(占空比设定值能转动轮胎即可) 左转时:PA7占空比为0(此时PA7会输出低电平)PA6(占空比设定值能转动轮胎即可) */ /*===================函数声明========================*/ void key_pro(void); void car_state(void); /*===================================================*/ /*=====================变量==========================*/ static int carflag; /*===================================================*/ /*============================================主函数==============================================*/ int d; int main(void) { SystemInit(); //配置系统时钟为 72M Bsp_Init(); while(1) { TIM_SetCompare1(TIM3, PA6duty); // PA6 前进左轮 TIM_SetCompare2(TIM3, PA7duty); // PA7 前进右轮 TIM_SetCompare1(TIM4, PB6duty); // PB6 后退左轮 TIM_SetCompare2(TIM4, PB7duty); // PB7 后退右轮 //for(d=1000;d>0;d--) // printf("1:%dt 2:%dt 3:%dt 4:%dt",PA6duty,PA7duty,PB6duty,PB7duty); key_pro(); car_state(); } } /*===================================================================================================*/ /*=========================================按键扫描===================================================*/ /*按键扫描*/ void key_pro(void) { //int count;//按键计数 if( Key_Scan(GPIOA,GPIO_Pin_0) == KEY_ON ) //判断KEY1是否按下 { if(++carflag==5)carflag=0; } } /*====================================================================================================*/ /*===========================================车状态=====================================================*/ void car_state(void) { if(carflag==0) //停止状态 { //所有占空比为0 PA6duty=0;PA7duty=0; PB6duty=0;PB7duty=0; } if(carflag==1)//前进状态 { // 前进状态: PA6(左轮)PA6duty=360 PA7(右轮) PA7duty=420~480 PA6duty=420;PA7duty=400; PB6duty=0;PB7duty=0; } if(carflag==2)//后退状态 { // 后退状态: PB6(左轮)PB6duty=740 PB7(右轮) PB7duty=400 PA6duty=0;PA7duty=0; PB6duty=750;PB7duty=350; } if(carflag==3)//左转状态 { // 前进左转: PA6(左轮)PA6duty=0 PA7(右轮) PA7duty=360 PA6duty=0;PA7duty=360; PB6duty=0;PB7duty=0; } if(carflag==4)//右转状态 { //前进右转: PA6(左轮)PA6duty=360 PA7(右轮) PA7duty=0 PA6duty=400;PA7duty=0; PB6duty=0;PB7duty=0; } } /*=====================================串口1中断服务函数===============================================*/ void USART1_IRQHandler(void) { u8 res; if(USART_GetITStatus(USART1,USART_IT_RXNE)) { res=USART_ReceiveData(USART1); USART_SendData(USART1,res); if(res == '0') {LED_ON; carflag=0; } if(res == '1') {LED_ON; carflag=1; } if(res == '2') {LED_ON; carflag=2;} if(res == '3') {LED_ON; carflag=3;} if(res == '4') {LED_ON; carflag=4;} res = 0; } } /*===========================================================================================================*/ |
|
|
|
只有小组成员才能发言,加入小组>>
2371 浏览 0 评论
8683 浏览 4 评论
36409 浏览 18 评论
4967 浏览 0 评论
24179 浏览 34 评论
1337浏览 2评论
1586浏览 1评论
1954浏览 1评论
1400浏览 0评论
1835浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 18:58 , Processed in 1.204549 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号