If you want to go high bandwidth, fiber optics is the way to go. From trans-oceanic cables to the yet-unseen ‘fiber to every home,’ fiber optics allows a lot more bandwidth than a copper cable. In low-bandwidth applications, fiber optic cable transmits data using one color of light. There’s a way to get more bandwidth out of a fiber optic cable, as [Shahriar] found out while experimenting with an RGB LED.
For his experiment, [Shahriar] used a BlinkM programmable RGB LED and a Sparkfun color sensor. In fiber optic lines with one light, it is possible to send many simultaneously using PWM, but noise becomes a problem at high data rates. Using an RGB LED, [Shahriar] sends three levels of Red, Green, and Blue to transmit 9 bits at a time – perfect for sending a byte with a parity check in one quick light burst.
[Shahriar]‘s technique is exactly how the pros pump massive amounts of data through a single fiber optic cable. All the tools, code, and MATLAB functions are available on [Shahriar]‘s site, ready to be used by anyone wanting to experiment for themselves.
In the video after the break, [Shahriar] breaks everything down, including the tools, theory, and actual circuits. It’s an amazing video demo, so thorough we’re wondering if [Shahriar] has any teaching ambitions.
Continue reading “Color multiplexing through fiber optics”
[Andy] stuffed some more RAM onto an Arduino Mega and his three-part walk through on the design, construction, and software is a great read and one of the more ‘hard core’ Arduino builds we’ve seen.
The build is centered around a 512K × 8 SRAM module [PDF warning]. Because the RAM is divided up into about 512,000 chunks of 8 bits, the Arduino has to access the RAM through 16 ‘address lines’, then send the data through 8 ‘data lines’. [Andy] didn’t want to use up 24 pins on his Arduino, so he used a latch to multiplex the lowest 8 address lines and the data lines together. With the 512KB RAM expansion installed, the Mega is able to address a whopping 520 Kilobytes.
We’ve seen a few builds that have been limited by the amount of RAM available in the Arduino, like capturing video and some robot hacks, and adding some more RAM to those builds would be great. Multiplexing data and address lines using a latch can be expanded even further, but 520KB ought to be enough for anybody.
[Rajendra Bhatt] wrote in to share a tutorial he put together demonstrating the basics of using LED dot matrix displays. While this subject might be old hat to many out there, his helpful walkthroughs are geared more towards beginners who are exploring various electronics concepts for the first time.
He explains the theory behind LED displays using a PIC-driven 5×7 matrix as an example. He discusses persistence of vision and how tricking the human eye can save you quite a bit of time and a whole lot of pins. Multiplexing is broken down into its most basic steps, which [Rajendra] illustrates by showing how a letter would be drawn on the LED display one column at a time. The use of a ULN2803A Darlington Array is also discussed, and he details why it is used when pulling the five columns of LEDs to ground.
The only portion of the tutorial we thought could be expanded upon was the programming section. While he does show how each letter of the alphabet can be displayed via a series of five hex values, he does not cover the “why” part of the process. Obviously while anyone familiar with binary and hex can figure it out in pretty short order, we think that it would be a great place to pause and expand the readers’ knowledge even more.
Overall it’s a useful tutorial, and most beginners would likely find it quite helpful.
[punkky] has been documenting his adventures building digital clocks. They each use six 7-segment LED displays, but he’s been gradually changing how they are built. The first version used a CMOS BCD-to-7-sement latch on each display, which is tied to a PIC16F627a. For the next run, he added multiplexing, so he could drive all the segments using just thirteen pins. He’s posted a final schematic with code and details of how the clock timing actually works.