快捷搜索:  汽车  科技

arduino pwm控制无刷电机:使用arduino控制L298N驱动模块驱动直流电机

arduino pwm控制无刷电机:使用arduino控制L298N驱动模块驱动直流电机//测试电机,让两个电机调速 int input1 = 2; // 定义uno的pin 2 向 input1 输出 int input2 = 4; // 定义uno的pin 4 向 input2 输出 int input3 =12; // 定义uno的pin 7 向 input3 输出 int input4 =13; // 定义uno的pin 8 向 input4 输出 //PWM int ENA1=5; //电机A使能PWM输出,需要接在Arduino上有~标识的IO口,才有PWM int ENB1=6; //电机A使能PWM输出 void setup() { Serial.begin (9600); //初始化各IO 模式为OUTPUT 输出模式 pinMode(input1 OUTPUT); pinMode(input2 OUTPUT); pinMode(input3 O

普通的玩家用这个模块主要是来做小车。通过单片机PWM和电平高低,来控制电机的转向和转速。

arduino pwm控制无刷电机:使用arduino控制L298N驱动模块驱动直流电机(1)

输出A 输出B 分别接两个直流电机。

12V供电 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。

5V供电 (引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V)同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。

ENA ENB通道A使能,通道B使能,当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到arduino上的模拟输入输出接口。

IN1 IN2 IN3 IN4逻辑输出口,其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。

arduino pwm控制无刷电机:使用arduino控制L298N驱动模块驱动直流电机(2)

//测试电机,让两个电机直走 int input1 = 2; // 定义uno的pin 2 向 input1 输出 int input2 = 4; // 定义uno的pin 4 向 input2 输出 int input3 =7; // 定义uno的pin 7 向 input3 输出 int input4 =8; // 定义uno的pin 8 向 input4 输出 void setup() { Serial.begin (9600); //初始化各IO 模式为OUTPUT 输出模式 pinMode(input1 OUTPUT); pinMode(input2 OUTPUT); pinMode(input3 OUTPUT); pinMode(input4 OUTPUT); } void loop() { //forward 前进 digitalWrite(input1 HIGH); //给高电平 digitalWrite(input2 LOW); //给低电平 digitalWrite(input3 HIGH); //给高电平 digitalWrite(input4 LOW); //给低电平 delay(3000); //延时1秒 } //通过改变input电平,可以实现前进后退,当2个或多个轮子配合时,就可以实现转弯。

再来一段调速的代码

//测试电机,让两个电机调速 int input1 = 2; // 定义uno的pin 2 向 input1 输出 int input2 = 4; // 定义uno的pin 4 向 input2 输出 int input3 =12; // 定义uno的pin 7 向 input3 输出 int input4 =13; // 定义uno的pin 8 向 input4 输出 //PWM int ENA1=5; //电机A使能PWM输出,需要接在Arduino上有~标识的IO口,才有PWM int ENB1=6; //电机A使能PWM输出 void setup() { Serial.begin (9600); //初始化各IO 模式为OUTPUT 输出模式 pinMode(input1 OUTPUT); pinMode(input2 OUTPUT); pinMode(input3 OUTPUT); pinMode(input4 OUTPUT); } void loop() { analogWrite(ENA1 PWM);//通过改变PWM的数值,实现调速功能。范围从70-255. //低于50,电机发热、异响,不转。 analogWrite(ENB1 PWM); digitalWrite(input1 HIGH); digitalWrite(input2 LOW); digitalWrite(input3 HIGH); digitalWrite(input4 LOW); delay(50); for(int PWM=100;PWM<255;PWM ) { Serial.println(PWM); analogWrite(ENA1 PWM); analogWrite(ENB1 PWM); digitalWrite(input1 HIGH); digitalWrite(input2 LOW); digitalWrite(input3 HIGH); digitalWrite(input4 LOW); delay(50); } }

猜您喜欢: