首页 > 编程知识 正文

无刷直流驱动电机驱动,12v直流驱动电机

时间:2023-05-03 20:00:26 阅读:203018 作者:3263

本次来写一下关于驱动直流电机的知识,今天目的是驱动它,下次写使用PWM精准的对直流电机进行控速。下面是我使用的直流电机图:

由于STM32单片机不能直接的输出较大电压和电流,所以得借助驱动模块来控制电机,我们使用的L298N电机驱动模块来驱动电机,当然也可以使用TB6612,L293D,ULN2003等电机驱动模块,他们原理都是一样的,会一个其他的都可以信手拈来。下面是L298N的图:

一个L298N电机驱动模块可以控制两个直流电机或者一个两相步进电机。支持两个电压的供电模式,5V或者12V。由于没有5V,12V的电源,所以我们用了15V的电源进行降压处理后为5V给其供电。使用5V的电压也是因为可以直接给单片机直接供电,可以将单片机与电脑分离开来。如果没有电源的话,也可以直接使用单片机5V电压给电机驱动模块提供电压。降压模块如下图,使用DC-DC模块焊的一个电路板。(其实电源就是12V的只是为了多加一个模块)DC-DC模块用时一定分清正负,要不然电容会炸的。黄色的纽扣扭动可以调节输出电压。

接下来是我驱动直流电机的整体图:

驱动电机的代码如下(我直接用的我们刚做完项目的代码,没有改,只需要使用PB5、PB6就好):

power.h

#ifndef __POWER_H#define __POWER_H #include "sys.h"#define PB5 PBout(5)#define PB6 PBout(6)#define PB7 PBout(7)#define PB8 PBout(8)#define PB9 PBout(9)#define PB10 PBout(10)#define PB11 PBout(11)#define PB12 PBout(12)#define PB13 PBout(13)#define PB14 PBout(14)#define PB15 PBout(15)void POWER_Init(void);void goon(void);void back(void);void right(void);void left(void); #endif

power.c

#include "power.h"void POWER_Init(){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);} void goon(void){ PB5 =1;PB6 =0;}

完了直接在主函数里面调用就好:

int main(void) { delay_init(); POWER_Init();while(1){goon();};}

有什么问题下面留言,一起讨论解决。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。