最简单直流电机调速(Arduino 实例(十七)用Arduino和L298N对直流电机调速)

Posted

篇首语:水滴集多成大海,读书集多成学问。本文由小常识网(cha138.com)小编为大家整理,主要介绍了最简单直流电机调速(Arduino 实例(十七)用Arduino和L298N对直流电机调速)相关的知识,希望对你有一定的参考价值。

最简单直流电机调速(Arduino 实例(十七)用Arduino和L298N对直流电机调速)

1 电路接线图

说明:L298N ENA位置的跳线帽需要摘除,ENA接Arduino UNO 9端口

我接电路时,用9V电源正极接入Arduino UNO Vin接口,用串口连接时,电机不转(电压不够)。 另外用电池接入时,串口供电会自动断开,所以调试时,不用将串口断开,这样调试时,可以观察串口输出信息。

2 实物接线图

3 程序

此程序包含了3个函数,1个是电机正反转,1个是自动电机调速,1个是通过电位器对电机进行调速,如下程序,将2个函数注释掉了,这样调试时,可以就一个函数进行分析和观察

# define ENA 9# define IN1 8# define IN2 7void setup()   pinMode(ENA,OUTPUT);  pinMode(IN1,OUTPUT);  pinMode(IN2,OUTPUT);  Serial.begin(9600);void Pos_NegRotation()  analogWrite(ENA,255);//占空比80/255,可以是0到255之前的数  digitalWrite(IN1,HIGH);  digitalWrite(IN2,LOW);  delay(1000);  digitalWrite(IN1,HIGH);  digitalWrite(IN2,HIGH);  delay(1000);  digitalWrite(IN1,LOW);  digitalWrite(IN2,HIGH);  delay(1000);  digitalWrite(IN1,LOW);  digitalWrite(IN2,LOW);  delay(1000);  void PWMcontrol()int i;digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);  for(i=0;i<=255;i++)       Serial.print("Value_i=");     Serial.println(i);     analogWrite(ENA,i);     delay(20);      digitalWrite(IN1,HIGH);  digitalWrite(IN2,HIGH);   delay(1000);  void Potentiometer()int pValue=analogRead(A0);int PWMout=map(pValue,0,1023,0,255);Serial.print("PWMout=");Serial.println(PWMout);analogWrite(ENA,PWMout);digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);delay(1000);  void loop() //Pos_NegRotation();//PWMcontrol();Potentiometer();

4 电位器对电机进行调速时,端口信息输出

相关参考