目录
我想要驱动两个直流电机.
直流电机,说白了,就是那种小马达,小时候玩四驱车时那种没有正负极的马达,转速快,力矩小。
比如

我用它带一个扇叶,就能实现正反转以及通过PWM进行调速,问题在于,这样的一个马达驱动电流竟然达到了400ma,我是主控板(stm32F103ZET6正点原子精英版),在外接12v 1A的电源适配器后,提供的5v,3.3v的电源提供的负载的最大电流也只有1.2A,排除板子本身需要200ma以上,最大提供给负载也只有1A,为这电源我折腾了不少,什么dc电压扩展板,面包电源板等等,它们驱动一个电机还好,两个电机就不行了。
最后我找了我电信的同学,成功找到答案,用可充电锂电池组提供持久的放电,才真正意义上解决电源源头的问题。。
本次用的是ST的L298N,就是淘宝是能找到的那种,双路直流电机驱动板

怎么用呢?它有个12v Power端口的电源输入口,实际上输入7-12v都可以,如果是在这一端输入电压,同时如果你想有一个让这个L298N提供5V电源以向外输出, 则把上图的5Venable 短接。
基于网上对这资料很杂且乱,我只能实践记录操作以验证真理。
在不拔使能A的调线帽时,测试s正转 2s截止 2s反转,为了简单测试,我用arduino来测试。
-
- void setup(){
-
- Serial.begin(115200);
- pinMode(12,OUTPUT);
- pinMode(14,OUTPUT);
- }
-
-
- void loop(){
-
- digitalWrite(12,HIGH);
- digitalWrite(14,LOW); //正转
- delay(2000);
- digitalWrite(12,LOW); //制动
- digitalWrite(14,LOW);
- delay(2000);
- digitalWrite(12,LOW);
- digitalWrite(14,HIGH); //反转
- delay(2000);
-
-
-
-
-
- }
现象正确。
在不拔控制端 也就是上图中的A ENABLE的跳线帽的情况下实现PWM去控制。
测试一个方向上转速不断增大
-
- int A=12;
- int B=14;
- void setup(){
-
- Serial.begin(115200);
- pinMode(A,OUTPUT);
- pinMode(B,OUTPUT);
- }
-
-
- void loop(){
-
-
- PWM_Run_x(A,50);
- PWM_Run_x(B,0);
- delay(2000);
-
- PWM_Run_x(A,75);
- PWM_Run_x(B,0);
- delay(2000);
-
- PWM_Run_x(A,95);
- PWM_Run_x(B,0);
- delay(2000);
-
-
- PWM_Run_x(A,125);
- PWM_Run_x(B,0);
- delay(2000);
-
- PWM_Run_x(A,165);
- PWM_Run_x(B,0);
- delay(2000);
-
- PWM_Run_x(A,205);
- PWM_Run_x(B,0);
- delay(2000);
-
- PWM_Run_x(A,0);
- PWM_Run_x(B,0);
- delay(2000);
-
-
-
-
-
- }
-
- void PWM_Run_x(int pin,int val){
-
- analogWrite(pin, val);
- }
现象正确
然后拔了A ENABLE ,则直接就不转了。这与网上的资料是有出入。
比如以下查到的资料。
今天是中秋节,各位中秋快乐。。。。