During one of the flight tests with the quadcopter, one of the motors began malfunctioning and spinning out of phase. At first the issue seemed to be caused by the magnets being misaligned, however closer inspection revealed that the wire connections were actually torn apart from the heavy vibrations of the motor. The faulty connection caused the phase signal to be out of sync creating the jerky motion that we saw before. After all the wires of the 3 phase signal was stripped and replaced, the motors were back to normal.
One of the recurring problems with the quadcopter is with the motor and prop mounting. The props that we purchased came with several shaft adapters for different motors, but unfortunately none of them match with the motors that we had. The initial approach for fixing this problem was to file the prop adapters until they do fit with the motors and secure the prop with a rubber band. This method works for the first few flights, but eventually fatigue of rubber bands would cause the rubber bands to snap in mid air and cause catastrophic crashes. Eventually the prop was tied down using magneto wire which prevented the prop from leaving the motor halfway in flight. However the problem with this approach is that crashes will tend to loosen the wire and they would need to be replaced from time to time. The best solution to this problem is to find the right prop for the right motor but due to our time constraint we had to work with the second mounting method.
Arduino Uno R1 Bootloader Bug
As additional hooks were added to the Aeroquad software such as for the radio and motor controllers, the space required to run the software increased by several kilobytes. After going over 28.8 kb, the AVR Dude uploader used by the Arduino IDE could no longer upload the software despite a higher maximum limit of 32 kb. An error occurred, stating that the programmer was not responding.
After several hours of research, we determined the error was caused due to a bug in the bootloader installed with early Arduino Uno revision 1 boards. The fix for this problem was to upgrade the bootloader, which requires either an AVR ISP (In-System Programmer) or another Arduino microcontroller programmed as an ISP. Fortunately, we possessed two Arduino MCs.
First, one Arduino Uno was programmed to be an ISP. Next, we wired the Arduino to the quadcopter’s Arduino board to communicate using SPI. A capacitor was also required between RESET and GND on the Arduino UNO being used as an ISP. Once the two boards were wired together with the ISP attached to a USB port on a computer with the Arduino IDE, we used the “burn bootloader” option to overwrite the existing bootloader. The process was repeated for the other Arduino Uno by switching the boards.
More details about this process can be found at this link: http://arduino.cc/en/Tutorial/ArduinoISP