Translate

Friday 17 April 2020

Garrard Zero 100. From Zero to Hero.

Many moons ago, I was seduced by this oddball Garrard turntable.


It's that weird pantograph arm. It should track perfectly. I spotted this one, at one of those audio jumble meets. It's missing a lever or two, and the selector switches are sort of hanging there, the plinth battered and bruised.. £18 and it followed me home, much to the delight of the long and suffering Mrs Doz.

It's seen a bit of action. There's the usual "Garrard glue" to deal with, but the main issues are with the control switches...

There's some sort of mounting bracket missing or broken.

A quick look at the exploding diagram shows it's no 126...



I managed to score a few parts on eBay, but sadly not the bracket. Those levers are in better nick than mine though...

So a suitable bit of steel was cut and filed to shape...

That looks like it should do the job. There's an issue though. The screws originally fitted into the plastic top plate, where there's a reinforced bit. It's broken off...
I removed the levers (I wanted to change them anyway), and put some epoxy down to build up a layer to support the screws. 
and while that's going off, I swap the levers over, and sort out removing the sticky grease from the rest of the mechanism.. 
The speed change detent arm was exceptionally seized up, and required plenty of heat to get it to free up.










Once the epoxy had cured it was flattened off, and it was at this point I realised that the top plate was no longer secured to the chassis. as again there were sheered off screw fittings... a change of tack was required, there just isn't enough strength here......







The bracket is reversed, and bonded to the chassis with some of the UV cure adhesive I've tried before... now I take it the UV has only cured the outside part, but it seems to be holding. Where the plastic top plate is broken off, I used the glue gun to fill the void, and fit a screw through my previous epoxy repair to secure the top plate at the other side. The clamp is simply holding the top plate flush.




... and the following morning, all the gluing seems to be very strong... good. Pretty it isn't, but it's now at least functional.










The deck is flipped back over, and the platter removed, by removing the rubber mat, and removing the wire clip securing the centre spindle.
























The platter itself has the strobe markings on it's underside...











... which are viewed via a mirror in the "subterranian" strobe housing. It'll need removing to clean the mirror.










Two screws either side, and it drops down...












 ... and we can clean the mirror. The small plastic window can also be removed and cleaned.














A quick note on how the speed adjust works.
The manual speed adjustment knob under the speed selector operates a lever, which moves the idler up and down a tapered section on the motor drive shaft, thus changing the speed. A bit "lenco" really...











There's more grease to be cleaned up and replaced on the top. This lever is seized solid, and, once again, needed a bit of hot air to tempt it off.

The motor mounts are still supple, as is the idler, so that's good news.








Now to the Zero 100's arm. This is what interests me about this turntable ... it gives it it's name, Zero tracking error. The headshell actually moves as the arm moves across the record, removing the error. This one is horribly wobbly. Now because the headshell is articulated, it's never going to be the stiffest tonearm, but this is wobbling around from the pivot end.





One screw removes the perspex gimbal surround, allowing a better view.


Sure enough a tiny screw is missing, which secures the arm tube to the bearing. A replacement is found, dropped, lost and found again before being fitted.
















Now the arm is given a quick buff up to remove the worst of the corrosion on it's surface, and the brass cover on the counterweight is treated likewise.. Looking quite smart now :)









Fitting a cartridge. Now the Zero 100, in common with a few other Garrard decks of the time uses a convenient cartridge slide. Convenient that is, if you happen to have one... I knew mine was missing, so I'd previously stopped into my favourite purveyor of Garrard bits, and managed to procure a new-old-stock slide. The contacts are a bit tarnished, but that'll soon clean up.




My friend John had sent me a previously enjoyed AT95 a while back, so that was mounted onto the slide...











Normally the Zero 100 came with a perspex alignment gauge, that slid over the slider, and you just set your stylus onto the cross-hairs, and all is done. Obviously this was long-gone. As our arm compensates for any tracking error, using a conventional protractor and setting Stevenson, Baerwald etc is irrelevant.  After nearly starting a fight on a Garrard forum (some people eh?)  I hatched a plan... the arm should track something near parallel, so all I need is a line from the centre spindle out, move it about until our cartridge is on the line, move the arm in and out, and set the cartridge position so the line is followed.

A piece of cotton is pressed into service, and the cartridge position set. There is a light curve to the track, however.

Tracking weight and anti-skate are set up as per the manual.








And successfully plays through the workshop test LP, scratched and warped though it may be.










Now to think about doing something to tidy up the plinth.

Saturday 11 April 2020

NOAA APT reception on Raspberry Pi



Having been caught by the APT bug again recently (as you may have seen in a previous post) I thought I have a go at building a stand alone system.
I've had some results using my ageing Icom IC-706MKIIB and WXtoIMG on my Ubuntu computer, connected to my ham-radio 2m antenna, but this is less than ideal.
The Evesham receiver uses my employer's wide band Discone antenna, and manages to pull some decent signals in mostly, but doesn't have the required receiver bandwidth, as it's using my FT-817 under CAT control.

OK, Lets start with an antenna....

A QFH antenna would be perfect, but are difficult to make accurately. I found a superb article on a V-dipole antenna here. Some aluminium was duly ordered, and an antenna formed. Tests with the IC-706 gave much improved results. 

The antenna was mounted to a box, using some ordinary chock-block, and also added a low noise RF pre-amp, and bias-tee to power the whole thing from the co-ax (I eventually shortened that piece of co-ax looped round!)








Some pipe clips were fitted so it would be easy to mount.











The box was sealed from the elements with some liquid rubber.












A low current LED was also added to show the presence of bias.












The Receiver

Raspberry Pi 3 Model B+
I loved the idea of a self-contained receiver. It can sit on the shelf, doing it's thing. Some parts were duly procured, a small case, a Raspberry Pi 3 Model B+, an appropriate micro SD card, and a slightly posher SDR tuner with a TXCO (big mistake).


I followed this Instructable to get the basic receiver up and running. It didn't work, so I've updated it...

Grab yourself a fresh install of Raspian stretch lite. I did try a later Raspbian, but Predcit doesn't play nicely with it. Set up SSH, because it helps...

sudo raspi-config

and set up your Pi if you want to change the password, sort out the wifi, I always expand the filesystem too... Allow the Pi to reboot.

then

sudo apt-get update
sudo apt-get upgrade
sudo reboot

So everything's up to date, once we're going again...

sudo apt-get install libusb-1.0 cmake git sox at predict libxft2:armhf

sudo nano /etc/modprobe.d/no-rtl.conf

and add the following to the text file.


blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830

CTRL+X to save and quit.

cd ~
git clone https://github.com/keenerd/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
cd ~
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/

sudo reboot

wget http://www.wxtoimgrestored.xyz/beta/wxtoimg-armhf-2.11.2-beta.deb
sudo dpkg -i wxtoimg-armhf-2.11.2-beta.deb

Now reboot, and plug in your SDR....

sudo rtl_test

You should see something like the following...

pi@raspberrypi:~ $ rtl_test
Found 1 device(s):
  0:  Generic, RTL2832U, SN: 77771111153705700

Using device 0: Generic RTL2832U
Found Rafael Micro R828D tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 
Sampling at 2048000 S/s.

Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.

Reading samples in async mode...

Press CTRL+C to get out of that ... 

As the original instructable says, if you get any errors there, you'll need to troubleshoot them...


You can now type

predict

and follow the instructable from part 3, until you get to "Once all three scripts have been created, we need to make the executable, by issuing the following commands:"

You'll need to add sudo ...

sudo chmod +x *.sh

Now you can proceed with crontab-e as described...

OK, except thing's weren't OK.

Every time I recorded I just got static :(

Nothing, nada.

I checked my dongle on my main PC, and it worked great. On the Raspberry Pi, it passed the rtl_test every time.... I was convinced there was something incompatible with the "posh" SDR receiver. This project stopped here, for about a year... then Covid-19 struck, and it's time to resurrect it!

So I bit the bullet and purchased the cheapest RTL dongle I could find....

Bingo...!

I modified the receive_and_process_satellite script to create some prettier pictures, add some friendly folder names, put the received files there, delete the .wav and map files, and chuck the lot onto my web space. I also added samba on to the raspberry pi to make accessing it directly a doddle.

#!/bin/bash

# $1 = Satellite Name
# $2 = Frequency
# $3 = FileName base
# $4 = TLE File
# $5 = EPOC start time
# $6 = Time to capture

# reads and creates folder with current date / time (i.e 05-30-2019_07-48 *windows friendly*)
NOW=$(date +%m-%d-%Y_%H-%M)
mkdir /home/pi/weather/Folder${NOW}

sudo timeout $6 rtl_fm -f ${2}M -s 60k -g 45 -p 55 -E wav -E deemp -F 9 - | sox -t wav - $3.wav rate 11025
PassStart=`expr $5 + 90`
if [ -e $3.wav ]
then
/usr/local/bin/wxmap -T "${1}" -H $4 -p 0 -l 0 -o $PassStart ${3}-map.png
/usr/local/bin/wxtoimg -m ${3}-map.png -e ZA $3.wav ${3}.png
/usr/local/bin/wxtoimg -m ${3}-map.png -e NO $3.wav ${3}.NO.png
/usr/local/bin/wxtoimg -m ${3}-map.png -e MCIR $3.wav ${3}.MCIR.png
/usr/local/bin/wxtoimg -m ${3}-map.png -e MSA $3.wav ${3}.MSA.png
fi

# copies files to the new folder and deletes the original ones
cp /home/pi/weather/*.png /home/pi/weather/Folder${NOW}/
rm /home/pi/weather/Folder${NOW}/*-map.png
rm /home/pi/weather/*.png
rm /home/pi/weather/*.wav
wput -B -u --dont-continue --reupload --tries=5 --binary --verbose --reupload ftp://yourusername:andpassword@yourwebspaceprovider.com/ ~/weather/Folder*/*.*

The Raspberry Pi, Bias T (getting it's 5 volt supply from the raspberry Pi itself), and the SDR receiver are all mounted up in a small case. Sadly I didn't notice the Raspberry Pi had moved to an odd angle before the epoxy set :( ... nevermind. 







The case has an attractive smoked top, which allows me to see the status LEDs. Workshop penny shown for scale.










And finally Mrs Doz states the antenna can live on the corner of the shed.  Mr Pigeon agrees.




















.... and quite unbelievably, whilst the antenna was on the ground during assembly....













... it managed to receive this!

Saturday 28 March 2020

Hospital radio streaming codec and monitor.

Things have been getting a bit, well, unreliable at the hospital radio studio of late. We've been plagued with power outages, and things don't recover well.

Mainly the old Ubuntu 16 box, which supplies shoutca.st with the MP3 stream.

It usually comes back on OK, but half the time fails to run the darkice service on start-up. No amount of fiddling the cron job that starts the service has helped.

What's needed is a system that checks and monitors itself, and attempts to repair what's broken.

Here's what I've got in mind.

Two Raspberry Pi's, one transmitting, one receiving. The receiver will be monitored to ensure that the stream is up.

The Pi's audio will be fed into and internet-equipped Arduino of some description, which will do the monitoring for us.

It'll work something like this:


  • If the received audio is ok, do nothing. All is well.
  • If the received audio is missing, check there's audio coming in to the transmitter. If there isn't then there's nothing we can do except to flash a "something's up" LED to get someone to fix it.
  • If the received audio is not present, but there's audio to the transmitter, check there's internet access; If there isn't there's little we can do, except for flash a "something's up" LED and wait for it to come back. If there is, then we need to take some action:


  1. Shut down and restart the receiver, just in case it's crashed. If that doesn't work, then ...
  2. Shut down and restart the transmitter, just in case that's crashed.


OK, so there are a good few guides on getting internet radio receivers to run on a headless Pi. I've tried a couple, and have found one that is very tolerant of dodgy internet connections, it's called mplayer, it's a bit processor hungry for what it is, but runs on a model A+ Pi I have.  It comes back if the internet goes missing as soon as it recovers, and starts reliably on boot. I did this a while back, and it's been sat on the workshop shelf for ages, reliably receiving :)

It's dead easy to install..

apt-get install mplayer

add a cron job...

crontab -e

and add the following line...

@reboot     sleep 29; nohup mplayer -loop 0 http://188.165.192.5:8525/stream 2>&1 > /dev/null

(replacing the IP address and mount point with your own, unless you want to listen to Cotswold hospital radio!)

You may need to adjust the output volume.. Just type

alsamixer

adjust as required, then type

sudo alsactl store

to store the setting.

Now we need to add a bit of Python script in to safely reboot the monitor receiver in the event of a failure, and also add a shutdown function, so we can safely shut our unit down, without risking corruption of the memory card.

We are going to use the Pi's GPIO pins 18 and 23. Pulling 18 low will instigate a safe shutdown. Pin 23 will force a shutdown and restart.

I've copied the code from here, but duplicated it here as well, just in case it ever goes missing.

First off SSH into the Pi...

Once logged in, type

mkdir Scripts

cd Scripts

touch shutdown_pi.py

sudo nano shutdown_pi.py

Then cut and paste this code into the editor.

#!/bin/python
# Simple script for shutting down the raspberry Pi at the press of a button.
# by Inderpreet Singh https://www.element14.com/community/docs/DOC-78055/l/adding-a-shutdown-button-to-the-raspberry-pi-b

import RPi.GPIO as GPIO
import time
import os

# Use the Broadcom SOC Pin numbers
# Setup the Pin with Internal pullups enabled and PIN in reading mode.
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_UP)

# Our function on what to do when the button is pressed
def Shutdown(channel):
        os.system("sudo shutdown -h now")
def Restart(channel):
        os.system("sudo shutdown -r now")

# Add our function to execute when the button pressed event happens
GPIO.add_event_detect(18, GPIO.FALLING, callback = Shutdown, bouncetime = 2000)
GPIO.add_event_detect(23, GPIO.FALLING, callback = Restart, bouncetime = 2000)

# Now wait!
while 1:
        time.sleep(1)


Press CTRL + X and yes to save and exit

now type

sudo nano /etc/rc.local

and add this line just above the last exit 0

python /home/pi/Scripts/shutdown_pi.py &

now safely shutdown the pi

sudo shutdown now

wait for a minute and remove the power.

Remove the memory card and make an image of it and keep that safe, just in case...

Job done.

The transmitter is a new Raspberry Pi 3, and I followed the instructions here to load up darkice. I don't need to run icecast, as this is provided to us by remotely by shoutca.st, I just need to send the stream to them. I also ignored the warning about not installing the latest version of Raspbian. Seems to work great, never fails to start reliably, and seems to be tolerant of errant internet connections. You'll need an external USB sound card, as the pi's inbuilt card can't record.

Also, add in the shutdown and reboot python script in the same manner as before.

Image the memory card just in case!

Now our incoming audio is balanced, so we need a balanced line receiver, a buffer for the received audio monitoring, and whilst we're there, a couple of little drivers for some VU meters (because meters are cool), which we can also use to feed our Arduino monitor.

As an aside, I've now made the jump to Kicad, as since Autodesk have purchased Eagle, they no longer wish to honour my original Cadsoft licence, without incurring unwanted expense.

A circuit is conjured up ...



A board designed... 

And modelled ...
And turned into reality using toner transfer.
Loving Kicad...

U1 and U2 form the balanced to unbalanced audio receiver, and it's output level is adjusted by RV3. This then feeds the transmitting Pi's external sound card. There's also a buffer (U2A) which feeds a small monitoring amp. ICU2B is a variable gain precision rectifier, the output of which is used to drive the VU meter, and also feed one of the Arduino's A to D converters.

The same circuit is also duplicated and used to buffer the audio from our receiving Pi to drive the monitoring amp, and to drive a VU meter and the Arduino. 

There's a regulated +/- 15V supply. As it turns out I had a suitable switched mode supply, with +/- 12V and 5V outputs, so I utilised that, and just bypassed the regulators.

An Arduino nano was pressed into service, to do the monitoring and control.


Received rectified monitor audio is passed from the analogue PCB from the VU drive circuit to A0 , rectified transmitted audio is received likewise, and fed to A3. A front panel mounted LED is connected to Digital pin 3, to serve as our error indicator. I'll also make the Arduino Nano's USB interface available on the rear panel to facilitate debugging/ updating as required.

An Ethernet module (EN28J60) is connected to the Arduino's SPI interface, and is powered from a 3.3V regulator derived from the main +5V supply. The EN28J60 consumes around 120mA, and that's more than the available 3.3V supply on board the nano. The EN28J60 module is provided with network access from the same hub that distributes the network to the Raspberry Pi's.

Two additional outputs (D5 & D6) on the Arduino are used to pull a GPIO pin low on the respective Pi to initiate a graceful reboot, and D7 is diode "anded" to shutdown the two Pi's. A push button is connected to D2 to shut down the system. 

If it all goes really badly wrong, I've also added two reset buttons on the front panel to manually hard reset the Raspberry Pi's (and arduino, via a diode "and").

D4 is coupled back to the arduino's reset pin, to reset the controller completely. This is coded to happen if we fail to obtain a DHCP lease more than 5 times.
The VU illumination is connected to D8 via a BC547 transistor. This is used to flash the VU illumination during shutdown to give the user some feedback that shutdown is in progress.

In the event of failure of the monitor audio, the transmit audio is checked.

If the transmit audio has failed, the error LED on the front panel will flash 3 times. The monitor circuit will repeat these tests until audio is resumed.

If the monitor audio has failed, and transmit audio is present, the controller checks internet connectivity. If the internet connectivity is not present, attempts are made to restore DHCP. If this process fails, the fault is presumed to be external, and the error led will flash 5 times, followed by illuminating permanently. If the internet does not recover after 5 DHCP renew attempts, the controller will restart and repeat the process.

If the monitor audio has failed, TX audio present, and internet OK, two possibilities remain. Either the monitor receiver computer has crashed, or the TX computer has crashed. Firstly the controller will shut down and restart the monitor computer. If this fails , the TX computer is restarted.


A board is designed, but I've made it up on perfboard...










Arduino code can be found on my git https://github.com/andydoswell/transmitter-monitor

Power is supplied to the whole rack from a switched mode supply, recovered from some redundant equipment... It supplies +/-12V and 5V. Excellent.

Putting things together and running some tests, and there's an irritating 4KHz whistle on the audio, both transmitted and on the in built monitor amp... nasty

Scoping up the outputs from the power supply shows there's a 4KHz tone superimposed on our 5V rail. It's about 170mV, and enough to cause the annoying whistle. Tests show this isn't down to a failure in the supply (I suspected caps, but changing them out made no discernible improvement)

A simple C-L-C filter is quickly made up from some junque parts, and greatly improves the situation.

Much improved.

And the finished product, ready for installation once this damn virus goes away...


Monday 23 March 2020

Cambridge Azur 650C compact disk player - no audio

I popped into my favorite record shop, Desirable Vinyl in Evesham, to have a browse. 





Jason the owner said "Just the man... I've a customer who's CD player has broken, can you take a look?"

Yeah, why not...

It's a Cambridge Audio Azur 650C, and there's no audio.


A beautifully made thing... it becomes rapidly apparent that the muting relay has stuck...

A new one is procured and fitted, and restores the audio... :)

They tray's a bit reluctant to open, however.. A simple job, the belt has had it. It's tucked under the tray... 

In common with most modern transports, the tray is released but a catch, in this case either side of the tray. Just open the tray, switch the machine off, and carefully release both catches and slide the tray out... 

Then you can just slide the belt out from the two pulleys , and replace it.












Another saved from landfill.

Wednesday 18 March 2020

Classic Mini LCD surround.

By popular demand, and with the kind permission and generosity of Pyers, here's the STL file for 3D printing the escutcheon to fit a 16x2 lcd into the top dash rail of a classic mini.