关注分享主机优惠活动
国内外VPS云服务器

基于STM32f103c8t6和L292N驱动程序设计避障车(核心功能建立是我创建的)

基于STM32f103c8t6和L292N驱动的避障车设计(核心功能是我自己写的) 1.项目印象不行。 系统板和这个电机驱动模块我正在考虑一种方法,用四个电机旋转这两个板,并添加一个避障模块。 一开始很困惑,于是漫长的学习之旅开始了。 首先,作为一名开发者,我的选址首选是B站,我就寻找了打造智能汽车的相关视频。 一、B站智能车教程。 这个up主的思路和视频整理的非常好,对于初学者入门很有帮助。 同时,做完这次视频测试,工作也差不多完成了一大半了。 但归根结底,这位车主的汽车使用的电机驱动器是专有的。 我们的使用的是L298N驱动模块,所以使用时还是要小心。 (不小心踩到了陷阱,花了3天时间才解决问题。)L298N模块超详细讲解

想了解更多这款电机的朋友,我在上面贴了链接. 。 您也可以自己阅读。 对此,将有专题讲座。 如何使用该模块。 但不得不提醒各位创意朋友注意一些方面:(1)模块使用时必须与单片机共用地(输出电压为5V(可作为驱动电源)。 微控制器)。 这样做的目的是让用于控制的逻辑电平参考同一地。 (2) 步进电机驱动:板上ENA、ENB为高电平时使能,这里的电平指的是TTL电平。 ENA 是 A1 和 A2 的使能引脚,ENB 是 B1 和 IB2 的使能引脚。 BJ接步进电机的公共端。 (这里Enable不仅仅只是给出一个电平,你还需要调制PWM脉冲带宽,这个调制是我的技术瓶颈。如果没有PWM调制,同频率的电机驱动电容会振荡。同时,使能引脚无法检测电机旋转)/p> 2.代码初步解释

我们将详细解释核心代码。 代码实现控制 PWM 的输出,允许由两个使能器函数 TIM4_PWM_Init (int mR, int mL) 控制不同的脉冲输入。 其中 mR 是右轮速度,mL 是速度。 左轮

//启用电机驱动引脚 void tim4_pwm_init); //设置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //设置引脚 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = 99; TIM_TimeBaseStructure.TIM_Prescaler = T IM_CKD_DIV2; TIM_TimeBaseStructure.TIM_CounterMode= TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OutputState = TIM_OCInitStructure.TIM_Pulse = mR; ity = TIM_OCPolarity_High; TIM_OC1Init(TIM4, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); 。 TIM_Pulse = mL; TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC2Init(TIM4, &TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM4, ENABLE);}

汽车取得进展

void Motor_F(int RSpeed,int LSpeed){Motor_Init();GPIOB->BSRR|= GPIO_Pin_0;GPIOB->BRR |= GPIO_pin_1; GPIOC->BSRR|= GPIO_Pin_14 ;GPIOC->BRR |= GPIO_Pin_15;TIM4_PWM_Init( RSpeed,LSpeed ​​);}

倒车

void Motor_B(int Speed,int LSpeed){Motor_Init();GPIOB->BRR |= GPIO_Pin_0;GPIOB[k4 ] > BSRR|= GPIO_Pin_1;BRR |= GPIO_Pin_14;GPIOC->BSRR|= GPIO_Pin_15; TIM4_PWM_Init( Speed,LSpeed ​​);}

识别到汽车在右侧

void Motor_L(int Speed, int LSpeed){ Motor_Init();GPIOB->BSRR |= GPIO_Pin_0;GPIOB[k4 ]>BRR|= GPIO_Pin_1; GPIOC->BRR |= GPIO_Pin_14;GPIOC- >BSRR |= GPIO_Pin_15;TIM4_PWM_Init( Speed,LSpeed ​​);}

注意车在左边

void Motor_R(int Speed,int LSpeed){ Motor_Init();GPIOB-> BRR |= GPIO_Pin_0 ;GPIOB->BSRR|= GPIO_Pin_1 ; GPIOC->BRR |= GPIO_Pin_14;GPIOC->BSRR|= GPIO_Pin_15;TIM4_PWM_Init( Speed,LSpeed ​​);}

避障settings

float Senor_Using(void){float length=0 , sum=0;u16 tim;int i=0;/*测量数据5次,计算平均值*/while(i!=5){ GPIOB- >BSRR |=(1>1;}* /3.查看项目结果

小车没有障碍物:如果右侧遇到障碍物:右轮向后移动,左侧先向后移动(左侧的速度比左侧的速度快)右侧速度) ) )

遇到左侧有障碍物:右轮向后移动,左侧先向后移动(右侧速度大于左侧速度)左侧)

p>

//我还创建了一个超声波模块。 这段代码应该在上面注释掉。 同时我们对项目进行了打包,以便大家能够更好的学习。 虽然这个项目有点乱,但是非常有条理,便于学习和分类。 这取决于我个人的意见。 您将被发送到下载和安装位置,无需任何硬币或积分。 另外,这个频道[]([51黑子网](http://www.51hei.com/bbs/space-uid-836950.html))[51黑子网](http://www. 51hei.com/bbs/forum.php?mod=viewthread&tid=212128&page=1#pid1020741)谢谢。

未经允许不得转载:主机频道 » 基于STM32f103c8t6和L292N驱动程序设计避障车(核心功能建立是我创建的)

评论 抢沙发

评论前必须登录!