



四、说明
L298N有两个供电,一个是逻辑控制部分的5伏供电,一个是电机的供电,好像能到46伏,实物图中标注的12伏是给电机供电的,所以不接的话,电机没电,不转。板上有一个5伏稳压管,如果板上5伏使能有效的话,L298N的逻辑部分供电就从这个稳压管获得,这样就不用外接5伏,此时还可以将得到的5v稳压跟别的模块供电。如果外接5伏的话,板上5伏使能就要断开无效了。
稳压管的输入和输出有个压差,如果给电机的供电太低的话(比方说只有5v),通过压差后可能会降低太多,那么逻辑控制部分所要求的5v电压可能就达不到了,此时需要将板上5伏使能断开,然后外接5v的电源来给逻辑控制部分供电。
五、arduino测试程序
//motor A
int IN1 = 1; // IN1 connected to pin 1
int IN2 = 2;
int ENA = 3;
unsigned long time = 1200; //delay time
int value = 128; // the duty cycle
void setup(){
//sets the pin as output
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
//set direction;
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}
void loop(){
analogWrite(ENA, value);
delay(time);
}
六、51单片机测试程序
int main()
{
unsigned char pd=1; //用于控制脉冲信号正反
//配置PORTA所有端口为输出模式
DDRA=0xff;
//PORTA第6 7位置为1 使能电机驱动板B口
PORTA |= (1<<6);
PORTA |= (1<<7);
//控制电机B口 使反转
PORTA |= (1<<4);
PORTA &= ~(1<<5);
//此处只测试电机B口 电机B口输出占空比为50%的脉冲
while(1)
{
delay20ms();
if(pd)
{
pd=0;
PORTA &= ~(1<<6); //B口使能位清0
PORTA &= ~(1<<7); //B口使能位清0
}else
{
pd=1;
PORTA |= (1<<6); //B口使能位置1
PORTA |= (1<<7); //B口使能位置1
}
}
}七、PWM信号
从六的程序中,我才体会到pwm信号的含义。通过控制电机B的使能位来控制给电机电压的时间,通过六中程序的while循环,使接电机B使能位的单片机引脚输出一个(40ms为一个周期)占空比为50%的脉冲,这样的话,通过程序的while循环来控制占空比,就能控制电机的转速。
现在很多的单片机都集成了硬件的pwm模块,只需要通过相应的命令就能够产生pwm脉冲,如五中的digitalWrite( pin,value)函数就能够产生相应的PWM脉冲
八、参考
[4] 单片机中PWM的原理与控制程序
[5] 电机的分类
版权声明:本文为baidu_35679960原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。