Digital Tachometer for record player (LCD display)

Avast Gents, happy new year.

I have been contemplating a tachometer for my record player with a digital readout LED or LCD--(making one as opposed to buying one as we know they already exist a la roadrunner... but are to expensive for my meager budget:eek:)

There are lots of examples on the new of using ardunio and a hall effect sensor but these are for drill and lath speeds, not 33.33RPM as we would require.
Numerous cheap (and nasty?) -- Car tachometer modules abound on e bay -but are they accurate enough for record player use??.
Some interesting propitiatory modules were about but when contacted the makers do not produce these items any more!

What would be great is an ardunio based (accurate) Tachometer with a hall effect sensor, and the possible option of using a touch screen to turn the record player motor on/off which could via the arduneo switch a relay on/off---(think project had this in one of there high end turntables?)

I have the brains to buy the items, but to code this...nah i be flabbergasted!:D

Is anyone of you good gents (or ladies..i aint proud) shed any light on such a project.... i am aware that that git hub can download library's for buttons on a LCD..and code exits for tachometer functions (counts time between magnet pulses and works out RPM from that?)...but how to integrate it all from a newsboys point of view??
Fingers crossed then.

cheers ..johnny
 
Thanks for the reply sir

Hi Jrubins,
Thank you.

Interesting link, shows the Arduino is quite good for this sort of thing, the speed indication via an analogue meter is something i have considered, but i would have a dynamic (digital numerals) indication- guess you would have to set it up by ear first, then make off the correct point on the meter that is 33.33 RPM (hopefully!)

As my design is not so steampunk, I won’t go that way, but it shows the Arduino is well up to this as it has PWM and A/D converters on board (unlike the Rasp Pi)
A project signature type of controller is what i was thinking of trying to emulate, I know this can be achieved with an Arduino (somehow!)…any takers boys (or girls) see this link:
[Review] Pro-Ject Signature 12 Turntable

Regards
Johnny
 
Thanks for the link to the Pro-Ject S12. It doesn't appear that the table actually measures or displays the platter speed (still used a strobe disc to set speed). The display is similar to the MH Cruise Control ($299) or the VPI SDS ($1400).

You can build your own version of a digital PSU (in fact better than either of those) for ~$100:

http://www.diyaudio.com/forums/anal...sinewave-generator-turntable-motor-drive.html
 
Clearaudio uses an optical encoder to measure speed, feeding back to the controller. Many motors have similar features built in, which pyramid's controller can make use of to keep the speed rock-solid.
If all you want is a tachometer though, you can build an optical one with a standard strobe disk and something like this
http://www.instructables.com/id/Measure-RPM-DIY-Portable-Digital-Tachometer



Sent from my iPhone using Tapatalk
 
Thank you both for the replys

:mad:Hi Pyramid and Jrubins,

Well..if i was aware of the initial project by pyramids i may have gone for that, but i have built a Mark Kelly speed controller and got a maxton motor, and had a pad made for it, so i have to go that way, I was aware of the info on the ardunio based taco project, and may buy the bits needed and have a go.. (but how accurate are they, they all seem to be measuring high RPM from drills and laths (not 33.33 RPM low record platter speeds?)
Some vendors sell integrated ardunio and display packages but they only seem to measure voltages and temperature, do they have access to the boot loader to re program?..if so how do you know the scrip you down load will support the display that the vendor has already soldered to the ardunio??..this kind of thing puzzles me:mad:
regards
Johnny
 
Hi,
I built one controller to control the speed of a Garrard 35 turntable and it worked very good until I tried to paint it. It end the trash can. I used an optical infrared optical sensor to read the index reflection from a strip glued to the inside rim of the plate. I tried the hall effect but the magnetic field radiated from the stepper motor had some conflicted with the pulses. The way it works it is to read the time it takes one revolution and calculate the rpm then display it in the lcd display. The sound was very good and it keep the rpm on target. I used the stepper motor because they are cheap and easy to control using the pwm control. The only problem it is that I used the Zbasic micro and their software for the programming. It is an easy project to do using the optical sensor. Attached rea some pictures showing how I built it.
 

Attachments

  • DSCF2886.JPG
    DSCF2886.JPG
    169.2 KB · Views: 4,575
  • DSCF2891.JPG
    DSCF2891.JPG
    195 KB · Views: 4,552
  • DSCF2892.JPG
    DSCF2892.JPG
    190.7 KB · Views: 4,456
  • DSCF2893.JPG
    DSCF2893.JPG
    151.1 KB · Views: 4,414
  • DSCF2894.JPG
    DSCF2894.JPG
    188.6 KB · Views: 4,379
THANK YOU FOR THE REPLY

Hi Tauro0221,

Thanks for the reply, did you use an Ardunio or something else, and did you originate the code yourself or was it from the internet or whatever?
Sorry for all the questions, but it seem a nice accurate project and i already have a motor controller to spin the platter.

thanks
Johnny
 
Hi,
I used the Zbasic micro. They use the 328 same as Arduino but with a different bootloader. I think if you do not use the speed control you can modify the program for Arduino. I used the Photologig reflective object sensor part number OPB761 from Mouser to read the index pulse and then calculate the rpm by the time it is taking to completed one complete revolution. It is a TTL output sensor. I developed the software. It is a simple equation.
 
Hi,
I do not know if this will answer your question since in my program I used the function timer() to get the time of one revolution. Here it is the description for the function.

Type Function returning Single
Invocation Timer()

This function returns the current RTC time represented as the number of seconds since midnight with a best-case resolution of 1/F_RTC_TICK. Note that Register.RTCTick gives you the equivalent information albeit in the form of a 32-bit value representing the number of RTC ticks (increments of
1/F_RTC_TICK) since midnight. Depending on your needs, one or the other may be more efficient to
use.

Here it is the link for Zbasic web side for those interesting in more details pf the Zbasic software.

link: ZBasic Microcontrollers for Automation, Control, Robotics and other Embedded Systems
 
Hi,
To Pyramid.

Correction the answered post was the function I used while doing the development. The following it is the final for more accuracy.

GetElapsedMicroTime(timeBuf)
GetElapsedMicroTime(timeBuf, timeBuf2)


The return value has units of the period of the frequency at which the TCNT register of the RTC timer changes, i.e. 1/F_RTC_TIMER (typically about 4.34uS for ZX devices). The value of Register.RTCTimer Frequency may be useful for converting the return value to seconds. The array must contain at least 5 bytes (6 bytes for xmega devices), populated by a previous call to
GetMicroTime(). The return value will range from 0 to the equivalent of about 15,000 seconds. A return value of &HFFFFFFFF indicates that an overflow has occurred, i.e. an elapsed time that is too large to represent.

Please accept my apologies for the wrong answered.
 
According to the ZBasic manual:

"If the RTC is not enabled in your application, the resolution of the delay period is 1mS. If the RTC is enabled, the resolution is the same as an RTC tick period, i.e. 1/F_RTC_TICK (typically 1.95mS for ZX devices)."

I'm assuming you don't have the RTC enabled so the resolution is 1mS; that seems to be the only way you would get a reading of 33.33334 (RTC ticks=1800). That would make your resolution ~0.0185 RPM (next highest reading is 33.3518, next lowest is 33.3148)?

If RTC is enabled, then the resolution is 1.95mS. Your readings would be 33.3913 / 33.3550 / 33.3188 for RTC counts of 920 /921 /922.

Edit after your last post: Using RTC_TIMER would definitely give you better resolution (~0.00008 RPM).
 
Last edited:
Hi,
It is possible that the reading of 33.3333 was because I was adjusting the rpm to 33.3333 rpm by increasing /decreasing the pwd frequency. By controlling the rpm I was able to get the reading. I double check the reading with a tachometer and it was betting the of reading 33.333 since the meter just has 5 digits. Also when I reached the 33.3333 the neon strobe was locked showing that I was at 33.3333. I am not trying to show that your are wrong I just reporting the readings. Now, It is too late to try your suggestion since I dumped the turntable in the trash. I still have all the parts less the display in case somebody it is interesting to use it.
 
hi Taru

Hi Taru0221,

Thanks, i have been watching but a bit passive as i know nothing linux/C+ or what ever code is required, but i dont want to be a drain on those who do know, if you could show us a code and let me know what discplay(led/lcd)
it would work with and how to make the sensor (optical/hallefect?) that would make more sense to me.

Pictures are good:clown:

thanks
Johnny
 
Hi,
This is to let you that I converted my Turntable rpm display to run from Zbasic to Arduino UNO. For the sensor I used the TCRT5000 Single Channel Line Tracking Sensor Module and for the display from Mouser part number : 763-0216K3ZNSWBBW-V3. It is a 2 lines 16 character serial interface display. You can use any display since the display output can be modify/customize for the desire output message format. To get the pulse from the platen it require a reflective strip stick to the platen.

Attached are some pictures show my test jig using a Pioneer Turntable.
If your are still interesting please send me a PM so I can email the program.
 

Attachments

  • DSCF2979.jpg
    DSCF2979.jpg
    960.2 KB · Views: 1,943
  • DSCF2980.jpg
    DSCF2980.jpg
    418.8 KB · Views: 1,833