Our robot has scissor lift which is run by four tetrix motors powered by a 12V external battery pack, two on the right side, two on the left side. The way they are currently set up, the two motors on each side absolutely must run at the same speed, otherwise they will strip gears and unleash all sorts of havoc. What we would like to know is: How can we synchronize each set of motors together in such a way that they will each get full power and that they will each be running at the same, constant speed?

If they were NXT motors, (for this example, MotorA and MotorB running at 80% power) the proper syntax should’ve been

where it would slave MotorB to MotorA, and run them at a constant speed without power fluctuations. We want to do the same thing but using differently named motors; we want to slave MotorE (not encoded) to MotorD (encoded) and to slave MotorG (not encoded) to MotorF (encoded).

Sat Jan 19, 2013 2:56 am

MHTS

Guru

Joined: Sun Nov 15, 2009 5:46 amPosts: 1512

Re: Synchronizing Tetrix Motors

If you want absolute synchronization, you may consider locking all four mechanically (e.g. by a chain).

Sat Jan 19, 2013 5:46 am

amcerbu

Novice

Joined: Sun Oct 21, 2012 10:01 pmPosts: 76

Re: Synchronizing Tetrix Motors

Have you considered using only one or two motors, but with a different gear ratio? You'd probably have to write some custom PID code otherwise; there's no built-in RobotC function for synchronizing Tetrix motors.

Also, @MHTS - Congrats, it seems you've broken 1000 posts.

Sat Jan 19, 2013 6:27 pm

tfriez

Site Admin

Joined: Wed Jan 24, 2007 10:42 amPosts: 619

Re: Synchronizing Tetrix Motors

The motor synchronization that happens on the NXT is controlled by the ROBOTC firmware. This is possible because there's not much latency when processing data from the motors because this code resides in firmware (vs. user space/interpreter level)

With the TETRIX system, because they are I2C devices and the HiTechnic Motor Controller does all of the encoder/PID processing, synchronization in the same manner is not possible. We *could* implement something that is like a synchronization, but with the I2C transaction times being what they are (multiple milliseconds) to get encoder values, it would not be as precise/reliable as your use case needs.

Who is online

Users browsing this forum: No registered users and 2 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum