EM048 » Hand manipulator control system via ADC and accelerometer
In this project, we propose to create a control system for 3D-printed manipulator with four degrees of freedom, using Terrasic DE10-Lite board and Terrasic Servo Motor Kit. FPGA hardware allows making parallel movement of great quantity of Servo Motors through GPIO blocks. Construction of the manipulator reasonably allows using an accelerometer chip included in DE10-Lite periphery. For controlling other joints, we used potentiometers performed as a pair of joysticks, and a button for making a grab on a top joint. All control elements, such as the joysticks and button, were connected through GPIO block.
This project creates a highly accurate control system for several servo drives through a set of peripheral devices, which gives this project some versatility.
This project also forms the basis for the improvement of a new electromechanical prosthetic hand using neural interfaces technologies and partial compensation for lost tactile sensations. This project is at the stage of completion of the manufacture of a new body and all mechanical components. At the moment, the prosthesis works on the Arduino Uno board and is controlled by a neural interface. This project will allow transferring control from the current device with low computing power to high-speed FPGA systems with HPS to perform calculations when working with neural network algorithms.
These algorithms will be trained on signals derived from the motor cortex of the brain. Thanks to this model, it will be possible to provide high-precision control of the device by means of signals from the human brain.
Prototope working with Neural interface:
At start of work on the project there were a choice between using HPS part of board and FPGA. For educational purposes the second variant were chosen, but there also were run of accelerometer working example through HPS on DE10-nano board.
For controlling servo motors were used Servo Motor Kit board. It allows to power all servos from one source, without using breadboard. It also provides protection functions, in case of voltage falling. It connects to main board through GPIO, so the first part of the project contained some way for controlling servo motors through single GPIO channel. It was necessary to create PWM generator, which could generate signal with preset duty cycle. On the picture below we can see duty cycles for rotations of standard servo motors.
The second part of the project is two angle decoders, one for ADC for getting potentiometer reading and one for deshifrating embedded accelerometer reading. Both numbers were converted to timing numbers for creating needful duty cycle by formulas.
It was also necessary to communicate with analog devices by embedded ADC controller.
Here is list of modules, which were required for purposes of the project.
Accelerometer communication module
It was necessary for us to provide parallel movement of all required joints, to provide precision movement for using the manipulator for making accurate work. DE10-Lite board contains one GPIO block and also Arduino GPIO block with embedded ADC controller, which allowed the motors to be controlled in parallel using language constructs of Verilog language. So, the used board contains all the peripherals necessary for the project.
PWM generation allows for much more accurate movements. To generate these signals, clock generators built into the board were needed. The frequency of these generators allows you to generate on their basis a signal of any frequency and duty cycle.