Control continues 360 degree servo motor with FS-CT6B through Arduino

Hey guys,

I am having some trouble programming Arduino. I have a FS-CT6B with 6 channels. I have separate battery for arduino and separate battery for the motors.

I want to control 4 continues servo motor with CH2 (drive forward and backward). With other channels drive to different directions.

Can you please someone advice and give me an example how can I move all the servo motors with CH2 (for example) from FS-CT6B?

Please find attached the code

servo_control.ino (1.7 KB)

Are you able to read the values from the receiver?
That is where I would start.
Read the values from the receiver and print them to the serial monitor.

After you get the input going, I would tackle making one servo move based on the input.

Then I would work on the logic to perform all of the tasks in your last diagram. We can help you will that when you get there. Take a stab at it and let us know if you have questions.

Your vehicle has three degrees of freedom: front-back, left-right, and cw-ccw. I think you will need one axis/channel for each. Calculate each axis separately according to the "wheel rotations" diagram and add the motions together to control the motors. Once you add the motions together you may need to 'normalize' (or constrain) the values so they don't go out of range.

It will be easier to understand your sketch if you name the motors after the wheels they turn rather then numbering them.

Hey vindeherman, thank you for your feedback. I just measured the multimeter the output the of the signal moving up and down from the controller, it gives direction upwards 0,28 Volt DC and direction downwards 0,18 Volt DC.

Hey johnwasser, thank you for your feedback. Please see attached file for better understanding. As understood from the continues servo motors, 90 degrees is STOP. Below 90 degrees goes to one direction and over 90 degrees goes to another direction.

I dont know how to program arduino so recognize the 0,28V and 0,18V for the output signal.

img-115135513-0001.pdf (26.2 KB)

johnwasser:
Your vehicle has three degrees of freedom: front-back, left-right, and cw-ccw. I think you will need one axis/channel for each. Calculate each axis separately according to the "wheel rotations" diagram and add the motions together to control the motors. Once you add the motions together you may need to 'normalize' (or constrain) the values so they don't go out of range.

It will be easier to understand your sketch if you name the motors after the wheels they turn rather then numbering them.

johnwasser:
Your vehicle has three degrees of freedom: front-back, left-right, and cw-ccw. I think you will need one axis/channel for each. Calculate each axis separately according to the "wheel rotations" diagram and add the motions together to control the motors. Once you add the motions together you may need to 'normalize' (or constrain) the values so they don't go out of range.

It will be easier to understand your sketch if you name the motors after the wheels they turn rather then numbering them.

Hey johnwasser, thank you for your feedback. I uploaded the file in the email above. As understood from the continues servo motors, 90 degrees is STOP. Below 90 degrees goes to one direction and over 90 degrees goes to another direction.

vinceherman:
Are you able to read the values from the receiver?
That is where I would start.
Read the values from the receiver and print them to the serial monitor.

After you get the input going, I would tackle making one servo move based on the input.

Then I would work on the logic to perform all of the tasks in your last diagram. We can help you will that when you get there. Take a stab at it and let us know if you have questions.

Hey vindeherman, thank you for your feedback. I just measured the multimeter the output the of the signal moving up and down from the controller, it gives direction upwards 0,28 Volt DC and direction downwards 0,18 Volt DC.

I dont know how to program arduino so recognize the 0,28V and 0,18V for the output signal.

The signal from an RC radio to a servo is a pulse every 20 milliseconds (50 Hz). The width of the pulse is typically between 1000 microseconds (0 degrees) and 2000 microseconds (180 degrees). The simplest way to read the value is with "value = pulseIn(pin, HIGH, 30000UL);" The 30000 is a timeout value in case no pulse arrives, the default being 1 second.

If you get a value of 0 then no pulse arrived and something is wrong in the radios or wiring.

A value near 1500 would mean the joystick is centered.

Try reading your input pin or pins and displaying the values to see what values you get for high, low, and centered.

vinceherman:
Are you able to read the values from the receiver?

akaluptos:
Hey vindeherman, thank you for your feedback. I just measured the multimeter the output the of the signal moving up and down from the controller, it gives direction upwards 0,28 Volt DC and direction downwards 0,18 Volt DC.

I think that you misunderstood my question.

Do you have code working to read the values from the receiver attached to your arduino.
This is a good step to make sure is working well.
Print the values for each channel from the receiver to the serial monitor.
Then move each stick and confirm that you get expected value changes on the monitor that match the movement of your transmitter sticks.