Posts tagged ‘Atmega328P’

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’ »

Using FRAM as Nonvolatile Memory With Arduino

One of the biggest advantages of FRAM (or FeRAM, Ferroelectric RAM) over EEPROM is that FRAM has a much higher write speed and typically can operate at bus speed. This means that no delay instructions are needed when performing write operations, which greatly reduces coding complexity and increases the overall throughput. Continue reading ‘Using FRAM as Nonvolatile Memory With Arduino’ »

Interfacing MMA8453Q With Arduino

MMA8453Q is a rather inexpensive accelerometer. It is significantly cheaper than many other 3-axis accelerometers (such as the popular LIS3LV02DL) and yet it offers a reasonably high 10 bits resolution and packs a rich set of features that simplifies designs and programming in many different applications. Continue reading ‘Interfacing MMA8453Q With Arduino’ »

An 8-Digit 7 Segment Display

I built a 4-digit 7 segment display last year. In that design, I used four 74HC595 shift registers to drive the four individual 7 segment displays, with one for each digit. So when I wanted to build an 8-digit display, I thought about using the same design with eight 74HC595s at first. But it seemed that the soldering would be a lot more challenging on the prototype board as there will be 8 chips and 64 resistors to solder. Continue reading ‘An 8-Digit 7 Segment Display’ »

AD7705/AD7706 Library

AD7705 and AD7706 are two 16-bit Sigma Delta ADCs. Equipped with on-chip digital filters and programmable gain front ends, these chips are ideal for low frequency multi-channel signal measurements. The main difference between AD7705 and AD7706 is that AD7705 has two fully differential input channels while AD7706 has three pseudo differential input channels. Continue reading ‘AD7705/AD7706 Library’ »

Interfacing DS7505

The DS7505 digital thermometer and thermostat is a very versatile temperature sensor. It offers 9 to 12-bit digital temperature readings between -55 and +125 Celsius with an accuracy of 0.5 degree. It can be used with any MCUs that has I2C support or can be pre-programmed and used in standalone applications as digital thermostats. Continue reading ‘Interfacing DS7505’ »

TCA9555 Library for Arduino

TCA9555 is a 16-bit I2C I/O expander from Texas Instruments. It allows the easy addition of 16 I/O ports on any device that supports the I2C bus. This makes it attractive for expanding the number of I/O pins on the standard Arduino platform using ATmega328. Up to eight TCA9555’s can be used on the same I2C bus and thus allowing up to an additional 128 digital pins to be added. Continue reading ‘TCA9555 Library for Arduino’ »

Arbitrary Waveform Generation with Arduino

Arbitrary waveform generators come in handy when troubleshooting digital and analog circuits. Most commercial arbitrary waveform generators are very expensive due to the functionality and very high bandwidth they offer. But for typical uses among hobbyists, the requirements are generally pretty low. Building a very basic arbitrary waveform generator is actually quite simple using a digital-to-analog converter (DAC) chip and a microcontroller (MCU). Here I will show you one such waveform generator using Linear Technology‘s LTC1450 DAC and ATmega328 programmed with Arduino libraries. Continue reading ‘Arbitrary Waveform Generation with Arduino’ »

Building a Robotic Platform

I started this project a while ago. My intention was to adapt a toy remote controlled vehicle into a generic robotic platform, which would enable me to do some experiments with robotics. To make the platform more generic, I came up with the following requirements: Continue reading ‘Building a Robotic Platform’ »

Modified Sine Wave Generation With AVR

Modified sine wave is essentially just a pulse width modified square wave. It is a very useful waveform for power inverters. Compared with the simplest inverters with square waveform, inverters using modified sine wave can compensate the output voltage by simply changing the pulse width (duty cycle) of the waveform. Continue reading ‘Modified Sine Wave Generation With AVR’ »

4KHz-170MHz Wide Band RF Signal Generator – II

Continue with my previous article, let me first explain the code a little bit. Continue reading ‘4KHz-170MHz Wide Band RF Signal Generator – II’ »

4KHz-170MHz Wide Band RF Signal Generator – I

A signal generator can come in handy when working with digital and analog circuits. While most commercial grade signal generators offer more than just outputting a sinusoidal waveform, they are quite pricey for casual use. In this article, I will show you a simple wide band signal generator that is built around a Linear Technology’s LTC6905 Silicon Oscillator, which is can generate frequencies from roughly 17MHz to 170MHz. Along with a FairChild Semiconductor’s 74VHC4040 12-stage high speed binary counter, this signal generator is capable of generating precise frequencies from as low as 4KHz all the way through the ranges of LTC6905. Continue reading ‘4KHz-170MHz Wide Band RF Signal Generator – I’ »

RF Data Link Using Si4021 And Si4311

Among the many commercial ISM band RF transmitter and receiver ICs, I have found that Silicon LabsSi4021 (transmitter IC) and Si4311 (receiver IC) are surprisingly easy to work with. Only a few commonly available external components are needed to build a fully functional circuit. The integrated automatic antenna tunning circuit in Si4021 makes building transmitters an easy task. The Si4311 receiver IC is highly integrated, more so than many other ISM band RF ICs, and is quite tolerate to the variance of the required few external capacitors. No special tuning is required. Continue reading ‘RF Data Link Using Si4021 And Si4311’ »

AVR LC Meter With Frequency Measurement

I have been thinking about building an LC meter for a while since I do not have a multimeter that is capable of measuring inductance and while the multimeters I have can measure capacitance, they are not able to give accurate readings for small capacitance in the range of several pF’s. Continue reading ‘AVR LC Meter With Frequency Measurement’ »

I2C Data Logger Using ATmega328p and DS3232 – II

In my last blog post, I showed you the schematic of a I2C data logger I built. Here I will discuss some sample code used for this data logger and how to make it even more flexible. Continue reading ‘I2C Data Logger Using ATmega328p and DS3232 – II’ »