Go Down

Topic: Accurate 360 servo angles (Read 1 time) previous topic - next topic

Derango

Accurate 360 servo angles

Hey guys,
I am fairly new to arduino and working with motors, I'm looking for some guidance as I got stuck.
Basically the goal of my project is to create a turntable, that can reliably rotate in 56 segments -» same motion between all of them, and ultimately it arriving back to the starting point.

I am using this "official" arduino 360 servo:
https://www.amazon.co.uk/gp/product/B00CZ82VS4/ref=oh_aui_detailpage_o01_s00

I have spent the day with various settings of the myservo.write() numbers, delay intervals, etc. etc. but even if I managed to reach my goal for a spin or two, after a short while (it's going for a second spin after 5 secs of delay, or certainly after the board being restarted) the whole system gets inaccurate again, even by 10-15 degrees or so.
And clearly I need an accurate and reliable system.

It is a continuous servo motor, so I can only accelerate it a bit instead of giving it angles.. basically I found that nearly any variable in the system has an effect in the outcome.. and apparently even variables electrically/mechanically that I'm not even aware of.

What is the right next step for realizing my project?

Thanks!!

756E6C

#1
Apr 06, 2017, 01:55 am Last Edit: Apr 06, 2017, 01:57 am by 756E6C
Well, since there is no position feedback from the motor or turntable, there is no way for Arduino to control it's position, how big a turntable? How fast? How does the motor connect to it, gears, belt, direct drive?

Derango

Well, since there is no position feedback from the motor or turntable, there is no way for Arduino to control it's position, how big a turntable? How fast? How does the motor connect to it, gears, belt, direct drive?
It's diameter is around 40 centimeters. Speed is not a concern, basically I want to be able to control the turntable in 56 steps by the push of a button (1 step at a time).
At the current stage it is direct drive, and although I have been thinking of something more complex, I do not see how a belt / gears could solve my problem if I cannot control the motor reliably.


I have been thinking of using a camera and a black and white outer rim to scan it, or a laser, etc. for locational feedback. Regardless if it is possible to solve it in a more simplistic manner I would prefer that big time.

756E6C

#3
Apr 06, 2017, 02:37 am Last Edit: Apr 06, 2017, 02:40 am by 756E6C
I suggest a gearmotor with at least a 60 to 1 reduction ratio and built in encoder:
https://www.pololu.com/category/51/pololu-metal-gearmotors

Derango

I suggest a gearmotor with at least a 60 to 1 reduction ratio and built in encoder:
https://www.pololu.com/category/51/pololu-metal-gearmotors
I will look into it, thanks.
Could you give me an explanation though why exactly the motor I am using right now behaves differently from time to time? Why isn't its rotation linear? What changes?

756E6C

Just Google "how it works RC servo", more than you ever want to know. ;)

Derango

Could a stepper motor fit my needs for rotating the turntable in steady, small increments in one direction?
Along the lines of this setup: https://www.youtube.com/watch?v=-q9tl-hhHgY

Isn't this exactly what I need?

756E6C

Well, 1/56th of a circle is 6.42857142857 degrees, a 200 step per rev motor goes 1.8, 3.6, 5.4, 7.2, etc. degrees. See the problem?

Gandalf223

A geared stepper would solve the problem of increments -- a 1.8° stepper with a 100:1 gearbox is .018° per step, or 20,000 steps for 360 degrees, and that's driving the motor in full steps.  Use 1/16 microstepping gives 320,000 steps for the full rotation, or a bit more than 5,714 steps for 1/56th of the way. 

Plus, the geared motor also multiplies torque, another good thing.

Ricardol

I don't there is a way for Arduino to control its position, or maybe it depends how big the turntable is

Go Up