Home   |  Schematics |  Products |  Tutorials  |  Datasheets  |  Robotics   |   Download    |   Link Exchange


Direct Current
Alternating Current
Digital Electronics
PC Architecture
Electronics Dictionary
Resources

Experiment
Calculator/Converters
Radio
Newsletter
Associations and Societies
Component Manufacturers

 

Electronics Symentics


Microcontroller Advanced Kit - Data Collection

This tutorial shows how to set up a system for collecting data through a computers serial port.  It uses an ADC0804 chip to convert from analog to digital, an AT89C2051 microcontroller to control the ADC0804 and send data to the PC, and a MAX232CPE chip to convert the signals from and to RS232 levels for sending and receiving from the PC.

Refer to the diagram below as you go through the individual steps in building the circuit.

Step 1.) Analog to Digital Conversion - The ADC0804 IC

The easiest way to do analog to digital conversion is to use an IC such as the ADC0804 that does the work for you. The analog voltage is applied to pin 6 and the result is available at pins 11 through 18. We will connect pin 1 (Chip Select) to ground so that the chip is always enabled. (If you wanted to use more than one ADC you could use this pin to control which chip is currently enabled).
Connect pin 7 (Vin - ) to ground.
The ADC0804 includes an internal oscillator which requires an external capacitor and resistor to operate. Connect the 150 pF capacitor from pin 4 to ground and the 10k ohm resistor from pin 4 to pin 19.
Also for power,
Connect pin 20 to 5 volts.
Connect Pin 8 to ground.
Connect pin 10 to ground.
 

 

Step 2.) Interfacing the ADC0804 to the 2051

The AT89C2051 is a general purpose microcontroller.  It is a 20 pin version of the 8051 and uses the same language.  See below for more information about programming the chip.

To control the ADC0804, we will use 3 lines from the 2051.
Connect pin 2 (Read) from the ADC0804 to pin 7 (P3.3) of the 2051.
Connect pin 3 (Write) to pin 8 (P3.4).
Connect pin 5 (Interrupt) to pin 9 (P3.5).
The 8 bit Output Data from the ADC0804 will be connected to Port 1 of the 2051.
Connect pin 18 (D0) of the ADC0804 to pin 12 of the 2051 (P1.0).
Connect pin 17 (D1) to pin 13 (P1.1).
Connect pin 16 (D2) to pin 14 (P1.2).
Connect pin 15 (D3) to pin 15 (P1.3).
Connect pin 14 (D4) to pin 16 (P1.4).
Connect pin 13 (D5) to pin 17 (P1.5).
Connect pin 12 (D6) to pin 18 (P1.6).
Connect pin 11 (D7) to pin 19 (P1.7).
The 2051 pins 12 and 13 do not have internal pull up resistors so external pull up resistors are required.
Connect a 2.2k ohm resistor from pin 12 of the 2051 to 5 volts.
Connect a 2.2k ohm resistor from pin 13 of the 2051 to 5 volts.
To power the 2051,
Connect pin 20 of the 2051 to 5 volts.
Connect pin 10 of the 2051 to ground.
For the 2051 oscillator,
Connect the 11 MHz Crystal from pin 4 of the 2051 to pin 5 of the 2051.
Connect one 33 pF capacitor from pin 4 of the 2051 to ground.
Connect the other 33 pF capacitor from pin 5 of the 2051 to ground.
For the 2051 reset circuit,
Connect the 8.2k ohm resistor from pin 1 of the 2051 to ground.
Connect the 10 uF capacitor from pin 1 of the 2051 to 5 volts.

The 2051 controls the analog to digital conversion process. The conversion process has several stages.

    Stage 1) To trigger a new conversion, we must make pin 3 (Write) low and then return it to the high state. The conversion process starts when Write goes high (rising edge triggered).
    Stage 2) When the conversion process is complete, pin 5 (Interrupt) will go low.
    Stage 3) When we see pin 5 (Interrupt) go low, we must make pin 2 (Read) low to load the new value into the outputs D0 - D7.
    Stage 4) Next we read the values into the 2051 Port 1.
    Stage 5) Finally, we return pin 2 (Read) to the high state. The next conversion can be started immediately.

Step 3.) Communicating with the PC - The MAX232 IC

Now that we have the 8 bit value in the 2051,  we want to send that value to the PC. The 2051 has a built in serial port that makes it very easy to communicate with the PC's serial port but the 2051 outputs are 0 and 5 volts and we need +10 and -10 volts to meet the RS232 serial port standard. The easiest way to get these values is to use the MAX232. The MAX232 acts as a buffer driver for the processor. It accepts the standard digital logic values of 0 and 5 volts and converts them to the RS232 standard of +10 and -10 volts. It also helps protect the processor from possible damage from static that may come from people handling the serial port connectors.

The MAX232 requires 5 external 1uF capacitors. These are used by the internal charge pump to create +10 volts and -10 volts.
For the first capacitor, the negative leg goes to ground and the positive leg goes to pin 16.
For the second capacitor, the negative leg goes to 5 volts and the positive leg goes to pin 2.
For the third capacitor, the negative leg goes to pin 3 and the positive leg goes to pin 1.
For the fourth capacitor, the negative leg goes to pin 5 and the positive leg goes to pin 4.
For the fifth capacitor, the negative leg goes to pin 6 and the positive leg goes to ground.
The MAX232 includes 2 receivers and 2 transmiters so two serial ports can be used with a single chip. We will only use one transmiter for this project. The only connection that must be made to the 2051 is one jumper from pin 3 of the 2051 to pin 11 of the MAX232.
To power the MAX232,
Connect pin 16 to 5 volts.
Connect pin 15 to ground.
 The only thing left is that we need some sort of connector to connect to the serial port. The sample code below is written for Comm1 and most computers use a 9 pin DB9 male connector for Comm1 so a 9 pin female connector is included for this project. You may also want to buy a DB9 extension cable (Shown on order form as DB9 to DB9 cable) to make the connection easier. There should be 3 wires soldered to the DB9 connector pins 2, 3 and 5. Connect the wire from pin 5 of the connector to ground on the breadboard. Connect the wire from pin 2 of the connector to pin 14 of the MAX232. (The other wire is for receiveing and is not used in this project.)

The Software

The basic process of compiling an assembly language program and loading it into the microcontroller was covered in the first microcontroller project. The 2051 assembly language program for this project is adcproj.asm.  It is included on the CD that comes with the kit. You will need a device programmer such as the PG302 to program the 2051.

Make sure the power is off to the circuit you have built.  Connect the circuit to the PC's serial port, Comm1. Turn on the power to the breadboard.  The circuit should send a continuous stream of values to the PC.  To see the values on the PC, try this sample program.  This program takes the received value and divides it by 51 to find the corresponding voltage level. (The minimum value is 0 which is 0 volts and the maximum value is 255 which is 5 volts.) The source code for the sample program (written in VB 3.0 and 5.0) is included on the CD included with the kit. Two files your computer may need to run the sample program are Vbrun300.dll and Mscomm.vbx

Testing the Circuit

To test your circuit, connect various voltages to pin 6 of the ADC0804. If you connect a jumper from pin 6 to 5 volts, the voltage on the sample program should say 5 volts. Remove the jumper.
Try connecting a 2.2k resistor from pin 6 to ground and another 2.2k resistor from pin 6 to 5 volts. The result should be around 2.5 volts. Remove the resistors.
Try playing with the 220 uF capacitor and the 15k Ohm resistor. Connect the negative leg of the capacitor to ground and the positive leg to pin 6 of the ADC0804. Connect the resistor from pin 6 to 5 volts. The voltage should rise quickly and then slower as it approaches 5 volts. Now remove the resistor. The voltage should stay at the same voltage and slowly decay as the capacitor loses it's charge. Connect the resistor from pin 6 to gound to quickly discharge the capacitor.





Home  Products  Tutorials   Schematics   Robotics   Resources   Radio Stuff    Career    Download   Link Exchange

HTML Sitemap   XML Sitemap


Terms & Conditions  Privacy Policy and Disclaimer