New Part Day: SPI RAM and a Video Controller

Generating video signals with a microcontroller or old CPU is hard if you haven’t noticed. If you’re driving even a simple NTSC or PAL display at one bit per pixel, you’re looking at a minimum of around 64kB of RAM being used as a frame buffer. Most microcontrollers don’t have this much RAM on the chip, and the AVR video builds we’ve seen either have terrible color or relatively low resolution.

Here’s something interesting that solves the memory problem and also generates analog video signals. Yes, such a chip exists, and apparently this has been in the works for a very long time. It’s the VLSI VS23s010C-L, and it has 131,072 bytes of SRAM and a video display controller that supports NTSC and PAL output.

There are two chips in the family, one being an LQFP48 package, the other a tiny SMD 8-pin package. From what I can tell from the datasheets, the 8-pin version is only an SPI-based SRAM chip. The larger LQFP package is where the action is, with parallel and SPI interfaces to the memory, an input for the colorburst crystal, and composite video and sync out.

After looking at the datasheet (PDF), it looks like generating video with this chip is simply a matter of connecting an RCA jack, throwing a few commands to the chip over SPI, and pushing bits into the SRAM. That’s it. You’re not getting hardware acceleration, you’re going to have to draw everything pixel by pixel, but this looks like the easiest way to generate relatively high-resolution video with a single part.

Thanks [antibyte] for the tip on this one.

Spectrum Analyzer on the Cheap

Provided you have an NTSC-compatible TV you can build yourself a really inexpensive spectrum analyzer. From there you just need one trivial piece of hardware to complete this build. [Bruce Land] has come up with a spectrum analyzer that shouldn’t cost any more than $5, if that’s what’s been keeping you from adding this tool to your workbench!

The spectrum analyzer is based on a PIC32 microcontroller which was previously proven in his Oscilloscope project. [Bruce] has managed to squeeze quite a bit out of this robust chip; the spectrum analyzer has 450 kHz bandwidth and runs a 256 Hz TV display and can output over 30 updates per second. The microcontroller runs the Fast Fourier Transform (FFT) to do calculations, with great results.

[Bruce] notes that the project was based on TV framework from another project, and that the FFT was added on top of that. Be sure to check out the source code on the project site if you’ve been on the hunt for an inexpensive spectrum analyzer, and if you need something with more processing power but only slightly more money, check out the FFT that runs on the Raspberry Pi’s GPU.

Whiteboard Clock Draws the Time

[Maurice] recently built a clock that draws the time (Google Doc) on a white board. We’ve seen plenty of clock hacks in the past, and even a very similar one. It’s always fun to see the different creative solutions people can come up with to solve the same problem.

This device runs on a PIC16F1454 microcontroller. The code for the project is available on GitHub. The micro is also connected to a 433MHz receiver. This allows a PC to keep track of the time, instead of having to include a real-time clock in the circuit. The USB connector is only used for power. All of the mounting pieces were designed in OpenSCAD and printed on a 3D printer. Two servos control the drawing arms. A third servo can raise and lower the marker to the whiteboard. This also has the added benefit of being able to place the marker tip inside of an eraser head. That way the same two servos can also erase the writing.

The communication protocol for this systems is interesting. The transmitter shows up on [Maurice’s] PC as a modem. All he needs to do to update the time is “echo 12:00 > /dev/whiteboard”. In this case, the command is run by a cron job every 5 minutes. This makes it easy to tweak the rate at which the time updates on the whiteboard. All communication is done one-way. The drawing circuit will verify the checksum each time it receives a message. If the check fails, the circuit simply waits for another message. The computer transmits the message multiple times, just in case there is a problem during transmission.

Non-Arduino powered by a piece of Computing history

Sometimes it is a blessing to have some spare time on your hands, specially if you are a hacker with lots of ideas and skill to bring them to life. [Matt] was lucky enough to have all of that and recently completed an ambitious project 8 months in the making – a Non-Arduino powered by the giant of computing history – Intel’s 8086 processor. Luckily, [Matt] provides a link to describe what Non-Arduino actually means; it’s a board that is shield-compatible, but not Arduino IDE compatible.

He was driven by a desire to build a single board computer in the old style, specifically, one with a traditional local bus. In the early days, a System Development Kit for Intel’s emerging range of  microprocessors would have involved a fair bit of discrete hardware, and software tools which were not all too easy to use.

Back in his den, [Matt] was grappling with his own set of challenges. The 8086 is a microprocessor, not a microcontroller like the AVR, so the software side of things are quite different. He quickly found himself locking horns with complex concepts such as assembly bootstrapping routines, linker scripts, code relocation, memory maps, vectors and so on. The hardware side of things was also difficult. But his goal was learning so he did not take any short cuts along the way.

[Matt] documented his project in detail, listing out the various microprocessors that run on his 8OD board, describing the software that makes it all run, linking to the schematics and source code. There’s also an interesting section on running Soviet era (USSR) microprocessor clones on the 8OD. He is still contemplating if it is worthwhile building this board in quantities, considering it uses some not so easy to source parts. If you are interested in contributing to the project, you could get lucky. [Matt] has a few spares of the prototypes which he is willing to loan out to anyone who can can convince him that they could add some value to the project.

Continue reading “Non-Arduino powered by a piece of Computing history”

Animated LED Valentine Heart

With only a week left until Valentine’s day, [Henry] needed to think on his feet. He wanted to build something for his girlfriend but with limited time, he needed to work with what he had available. After scrounging up some parts and a bit of CAD work, he ended up with a nice animated LED Valentine heart.

[Henry] had a bunch of WS2812 LEDs left over from an older project. These surface mount LED’s are very cool. They come in a small form factor and include red, green, and blue LEDs all in a single package. On top of that, they have a built-in control circuit which makes each LED individually addressable. It’s similar to the LED strips we’ve seen in the past, only now the control circuit is built right into the LED.

Starting with the LEDs, [Henry] decided to build a large animated heart. Being a stickler for details, he worked out the perfect LED placement by beginning his design with three concentric heart shapes. The hearts were plotted in Excel and were then scaled until he ended up with something he liked. This final design showed where to place each LED.

The next step was to design the PCB in Altium Designer. [Henry’s] design is two-sided with large copper planes on either side. He opted to make good use of the extra copper surface by etching a custom design into the back with his girlfriend’s name. He included a space for the ATMega48 chip which would be running the animations. Finally, he sent the design off to a fab house and managed to get it back 48 hours later.

After soldering all of the components in place, [Henry] programmed up a few animations for the LEDs. He also built a custom frame to house the PCB. The frame includes a white screen that diffuses and softens the light from the LEDs. The final product looks great and is sure to win any geek’s heart. Continue reading “Animated LED Valentine Heart”

Watt Meter build walks you through Power Measurement basics

You almost never hear of a DC Watt Meter – one just does some mental math with Volts and Amps at the back of one’s head. An AC Watt Meter, on the other hand, can by pretty useful on any workbench. This handy DIY Digital AC Watt Meter not only has an impressive 30A current range, but is designed in a hand-held form factor, making it easy to carry around.

The design from Electro-Labs provides build instructions for the hardware, as well as the software for the PIC micro-controller at its heart. A detailed description walks you through the schematic’s various blocks, and there’s also some basics of AC power measurement thrown in for good measure. The schematic and board layout are done using SolaPCB – a Windows only free EDA tool which we haven’t heard about until now. A full BoM and the PIC code round off the build. On the hardware side, the unit uses MCP3202 12 bit ADC converters with SPI interface, making it easy to hook them up to the micro-controller. A simple resistive divider for voltage and an ACS-712  Hall Effect-Based Linear Current Sensor IC are the main sense elements. Phase calculations are done by the micro-controller. The importance of isolation is not overlooked, using opto-isolators to keep the digital section away from the analog. The board outline looks like it has been designed to fit some off-the-shelf hand-held plastic enclosure (if you can’t find one, whip one up from a 3D printer).

Although the design is for 230V~250V range, it can easily be modified for 110V use by changing a few parts. Swap the transformer, change the Resistive voltage divider values, maybe some DC level shifting, and you’re good to go. The one feature that would be a nice upgrade to this meter would be Energy measurements, besides just Power. For an inside look at how traditional energy meters work, head over to this video where [Ben Krasnow] explains KiloWatt Hour Meters

 

Arduino Tetris on a Multiplexed LED Matrix

[Alex] needed a project for his microcomputer circuits class. He wanted something that would challenge him on both the electronics side of things, as well as the programming side. He ended up designing an 8 by 16 grid of LED’s that was turned into a game of Tetris.

He arranged all 128 LED’s into the grid on a piece of perfboard. All of the anodes were bent over and connected together into rows of 8 LED’s. The cathodes were bent perpendicularly and forms columns of 16 LED’s. This way, if power is applied to one row and a single column is grounded, one LED will light up at the intersection. This method only works reliably to light up a single LED at a time. With that in mind, [Alex] needed to have a very high “refresh rate” for his display. He only ever lights up one LED at a time, but he scans through the 128 LED’s so fast that persistence of vision prevents you from noticing. To the human eye, it looks like multiple LED’s are lit up simultaneously.

[Alex] planned to use an Arduino to control this display, but it doesn’t have enough outputs on its own to control all of those lights. He ended up using multiple 74138 decoder/multiplexer IC’s to control the LED’s. Since the columns have inverted outputs, he couldn’t just hook them straight up to the LED’s. Instead he had to run the signals through a set of PNP transistors to flip the logic. This setup allowed [Alex] to control all 128 LED’s with just seven bits, but it was too slow for him.

His solution was to control the multiplexers with counter IC’s. The Arduino can just increment the counter up to the appropriate LED. The Arduino then controls the state of the LED using the active high enable line from the column multiplexer chip.

[Alex] wanted more than just a static image to show off on his new display, so he programmed in a version of Tetris. The controller is just a piece of perfboard with four push buttons. He had to work out all of the programming to ensure the game ran smoothly while properly updating the screen and simultaneously reading the controller for new input. All of this ran on the Arduino.

Can’t get enough Tetris hacks? Try these on for size.