L289N驱动小车方向

接线和原理

l298n

模块特点
在这里插入图片描述

具有驱动能力强。可以使用内置的78M05通过驱动电源部分取电工作。
使用了大量的滤波电容,继流保护二极管,可以提高可靠性。

接线

在这里插入图片描述

注意要同个电源 接出 切记

电路板的跳帽 不用 拔掉  in1-in4 接单片机的io
out1-out4 接入电机   电源选择 12伏 gnd 可以保证驱动电源足够。

代码`

	void car_init(void)
	{
	GPIO_InitTypeDef  GPIO_InitStruct;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	
	}
	void Qian_left(void)
	{
	GPIO_SetBits(GPIOA,  GPIO_Pin_0);
	GPIO_ResetBits(GPIOA,  GPIO_Pin_1);
	
	}
	
	void Qian_right(void)
	{
	GPIO_SetBits(GPIOA,  GPIO_Pin_4);
	GPIO_ResetBits(GPIOA,  GPIO_Pin_5);
	
	}
	
	void hou_right(void)
	{
	GPIO_SetBits(GPIOA,  GPIO_Pin_6);
	GPIO_ResetBits(GPIOA,  GPIO_Pin_7);
	
	}
	
	void hou_left(void)
	{
	GPIO_SetBits(GPIOB,  GPIO_Pin_0);
	GPIO_ResetBits(GPIOB,  GPIO_Pin_1);
	
	}
	
	
	void houright_houtui(void)
	{
	GPIO_ResetBits(GPIOA,  GPIO_Pin_6);
	GPIO_SetBits(GPIOA,  GPIO_Pin_7);
	
	}
	
	void houleft_houtui(void)
	{
	GPIO_ResetBits(GPIOB,  GPIO_Pin_0);
	GPIO_SetBits(GPIOB,  GPIO_Pin_1);
	
	}
	
	void hou_rightstop(void)
	{
	GPIO_SetBits(GPIOA,  GPIO_Pin_6);
	GPIO_SetBits(GPIOA,  GPIO_Pin_7);
	
	}
	
	void hou_leftstop(void)
	{
	GPIO_SetBits(GPIOB,  GPIO_Pin_0);
	GPIO_SetBits(GPIOB,  GPIO_Pin_1);
	
	}

顾忌的问题

其实配置高低电平 和配置pwm 是一个道理  
pwm 就是要的是占空比 时间就是高电平持续的时间 
所以是一样的道理 没必要纠结。

没必要

最后 强调 一次 所有的硬件的电源必须是从同一个电源接出(VCC 和 gnd)
很重要 !!!!!!!!!!!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
L298N概述: L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。 主要特点是: 工作电压高,最高工作电压可达46V; 输出电流大,瞬间峰值电流可达3A,持续工作电流为2A; 额定功率25W。 光电隔离 L289N 电机驱动器实物展示: 光电隔离 L289N 电机驱动器简要说明: 一、 尺寸:80mmX45mm 二、 主要芯片:L298N、光电耦合器 三、 工作电压:控制信号直流5V;电机电压直流3V~46V(建议使用36伏以下) 四、 最大工作电流:2.5A 五、 额定功率:25W PCB 图展示: 特点: 1、具有信号指示。 2、转速可调 3、抗干扰能力强 4、具有过电压和过电流保护 5、可单独控制两台直流电机 6、可单独控制一台步进电机 7、PWM脉宽平滑调速 8、可实现正反转 9、采用光电隔离 L298N驱动器与直流电机接线图: 驱动器控制两相步进电机接线图: 驱动器控制四相步进电机接线图: 附件内容截图:
好的,下面是基本步骤: 1. 接线: 将STM32F103RCT6的PA0、PA1、PA2、PA3引脚分别接到L298N的IN1、IN2、IN3、IN4引脚上,另外还需要将L298N的EN1引脚和EN2引脚连接到STM32F103RCT6的PB0和PB1引脚上。 2. 初始化: 初始化PA0~PA3引脚为输出模式,PB0和PB1引脚为PWM输出模式。同时,将PA0~PA3引脚输出低电平,PB0和PB1引脚输出0占空比的PWM波。 3. 编写代码: 主要分为两个部分,一个是控制电机转动的函数,另一个是主函数中的控制逻辑。 控制电机转动的函数如下: ``` void Motor_Control(int motor, int dir, int speed) { switch (motor) { case MOTOR_LEFT: if (dir == FORWARD) { GPIO_ResetBits(GPIOA, GPIO_Pin_0); GPIO_SetBits(GPIOA, GPIO_Pin_1); } else if (dir == BACKWARD) { GPIO_SetBits(GPIOA, GPIO_Pin_0); GPIO_ResetBits(GPIOA, GPIO_Pin_1); } else { GPIO_ResetBits(GPIOA, GPIO_Pin_0); GPIO_ResetBits(GPIOA, GPIO_Pin_1); } TIM_SetCompare4(TIM3, speed); break; case MOTOR_RIGHT: if (dir == FORWARD) { GPIO_ResetBits(GPIOA, GPIO_Pin_2); GPIO_SetBits(GPIOA, GPIO_Pin_3); } else if (dir == BACKWARD) { GPIO_SetBits(GPIOA, GPIO_Pin_2); GPIO_ResetBits(GPIOA, GPIO_Pin_3); } else { GPIO_ResetBits(GPIOA, GPIO_Pin_2); GPIO_ResetBits(GPIOA, GPIO_Pin_3); } TIM_SetCompare3(TIM3, speed); break; default: break; } } ``` 主函数中的控制逻辑如下: ``` int main(void) { // 硬件初始化 Motor_Init(); PWM_Init(); while (1) { // 向前 Motor_Control(MOTOR_LEFT, FORWARD, 100); Motor_Control(MOTOR_RIGHT, FORWARD, 100); Delay(1000); // 向后 Motor_Control(MOTOR_LEFT, BACKWARD, 100); Motor_Control(MOTOR_RIGHT, BACKWARD, 100); Delay(1000); // 左转 Motor_Control(MOTOR_LEFT, BACKWARD, 100); Motor_Control(MOTOR_RIGHT, FORWARD, 100); Delay(1000); // 右转 Motor_Control(MOTOR_LEFT, FORWARD, 100); Motor_Control(MOTOR_RIGHT, BACKWARD, 100); Delay(1000); // 停止 Motor_Control(MOTOR_LEFT, STOP, 0); Motor_Control(MOTOR_RIGHT, STOP, 0); Delay(1000); } } ``` 其中,Motor_Init()函数和PWM_Init()函数是初始化函数,具体实现可以参考STM32F103RCT6的官方手册。 4. 编译烧录: 将代码编译生成.bin文件,通过JTAG或SWD等方式烧录到STM32F103RCT6上。 5. 测试: 将电源接入小车,观察电机是否按照预期的方向和速度转动。如果有问题可以检查接线、代码和硬件配置是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值