Faulty SMC05A

Hi,
I bought on behalf of the Institute I represent a Robot Rover Development kit for Arduino. As the kit is nearing completion I have found the SMC05A motor controller to appear to be defective. I’m getting no LED indication at all despite having supplied the exact power requirements.
Robotshop who I bought the kit from have asked I contact you first. This item is required for my college to use with students from Sept. so I would welcome a prompt resolution,

Sincerely,
John Kelleher
Institute of Technology, Sligo, Ireland
+353 877435311

Hello, John

I am sorry you are having problems with your dual serial motor controller. Could you tell me more about your setup? How do you have everything connected? Could you post pictures and a wiring diagram of your setup?

- Jeremy

Sorry for the delay in replying but it was unavoidable. I’ve attached 3 detailed photos with all the details about this seemingly faulty motor controller and would appreciate your response. I’ve never got it to work and no indication from the LEDs despite providing the required voltage.

Rgds,
John






Have you verified that the motors work when powering them directly? Could you try disconnecting the motors from the serial motor controller and see if the LEDs turn on? Could you also post your code?

- Jeremy

Nope, no movement ever. No LEDs ever showed on. No code used as never saw sign of life.
J

If you tried powering the motors directly and there was no movement, I suspect either your motors are faulty or your battery pack is discharged. When was the last time the batteries were charged or replaced? Could you measure the voltage across your battery?

The LEDs will not come on without any commands being sent to the motor driver via serial communication. The green and red LEDs are motor direction indicators. You would need to send the appropriate commands found in the user’s guide to turn on the LEDs and drive the motors.

- Jeremy

Thanks for help but batteries are fresh and as I said, never had movement - no sign of life.
Rgds,
John Kelleher

Could you tell me more about your motors (picture or model number)? If you tried powering the motors directly and they did not work, it sounds like your motors are broken. Unless you have working motors, there is not much of a point in troubleshooting your serial motor controller.

- Jeremy

Dear Sir/Madam,
I am reopening this conversation. I don’t believe I was previously understood when I reported that the item (SMC05A) was apparently dead-on-arrival. The motors that attach to it are fine but there has never been a sign of life from SMC05A. This debate has been ongoing for a long time and I believe both my student and I have been very patient concerning this item. I would welcome a speedy resolution at this stage so that future business relations are not harmed by the experience,

Rgds,

John Kelleher

Hello, John.

We appreciate that you would like to resolve this issue quickly, but we would also like to troubleshoot with you to make sure there is not something in your setup that could be causing the issue or that could damage future replacements. We try to respond in a timely manner (and in this case did respond to your last post within several hours), but we cannot continue troubleshooting unless you answer our questions.

Could you please tell me more about your motor? You mentioned that your motors are working. Does that mean you tested them by connecting them directly to your supply? Could you post the Arduino sketch that shows how your are sending serial commands to the serial motor controller?

- Jeremy

Jeremy,
I appreciate you need to establish veracity of our claim and ensure that the return is justified. However, I’m sure you’ll understand the frustration in receiving a part which is believed to be faulty and then having to trouble-shoot to prove same. This item was part of a much larger order and a critical aspect of my student’s final project. Partly because I did not have sufficient time to pursue this thread he must now repeat the work over the summer. As such, getting a replacement part is something that I would like to expedite for him as I’m sure you will understand.
I will request the information you require from the student. The motors (2) are those that came with the Robot kit - robotshop.com/eu/en/solarbot … tor-9.html.

Rgds,
John Kelleher
Programme Chair (Software)
IT Sligo.

Jeremy,
I’ve posted a video of the student showing the motors working off around 3V - plus.google.com/+JohnKelleher/p … 7251567088

Rgds,

John Kelleher

Bump.

Could you post the Arduino sketch that shows how you are sending serial commands to the serial motor controller? As I mentioned in a previous post, the LEDs on the board and the motors will not do anything unless you send appropriate serial commands.

- Jeremy

Jeremy,
here is the code he’s used - given the large difference in our time zones (Ireland), I’d appreciate if we can get a prompt response on this, thanks, John Kelleher

int motor_reset = 2; //digital pin 2 assigned to motor reset
void setup() {
pinMode(motor_reset, OUTPUT); Serial.begin(9600); digitalWrite(motor_reset, LOW); delay(50); digitalWrite(motor_reset, HIGH); delay(50);
}
//select the function you want to use but ensure two are not running simultaneously. void loop()
{
//motorforward(); //motorreverse(); //rotateccw(); //motorstop();
}
//subroutine motor forward void motorforward()
{
//left motor
unsigned char buff1[6];
buff1[0]=0x80; buff1[1]=0x00; buff1[2]=0x01; buff1[3]=0x45;
//start byte - do not change
//Device type byte – do not change
//Motor number and direction byte; motor one =00,01 //Motor speed "0 to 128" in hex (ex 100 is 64 in hex)
for(int i=0; i<4; i++) {Serial.print(buff1[i], BYTE);}
//right motor
unsigned char buff2[6];
buff2[0]=0x80;
buff2[1]=0x00;
buff2[2]=0x03; //Motor number and direction byte; motor two=02,03 buff2[3]=0x45;
for(int i=0; i<4; i++) {Serial.print(buff2[i], BYTE);} }
//subroutine reverse at half speed void motorreverse()
{
//left motor
unsigned char buff3[6];
buff3[0]=0x80; buff3[1]=0x00; buff3[2]=0x00; buff3[3]=0x35;
for(int i=0; i<4; i++) {Serial.print(buff3[i], BYTE);}
//right motor
unsigned char buff4[6];
buff4[0]=0x80; buff4[1]=0x00; buff4[2]=0x02; buff4[3]=0x35;
for(int i=0; i<4; i++) {Serial.print(buff4[i], BYTE);} }
//Motor all stop
void motorstop()
{
//left motor
unsigned char buff3[6];
buff3[0]=0x80; buff3[1]=0x00; buff3[2]=0x00; buff3[3]=0x00;
for(int i=0; i<4; i++) {Serial.print(buff3[i], BYTE);}
//right motor
unsigned char buff4[6];
buff4[0]=0x80; buff4[1]=0x00; buff4[2]=0x02; buff4[3]=0x00;
for(int i=0; i<4; i++) {Serial.print(buff4[i], BYTE);} }
void rotateccw()
{
//left motor
unsigned char buff1[6];
buff1[0]=0x80; buff1[1]=0x00; buff1[2]=0x01; buff1[3]=0x40;
for(int i=0; i<4; i++) {Serial.print(buff1[i], BYTE);}
//right motor
unsigned char buff2[6];
buff2[0]=0x80; buff2[1]=0x00; buff2[2]=0x02; buff2[3]=0x40;
for(int i=0; i<4; i++) {Serial.print(buff2[i], BYTE);} }

I tried to reproduce your setup here; however, when I try to compile the code, I get an error.

As of Arduino 1.0, the 'BYTE' keyword is no longer supported.
Please use Serial.write() instead.

Are you using the latest version of the Arduino IDE? If not, which version are you using? Are you able to compile your code and upload it to the Arduino? If you have not yet, could you verify that there is a valid signal coming from the TX pin of your Arduino? Also, if you have a USB to TTL serial adapter, you might try sending the serial commands using our serial transmitter utility to test if the board is working.

- Jeremy

Arduino 1.0.5 is the IDE. Sorry, yes, I did overcome that deprecated keyword and replaced with Serial.write(). Here’s the updated code I am using (still no luck):

int motor_reset = 2; //digital pin 2 assigned to motor reset 

void setup() 

{ 

 pinMode(motor_reset, OUTPUT); 

 Serial.begin(9600); 

 digitalWrite(motor_reset, LOW); 

 delay(50); 

 digitalWrite(motor_reset, HIGH); 

 delay(50); 

} 

//select the function you want to use but ensure two are not running simultaneously. 

void loop() 

{ 

 //motorforward(); 

//motorreverse(); 

//rotateccw(); 

//motorstop(); 

} 

//subroutine motor forward 

void motorforward() 

{ 

//left motor 

unsigned char buff1[6]; 

 buff1[0]=0x80; //start byte - do not change 

 buff1[1]=0x00; //Device type byte – do not change 

 buff1[2]=0x01; //Motor number and direction byte; motor one =00,01 

 buff1[3]=0x45; //Motor speed "0 to 128" in hex (ex 100 is 64 in hex) 

for(int i=0; i<4; i++) {Serial.write(buff1[i]);} 

//right motor 

unsigned char buff2[6]; 

 buff2[0]=0x80; 

 buff2[1]=0x00; 

 buff2[2]=0x03; //Motor number and direction byte; motor two=02,03 

 buff2[3]=0x45; 

for(int i=0; i<4; i++) {Serial.write(buff2[i]);} 

} 

//subroutine reverse at half speed 

void motorreverse() 

{ //left motor 

unsigned char buff3[6]; 

 buff3[0]=0x80; 

 buff3[1]=0x00; 

 buff3[2]=0x00; 

 buff3[3]=0x35; 

for(int i=0; i<4; i++) {Serial.write(buff3[i]);} 

//right motor 

unsigned char buff4[6]; 

 buff4[0]=0x80; 

 buff4[1]=0x00; 

 buff4[2]=0x02; 

 buff4[3]=0x35; 

for(int i=0; i<4; i++) {Serial.write(buff4[i]);} 

} 

//Motor all stop 

void motorstop() 

{ 

//left motor 

unsigned char buff3[6]; 

 buff3[0]=0x80; 

 buff3[1]=0x00; 

 buff3[2]=0x00; 

 buff3[3]=0x00; 

for(int i=0; i<4; i++) {Serial.write(buff3[i]);} 

//right motor 

unsigned char buff4[6]; 

 buff4[0]=0x80; 

 buff4[1]=0x00; 

 buff4[2]=0x02; 

 buff4[3]=0x00; 

for(int i=0; i<4; i++) {Serial.write(buff4[i]);} 

} 

void rotateccw() 

{ 

//left motor 

unsigned char buff1[6]; 

 buff1[0]=0x80; 

 buff1[1]=0x00; 

 buff1[2]=0x01; 

 buff1[3]=0x40; 

for(int i=0; i<4; i++) {Serial.write(buff1[i]);} //right motor 

unsigned char buff2[6]; 

 buff2[0]=0x80; 

 buff2[1]=0x00; 

 buff2[2]=0x02; 

 buff2[3]=0x40; 

for(int i=0; i<4; i++) {Serial.write(buff2[i]);} 

}

Also, I don’t have a USB to TTL serial adapter. And Yes I have a valid signal from the Arduino and it’s compiling and uploading fine for other programs I’m doing right this minute.

J

I got your code working with a controller here. It does seem like your board might be damaged. If you contact us directly at support@pololu.com with your order information and reference this forum post, we can look into getting you a replacement.

- Jeremy

Jeremy,
thank you for the conclusion on this item. I have separately sent support the order details (from Robotoshop) and would welcome prompt action on initiating the replacement of the faulty part.
Thank you for your assistance in this matter,

Rgds,

John Kelleher