STM32单片机基本原理与应用(四)

直流电机驱动控制原理

1、电机正反转控制

在STM32中,直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时,电机的旋转方向也会相应改变。在硬件电路中,可以通过继电器或晶体管等电子开关来切换电机的电源极性。

在软件层面,STM32可以通过GPIO引脚的高低电平来控制电机的正反转。例如,当GPIO引脚输出高电平时,电机正转;当输出低电平时,电机反转。通过改变GPIO引脚的电平状态,可以实现电机的正反转控制。

2、电机速度控制

直流电机的速度控制可以通过PWM技术实现。通过调节PWM方波的占空比,可以改变电机输入电压的平均值,从而控制电机的转速。占空比越大,电机转速越快;占空比越小,电机转速越慢。

实验案例

采用ULN2003芯片驱动,通过对ULN2003芯片的输入引脚的电源极性控制,从而控制直流电机的正反转。

  • 实验模块:STM32核心板+直流电机

  • 电路原理图

两路直流电机通过ULN2003芯片驱动,控制引脚分别为ULN-O5 ULN-O6

程序源码:

c 复制代码
int main(void)
 {
	delay_init();	    	 //延时函数的初始化	  
	DCMOTOR_Init();         	//初始化直流电机端口
	while(1)
	{
		DCMOTOR1=1;
    DCMOTOR2=0;		
		delay_ms(1800);//延时1800ms
 
		DCMOTOR1=0;  
		DCMOTOR2=1;
		delay_ms(1800);//延时1800ms	
 }

实验现象:

程序运行后,直流电机先正向转动后,停止1.8秒后再反方向转动。

步进电机驱动控制原理

步进电机是通过控制脉冲信号来驱动电机的。在STM32中,控制器通过输出一系列的脉冲信号来控制步进电机的转动。每个脉冲信号对应步进电机的一个步进角度,控制脉冲的数量和频率可以控制电机的转动速度和位置。

STM32控制器通过定时器产生精确的脉冲信号,并通过GPIO引脚输出到步进电机驱动器,其驱动器输入引脚接收。在每个脉冲信号的上升沿或下降沿作用下,步进电机转动一定的角度,从而实现电机的连续或间歇转动。

实验案例

步进电机驱动器是连接控制器和步进电机的中间设备。它接收来自控制器的脉冲信号,并转换为合适的电流和电压,驱动步进电机转动。在实验中ULN2003就是起这个作用,作为"连接的桥梁"------步进电机驱动器。

  • 实验模块:STM32核心板+步进电机
  • 电路原理图

步进电机简而言之就是能够通过输入脉冲的个数,确定旋转的角位移,一般用他来控制小车轮子的偏移角度等。步进电机由驱动芯片ULN2003驱动,利用ULN2003与MCU引脚相连,可以驱动步进电机。主要在于放大驱动电流。

其中ULN2003的控制端与单片机的PG6、PG7、PG8、PG9相连接。

程序源码:

1、步进电机驱动函数

c 复制代码
void stepper(uint8_t dir,int speed)
{
	if(dir == Pos)
	{
		IN1_HIGH;
		delay_ms(speed);
		IN1_LOW;
		IN2_HIGH;
		delay_ms(speed);
		IN2_LOW;
		IN3_HIGH;
		delay_ms(speed);
		IN3_LOW;
		IN4_HIGH;
		delay_ms(speed);
		IN4_LOW;
	}
	else
	{
		IN1_HIGH;
		delay_ms(speed);
		IN1_LOW;
		IN4_HIGH;
		delay_ms(speed);
		IN4_LOW;
		IN3_HIGH;
		delay_ms(speed);
		IN3_LOW;
		IN2_HIGH;
		delay_ms(speed);
		IN2_LOW;
	}
}

2、主函数

c 复制代码
int main(void)
 {	
	delay_init();	    //延时函数初始化	  	 
	MOTOR_Init();  //步进电机IO初始化 

	while(1)
	{
		int i;
		for(i = 0;i < 1000;i++)      //电机正转
			stepper(Pos,8);    //间隔最少是5ms  
		delay_ms(1000);    //延时
		for(i = 0;i < 1000;i++)      //电机反转
			stepper(Neg,8); 
		delay_ms(1000);    //延时
	}
 }

实验现象:

可以观察到步进电机首先顺时针运转,随后逆时针运转。

相关推荐
FakeOccupational9 小时前
【电路笔记 STM32】Cortex-M7 UART DMA模式(DMA&空闲中断&普通模式+DMA&半满/全满中断&循环模式)
笔记·stm32·嵌入式硬件
sramdram9 小时前
国产32位CH32V系列RISC-V单片机
单片机·嵌入式硬件·risc-v·国产32位单片机·risc-v单片机
万物智能信息科技9 小时前
人体感应芯片PIR模块驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·嵌入式硬件·华为·开源·harmonyos
youcans_9 小时前
【STM32C5教程】(4)GPIO 外部中断实验
stm32·单片机·嵌入式硬件·mcu·stm32c5
深圳市恒锐丰科技杨生10 小时前
# CSM9118|芯晞微电 7.5V/1.5A 单通道 H 桥电机 / 线圈驱动
嵌入式硬件·硬件工程
硅基手札11 小时前
【I2C 技术系列 09】I2C 传输模式:轮询 / 中断 / DMA
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
Zw-awa12 小时前
让机器回答“我在哪”:激光雷达与 SLAM
stm32
启友玩AI12 小时前
微安级唤醒、毫安级识别:基于 CI3422 的 AI 眼镜语音交互开发实战
c语言·人工智能·科技·嵌入式硬件·ai·ar·语音识别
wuyk55512 小时前
样章-第10讲-看门狗异常恢复与卡机排查方法论
stm32·单片机·嵌入式硬件·重构
开发笔记-阿牛12 小时前
AM收音机蓝牙二合一设计复盘
人工智能·单片机·嵌入式硬件·音视频·音频