Digital Tachometer for record player (LCD display)

Hello robnik33,
Thank you for all details and advises. I go for Kp then.
I might presented what I see incorrectly to you.
When initial speed is bit high (right after system’s start), the correction is working very nice. I’m very close to the target speed for 5 min. Then, and after about 5-6 min, when motor is already warm, speed is intending to go bit down and no correction till it’s reaching 33.311. Then algo kicks in with pulses. However, these pulses are stops when speed is equal to about 33.320. It can submit one or two more pulses to get it closer to 33.333, but it is not happening and it is stays there. It would be nice to have same response from both directions: when it’s going from High to the target and when it is going from LOW to the target. That is my fight now.
 
robnik33 hit on a key point: The minimum step for speed change is 0.01Hz which will limit the resolution of the target speed. This project was never intended for automatic adjustment; if it was, I would have used a different scheme to increase the resolution (the Eagle/Falcon & now SOTA Condor has a frequency resolution that is 18x finer or 1/1800 Hz). The frequency resolution of the SG4 was kept the same as the VPI SDS so that manual adjustment would not take forever to arrive at a target speed.

That being said, it was quite an accomplishment to get the auto correct to work as well as it does on your system. Good work robnik33!

Bill, thanks for all your help and kind words. If you ever decide (or are allowed) to build an integrated controller + tach, I'd love to build one!
 
Alexkosha,

Your comment on asymmetrical behavior prompted me to go thru the code again and I spotted an error in how I rounded the absolute error to m, the number of button pushes.

Instead of this as now:

ADJFREQ = PIDOUT * 200 / 3 + 0.5; //* amount of frequency adjustment needed in 0.01 Hz (# button pushes, + 0.5 offset)

m = abs(int(ADJFREQ)); //* number of button pushes

Try this:

ADJFREQ = PIDOUT * 200 / 3; //* amount of frequency adjustment needed in 0.01 Hz

m = int(abs(ADJFREQ)+0.5); //* integer number of button pushes, offset by 0.5

The earlier rounding was not symmetric, potentially giving a different result if the absolute error was positive or negative. I am testing it now, it does seem a bit "jumpier" with the stylus down. You may need to adjust the PID parameters as well.
 
Hi Robert, I totally forgot to ask you... Is any way to add total rotation count to the code and to preset it on display? I know it can be stored on eprom, but can’t be erased/reset without code reload to arduino. That feature might be useful for tracking platter bearings periodical maintenance.
 
Member
Joined 2014
Paid Member
I'm not completely sure this is the correct thread to post in, but I have recently completed installation of Steve's Zeus controller into a Linn LP12. I bought the fully assembled version so it was a piece of cake. The instruction manual is amazing. Better than any commercial document and even more so for DIY stuff! I am very pleased with the operation of the controller. It quickly brings the table to correct speed and keeps it rock solid. I will eventually test with my Kenwood wow & flutter meter, but using a separate tachometer, I'm getting fluctuation of about 0.006%.

I highly recommend this controller. Hopefully there will be another group buy!
 

Attachments

  • DSC_5071.jpg
    DSC_5071.jpg
    431.1 KB · Views: 526
Finally finished my combined tachometer and SG4 motor controller! Got the front panel back from Front Panel Express. The enclosure I used was overkill with heatsinking, but it sure was nice to have an 8mm thick front panel that I could countersink 3mm acrylic for the displays.

It runs cool and works great managing speed. Thanks again to Bill and others who contributed time and code.


Anyone want to tackle adding a stylus timer?

I have also attached the latest code (Tach_7Seg_R7) consolidating changes covered in various posts.
 

Attachments

  • 20200911_125514.jpg
    20200911_125514.jpg
    715.5 KB · Views: 573
  • 20200911_122210_HDR.jpg
    20200911_122210_HDR.jpg
    1,007.8 KB · Views: 577
  • Tach_7Seg_R7.txt
    8.3 KB · Views: 152
I'm not completely sure this is the correct thread to post in, but I have recently completed installation of Steve's Zeus controller into a Linn LP12. I bought the fully assembled version so it was a piece of cake. The instruction manual is amazing. Better than any commercial document and even more so for DIY stuff! I am very pleased with the operation of the controller. It quickly brings the table to correct speed and keeps it rock solid. I will eventually test with my Kenwood wow & flutter meter, but using a separate tachometer, I'm getting fluctuation of about 0.006%.

I highly recommend this controller. Hopefully there will be another group buy!


It is not right thread. Steve opened dedicated thread for Zeus controller.
 
Alex,

Kp is the current error, the difference in the current speed and the desired speed setpoint (33.3/45). So Kp at 0.8 takes 80% of this value as the proportional correction term. In general, the smaller the value the longer time it will take to reach the setpoint. Values above 1 may cause overshoot or oscillation because you are correcting more than the current error. For my Lenco, I am using int kp = 1, ki = 0.6, kd = 0.4. I've been running this for months and it is working great.

The thing about PID tuning is all systems will react differently. In general, try values of 1 or less for all three.

What turntable are you using and what are your values for Ki and Kd when you are getting no response with Kp=0.8?
 
Hi Robert,

My TT is Conrad Johnson Sonographe SG-3. I fully rebuilt it and Premotec 31813 motor replaced old Hurst. I use kp = 1, ki = 0.4, kd = 0.2 now. It is Ok, but I see some overshoot time to time. I assumed that 0.9 or 0.8 for Kp might help.
 

Attachments

  • image0.jpeg
    image0.jpeg
    845.4 KB · Views: 338
  • IMG_3630.jpg
    IMG_3630.jpg
    838.4 KB · Views: 343
So I decided to build a second unit and refined the physical design a bit more. I stripped the covers off and built the power supply into the chassis so now I have an IEC connector for input power. The rest of the internals are the same. The case is slimmer with no unnecessary heat sinking. I used Front Panel Express again for a professional look.
 

Attachments

  • 20201031_121941.jpg
    20201031_121941.jpg
    747.8 KB · Views: 254
  • 20201031_121116_HDR.jpg
    20201031_121116_HDR.jpg
    995.6 KB · Views: 255
  • 20201031_123055.jpg
    20201031_123055.jpg
    973 KB · Views: 239
  • 20201031_120228.jpg
    20201031_120228.jpg
    889.6 KB · Views: 229
Excellent implementation. I wish to have company near me witch can be dealing with front panels millings. I use local machine shop and they are doing an excellent cuts, but quite pricey ($80 per hour).

Here is my box attached.

Question to Robert.

Does PID can deal with 20/27Hz setup (instead of 60/81) ? I can’t find any line in code limiting PID initial frequency in Tacho. I’m finalizing setup with DC motor connected to full set from Pyramid devices with same SG4. So far, can’t get any luck with PID that it is not working there. My motor is getting to 300RPM with 19.50Hz. That speed is delivers 33.333 to my sub-platter and platter.
Please let me know.
 

Attachments

  • SG4.jpg
    SG4.jpg
    561.9 KB · Views: 190
Last edited:
It's funny, choosing switches took the most time!

Lighted power switch, 19mm
19mm push button switch black press button Led power mark lamp button latching | eBay

Black toggle switch, 15mm
5Pcs SCI R13-402 Round 2Pin ON-OFF SPST 2Position Toggle Switch 3A 250VAC | eBay

Momentary on switches, 12mm
12mm Waterproof Flat Stainless Steel Momentary Power Push Button Switch Black | eBay
Note that these are very small, tip of the finger to engage, also took months to arrive from China. Used in 2nd build.

These below are easier to engage as the whole button protrudes, used in first build (see side-by-side photo)
https://www.amazon.com/dp/B01G821G6A?ref=ppx_pop_mob_ap_share

Also Alex, Front Panel Express has an app you download to design and order your panel online. Cost was around $80, each panel took about a week. They are located in Kent, WA