(标准库)直流无刷电机驱动(3)——霍尔传感器状态获取

通过读取霍尔传感器 HU、HV、HW的状态判断在六步法的哪一步!

u8 hall_get_state(void){

	u8 state=0;//获取六步法的第几步
	/* 读取霍尔传感器 U 的状态 */
	if(GPIO_ReadInputDataBit(HALL_U_GPIO_PORT, HALL_U_PIN)!= RESET)
  {
    state |= 0x01U << 2;
		TIM_OC1PolarityConfig(HALL_TIM,TIM_ICPolarity_Falling);//引脚为1,当引脚变0进入中断(下降沿检测)
  }
	else{
		TIM_OC1PolarityConfig(HALL_TIM,TIM_ICPolarity_Rising); //引脚为0,当引脚变1进入中断(上升沿检测)
	}
	
  /* 读取霍尔传感器 V 的状态 */
  if(GPIO_ReadInputDataBit(HALL_V_GPIO_PORT, HALL_V_PIN)!= RESET)
  {
    state |= 0x01U << 1;
  	TIM_OC2PolarityConfig(HALL_TIM,TIM_ICPolarity_Falling);
  }
	else{
		TIM_OC2PolarityConfig(HALL_TIM,TIM_ICPolarity_Rising);
	}
  
  /* 读取霍尔传感器 W 的状态 */
  if(GPIO_ReadInputDataBit(HALL_W_GPIO_PORT, HALL_W_PIN)!= RESET)
  {
    state |= 0x01U << 0;
  	TIM_OC3PolarityConfig(HALL_TIM,TIM_ICPolarity_Falling);
  }
	else{
		TIM_OC3PolarityConfig(HALL_TIM,TIM_ICPolarity_Rising);
	}
	
	//printf("statel:%d\r\n",state);   
	return state;
}

这里是针对前文说的通用TIMx的通道不能进行双边沿触发,进行手工实现双边沿触发。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino霍尔无刷直流电机驱动是一种用于控制无刷直流电机的设备。无刷直流电机是一种高效、低噪音、长寿命的电机类型。 在使用Arduino驱动无刷直流电机之前,需要明确该电机的工作原理。无刷直流电机通过改变驱动电流的方向和大小来控制电机的转速和转向。霍尔传感器是一种常用于测量电流方向和大小的传感器。通过读取霍尔传感器的输出信号,可以确定电机的转轴位置和方向,并相应地改变驱动电流。 要使用Arduino驱动无刷直流电机,首先需要确定电机的运行参数,如额定电压和最大电流。然后连接Arduino和无刷直流电机的电路。一般情况下,需要使用电机驱动器与Arduino进行连接,电机驱动器可提供稳定的电流输出和保护电路,以防止电机过载或短路。 在Arduino程序中,需要使用适当的引脚和库函数来控制电机的转速和转向。使用PWM(脉冲宽度调制)信号来调节电机驱动电流的大小,从而控制电机的转速。通过改变PWM的占空比,可以调节驱动电流的大小。此外,根据霍尔传感器的输出信号来确定电机的位置和方向,并根据需要调整电机的运行状态。 总之,Arduino霍尔无刷直流电机驱动是一种用于控制无刷直流电机的设备,通过读取霍尔传感器的信号来确定电机的位置和方向,并使用Arduino的引脚和库函数来调节电机的转速和转向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值