IntelliServo is a project developed in bq's Innovation and Robotics Department 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!
All the info on this project is available in Github, including the board design, arduino library, servo firmware and mechanical parts as well as use instructions.
By enhancing the servo's capabilities, many useful new tricks are possible, from regular servo use.
to controlling one servo by moving another one.
Or detecting a collision by measuring its current consumption.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.
This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)