Archive for the ‘AVR/Arduino’ Category.

Reverse Engineering the Syma S107G IR Protocol

I got a Syma S107G IR controlled helicopter for my son a while ago. This tiny remote control helicopter is a rather amazing toy. Not only its movement is very stable, but the rotor speed, forward backward movements and turning can be all proportionally controlled as well. I thought it might be interesting to take a look at its control protocol to see how things are done. And yes, I do have a video at the very end showing controlling the S107G using the reverse engineered remote control. Continue reading ‘Reverse Engineering the Syma S107G IR Protocol’ »

Code For MCP4821/MCP4822

Microchip‘s MCP4821/MCP4822 is a low budget 12-bit digital-to-analog converter. MCP4821 is the single channel version whereas MCP4822 has two channels that can be latched simultaneously. Both chips have internal band gap references and can be controlled via SPI. Continue reading ‘Code For MCP4821/MCP4822’ »

Digital Metronome — Revisited

Last year, I wrote about a simple digital metronome project. While the device worked pretty well there are a few changes that are to be desired. Continue reading ‘Digital Metronome — Revisited’ »

Simple Zener Diode Tester

In this post I will show you a simple Zenner diode tester circuit, when coupled with a PWM generator it can be used to measure the breakdown voltage of Zener diodes. Or more generically, it can be used to measure the breakdown voltages (e.g. BVceo, BVcbo) of BTJ transistors. Continue reading ‘Simple Zener Diode Tester’ »

Arduino Library For MCP342X

Last time, I discussed how to interface TI’s ADS1112 16-bit delta-sigma A/D converter with Arduino. Today I am going to introduce you to a set of easy-to-program A/D chips from Microchip. MCP3246/7/8 are a family of 16-bit Delta-Sigma A/D converters with an I2C interface. MCP3426 and MCP3427 both have two differential input channels, while MCP3429 has four differential input channels. The programming for all three devices are essentially the same, except for the number of available channels. Continue reading ‘Arduino Library For MCP342X’ »

Interfacing ADS1112 With Arduino

ADS1112 is a 16-bit delta-sigma A/D converter. This A/D chip has an I2C interface, a 2.048V internal voltage reference and performs a self-calibration on each conversion. These characteristics make it very easy to work with an MCU such as ATmega328p. Continue reading ‘Interfacing ADS1112 With Arduino’ »

5A Lab Power Supply With Digital Readout

I got a used 250VA power transformer that was removed from equipment a couple of weeks ago. The transformer has a dual 10V AC output and a few auxiliary voltage outputs. The 10V winding is rated at 10A, I thought it would be perfect for a high current power supply project. Continue reading ‘5A Lab Power Supply With Digital Readout’ »

AD7705/AD7706 Library Revisited

About a year ago, I wrote a simple library for interfacing AD7705/AD7706 with Arduino. The library works, but it requires some decent knowledge of the underlying chip, which had made it somewhat difficult to use. Most issues users reported can be resolved by adjusting the timing in user code, but I admit that it is somewhat difficult for users who are not familiar with the chip. For a library, I should have made it easier to use to begin with. So, I decided to add a few long-awaited features and hopefully these tweaks will make the library easier to use. Continue reading ‘AD7705/AD7706 Library Revisited’ »

Interfacing LTC6904 With Arduino

LTC6904 is a programmable oscillator which is capable of generating frequencies from 1kHz to 68MHz. The oscillation frequency can be changed via the I2C interface and thus makes it very easy to interfacing with MCUs. Continue reading ‘Interfacing LTC6904 With Arduino’ »

A Self-Balancing Robot – III

In part one, I went over the theory behind the self-balancing robot and in part two, I showed you my build using a modified toy truck. In this post, I will walk you through the code and show you the finished balancing robot. If you are impatient, you can scroll to the end for the demostration video and the source code. Continue reading ‘A Self-Balancing Robot – III’ »

A Self-Balancing Robot – II

In my previous post, I explained the theory behind the self-balancing robot at a high level. Here, I will discuss the actual build in more details. Continue reading ‘A Self-Balancing Robot – II’ »

A Self-Balancing Robot – I

Building a self-balancing robot is one of those things that every hobbyist and engineer want to do. But there are a few hurdles for a lot of people. There is the theory on the one hand and then there is the mechanics on the other. In this and the next few posts, I will show you a self-balancing robot I recently built and will explain in details on some of the most important aspects. Continue reading ‘A Self-Balancing Robot – I’ »

So Why I like Arduino

You probably know this already from just reading some of the posts in my blog. Like millions of others, I am a big Arduino fan. So I thought I would share my side of the story and you can decide for yourself. Continue reading ‘So Why I like Arduino’ »

ATmega328 Fuse Bit Setting for 3.3V Vcc

By default, ATmega328 used in Arduino (such as Uno or Duemilanove) operates under 5.0V. Sometimes though it is necessary to use 3.3V supply voltage to accommodate peripheral circuits that cannot tolerate 5.0V. Continue reading ‘ATmega328 Fuse Bit Setting for 3.3V Vcc’ »

Adding Off-Screen Buffer to Serial LCD Display

Since the current Arduino tools do not support in-circuit debugging, you will have to rely heavily on the serial print outs when tracking down those hard-to-find bugs unless you are one of those few elites whose code just works 100% every time. It is all good when you are doing your development when a computer is readily available. But what if you need to capture the outputs when you do not have the access to a computer? I found myself running into this situation quite often. Continue reading ‘Adding Off-Screen Buffer to Serial LCD Display’ »