BeoTac, a tachometer for the Beogram 4000 series

This article aims to describe the process of developing and implementing an Arduino-based tachometer. This should enable the measurement of the performance and stability of the motor in a Beogram 4000 series turntable. The central concept of this system is a tachometer which uses interrupts to calculate the RPM of the turntable and sends the measurements to a connected PC via a serial interface.
Introduction
It is crucial and of the utmost importance that the turntables I restore are stable, accurate and durable. Minor fluctuations in the stability of the RPM can seriously harm the user experience when listening to one’s favourite music. Since the motors are over 40 years old, this is often the case.
Therefore, I needed a way to verify that the motors I had restored were performing as expected over a longer period. I’ve found two possible solutions to this problem, namely the AR926 and BeoloverRPM (from 2016), as seen in Figure 1.Figure 1: The AR926 compared to the BeoloverRPM
After conducting multiple investigations, I identified the advantages and disadvantages of the existing solutions, which are discussed below.
Digital Tachometer, AR926
Advantages
- Battery-driven.
Disadvantages
- The mobile design doesn’t allow for long-lasting test cases, as you’ll need to hold it manually.
- No serial interface.
BeoloverRPM
Advantages
- A fixed design and serial interface which allows us to do long-lasting test cases.
Disadvantages
- Needs multiple parts if I want to use it with the turntable base mounted.
- Design isn’t that streamlined.
With the previously mentioned advantages and disadvantages, I decided to develop my own implementation called BeoTac, which enables me to do adequate performance and stability tests over a longer period of time, since none of the solutions seem to solve my problem completely. My goal was to create an implementation a lot like Rudy's but with the following improvements:
Optimized design
- The design should allow me to use BeoTac with the turntable base mounted or dismounted without using any extra 3D printed parts.
Extended software
- The device should work on multiple devices and not just the Beogram 4000 series.
Methods
My initial idea was to create my own circuit with an IR transmitter and receiver connected to an ATmega 328p microprocessor. I tried to measure the analogue values, but this proved inaccurate and difficult to control, which is why I opted to use a digital circuit. To digitise the output from the IR emitter, my idea was to include an OP-AMP comparator circuit (LM358).Figure 2: An early-stage prototype with the LM358.
After tinkering around with the circuit for some time, I decided to simplify the process and use an Arduino Nano in combination with an IR sensor module instead.
This would make it easier for me to create an MVP as fast as possible and verify that the idea was possible.
I 3D printed a minimal base, attached the IR sensor module and connected it to the Arduino Nano. The LEDs were bent downwards to pick up the black bars.Figure 3: An early-stage 3D printed part used to verify the idea.
Figure 4: First readings when switching from 33RPM to 45RPM, using Arduino's Serial Plotter with a Baud Rate of 38400 Bd.
With a minimal codebase, the MVP verified that BeoTac solved my issues and made it possible for me to test the stability and performance of the motor.
I designed the BeoTac casing from my blueprint, to which the SSD1306 OLED display was later added. The sampling time was adjusted to one second since the Arduino would be exhausted by updating the screen and handling interrupts at the same time.Figure 5: Second iteration with the IR sensor attached.
Figure 6: Early prototype casing without the OLED screen attached.
The software was written from scratch and internally uses interrupts on PIN2 to increment a counter every time a black bar is registered by the IR receiver. Each second, the RPM is calculated and sent to the PC via the serial connection and via I2C to the OLED screen.
The OLED screen shows the current RPM fixed with two decimals and a “checkmark” if the speed is ~33.33RPM or ~45RPM. Otherwise, it shows an “X”, which could indicate that the motor requires restoration.
I also started using SerialPlot, which enables me to take larger data samples, e.g. 24 hours, since the Arduino Serial Plot is limited to ~500 seconds. The screenshot below shows a sample of data for ~1 hour.Figure 7: SerialPlot, plotting data for 1 hour.
Figure 8: Prototyping requires a lot of testing.
Figure 9: Testing the screen.
Figure 10: Finished product compared to the early prototype.
The casing, as seen in Figure 11, worked as expected, but after some field testing, I’ve addressed a couple of issues that improved the overall experience.
Instead of using four screws to attach the bottom, I’ve changed the design to use a single screw that is indented such that the screws don’t scratch the base of the turntable.Figure 11: Optimized the bottom design and added a single indented screw to remove the risk of scratching the surface of the Beogram.
Figure 12: A 3D model which compares the two different bottom designs.
The base for the OLED screen was originally glued to the case but since glue is an unsustainable solution I’ve updated the design and added screws instead. In this way, I am sure that the screen will never fall off.Figure 13: Second iteration of the finished model with screws attaching the screen instead of glue.
The software was also updated with a new feature enabling the use of the BeoTac on other turntables than the Beogram 4000 series. With a single command, it is possible to tell BeoTac how many bars it should react to. This allows for the printing of a white piece of paper with a single black bar and its addition to any type of turntable.
Below is a 3D image of my initial blueprint (right) and the finished model (left).
Figure 14: First design prototype to the right, and the second iteration of the finished product to the left.
Figure 15: 3 different prototypes compared next to each other.
For those interested, the complete component list is below.
Hardware components
- 1 x Arduino Nano R3
- 1 x IR sensor module
- 1 x SSD1306 OLED Display
- 7 x 5cm wires
Software
- Visual Studio Code with Platform IO
- Fusion 360
- Cura
Hand tools and fabrication machines
- Soldering iron
- Solder Wire, Lead-Free
- Creality Ender 3
- PLA
- Multimeter
- Oscilloscope
Below you’ll find some images of the final product.
Thanks for reading. I would be happy to receive some feedback. You can send me an email or use my contact form :)
Read the follow-up with a new and improved design here.