l***7 发帖数: 960 | 1 想用一个控制器来控制一个12V 1.5A的直流马达。功能很简单,就是走一定时间,然后
停一定时间。请问除了microcontroller跟电池还需要什么?有什么控制器推荐么?
另外我买了个Arduino Uno R3,直接把马达接PWM好像不行?
谢谢 |
b********E 发帖数: 121 | 2 MCU的 IO的驱动电流,typical value less than 50mA.所以不能直接驱动电机, 你如
果只需要让电机单向旋转,你需要用一个能通过大电流的Mosfet或者三极管扩流,如果
需要正反转操作,需要用Mosfet搭H bridge 或者使用现成儿的H bridge芯片, 例如
L298
【在 l***7 的大作中提到】 : 想用一个控制器来控制一个12V 1.5A的直流马达。功能很简单,就是走一定时间,然后 : 停一定时间。请问除了microcontroller跟电池还需要什么?有什么控制器推荐么? : 另外我买了个Arduino Uno R3,直接把马达接PWM好像不行? : 谢谢
|
b********E 发帖数: 121 | 3 给你个参考吧,这个东西是我高一时候做的,年代久远,但保证能用。 这是H bridge
(L298方案)
控制电机正反转的电路,很稳定,那个robot现在还能用呢
https://sites.google.com/site/urerobots/h-bridgesolution
这个也是我做的,继电器方案:
http://csengineering.blogspot.com/2008/06/extreme-crash-avoidin
电路图哪个地方看不懂,可以私信我,这里回复我怕看不见。
【在 l***7 的大作中提到】 : 想用一个控制器来控制一个12V 1.5A的直流马达。功能很简单,就是走一定时间,然后 : 停一定时间。请问除了microcontroller跟电池还需要什么?有什么控制器推荐么? : 另外我买了个Arduino Uno R3,直接把马达接PWM好像不行? : 谢谢
|
w***g 发帖数: 5958 | 4 在ebay上找一个L298N的shield, 然后买或者自己山寨.
【在 l***7 的大作中提到】 : 想用一个控制器来控制一个12V 1.5A的直流马达。功能很简单,就是走一定时间,然后 : 停一定时间。请问除了microcontroller跟电池还需要什么?有什么控制器推荐么? : 另外我买了个Arduino Uno R3,直接把马达接PWM好像不行? : 谢谢
|
l***7 发帖数: 960 | 5 我自己买了一个SainSmart L293D Motor Drive Shield,但是接马达的地方电压基本是
是0。
Motor shield的作用就是把电流放大跟变方向么?
bridge
【在 b********E 的大作中提到】 : 给你个参考吧,这个东西是我高一时候做的,年代久远,但保证能用。 这是H bridge : (L298方案) : 控制电机正反转的电路,很稳定,那个robot现在还能用呢 : https://sites.google.com/site/urerobots/h-bridgesolution : 这个也是我做的,继电器方案: : http://csengineering.blogspot.com/2008/06/extreme-crash-avoidin : 电路图哪个地方看不懂,可以私信我,这里回复我怕看不见。
|
l***7 发帖数: 960 | 6 这个是自己焊的么?
bridge
【在 b********E 的大作中提到】 : 给你个参考吧,这个东西是我高一时候做的,年代久远,但保证能用。 这是H bridge : (L298方案) : 控制电机正反转的电路,很稳定,那个robot现在还能用呢 : https://sites.google.com/site/urerobots/h-bridgesolution : 这个也是我做的,继电器方案: : http://csengineering.blogspot.com/2008/06/extreme-crash-avoidin : 电路图哪个地方看不懂,可以私信我,这里回复我怕看不见。
|
l***7 发帖数: 960 | 7 这是我的motor shield的图
【在 l***7 的大作中提到】 : 这个是自己焊的么? : : bridge
|
b********E 发帖数: 121 | 8 你给这个shield 送上控制信号了么? L298在控制IO都是低电平的时候,马达是不会转
的,所以没电压。
你要是DC电机,你需要用298上的2个IO设置转动方向,另一个IO是 Enable. 也就是你
需要配置3个IO上的控制电平,才能让马达转呢
你买的电路板,电路图应该是这个:
你这个板上有两块298,能控制4个直流电机。我们以控制一个直流电机为例, M1A,
M1B, PWM2A应该是用来控制接在 1Y和2Y之间的马达的。
我们设置M1A和M1B中任意一个为高电平,然后设置PWM2A为高电平,马达就应该转了。
Ps.我没用过Arduino,不过这个程序例子你可能能用:
http://www.ladyada.net/make/mshield/use.html
【在 l***7 的大作中提到】 : 我自己买了一个SainSmart L293D Motor Drive Shield,但是接马达的地方电压基本是 : 是0。 : Motor shield的作用就是把电流放大跟变方向么? : : bridge
|
b********E 发帖数: 121 | 9 嗯,这个是自己焊的。
【在 l***7 的大作中提到】 : 这个是自己焊的么? : : bridge
|
l***7 发帖数: 960 | 10 我觉得是有的,这个是他们的例子code,我upload了。
AFMotor.h这个文件也在指定的路径里
#include
AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
motor.setSpeed(200); // set the speed to 200/255
}
void loop() {
Serial.print("tick");
motor.run(FORWARD); // turn it on going forward
delay(10000);
}
【在 b********E 的大作中提到】 : 你给这个shield 送上控制信号了么? L298在控制IO都是低电平的时候,马达是不会转 : 的,所以没电压。 : 你要是DC电机,你需要用298上的2个IO设置转动方向,另一个IO是 Enable. 也就是你 : 需要配置3个IO上的控制电平,才能让马达转呢 : 你买的电路板,电路图应该是这个: : 你这个板上有两块298,能控制4个直流电机。我们以控制一个直流电机为例, M1A, : M1B, PWM2A应该是用来控制接在 1Y和2Y之间的马达的。 : 我们设置M1A和M1B中任意一个为高电平,然后设置PWM2A为高电平,马达就应该转了。 : Ps.我没用过Arduino,不过这个程序例子你可能能用: : http://www.ladyada.net/make/mshield/use.html
|
|
|
b********E 发帖数: 121 | 11 你串口上有那些println的输出么?
【在 l***7 的大作中提到】 : 我觉得是有的,这个是他们的例子code,我upload了。 : AFMotor.h这个文件也在指定的路径里 : #include : AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm : void setup() { : Serial.begin(9600); // set up Serial library at 9600 bps : Serial.println("Motor test!"); : : motor.setSpeed(200); // set the speed to 200/255 : }
|
b********E 发帖数: 121 | 12 If you would like to have a single DC power supply for the Arduino and
motors, simply plug it into the DC jack on the Arduino or the 2-pin PWR_EXT
block on the shield. Place the power jumper on the motor shield.
JP1上有条线帽么?
【在 l***7 的大作中提到】 : 我觉得是有的,这个是他们的例子code,我upload了。 : AFMotor.h这个文件也在指定的路径里 : #include : AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm : void setup() { : Serial.begin(9600); // set up Serial library at 9600 bps : Serial.println("Motor test!"); : : motor.setSpeed(200); // set the speed to 200/255 : }
|
l***7 发帖数: 960 | 13 非常感谢热心帮助!
我用的是那个网站上的code,连线也是一致的。
motor.run(FORWARD)这些函数应该是通过的AFMotor.h这个library来设置M1A~B跟PWM2A
这些来控制前进后退的?
【在 b********E 的大作中提到】 : 你给这个shield 送上控制信号了么? L298在控制IO都是低电平的时候,马达是不会转 : 的,所以没电压。 : 你要是DC电机,你需要用298上的2个IO设置转动方向,另一个IO是 Enable. 也就是你 : 需要配置3个IO上的控制电平,才能让马达转呢 : 你买的电路板,电路图应该是这个: : 你这个板上有两块298,能控制4个直流电机。我们以控制一个直流电机为例, M1A, : M1B, PWM2A应该是用来控制接在 1Y和2Y之间的马达的。 : 我们设置M1A和M1B中任意一个为高电平,然后设置PWM2A为高电平,马达就应该转了。 : Ps.我没用过Arduino,不过这个程序例子你可能能用: : http://www.ladyada.net/make/mshield/use.html
|
l***7 发帖数: 960 | 14 没有找到有JP1啊,我把12V电源连UNO板上,EXT_PWR的电压大概跟输入电压是一致的。
另外Uno板控制器的图
PWM2A
【在 l***7 的大作中提到】 : 非常感谢热心帮助! : 我用的是那个网站上的code,连线也是一致的。 : motor.run(FORWARD)这些函数应该是通过的AFMotor.h这个library来设置M1A~B跟PWM2A : 这些来控制前进后退的?
|
b********E 发帖数: 121 | 15 我没用过Arduino, 他这个代码太高度抽象了,看不到硬件细节。 不过根据原理图,这
东西不是直接设置298的M1A/B, PWM2A的,他通过了一个74HCT595,这东西是个串并转换
芯片,把串行信号通过shift reg变成并行信号来节省IO. 也就是说Arduino实际上输出
到Motor shield的是一些串行信号,这些信号通过74HCT595变成了能控制M1A/B, PWM2A
的并行信号。 如果你有 Logic analyzer, 或者 oscilloscope, 你可以看看 原理图
上 http://www.ladyada.net/images/mshield/mshieldv1-schem.png
595的 Pin 11, 12, 14上有没有串行数据, 特别是Pin 11和 14
PWM2A
【在 l***7 的大作中提到】 : 非常感谢热心帮助! : 我用的是那个网站上的code,连线也是一致的。 : motor.run(FORWARD)这些函数应该是通过的AFMotor.h这个library来设置M1A~B跟PWM2A : 这些来控制前进后退的?
|
l***7 发帖数: 960 | 16 我没有示波器什么的,只有一个万用表,是出于自己爱好想做一个电控滑轨,可以走走停
停,变向.
我看了下那个AFMotor.h,我的c语言基础实在理解不了.我不太明白为什么挺简单的功能
还要用一个library来实现.直接控制控制器不行么.
我想实在不行就换一个控制器跟motor shield算了,有什么推荐么?
我看到一个Arduino Motor Shield R3,例程看起来简单一些
/*************************************************************
Motor Shield 1-Channel DC Motor Demo
by Randy Sarafan
For more information see:
http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/
*************************************************************/
void setup() {
//Setup Channel A
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel A pin
}
void loop(){
//forward @ full speed
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 255); //Spins the motor on Channel A at full speed
delay(3000);
digitalWrite(9, HIGH); //Eengage the Brake for Channel A
delay(1000);
//backward @ half speed
digitalWrite(12, LOW); //Establishes backward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 123); //Spins the motor on Channel A at half speed
delay(3000);
digitalWrite(9, HIGH); //Eengage the Brake for Channel A
delay(1000);
} |
b********E 发帖数: 121 | 17 随便用一个原始IO的 L298 模块也行吧,这样你直接设置IO的电平就行了
比如这个 http://www.ebay.com/itm/Dual-H-Bridge-DC-Stepper-Motor-Drive-Controller-Board-Module-L298N-for-arduino-/251080674810?pt=LH_DefaultDomain_0&hash=item3a75930dfa
【在 l***7 的大作中提到】 : 我没有示波器什么的,只有一个万用表,是出于自己爱好想做一个电控滑轨,可以走走停 : 停,变向. : 我看了下那个AFMotor.h,我的c语言基础实在理解不了.我不太明白为什么挺简单的功能 : 还要用一个library来实现.直接控制控制器不行么. : 我想实在不行就换一个控制器跟motor shield算了,有什么推荐么? : 我看到一个Arduino Motor Shield R3,例程看起来简单一些 : /************************************************************* : Motor Shield 1-Channel DC Motor Demo : by Randy Sarafan : For more information see:
|
a****l 发帖数: 8211 | 18 你还要怎么简单?
【在 l***7 的大作中提到】 : 我没有示波器什么的,只有一个万用表,是出于自己爱好想做一个电控滑轨,可以走走停 : 停,变向. : 我看了下那个AFMotor.h,我的c语言基础实在理解不了.我不太明白为什么挺简单的功能 : 还要用一个library来实现.直接控制控制器不行么. : 我想实在不行就换一个控制器跟motor shield算了,有什么推荐么? : 我看到一个Arduino Motor Shield R3,例程看起来简单一些 : /************************************************************* : Motor Shield 1-Channel DC Motor Demo : by Randy Sarafan : For more information see:
|
l***7 发帖数: 960 | |