本帖最后由 葱拌豆腐 于 2013-2-24 23:11 编辑
按照惯例先贴代码: - int in1=13;
- int in2=12;
- int in3=11;
- int in4=10;
- //上面定义了板上的4个控制端,12一组,34一组
- int speedPinA=6;
- int speedPinB=5;
- //上面定义了PWM引脚
- void setup()
- {
- pinMode(in1,OUTPUT);
- pinMode(in2,OUTPUT);
- pinMode(in3,OUTPUT);
- pinMode(in4,OUTPUT);
- //下面程序开始时让控制端都为高电平,电机保持不动。
- digitalWrite(in1,HIGH);
- digitalWrite(in2,HIGH);
- digitalWrite(in3,HIGH);
- digitalWrite(in4,HIGH);
- }
- void loop()
- {
- //电机正转
- _mRight(in1,in2);
- _mRight(in3,in4);
- //读入电位器的值,然后通过PWM输出,控制电机转速
- int n=analogRead(A0)/4;
- _mSetSpeed(speedPinA,n);
- _mSetSpeed(speedPinB,n);
- }
- void _mRight(int pin1,int pin2)//电机右转,电机到底是右转还是左转取决于电机端的接线和控制脚的顺序
- {
- digitalWrite(pin1,HIGH);
- digitalWrite(pin2,LOW);
- }
- void _mLeft(int pin1,int pin2)//同上
- {
- digitalWrite(pin1,LOW);
- digitalWrite(pin2,HIGH);
- }
- void _mStop(int pin1,int pin2)//紧急制动,实际就是将电机两个端短接了
- {
- digitalWrite(pin1,HIGH);
- digitalWrite(pin2,HIGH);
- }
- void _mSetSpeed(int pinPWM,int SpeedValue)//控制速度,实际上就是断断续续的控制298N的使能端,手抖的厉害的可以用个按钮自己尝试一下,估计也能实现对电机速度的控制,O(∩_∩)O~
- {
- analogWrite(pinPWM,SpeedValue);
- }
复制代码
下面是L298N的系统结构图。
大家对照结构图很容易就能写出电机的控制程序。
最后说一下购买的板子和接线的情况:
按照惯例,板子是淘宝的,买的散件,用了近一个小时焊完,焊接的时候由矮到高,看好器件的引脚编号和极性,否则拆焊就麻烦多多(想连续拆焊的TX除外),说一下俺觉得要注意的几个器件吧,一个是光耦,根据原点确定好引脚1,查到插座上;再就是阻排,别插反了,最好找个万用表测一下,找出公共端。
接线的问题主要是控制端的地需不需要和主控板的地连接,我买的板子上有一个5伏的跳线,短接后可以由L298N上提供给控制板一路5V的电源,拔掉跳线就意味着控制板和L298N独立供电,我测试时是控制板独立供电,我将Arduino板上的5V的正负都接到L298N的逻辑电源引脚上,经实践证明好用。
下面是我买的板子的电路图:
最后是做实验的现场照片,O(∩_∩)O~
|