CNC machines can be very noisy, and we’re not talking about the kind of noise problem that you can solve with earplugs. With all those stepper motors and drivers, potentially running at high-speed, electrical noise can often get to the point where it interferes with your control signals. This is especially true if your controller is separated from the machine by long cable runs.
But electrical noise won’t interfere with light beams! [Musti] and his fellow hackers at IRNAS decided to use commodity TOSLINK cables and transmitter / receiver gear to make a cheap and hackable fiber-optic setup. The basic idea is just to bridge between the controller board and the motor drivers with optical fiber. To make this happen, a couple of signals need to be transmitted: pulse and direction. They’ve set the system up so that it can be chained as well. Serializing the data, Manchester encoding it for transmission, and decoding it on reception is handled by CPLDs for speed and reliability.
The team has been working on this project for a while now. If you’d like some more background you can check out their original design ideas. Design files from this released version are up on GitHub. A proposed improvement is to incorporate bi-directional communications. Bi-directional comms would allow data like limit-switch status to be communicated back from the machine to the controller over fiber.
This optical interface is in service of an open-source plasma cutter design, which is pretty cool in itself. And if the IRNAS group sounds familiar to you, that may be because we recently ran a story on their ambitious gigabit ethernet-over-lightbeam project.
With Arduino library support on an ARM Cortex M4 processor, it’s no surprise that we’re fans of the Teensy 3.1. And lately, [Paul Stoffregen] has been building out the Audio Library for this platform, making it even more appealing to the synth / audio geeks among us. And now, with just the addition of a highfalutin LED and some software, the Teensy can output digital audio over optical fiber.
S/PDIF, and more specifically optical TOSLINK, uses LED light sent down an optical fiber to encode audio data. The advantage of this over any voltage-level signals (like with regular wires) is that the source and destination devices aren’t electrically connected at all, which gets rid of the dreaded ground loop hum and any RF interference.
An S/PDIF audio data stream is a bit complex, but if you’re interested [Micah Scott] has a fantastic dissection of it up on her blog. Of course, you don’t have to know anything about any of that to simply use S/PDIF with the Teensy Audio Library.
We love open source hardware and software because of the collaborations that make ultra-rapid development of niche stuff like this possible. You can follow along with the development of the Teensy’s S/PDIF capabilities on the PJRC forum. Contributor [Frank B] modestly claims that “everything was already on the internet”, but that doesn’t make it any less cool that they got from zero to working library in a few weeks. (And note the clever use of a precomputed lookup table for speed.)
On the hardware side, [Paul] has posted up his adapter board for a cheap, but very professional looking, optical TOSLINK sender. But if you’re feeling ghetto, you can simply use a red LED pointed just right into the optical cable.
The end result? Lossless transmission of CD-quality audio from an Arduino-esque microcontroller, sent on a beam of light, for less than the cost of a latté.
[Mike Field] just finished implementing SPDIF generation on an FPGA. SPDIF is an industry standard for transmitting digital audio signals; the acronym stands for Sony/Philips Digital Interconnect Format. It’s been around for more than a decade and since it’s found on most home-audio equipment, building an SPDIF output into your projects may be quite a desirable feature. [Mike] mentions several ideas for this functionality like building high-end test equipment, or providing a high-quality output for electronic instruments.
He first jumped into analyzing the specification in order to determine the hardware requirements. Due to some issues with jitter, he found it necessary to use a 100 MHz clock signal. This pushes the jitter down to +/- 5ns of jitter, which he concedes may raise the hackles of audio purists, but does satisfy the published standard. Output requires just one pin of the FPGA and the five components seen above. A hex inverter (74HC04) voltage divider, capacitor, and RCA connector transmit the 0.5V signal to your audio-receiver of choice. Of course, since TOSLINK fiber optic connectors use the same protocol, you could redesign the output and make this an optical connection.