M5stack Core and GoPlus Module dc motor connector adresses missing (Arduino)
-
Hello. I'm trying to configure my GoPlus module using the example codes which are very limited on the M5 documentation for GoPlus. I can't find the correct list of addresses to be used anywhere.
I want to power my DC 3-6V gearmotors 1:120 using the code adding an extra 5V external powersupply (max 2A) through the XT30 connector.
I found the max speed in example codes is 250 and min is -250 for the motor command but with other values in between this gives the same issue.
So the code I used is following:
void Motor(void){
Serial.println("-------------------------MOTOR Sturing -------------");
Serial.println(" motorspeed 200");M5.Lcd.setCursor(40, 60, 2); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); M5.Lcd.printf("Test MoTor motorspeed 250 \n "); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x80, 250); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, 250); delay(5000); Serial.println(" motorspeed 0"); M5.Lcd.setCursor(40, 60, 2); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); M5.Lcd.printf("Test MoTor motorspeed 0 \n "); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x80, 0); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, 0); delay(500); Serial.println(" motorspeed -250"); M5.Lcd.setCursor(40, 60, 2); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); M5.Lcd.printf("Test MoTor motorspeed -250 \n "); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x00, -250); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, -250); delay(5000); Serial.println(" motorspeed 0"); M5.Lcd.setCursor(40, 60, 2); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); M5.Lcd.printf("Test MoTor motorspeed 0\n "); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x80, 0); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, 0); delay(500);
}
It just doesn't seem to be able to power the DC connectors. I get a -0.2V max out and a + 0,8V max which isn't enough to run the motor.
Has anyone experience or documentation what adresses of code instructions are to be used to fix this issue?
Or a link with the more complete documentation what commands and adresses to use for steering the servo and DC motor pins?Because I'm really blocked for weeks now.
Thanks upfront.
Wim -
Hello @WBE
Note: I don't own the GoPlus module so my conclusions could be incorrect.
The DCDC step-down converter (TPS54360) is, according to the schematic, setup to output 6.5 V. Normally step-down converter require a slightly higher input voltage than the output voltage to function properly. Also according to the GoPlus description the DC input range is 6.5 V - 24 V. So assuming nothing is wrong with your code (which I cannot say w/o testing, sorry) I have a feeling that 5 V at the DC input might be too low.
BTW: have you tried to use UIFlow - might be helpful to verify whether your hardware setup is correct?
Thanks
Felix -
@felmue Thanks for the fast response. I missed the 6,5V minimum input. I initially changed the power supply of 12V 500mA to a 5v 2A because I thought the power consumption would be bigger than 0.5A. I tested again and it doesn't seem to work.
I found a chinese doc on the GoPlus that contained another example after translation (thanks Deepl):
uint16_t speed = 200;
Wire.beginTransmission(0x5d); // adress GoPlus
Wire.write(0x30); //motor connection
Wire.write((speed >> 8)&0x80); // port 1 DC and 0x00 = port 2 DC
Wire.write(speed & 0xff); // no idea where 0xff comes from
Wire.endTransmission();fingers crossed this will work. I have no way to test whether the GoPlus became defunct. The Servo steering doesn't work either. Maybe I need also a bigger power supply...
Starting to think buying the GoPlus a while ago wasn't the best idea... -
This post is deleted! -
In my railway project I use 12V in but only get 5V out max
0xff stops the motors.
Wire.write((speed >> 8)&0x80);
Needs to be
Wire.write((speed >> 8)&0x00);
for the second channel.