关于智能小车基于STM32和传感器码盘的测速

Posted 我是可爱的小朋友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于智能小车基于STM32和传感器码盘的测速相关的知识,希望对你有一定的参考价值。

光电传感器有遮挡时,输出高电平;无遮挡,输出低电平。我们接受到一次低电平时,把这个脉冲加一,轮子上有编码圈一圈可以让脉冲累加20次。我用了2个定时器和两个外部中断,定时器分别用来仿PWM输出和定时,外部中断分别用来光电传感器的输出(输出的高低电平会输入到单片机的IO口)和按键输入控制电机转动。现在PWM输出暂时可以不用管。定时器定时1ms秒,检测是否接受到传感器输入脉冲,计时1S后将脉冲累计的值(该值设为num)num/20返回我们的结果为每秒轮子所转的圈数。将该结果每秒的转速显示到OLED上,当然,也可以自己稍微修改代码用串口输出并显示。

下面来看测速用到的几个代码段


//触发传感器输入 
void INIT_GD(void) //Key0  
{	 
    GPIO_InitTypeDef GPIO_InitStruct;  //结构体
	
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //时钟
	
	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_0;   
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD; //下拉
	GPIO_Init(GPIOB, &GPIO_InitStruct);
}
 //定时器4
void TIM4_inIt(void)
{
//结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
	 //时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); 
//配置中断
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; //TIM3通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&NVIC_InitStructure); //配置
	
TIM_TimeBaseStructure.TIM_Period = 999; //重装载寄存器
TIM_TimeBaseStructure.TIM_Prescaler =71; //预分频
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM4向上计数
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //配置 TIM4
	
TIM_Cmd(TIM4, ENABLE); //使能
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //开启定时器4,
//进入一次中断1Ms
void TIM4_IRQHandler(void)  
{
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) //1ms
{
	TIM_ClearITPendingBit(TIM4, TIM_IT_Update );
	time++;
 //测每秒的转速,每一秒更新一次
	if(Key0 == 1)
		flag=1;
	if(Key0==0 && flag==1)
	{
		flag=0; //清除标志
		num=num+1; //传感器触发次数
	}
	if(time == 1000) //计时1S,计算转速
	{
		Circle=num/20; //转速
		time=0; 
		num=0;
    } 
}
}

详细代码链智能小车基于STM32的测速,亲测https://blog.csdn.net/m0_54195456/article/details/121042194

以上是关于关于智能小车基于STM32和传感器码盘的测速的主要内容,如果未能解决你的问题,请参考以下文章

毕业设计 - 题目:基于 STM32 的自动泊车系统 -智能小车 自动停车

STM32之智能小车,手把手从0到1,模块化编程

基于STM32的智能小车--电机驱动设计

求一个基于STM32的速度测速程序

毕业设计:基于单片机的超声波智能跟随小车 - 物联网 智能小车 嵌入式单片机 stm32 跟随小车

项目五:基于stm32f103的寻迹小车