DC Geared Motor doesn't work

Hello

I'm working on the Drawing Robot from the Engineering Kit but one of my DC geared motors doesn't work. When I test the motors the right one works perfectly fine, but the left one gives a buzzing sound but doesn't rotate. I followed every step and I think I placed everything correct(See picture in attachments). I have also put the wires of the left motor in the holes on the right and it gives the same buzzing noise. So I suspect there is something wrong with the motor itself. Could something be jammed or blocked inside the motor or what else could be the problem?

This is the test code (It's an example from Arduino itself so there shouldn't be anything wrong with it):

#include <MKRMotorCarrier.h>
#define INTERRUPT_PIN 6

//Variable to store the battery voltage
static int batteryVoltage;

//Variable to change the motor speed and direction
static int duty = 0;

void setup() 
{
  //Serial port initialization
  Serial.begin(115200);
  while (!Serial);

  //Establishing the communication with the motor shield
  if (controller.begin()) 
    {
      Serial.print("MKR Motor Shield connected, firmware version ");
      Serial.println(controller.getFWVersion());
    } 
  else 
    {
      Serial.println("Couldn't connect! Is the red led blinking? You may need to update the firmware with FWUpdater sketch");
      while (1);
    }

  // Reboot the motor controller; brings every value back to default
  Serial.println("reboot");
  controller.reboot();
  delay(500);
  
  //Take the battery status
  float batteryVoltage = (float)battery.getConverted();
  Serial.print("Battery voltage: ");
  Serial.print(batteryVoltage);
  Serial.print("V, Raw ");
  Serial.println(battery.getRaw());
}


void loop() {
  
  //Take the battery status
  float batteryVoltage = (float)battery.getConverted();
  
  //Reset to the default values if the battery level is lower than 11V
  if (batteryVoltage < 11) 
  {
    Serial.println(" ");
    Serial.println("WARNING: LOW BATTERY");
    Serial.println("ALL SYSTEMS DOWN");
    M1.setDuty(0);
    M2.setDuty(0);
    M3.setDuty(0);
    M4.setDuty(0);
    while (batteryVoltage < 11) 
    {
      batteryVoltage = (float)battery.getConverted();
    }
  }
  else
  {
    //Motor test
    for (duty=-100; duty<100; duty+=5)
    {
      Serial.print("Motor Duty: ");
      Serial.println(duty);
      M1.setDuty(duty);
      M2.setDuty(duty);
      M3.setDuty(duty);
      M4.setDuty(duty);
      delay(50);
    }
    for (duty=100; duty>-100; duty-=5)
    {
      Serial.print("Motor Duty: ");
      Serial.println(duty);
      M1.setDuty(duty);
      M2.setDuty(duty);
      M3.setDuty(duty);
      M4.setDuty(duty);
      delay(50);
    }
    
  //Keep active the communication MKR1000 & MKRMotorCarrier
  //Ping the samd11
  controller.ping();
  //wait
  delay(50);
  }
}

Thanks for helping

Most likely the GEARS are jammed. Visual inspection would be the first step.

Paul

Swap the two motors, check the problem moves with the motor and itsn't a driver issue.

These tiny open-frame gearboxes will jam up with crud and dust, you need to enclose them for any
hope of long-term reliability.

If it is a gearbox issue, flush it out with solvent, compressed-air duster to clear the grot, check
it spins, then oil sparingly with light machine oil (not grease), and enclose it with tape or a housing to keep
dust and dirt out. Using grease will significantly increase the friction on a small mechanism like this.

The disc magnet on the encoder end of the motor also needs enclosing or it'll attract metal dust and parts.

1 Like

I used compressed air to clean the motor and it works again.

Thanks for your answers!

1 Like