Arduino Uno DC 电机无法通过简单的测试工作.无法让Arduino旋转电机



我在arduino uno r3上使用V2.3电机。除了我过去一周读到的内容之外,我对 ardunio 几乎没有任何了解。我一直在尝试简单地使用以下代码转动电机,但它不起作用。我将 arduino 插入我的计算机,并将 12v 连接到蓝色电源盒。我正在使用这个电机 https://www.servocity.com/html/900_rpm_micro_gearmotorblocks.html#.VyELIFaDFBc我无法让 dang 的东西旋转,如果我将其直接连接到 5v/grnd,电机工作正常,但当它在 M1 连接中时则无法正常工作接线:如果此链接不起作用,https://i.groupme.com/747x1328.png.54a01e30433241d4a99905bd0e8ede2b 让我知道这是接线 https://i.stack.imgur.com/JmiUP.jpg 的Imgur链接 #include

AF_DCMotor motor(1);
void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");
  // turn on motor
  motor.setSpeed(200);
  motor.run(RELEASE);
}
void loop() {
  uint8_t i;
  Serial.print("tick");
  motor.run(FORWARD);
  for (i=0; i<255; i++) {
    motor.setSpeed(i);  
    delay(10);
 }
  for (i=255; i!=0; i--) {
    motor.setSpeed(i);  
    delay(10);
 }
  Serial.print("tock");
  motor.run(BACKWARD);
  for (i=0; i<255; i++) {
    motor.setSpeed(i);  
    delay(10);
 }
  for (i=255; i!=0; i--) {
    motor.setSpeed(i);  
    delay(10);
 }

  Serial.print("tech");
  motor.run(RELEASE);
  delay(1000);
}

我不是当前特定盾牌及其库的专家。但是,当我第一次查看您的草图和电机连接图像时,我看到的是,您正在尝试使用命令以一定的速度运行直流电机,这似乎是针对伺服或步进电机的。

您应该知道,如果您根据直流电机的电流和电压进行速度计算,或者当速度传感器位于电机的轴上时,则可以以某种速度运行直流电机。这个电机没有传感器(我肯定知道,因为在我的项目中使用相同的传感器),我认为屏蔽无法计算速度。您只能打开和关闭它,并可能改变其方向。

因此,首先,您应该查看(并使用)此类函数的库。

寻找你称之为"AF_DCMotor"的函数,我看到你是如何困惑的。还有这个产品,是另一种果实马达套。

但它实际上是一个非常不同的电机驱动器。两个屏蔽都有一个功率级,该功率级接收脉冲并放大它们以驱动电机。V2显然有一个产生这些脉冲的芯片,你发送串行数据以使用I2C命令它。V1只是直接从Arduino获得这些脉冲。

对于您的V2电机护罩,请尝试Adafruit提供的指南。

这是链接 - 阿达果电机谢尔德V2直流电机控制

这是代码

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
AFMS.begin();
myMotor->setSpeed(100); 
myMotor->run(FORWARD);

它在介绍页面上提到了 I2C 的使用

我们没有使用锁存器和Arduino的PWM引脚,而是板载了一个完全专用的PWM驱动器芯片。该芯片处理I2C上的所有电机和速度控制

这就是为什么它包括Wire库。您可以编写自己的代码来运行它,但它必须使用 I2C 向他们正在使用的 PWM 驱动程序芯片发送命令。

最新更新