Skip to content

hstarmans/rotorbalancer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rotor balancer

The rotor balancer can be used to balance propellers from flying drones or laser mirror motors. The instrument is also a tachometer and can record the speed of rotors. The Nano 33 BLE is used to pulse the motor via hardware pwm and record the accelerometer signal via the onboard LSM9DS1 accelerometer chip. During rotation the signal of a TCRT5000 IR LED is read out to detect the position of the rotor. The amplitude of the accelerometer signal is proportional to the unbalanced mass. The phase difference between the infrared LED and the accelerometer indicates the position where a balance weight, aka. putty, has to be placed. In the case of two plane unbalance, the phase difference between the IR Led and the accelerometer can be dependent upon rotor speed.

Installation

Compile the firmware with the Arduino IDE or Platform IO and upload it to the Arduino Nano 33 BLE. Connect to the board with a baudrate of 115200. Five options are available; start samples, calibrate IR sensor, spin polygon, check pulse frequency and set pulse frequency.
Place an aluminum foil sticker on your rotor. Check if the IR sensor can detect the sticker and set the threshold using a screwdriver on the TCRT5000 IR LED sensor so it only changes when it detects the sticker. Use other menus to check if the polygon is spinning and set the pulse rate. Menus can typically be exited by pressing the 1 key and sending it with enter. A program to collect measuremetns has been made available in python 3.
Install requirements;

pip install -r requirements.txt

Program can be run as follows;

python main.py --plot --frequency 20 --filename '20hertz.p'

Example measurements can found in the measurements folder.

Video

For a better impression, I made a video of the setup.

TODO:

Substract the measuremens from an unbalanced prism from a balanced prism. This might make the results more intuitive.

Measurements


For each measurement, the rotor was pulsed at a certain frequency for 20 seconds. The motor was then turned off and the acceleration and infrared signal were measured for 1 second. This was done as the the motor interfered with the measurements. Turning the motor of resulted in cleaner results.
Sampling is equidistant at 952 Hertz as this was the maximum sampling frequency of the accelerometer. From the measurements it can be seen that the rotor slows down. The centripetal force is linear proportional to mass. In single plane balancing it is assumed that the angle of the force is not dependent upon speed. The phase-difference between the ir sensor and the acceloremeter determines the location where putty needs to be applied. The phase difference and amplitude were determined via the getdetails function in calc.py. The minimum and maximum is determined for each cycle. The phase difference between these must be 180 degrees for the measurement to be accurate. The location of the minimum will be the location of the balance weight.

The force follows a square law between 40-60 Hertz but not over the whole domain. This could be partly due to the fact that the rotor slows down. Other things must play a role as well as there is a noticable change around 78 hertz in both the force and phase plot. The spinning disk probably creates current in the motor which is turned off.
The phase angle between the minimum amplitude of the accelerometer and the peak of the photodiode is dependent upon speed. This could be due to multiple plane unbalance but is hard to say due to the electric field. Imagine multiple disks with each their own unbalance. Their moment is dependent upon the distance to a pivot point which is different and the force scales squarily with speed. As a result, the angle of the force measured can be dependent upon speed.
The measurements were done on a prism for which some balancing was already done. A balance weight of 0.060 gram Weicon resin putty was applied. I used an AG204 Delta range from Mettler to measure the weight of the putty accurately. As a lower cost alternative, pieces of aluminium tape could be used. A small piece of aluminum tape was applied to trigger the IR Led sensor.
Futher literature can be found in Science direct and at the site of National Instruments. The measurements are available in the measurements folder. The code for the analysis is available in test.py.

Implementation details

I had to remove modemmanager as this caused problems with arduino.

sudo apt --purge remove modemmanager

The accelerometer libary from Sparkfun is used in a slightly modified form.

BOM

Prism:
4 sides, 30x30x2 mm
Mirror motor:
Panasonic AN4000A, other moters require different pins to be pulsed
Accelerometer:
The accelerometer of the LSM9DS1 is used, as it available on the Arduino Nano 33.
IR sensor:
The TCRT5000 IR LED sensor see DIY LP turntable. I bought one here
Balancing putty:
In the industry two systems are used. A 2 component epoxy resin putty by Weicon A single component UV curable expory resin system, e.g. by Shenk. In german it is called Wuchtkitt. The compound has a ceramic filling and the density is 2 gram per cubic centimer. Component was ordered via modular. An alternative is to use lead or metal tape. Lead has a density of 11 gram per cubic centimer.
Optical plate:
Used an optical aluminum breadboard from Thorlabs with M6 screws as base. Do not attach the device to something heavy this make the measurements worse. Typically, you want it decoupled from the external world and place the object under study on foam or hang it on cords. During measurements, the prism was suspended in air with strings.