hick 发表于 2013-9-9 11:45:04

重开帖发下我的双电机+电机驱动板程序和接线图(ps了张图)

本帖最后由 hick 于 2013-9-9 11:49 编辑

首先是我 ps 的接线图





然后是L298N双H桥直流电机驱动板,跟提供的手册上的略有差异。主要是跟 ENA ENB IN1-IN4 并列的还有一个 5V+ 和 GND 插针。 我理解这个是驱动板的 5V 输入口?还是说下图右下的那个 5V 跳线才是驱动板 5V 输入?







下面这张是跟手册上不一样的局部放大







昨晚这套还是能跑起来了,就是不能通过 ENA ENB 控制速度。 也另外发了个求助帖,本贴也继续求教咋回事:







另附手册上的程序:

// motor A
int dir1PinA = 2;
int dir2PinA = 3;
int speedPinA = 9;

// motor B
int dir1PinB = 4;
int dir2PinB = 5;
int speedPinB = 10;

unsigned long time;
int speed;
int dir;

void setup() {
pinMode(dir1PinA, OUTPUT);
pinMode(dir2PinA, OUTPUT);
pinMode(speedPinA, OUTPUT);
pinMode(dir1PinB, OUTPUT);
pinMode(dir2PinB, OUTPUT);
pinMode(speedPinB, OUTPUT);

time = millis();
speed = 0;
dir = 1;
}

void loop() {
analogWrite(speedPinA, speed);
analogWrite(speedPinB, 255 - speed);
// set direction
if (1 == dir) {
    digitalWrite(dir1PinA, LOW);
    digitalWrite(dir2PinA, HIGH);
    digitalWrite(dir1PinB, HIGH);
    digitalWrite(dir2PinB, LOW);
} else {
    digitalWrite(dir1PinA, HIGH);
    digitalWrite(dir2PinA, LOW);
    digitalWrite(dir1PinB, LOW);
    digitalWrite(dir2PinB, HIGH);
}
if (millis() - time > 5000){
    time = millis();
    speed += 20;
    if (speed > 255) {
      speed = 0;
    }
    if (1 == dir) {
      dir = 0;
    } else {
      dir =1;
    }
}
}

hick 发表于 2013-9-11 14:13:40

wyd1520 发表于 2013-9-11 14:05 static/image/common/back.gif
这是电压不够造成的,speed要使能让电机转动,值最少在150以上才行,低于这个值电压就太低了就走不动。
...

恩 , 那个速度值不通场景下不通。

实际经验感觉跟电压可能也不是百分百相关,后来我甚至换了新买的移动电源,实测电压可能都要低于之前使用的俩移动电源,但是驱动起来就是顺畅。

Fortware 发表于 2013-9-9 13:51:38

图片挺清晰的,

cuit510 发表于 2013-9-9 16:50:05

Fortware 发表于 2013-9-9 13:51 static/image/common/back.gif
图片挺清晰的,

time = millis();这个函数是在哪里定义的呢,可不可以给我源代码呢

Fortware 发表于 2013-9-9 20:06:26

本帖最后由 Fortware 于 2013-9-9 20:28 编辑

time = millis();这个函数是在哪里定义的呢,可不可以给我源代码呢

F:\arduino-1.0.4\arduino-1.0.4\reference\Millis.html

tom 发表于 2013-9-9 23:47:08

按照这个程序,假如程序调了速,但人无法识别出来。

不如直接确定speed=50 或speed=100
对比观察一下是否控制电机的转速。

另外,从图片观察看使能端的跳线冒连接上了,似乎意味着使能值为最大值。
即使程序中设定的使能端的值也不起作用。

hick 发表于 2013-9-10 11:10:58

tom 发表于 2013-9-9 23:47 static/image/common/back.gif
按照这个程序,假如程序调了速,但人无法识别出来。

不如直接确定speed=50 或speed=100


多谢, 经过单电机反复调试,基本确认应该是电压不够,电流太小,不通的 speed 控制值造成很奇怪的现象。
换了个好点儿的电源,最大值255的时候能 ok 了。低于一定值需要手工转动辅助启动,否则蜂鸣。

穿越火线大月 发表于 2013-9-11 12:58:44

新手,学习了

wyd1520 发表于 2013-9-11 14:05:43

hick 发表于 2013-9-10 11:10 static/image/common/back.gif
多谢, 经过单电机反复调试,基本确认应该是电压不够,电流太小,不通的 speed 控制值造成很奇怪的现象。 ...

这是电压不够造成的,speed要使能让电机转动,值最少在150以上才行,低于这个值电压就太低了就走不动。
你可以试试,从110-255就知了 150 180 200 220 255 是有区别

一缕阳光 发表于 2013-9-12 17:43:18

开始初始化时给个255启动,1秒之后再调速

hick 发表于 2013-9-12 17:50:16

一缕阳光 发表于 2013-9-12 17:43 static/image/common/back.gif
开始初始化时给个255启动,1秒之后再调速

恩 现在不好试,估计可能有些效果。我试过统一的速度值,先操作单电机,一定能够延时以后再操作另外一个电机效果就好很多; 同时操作可能就启动不了。

greeham 发表于 2013-9-13 22:08:26

本帖最后由 greeham 于 2013-9-13 22:09 编辑

5v是输出吧

hick 发表于 2013-9-13 23:18:47

greeham 发表于 2013-9-13 22:08 static/image/common/back.gif
5v是输出吧

应该有一个是输入。 板子上三个 5V 标记的,我只确认一个是电机输入的, 其他俩不大确认。

multirotor2013 发表于 2013-11-23 19:18:19

:lolbbbbbbbbb

piaozhiling 发表于 2014-2-3 10:09:04

没看明白最后你们是解决了这个调速问题,还是没有解决这个问题啊
页: [1] 2
查看完整版本: 重开帖发下我的双电机+电机驱动板程序和接线图(ps了张图)