arduino电机控制(Arduino实例十七)
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 7
void 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 电位器对电机进行调速时,端口信息输出
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com