We are three lecturers on aeroelastic and flight control law.
We are working on a small wing profile attached to to demonstrate to the student the principles of modal identification, flutter stability and flutter active control.
The model includes a motor with a prop to excite the wing profile. Anyway, one video is worth thousands words, so here it is:
In the video the motor is shut down (we are performing what we call a GVT, ground vibration test).
The acquisition and control is performed via an Arduino UNO board with a MPU6050 unit (with GY521 shield).
Now we have a problem, the program freezes randomly, sometimes it goes for minutes, sometimes it hangs after a few seconds.
- The servo is powered externally via a PC power supply (via the 5V line)
- The motor is powered by the same power supply, via the 12V line.
- The motor signal is given by the arduino, too
- The servo library used is the standard Arduino one.
- The MPU6050 is powered via the 3.3V output of the arduino board
- The programs runs at 100Hz, decreasing the sampling doesn't improve the reliability (we tried 50Hz...).
- We cannot decrease too much to have a correct representation of the modal response
- We use the I2cdev library for the MPU6050
I attached the code.
Looking through the internet, I suspect that the problem is due to the way that the standard Servo library generates the PWM pulses, similarly to what stated here .
I've went through that page and this one, but I'm afraid my knowledge on microcontroller is so limited I struggle understanding what I should do...
We can offer a good beer and a lecture on the subject to whoever is interested in knowing the detail!
Thanks in advance,