Home        Store        Docs        Blog

T100 Motor Erratic Movement RPi

#1

I am currently building a submarine using 4 T100 motors and an xbox controller. After looking at several solutions online, this is the code I came up with. The movement of the motors is very erratic, with the motors sometimes not working at all. Here is a link to the Xbox library I’m trying to use. https://tutorials-raspberrypi.com/raspberry-pi-xbox-360-controller-wireless/

import RPi.GPIO as GPIO
import math
import xbox
import time

motor = 7

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

GPIO.setup(motor, GPIO.OUT)

def angleFromCoords(x,y):
    angle = 0.0
    if x==0.0 and y==0.0:
        angle = 90.0
    elif x>=0.0 and y>=0.0:
        # first quadrant
        angle = math.degrees(math.atan(y/x)) if x!=0.0 else 90.0
    elif x<0.0 and y>=0.0:
        # second quadrant
        angle = math.degrees(math.atan(y/x))
        angle += 180.0
    elif x<0.0 and y<0.0:
        # third quadrant
        angle = math.degrees(math.atan(y/x))
        angle += 180.0
    elif x>=0.0 and y<0.0:
        # Fourth quadrant
        angle = math.degrees(math.atan(y/x)) if x!=0.0 else -90.0
        angle += 360.0
    return angle

if __name__ == '__main__':
    joy = xbox.Joystick()
    pwm = GPIO.PWM(motor, 750)
    pwm.start(95)
    
    while not joy.Back():
        if joy.A():
            signal = 0
        else:
            signal = 360
            
        GPIO.output(motor, signal)

    
    joy.close()
    pwm.stop()
0 Likes

(Willian Galvani) #2

Hello Dylan,

The first thing I notice is that it seems that you are trying to run the pwm signal at 750hz:
pwm = GPIO.PWM(motor, 750)
Our ESCs support up to 400Hz.

You also need to make sure they are initialized with a 1500us pulse for a few seconds, and only then apply different PWM values.

Take a look at our Arduino sample code.

0 Likes

(system) automatically bumped #3
0 Likes