Skip to content

hstarmans/rotorbalancer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 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 amd 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.

Method

Details with pictures can be found on Hackaday. Vibrations caused by a spinning rotor are measured with an accelerometer. I did an experiment where I spun the rotor at 100 Hertz and recorded the vibrations for 3 seconds at 952 Hertz sampling frequency. Sampling of the signal must be equidistant or otherwise the discrete fourier transform can not be calculated. The amplitude of the discrete fourier transform at a 100 Hertz is used to determine the balance weight. This amplitude can be linearly compared to the magnitude of the amplitude determined from a known balance weight. As 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 this angle. The phase difference can be determined from the cross correlation of the two signals. Noise is removed with a Butterworth filter. This method is available in the code. Currently another method is used. The minimum and maximum force 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 phase angle was relatively constant in the range 97-144 Hz but the force did follow a square law as expected from the centrepetal force. It is assumed this is due to nonlinearity in the materials and the imperfect setup.
A balance weight of 0.060 gram was needed. I used an AG204 Delta range from Mettler to measure the weight of the putty accurately. An alternative is to cut of pieces of aluminium tape accurately. Fixing the device to the base plate did not improve measurements. Another practical example is given by a case study in Science direct. Note, above steps are only sufficient for single plane balancing. In two plane balancing, the procedure is more complicated. Imagine multiple disks with each their own unbalance. If the speed is increased all these unbalances will scale linearly. Their moment is dependent upon the distance to a pivot point which is different. As a result, the angle of the force measured can be dependent upon speed.

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 cords.