Smart servo project

The most recent year, I was doing a Smart Servo project. Use FUTABA S9370SV and POWER HD D-21HV as a mechanical part of the prototype, the electronic drive improved 10 version.
Now just completed the first version aluminum structure, and customized steel gear through professional factory, now being assembled.

Most previous servos are PWM signal driving, consuming resources. Then I started using Dynamixel Servo, it is the best I have ever used smart servo, many laboratories and enthusiasts are using it. In addition, from South Korea's Dongbu HerkuleX smart servo is also very good, it is very similar to Dynamixel.

I always wanted to have a personal servo motor, it will be more convenient to use than the current servo, can be directly driven by Arduino serial interface, or even directly connected to the PC USB port.

Two years ago, I produced a smart servo according openservo (open source projects), openservo is a very nice community.
http://openservo.com
But openservo has not been updated for a long time, so sad :frowning:

Until I started doing last year servo project, suddenly I found see on Kickstarter called "motiph" project, I was very excited, because it seems so easy to use.
http://moti.ph

This year, my smart servo project has been a great change, the following is part of the introduction:

Performance Parameters:

  1. Voltage: 5-9V
  2. Torque: 20kg.cm (about 20N.m)
  3. Max speed: 60rpm
  4. Backlash: 0.2 degrees
  5. Repeatability: + -0.08 degrees
  6. full 360 degree rotation
  7. Torque Mode, Position Mode, Velocity Mode

Mechanical:

  1. compatible with standard servo size - 40mm (the next version may change)
  2. aluminium shell
  3. steel gear
  4. Coreless Motor. The next version will use BLDC….uhm, maybe... 8)

Electronic:

  1. STM32F103 32bit controller
  2. Temperature Sensor
  3. Current Sensor
  4. Position sensor (magnetic)
  5. Standard UART port, serial bus cascade communication
  6. USB interface, directly connected to PC

Software:

  1. Custom PID and other parameters
  2. The automatic firmware upgrade
  3. PC client

I will continue to share this project with everyone.

This is my first post, memorable :slight_smile:

How to insert images? Anyone can help me?
:frowning:

Reply, and Attach your image.

Hi, nice project!

Would you mind sharing more about the electronics of the servo?

Did you do the pcbs yourself?

And what magnetic sensor does the servo use?

CrossRoads:
Reply, and Attach your image.

I got it. thanks:)

How do you resolve the below statements? If the servo has .2 degree gear backlash, how can a mechanical resolution of .08 deg be cliamed?

  1. Backlash: 0.2 degrees
  2. Repositioning resolution: + -0.08 degrees

stellanhaglund:
Hi, nice project!

Would you mind sharing more about the electronics of the servo?

Did you do the pcbs yourself?

And what magnetic sensor does the servo use?

This is a handmade version.


Magnetic Sensor Module

after updating several versions, has been completed PCB design, factory production.

IMG_4211s.jpg
Magnetic Sensor Module

This version uses the AS5045 magnetic sensor, the next version will use AS5600 or MLX90316.

zoomkat:
How do you resolve the below statements? If the servo has .2 degree gear backlash, how can a mechanical resolution of .08 deg be cliamed?

I think the high precision sensor can correct gear backlash and improve the repeatability accuracy.

Backlash is the lost motion when an axis changes direction.
The axis in normally driven by a motor and attached to the motor is the position measuring device. The motor drives a geared drive to move the axis. If an axis is moved to a position and a clock gauge is set to measure that position, then reverse the axis motion very slowly and using the smallest increment possible to move the axis. Watch the clock gauge, when the clock starts to move the number of increments you have moved the axis is the true lost motion.
Repeatability is the ability of a servo motor to go to the same place time after time.
the machine to move from original position to plus 10 deg, set a clock gauge on the axis to measure the position. Now take the axis back to original position and back to 10 deg. The clock gause should always be the same reading. If there is lost motion or backlash then the repeatability will be no good.

EvanDeng:
This version uses the AS5045 magnetic sensor, the next version will use AS5600 or MLX90316.

Thanks, how is the controller of this set up, It looked like a stm32, is that correct?

And in that case does that use Arduino, and do you have any counter/decoder from the magnet senor values?

I will be really happy to see a close up on the pcb from the first image.

The clock gause should always be the same reading. If there is lost motion or backlash then the repeatability will be no good.

That is the point. The mechanical servo output may not actually be where the feedback indicates for small movements. I tested a standard hobby servo and found its repeatibility was ~.4 deg. The attached pix shows the simple test setup.

resolution1.jpg

zoomkat:
The mechanical servo output may not actually be where the feedback indicates for small movements. I tested a standard hobby servo and found its repeatibility was ~.4 deg. The attached pix shows the simple test setup.

If the encoder were mounted on the output shaft, then I'd think one could get the full 12-bit resolution (I assume 12-bits based on the earlier specs).

I tried adding AS5055 encoders to a servo. I wasn't careful enough with the alignment and it gave very erratic readings.

@stellanhaglund I'm very curious how you're connecting the magnets to the output shaft. Is this where your "customized steel gear" comes into play?

I really like the idea of using encoders inside of servos. I think the biggest plus of this sort of project is the elimination of potentiometers from servos. I have several hexapods and I have to replace servos every once in awhile because the pots go bad. I'd love to replace the pots with high resolution encoders.

I think the main weakness of the moti servos was the use of pots for position feedback.

Hi ,i see the materials of shell is metal,what kind of metal is it? will it become very hot when use?

If the encoder were mounted on the output shaft, then I'd think one could get the full 12-bit resolution (I assume 12-bits based on the earlier specs).

Reading the position is one thing, but with .2 deg gear slop, actually getting the servo to position at 12 bit command position might be challenging.

Did you finally get this project finished?
which sensor did you end up using?

Do you have the code available on a GIT repo?

Thanks
Ash