100% found this document useful (1 vote)
388 views

Data Logger

Data is received from in-build 8-channel ADC of ATmega32. One channel is used for reading temperature from LM35 sensor. Data is stored in CSV (comma separated values) format.

Uploaded by

Ridham Patel
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
388 views

Data Logger

Data is received from in-build 8-channel ADC of ATmega32. One channel is used for reading temperature from LM35 sensor. Data is stored in CSV (comma separated values) format.

Uploaded by

Ridham Patel
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 36

Chapter 1 Abstract

MicroSD Atmega32 Data-logger ABSTRACT

Aim of this project is to present a way to store a large quantity of data into microSD card in files with FAT32 format. Here, ATmega32 is used for data collection and microSD interface. The data is received from in-build 8-channel ADC of ATmega32. One channel is used for reading temperature from LM35 sensor and remaining channels are used for simply reading voltages and storing them.

This project can be used to interface 8 different sensors with ADC of ATmega32, similar to the LM35 used here. The data is stored in CSV (comma separated values) format, which can be read using a PC/Laptop with Microsoft Excel or other compatible software.

Chapter 2 Data-logger

What is Data Logging?

The process of using a computer to collect data through sensors, analyze the data and save it. Data logging is commonly used in scientific experiments and in monitoring systems where there is the need to collect information faster than a human can possibly collect the information and in cases where accuracy is essential. Examples of the types of information a data logging system can collect include temperatures, sound frequencies, vibrations, times, light intensities, electrical currents, pressure and changes in states of matter.

Applicaton of data-logging

Data logging is used in a broad spectrum of applications. Chemists record data such as temperature, pH, and pressure when performing experiments in a lab. Design engineers log performance parameters such as vibration, temperature, and battery level to evaluate product designs. Civil engineers record strain and load on bridges over time to evaluate safety. Geologists use data logging to determine mineral formations when drilling for oil. Breweries log the conditions of their storage and brewing facilities to maintain quality. The list of applications for data logging goes on and on, but all of these applications have similar common requirements.

How does data-logger work?

A data logger works with sensors to convert physical phenomena and stimuli into electronic signals such as voltage or current. These electronic signals are then converted or digitized into binary data. The binary data is then easily analyzed by software and stored on a PC hard drive or on other storage media such as memory cards and CDs.

[+] Enlarge Image Figure 2. How does a data logger work?

Block Diagram of Data-logger

Explanation of Block Diagram

1) SENSOR ONE: This is first sensor which uses to sense parameter one. This can be temperature sensor, say LM35. The sensor will be placed on the front panel. One can use LCD display to read the temperature.

2) SENSOR TWO: This is second sensor which uses to sense parameter two. This can be Humidity sensor, say LDR. The sensor will be placed on the front panel.

3) AMPLIFIER: We are going to use LM324 which is having 4 inbuilt amplifiers. Since we have two sensors, we have used this Amplifier.

4) ADC: We are going to use ADC 0808 which is 8 bit and 8 channel ADC. Since we have two inputs for ADC, we have used this ADC.

5) LCD: Liquid Crystal Display which is commonly known as LCD is an Alphanumeric Display it means that it can display Alphabets, Numbers as well as special symbols thus LCD is a user friendly Display device which can be used for displaying various messages unlike seven segment display which can display only numbers and some of the alphabets. The only disadvantage of LCD over seven segment is that seven segment is robust display and be visualized from a longer distance as compared to LCD. Here WE have used 16 x 2 Alphanumeric Display which means on this display WE can display two lines with maximum of 16 characters in one line.

6) EEPROM: We need to store the parameter values in some device. We have chosen EEPROM for this purpose as since it is a non-volatile memory and can hold data after power-off. We can use AT24C02/ AT24C04/ AT24C08/ AT24C16 depending on the memory size requirement.

7) Keypad: We need to display the previous records. So we are going to use a Keypad for this purpose. This keypad can perform various actions like a) Display previous records

b) Erase previous records c) Set periodic interval time d) Send data to PC e) Set date and time

8) PC Interfacing: We are going to use MAX 232 for the purpose of PC interfacing, using this module, we can send various data like temperature, Humidity if the water to the PC.

Chapter 3 Interfacing MicroSD Card to Micro controller

TO interface the MicroSD card to micro controller we must first under stand the pin diagram of MicroSD card

MicroSD cards are available very cheap nowadays, a great option for having a huge memory in any embedded system project. It is compatible with SPI bus, so the interfacing is easy. SD card adapters are also easily available in market, one can easily make a bread-board adapter by soldering few pins on it. Following figures show the SD card pin-out & the bread-board adapter design by soldering 7-pins of a breakout header on the microSD adapter

The following table describe the pin outs

Pin # 1 2

Pin Name CS Data In

Signal Function SPI !Chip-Select SPI Master Out-Slave In (MOSI)

3 4

VSS VDD

Ground Voltage Supply In (2.7v3.6v)

5 6 7

CLK VSS Data Out

SPI Clock Signal Ground SPI Master In-Slave Out (MISO)

8 9

RSV RSV

Reserved Reserved

Wiring an SD card to your microcontroller's SPI interface is a fairly straightforward process, however there are a couple things to look out for... First, all SD cards operate between 2.7V-3.6V (preferably 3.3V) while most microControllers have 5v logic outputs. If your micro-Controller has 5v level logic outputs, you must lower the voltage coming into your SD card to 3.3V from your micro-Controllers 5V logic outputs. On your SD card these are the CS, Data In, CLK pins (see Card Wiring tables for SD Card pin numbers.) This can be done with a simple voltage divider circuit (see diagram below) or with a level shifter IC such as an MM74HC. This is of no concern for the Data Out (MISO) pin coming into our micro-Controller from the SD Card because the logic HIGH voltage level coming from the SD card is 3.3V which is above the threshold for logic HIGH on our 5V micro-Controller.

Second, you must power your SD card with a clean 3.3V source. Most SD cards consume between 20mA and 150mA depending on the size of the card. Most cards below 2GB consume 20mA (or less).

Ckt to interface MicroSD Card with Atmega32

Chapter 4 Main ckt of the project

Ckt implemented on zero bread board

Ckt diagram

Steps to operate the ckt and working

For setting RTC date/time (or for debugging mode): Connect the microSD module, insert the microSD card Connect the RS232 cable with the circuit. Set-up hyper terminal with 19200

baud, no parity, 8-bit data, 1 stop-bit and flow-control as 'None' Connect the power cable and power on the circuit while keeping the push-

button pressed Green LED will glow in the circuit board A menu will be displayed on the Hyper terminal as shown in the figure below.

Select desired option and follow the displayed instructions When date/time is set or debugging done, select option '0' to come out of the

menu and start functioning a s data-logger At this point, the RS232 cable can be removed

Operation as Data-Logger:

Connect the power cable and power on the circuit

Green LED will glow Whenever the data-logging is required, press the push-button Red LED will glow, indicating that the recording has started To stop recording, press the push-button again, recording will stop and red LED

will turn off Files stored in the card can be read using a PC card-reader or using hyper-

terminal with the circuit started in debugging mode

Chapter 5 Explanation of various ICs and Components used in the main ckt diagram

Rs232 cable

in our project we have used Rs232 cable to connect our hardware to pc

IC MAX232

When communicating with various micro processors one needs to convert the RS232 levels down to lower levels, typically 3.3 or 5.0 Volts. Serial RS-232 (V.24) communication works with voltages -15V to +15V for high and low. On the other hand, TTL logic operates between 0V and +5V . Thus the RS-232 signal levels are far high than TTL electronics, and the negative RS-232 voltage for high cant be handled at all by computer logic. To receive serial data from an RS-232 interface the voltage has to be reduced. Also the low and high voltage level has to be inverted. This level converter uses a Max232 and five capacitors.

IC DS1307

The DS1307 serial real-time clock (RTC) is a low-power, full binary-coded decimal (BCD) clock/calendar .The clock/calendar provides seconds, minutes, hours, day, date, month, and year information. The end of the month date is automatically adjusted for months with fewer than 31 days, including corrections for leap year. The clock operates in either the 24-hour or 12-hour format with AM/PM indicator. The DS1307 has a built-in

power-sense circuit that detects power failures and automatically switches to the backup supply. Timekeeping operation continues while the part operates from the backup supply.

LED

Two LEDs are used here Green LED indicates that the ckt is in working condition and red led glows when the recording starts

Push button

we have used a push button to start and stop the recording of data-logging

MicroSD module

it is used to interface MicroSD

card with the controller

Adc connector

Atmega32 has in built ADC , to connect varios sensors to the ADC channel of ATMGA we use the ADCconnector

AVR_ISP

In 89c51 type of micro controller we generrayy have to remove the controller from the hardware to burn the program in it,but in ATMEGA there is a facility of in_system programmer.using this ISP we can connect the hardware to PC and then load the program our Micro Controller with out removing it.

IC7805

It is the voltage regulator IC. ATMEGA controller works on 5v. so to provide 5v to the controller we use this IC

CHAPTER 6 SOFTWARE

//******************************************************************* // **** MAIN routine for microSD Data-Logger ****

//******************************************************************* //Controller //Compiler : ATmega32 (Clock: 8 Mhz-internal) : AVR-GCC (winAVR with AVRStudio-4)

//*******************************************************************

#define F_CPU 8000000 #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> #include "UART_routines.h" #include "ADC_routines.h" #include "FAT32.h"

//freq 8 MHz

#define KEY_PRESSED (!(PINC & 0x80)) #define GREEN_LED_ON PORTC |= 0x20 #define RED_LED_ON PORTC |= 0x40 #define RED_LED_OFF PORTC &= ~0x40

void port_init(void) {

PORTB = 0000; //used as o/p port PORTA = FFFF; // used as i/p port }

//call this routine to initialize all peripherals void init_devices(void) { cli(); //all interrupts disabled port_init(); uart0_init(); ADC_init() //all peripherals are now initialized }

//function to blink LED in case of any error void blinkRedLED(void)

{ while(1) //blink red LED continuously, if error { RED_LED_ON; _delay_ms(400); RED_LED_OFF; _delay_ms(400); }

//*************************** MAIN *******************************// int main(void) {

GREEN_LED_ON; //turn on green LED to indicate power on RED_LED_OFF; //keep red LED off for now

cardType = 0;

if(error) { if(error == 1) transmitString_F(PSTR("SD card not detected..")); if(error == 2) transmitString_F(PSTR("Card Initialization failed.."));

blinkRedLED(); }

switch (cardType) { case 1:transmitString_F(PSTR("Standard Capacity Card (Ver 1.x) Detected!")); break; case 2:transmitString_F(PSTR("High Capacity Card Detected!")); break; case 3:transmitString_F(PSTR("Standard Capacity Card (Ver 2.x) Detected!")); break; default:transmitString_F(PSTR("Unknown SD Card Detected!")); break; } {

//For displaying menu on hyper terminal, the key (psh-button) must be kept pressed while //powering ON or while reset. If key is not kept pressed, the program will not display menu and it will //simply wait for start recording command (i.e. pressing of key afterwards)

if(KEY_PRESSED) while(1) { transmitString_F(PSTR("\n\r\n\r> 0 : Exit the Menu")); transmitString_F(PSTR("\n\r> 1 : Display current Date/Time")); transmitString_F(PSTR("\n\r> 2 : Update Date")); transmitString_F(PSTR("\n\r> 3 : Update Time")); transmitString_F(PSTR("\n\r> 4 : Get file list")); transmitString_F(PSTR("\n\r> 5 : Read File")); transmitString_F(PSTR("\n\r> 6 : Delete File"));

transmitString_F(PSTR("\n\r\n\r> Enter the option:")); option = receiveByte(); transmitByte(option);

//RECORDING//

while(1) { while(!KEY_PRESSED); pressed _delay_ms(40); //key debounce delay //wait here for key-press, recording starts when key is

if(!KEY_PRESSED) continue;

RED_LED_ON; //turn on red LED to indicate that recording has started } while(1) {

fileName[ ] = 'C';S,V

//From here onwards, gather data by appending strings in dataString //dataString is declared in FAT32.h //make sure dataString doesn't exceed its MAX_STRING_SIZE, defined in FAT32.h

//Also, end the data string with '\r' & '\n' characters to maintain CSV format

readTemperature(0); //read temperature from adc channel-0

for(channel=1; channel<8; channel++) //read voltages from ADC channel 1 to 7 { dataString[i++] = ','; readVoltage(channel);

dataString[i++] = '\r'; dataString[i] = '\n'; //always end the string with these two characters,

if(error) blinkRedLED();

if(KEY_PRESSED) { while(KEY_PRESSED); _delay_ms(40); goto STOP; } //wait here for key-depress //key debounce

}//end of while(1)

STOP: RED_LED_OFF; //recording stopped

}//end of while(1)

}//end of main

//********** END ************************

Chapter 7 Appendix

CHAPTER 8 CONCLUSION AND BIBLOGRAPHY

CONCLUSION

After completing this project we conclude that we understood about the Atmega32 controller,we learned to interface MicroSD card to controller and also got complete idea about the Data-logging

BIBLOGRAPHY

Reference for this project is given by following books Digital magazine Electronics for you

Reference for this project is given by following websites www.projectframe.com www.electronicsproject.com

You might also like