diff --git a/Kicad/Breakout_DJI_Gimbal.png b/Kicad/Breakout_DJI_Gimbal.png new file mode 100644 index 0000000..d179c50 Binary files /dev/null and b/Kicad/Breakout_DJI_Gimbal.png differ diff --git a/README.md b/README.md index 329e833..5bf313c 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,21 @@ The aim of this project is to be able to use the 3-axis DJI gimbal with a custom open source controller like [SimpleFOC](https://docs.simplefoc.com/). This high quality gimbal is very tiny and easy to find as a replacement part which makes it very suitable for DIY projects. -## Description - -![](docs/overview.jpg) + + ## Pinout identification The Gimbal is composed of a flex PCB with a main connector and 3 smaller for each motor. The main end connector is a 40-pin mezzanine board to board connectors. In order to work easily I have designed a breakout board which open to a 2.54" header. -![Setup](docs/setup.jpg) + + Here is the strategy I followed to find the pinout: 1. Find all equipotential pins with a multimeter set to continuity tests, and test all the combinations 2. Group remaining pins by motor With the multimeter find all the pins connected to the motor connector. (Reapeat 3 times for the other connectors) + + ### Open-loop control Each motor has its own drivers a MP6536. Which makes it easy as no additional hardware is necessary to drive the motors. @@ -24,14 +26,14 @@ There are 4 pins from the MP6536: 3. PWM3 4. Fault : Output. When low, indicates overtemperature, over-current, or under-voltage. -Connected directly to a MCU and with the Simple FOC Library, open-loop control works quite well. However due to open-loop control, it cannot know when a "step" is missed so misalignment can occur. Also, the motor tends to become quite hot due to the continuous current sent to the coils. +Connected directly to a MCU (here a STM32 Nucleo F401RE) and with the Simple FOC Library, open-loop control works quite well. However due to open-loop control, it cannot know when a "step" is missed so misalignment can occur. Also, the motor tends to become quite hot due to the continuous current sent to the coils. ## Position estimation with the integrated linear hall sensors ### 1. Setup Each motor is composed of two ratiometric linear hall sensors. (Texas Instrument DRV5053 Analog-Bipolar Hall Effect Sensor) They are placed at around 120º from each other (eyes measured) and measure the magnetic field of the rotor. -![Photo of the stator](docs/Hallmotor.jpg) + Ratiometric means that the output signal is proportional to the voltage supply to the sensor. In this setup, with 5V supply, the output measured is between 520mV and 1.5V, so a 1V amplitude. @@ -39,11 +41,12 @@ Ratiometric means that the output signal is proportional to the voltage supply t These oscilloscope traces are the sensor output when rotating the rotor forth and back. (a bit less than 180º on the 3rd motor) The channel 0 (Yellow) is the Hall 1 and the Channel 1 (Green) is the Hall 2 -![hall sensors traces](docs/courbes.png) + We can see that in the first movement (positive rotation), the green is out of phase of π/2.` -![Sinwave figure](docs/cosSinEncoderDiagram.png) + + ### 3. Encoding the position 1. Get the absolute angle within a period @@ -100,10 +103,8 @@ float dist_angle(float newAngle, float prevAngle) // return the difference modul To achive position control it is necessary to have first, a velocity controller well tuned, as they are in cascade. (SimpleFOC implementation and diagram) ![Closed loop position diagram from SimpleFOC](docs/angle_loop_v.png) -However, the motors of the gimbal have hard stop and can only rotate of around a half turn. It was so necessary to remove these mecanical stops. I drilled with a 1.6mm drill the two little holes to remove it. Then the motor was able to rotate freely. -![Drilling](docs/drilling.jpg) -![Tunrning](docs/freeturn.gif) +However, the motors of the gimbal have hard stop and can only rotate of around a half turn. It was so necessary to remove these mecanical stops. I drilled with a 1.6mm drill the two little holes to remove it. Then the motor was able to rotate freely and PID can be tuned. + + -## Working -![Working](docs/working.gif) \ No newline at end of file