Turn-key PCB assembly services in prototype quantities or low-volume to mid-volume production runs

BASIC computer on ATmega1284P

BASIC programming language was founded back in 1964. Its main goal was to enable people to use computers for their need the easier way. BASIC is generally a high level programming language that from simple form evolved in to modern programming language like Visual Basic .NET. Anyway simple forms of BASIC language still exists and are used in several areas. Microcontrollers are one place where it fits pretty well. Dan has been doing projects with BASIC functionality. His earlier work was done on building Arduino BASIC shield. But eventually he saw the limitations of such approach like low TV out resolution and Arduino dependence. Having these in mind he decided to build a standalone BASIC computer based on ATmega128P. Using stand alone solution these problems were gone. BASIC computer has a PS/2 keyboard support, TV out and the rest GPIO headers for interfacing purposes. BASIC programs are stored in AVR EEPROM memory. Microcontroller runs TinyBASIC Plus which supports most of common BASIC commands including IO support, system commands, storage, math, etc. BASIC computer is assembled using only through hole components,… Continue reading

Sound Impulse Tracker

The project is a 2-dimentional Acoustic Impulse Marker system which is capable of detecting a sharp sound anywhere in its range and precisely marking its source vector with a servo based pointer. It has been developed by students of Cornell University. It uses an array of three microphone to detect the sharp sound and can detect the sound with a 5 degree of accuracy. Apart from the microphones a ATmega1284p microcontroller is also used which detects the acoustic delays between the microphones and calculates the sound’s source vector. The microphone signals are passed an analog system comprising of eight stages in order to convert them to a binary signal, indicating when each of them is triggered by a sound. The analog system filters, amplifies, and processes the sounds obtained from the microphones. A good advantage of the system is that use of slow ADC of microcontroller is eliminated, since the signal is processed in the system and converted to pulses. The core use of interrupts runs the system in real time for timing data acquisition, and also gives higher precision.… Continue reading

Driving LED matrix with AVR on glass board

2D matrix on glass

Driving LED matrix is one part of the story. Everyone basically can do this. But how about circuit on the glass. This may take time and some effort. Andrew found this area interesting and started building 2D matrix on the glass driven by Atmega1284. The circuit seemed easy enough to trace on a single sided board. To make traces he used copper tape which seems to be pretty robust thing to use. Just cut and stick to the glass. To make things faster, Andrew drew circuit and PCB layout with eagle, this way he only had to copy the layout. After copper layout was done, he simply coated traces with solder and soldered the components. Of course it takes time, but end result looks really great. Continue reading

Avr VGA implementation

Driving VGA signals with small micros like AVR is quite a challenge. First thing is that VGA standard is strict to timings and they are beyond the AVR speed limits. Andrew who decided to build a generic VGA interface on AVR, faced the speed problem. The thing is that AVR’s can run at maximum 20MHz, but for proper VGA clock needs to be a bit higher. So he’ve chosen overclocking instead of grabbing faster chip. The microcontroller of choice was Atmega1284p, because it has 16MHz of RAM and plenty of program memory. He wanted to build a generic buffered VGA implementation instead of application specific output. Since RAM still was a limiting factor, instead of 640×480 display size he had to go with 128×96 which would fit in to internal buffer memory. In order to make it fast and efficient Andrew built a simple color system where each color of RGB was coded using two bits. So all color information easily fits in to single byte and can be sent using single instruction during single clock cycle. The program is… Continue reading