I will be restoring an old 4 axis robot arm. I am essentially going to use whatever I can to make this robot move again. The fun thing about this project is that there are no restrictions on how complicated and wacky I can make the hardware. Prepare for some excessive circuit design!
Potentiometers (acting as position sensor) 0 - 300 ohms
Before we start trying to build controllers for this arm we need to make sure that the logic of the design is sound. We are going to do some simple "bread-boarding" to get this arm moving. We wont be using any actual breadboard just a motor driver and an STM32 Nucleo controller (stm32f0).
The Bammer motor driver was released last week and we decided to use this driver to move the robot. The Bammer drive is designed for high power motors but it can also be used for smaller motors with high efficiency. We followed some basic steps to control this arm from the Bammer board.
Connect the Direction, PWM, and Enable pin from the Bammer to a controller (we used an STM32 but really you can use most controllers)
Connect appropriate power to the motor driver (12V DC)
Connect the Potentiometer to the ADC (A0) pin
Write a program to look at the ADC values and move the motor towards the setpoint. This can be done with an if loop or you can use a PID loop for more responsive and smother control.
From this experiment we learned that there is a bit of backlash in the robot arm system. Some of this error is in the spur gear drives and some is in the fastening of the drive to the arm. It would be very difficult to remove this backlash in hardware so we can hopefully remove it in software. We also learned that the gear drives are quite noisy, nothing we can do about that.
The above video uses the code featured below. We use a very simple real-time operating system to manage different tasks to control the robot. The program was made with Mbed which is an online IDE. All of the libraries are built in and the below code will run without any background work required (other than wiring of course).
A Friday evening isn't always the best time to throw a little extra working into resorting this old robot but I couldn't wait to see it move so I had to spend a couple hours messing around with it before signing off for the weekend.
To design a new controller we need to know something about the motors. At the moment all we know is that they are 12V and DC, other than that there is no information. Really all I need to build the controller now is the output of the potentiometers and the current usage of the motors. I suspect that it will be less than an amp each, the motors arnt that big.
To test the motors I am going to power them manually and run the power through a Fluke meter and record the max current. The max current with a stalled joint was about 500mA, so it looks like the motor driving is a job for a DRV8801 chip!
Testing the potentiometers shows that they are continuous rotation pots (cool), and have a range of 0 - 300 Ohms. The next step is going to be creating a method of connection for potentiometer/encoders.