Links

github    Github repository 

 

 

Overview

IntelliServo is a project aiming to transform regular hobby servos into intelligent ones by replacing their original boards. By doing so the servo has upgraded capabilities, such as being able to read its position, temperature and current consumption. Multiple servos can now be daisy-chained and controlled over I2C from a microcontroller, or over USB from a computer.

Each board features an LPC11U24 microcontroller, a DRV8837 motor driver, a TMP36 temperature sensor and a PCA9508 I2C repeater. Each servo is unique, and so the list of compatible servos will expand with the community, so don't hesitate to add your servo!

3D views of the board and servo

Connections

V_BAT: Main power line, energizes the motor and all the servo's ICs. Works between 5 and 12 volts. V_I2C: Voltage reference for the I2C bus and powers components on the auxiliary bus. Must be 3.3V or 5V.

The servo has different connector groups:

  • Main bus (5 lines): It is used to power and control the servos in daisy-chain configuration, attaching each one's A side to the previous' B side.
  • Auxiliary bus (4 lines): Its function is to provide an extra link to the I2C bus, to allow other devices to be used at the same time.
  • Power bus (2 lines): The main bus can be powered from the power bus on any servo, or from the last servo's main bus V_BAT and GND.
  • Micro USB: Used both to upload the firmware to the board as to use it to control the servo directly from the PC, without involving other microcontrollers.

 

connections

Installing the firmware

The board runs the firmware included in the Software/Firmware section. It is written in C++ and uses Mbed, to upload it connect the board over USB and then power it using the V_BAT and GND lines while pressing the button.

To compile it use the "mBuino" Mbed platform, which uses the smaller LPC11U24FHI33/301 model instead of the larger LPC11U24FBD64/401 model normally used in other boards. This is important because the EEPROM memory maps are different between both and the board won't be able to access the EEPROM if the wrong platform is chosen.

intelliservohardware

Library

The servos are controlled over I2C, but to simplify their use an arduino library with all the relevant functions and some example sketches are included as well. To install it simply copy it to the "sketchbook/libraries/" folder.

Specifications

V_BAT:     5V-12V V_I2C:       3.3V/5V I_Servo:    1.8A max I_Line:       5A max (60mil trace)

Contributing

This project is open-source and as so everyone is welcome to contribute. The most useful way of doing so is perhaps by expanding the list of compatible servos, by finding the moving range in degrees and PID parameters specific for each servo.

To do so add the servo to the IntelliServoConfig.h file as below

//Added by username
#ifdef NAME_OF_SERVO
    float maxAngle=XXX;
    float Kp=XXX, Kd=XXX, Ki=XXX;
#endif

and to the IntelliServoMain.cpp file

//#define NAME_OF_SERVO

License

This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

 

 

2 thoughts on “IntelliServo

  1. Nathan SCHAAL Reply

    Hi,

    I’m a french studient at ENSAM and i work on a robotic project for three years (a modular robot like Dtto as “https://hackaday.io/project/9976”)
    After a time of mechanical problems (resolved from some), i now face to many electronic problems. One of them is the reading of a servo (angle and consumption) : when i saw your concept, i thought I NEED THIS !!! I really need this. So i’m wondering if you sell it ? and how much does it cost ?

    thank you for your attention

    Nathan SCHAAL

    • Alvaro Post authorReply

      Hi, thanks a lot!

      I appreciate your enthusiasm but I’m sorry to say that I don’t sell them, however everything’s uploaded to github if you want to give it a try 🙂

      Best of luck!

Leave a Reply

Your email address will not be published. Required fields are marked *