Thursday, 7 June 2012

Firmware Finito
(that means finished !)

Now that the hardware is behaving as it should, I decided to get back to the firmware and see about giving it some necessary cleanup.  There were features to add and unnecessary/debug code to clean out.

The main feature I needed to add, and the one that I was hesitant to tackle, was the acceleration feature.  I knew I needed to add an option to spin up the motor gradually rather than the full-on power up I have been using.  The main idea of course is to compensate for the inertia of the platter and belt system, the heavier the platter, the more important this feature is.  In fact, on my Ariston RD11 they designed the motor pulley with a slip clutch to deal with the inertia problem (you will find this on many Thorens turntables as well).

The way the acceleration needed to work is that when the user started up the turntable, the Bi-Onda controller would have to start spinning at a much lower frequency than 60Hz and slowly, or quickly, ramp up to the final frequency set by the user for their turntable.  I concentrated on acceleration and felt that deceleration was not as big an issue and decided to omit a deceleration routine.

My problem was trying to figure out how I would shoehorn this feature into the existing software without having to re-write the existing code or change the overall structure.  While writing a post on a blog for assistance, the ideas became clear to me and I was able to figure out a relatively simple way to implement it that would only require modification of one function subroutine and would work with any action that started up the turntable (calibration modes, 33 and 45 rpm etc.).  That also reminds me that another reason to implement acceleration is the feature that allows the controller to increase the motor speed to reach 45 RPM, this higher drive frequency can cause difficulty in these motors to start turning from 0 to the high frequency of the 45 RPM mode.  Accelerating from a lower speed usually works well in dealing with this issue.

I made the acceleration feature flexible to anyone's needs.  In calibration mode you are able to turn acceleration on or off and you can set your own parameters for: starting frequency, frequency step in Hz and the delay time between steps.  These are all stored in eeprom and only need to be set once.  So you can pretty much set up your own acceleration ramp (linear).

So now I will need to build an enclosure for this unit and put it in operation.

SoundBound