Here , I try to explain is that a pressure sensor detects the pressure and passes an accordingly scaled voltage to microcontroller which converts it into digital data .

For this,i have used ATMEGA32   and MPX4115 pressure sensor. MPX4115 pressure sensor integrates on-chip, bipolar op amp circuitry and thin film resistor networks to provide a high level analog output signal and temperature compensation.More details can be found here MPX4115.

Code is written in C using AVR Studio 4 and winavr gcc compiler.

The ATMEGA32 has an  built-in ADC module. ADC module needs to be initialized.To know  details about ADC initialization and ADC  channel selection,see ATMEGA32 Data sheet.

ADC Initialization

ADMUX=(1<<REFS0);                         // For Aref=AVcc;
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //prescalar div factor =128

ADC Channel Selection

//Select ADC Channel ch must be 0-7

ADMUX=(ADMUX&0xE0)|ch;
//Start Single conversion
ADCSRA|=(1<<ADSC);
//Wait for conversion to complete
while(!(ADCSRA & (1<<ADIF)));
ADCSRA|=(1<<ADIF);

Conversion

I have converted  ADC value to pressure using this formula:

adc_result= (5.0/1023.0)*ReadADC(0);

adc_result=((adc_result/5.0)+0.095)/0.009-1;

Source Code

This example code reads analog value from channel 0 and displays it on LCD.

#include <avr/io.h>
#include <inttypes.h>
#include <util/delay.h>
#include “lcd.h”

void InitADC()
{
ADMUX=(1<<REFS0);                         // For Aref=AVcc;
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //Rrescalar div factor =128
}

uint16_t ReadADC(uint8_t ch)
{
//Select ADC Channel ch must be 0-7

ADMUX=(ADMUX&0xE0)|ch;
//Start Single conversion
ADCSRA|=(1<<ADSC);

//Wait for conversion to complete
while(!(ADCSRA & (1<<ADIF)));

ADCSRA|=(1<<ADIF);

return(ADC);
}

int main(void)
{
float adc_result;
DDRB = 0x00;
//Initialize LCD
InitLCD(LS_BLINK|LS_ULINE);
LCDClear();

//Initialize ADC
InitADC();

LCDWriteString(“Pressure monitor”);
_delay_ms(1000);
while(1)
{
LCDClear();
LCDWriteStringXY(0,1,”Pressure=”)
adc_result= (5.0/1023.0)*ReadADC(0);           // Read Analog value from channel-0

adc_result=((adc_result/5.0)+0.095)/0.009-1;

LCDWriteIntXY(9,1,adc_result,3); //Print the value in 4th column second line

LCDWriteStringXY(12,1,”Kpa”);
_delay_ms(10000);
}
return 1;
}

Circuit Diagram

Pressure sensor interfacing

Pressure sensor interfacing Circuit

Download Source code and circuit diagram

About these ads

Comments on: "Pressure sensor interfacing with Microcontroller" (24)

  1. Nice work… will u please help me out in implementing this Pressure sensor interfacing with 8051 Microcontroller..?

    Basically i’m doing a industrial base project using control area network. in which i want to use this pressure sensor.
    looking forward to your cordial response.
    Thank you.

  2. NIce Work…… Can u please explain why you add this 48 in str[i] when you are calling the LCDData Function this is written in the last line of below given function…..this function is from your source code….

    void LCDWriteInt(int val,unsigned int field_length)
    {

    char str[5]={0,0,0,0,0};
    int i=4,j=0;
    while(val)
    {
    str[i]=val%10;
    val=val/10;
    i–;
    }
    if(field_length==-1)
    while(str[j]==0) j++;
    else
    j=5-field_length;

    if(val<0) LCDData('-');
    for(i=j;i<5;i++)
    {
    LCDData(48+str[i]);
    }
    }

  3. hi…
    i am doing a project named design of low power altimeter. Will you please suggest me a micro controller that is efficient for interfacing with the pressure sensor…
    please……….

  4. thanks for your reply.
    but i need a micro controller that have high resolution. It should display the output voltage in the range 4-4.5 with a high resolution in the range of milli volts..
    will you please suggest a microcontroller with these features and it should be interfaced with pressure sensor MPX4115A. please do favour in this.

  5. cud u give me complete circuit and code for blood pressure,heart rate and temp as i m stuck with my masters project.please .i have all but with different microcontrollers .i want with one controller.please help.liked dis circuit very much

  6. very nice work.please help me 2.

  7. Sivaprakash.R said:

    Please help me to buy the MPX4115 sensor, where to buy in india. I am planning to use this urgent..to measure the tyre pressure in my project.. I am in chennai, india. Sivaprakash.R

  8. can you tell me the code of 1211 sensor interfacing with atmega32 microcontroller?
    please reply me.

  9. i am doing project on data acquisition using fpga.we need to write vhdl code for ADC,temperature and humidity sensors and interfacing them to adc.pleaze can you give me the vhdl code for sensors interfacing to ADC.

  10. what is the cost of microcontroller u have used?

  11. paul_dean said:

    how did u get the pressure to be 33kpa? isnt atmospheric pressure around 100kpa

  12. Hamza Khan said:

    the download link seems to be expired.
    can you give some other link or can you mail it on hamza92000khan@yahoo.com .
    i’ll be very thankful to you.

  13. Does this still work if I change the sensor used? or I have to change the codes also if I change the sensor?

  14. Anonymous said:

    Hello can u give me the complete cicuit blood presure and the program C..pls pls
    emil to me awing_ruslih@yahoo.com

  15. hello
    is the source code can be applied to PIC with a little modification?

  16. Anonymous said:

    Can you please tell me why you have connected pin no 32 i.e Aref to ground , it should be connected to VCC according to ur code right ?

  17. could u jst tell me why r u using this code
    adc_result=((adc_result/5.0)+0.095)/0.009-1;
    rather than simply puting it to the LCD,,,,,
    may be bcz LCD showing pressure around double…..

  18. and i also dnt understand this 5/1023

  19. hello i develop blood pressure monitor i use the sensor MPXV5050GP and i want to convert that data digital and display the pressure so please can you help me for programming. i have on difficulties found on calibrating this sensor.
    i used AN0 as input pin of the microcontroller PIC18f4550 and lcd is conncted on Dport

  20. Darshan Jain said:

    Hey i am working on anti theft car system based on lpc2148.
    Will u tell me with pressure sensor i need to use for any persons pressure on seat.

  21. devidas said:

    Nice

  22. Shafraz Mohamed said:

    i’m trying a blood pressure monitor using a PIC16F877A, please somebody help me to write the C code to detect the Systolic and Diastolic pressure using ADC readings.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 42 other followers

%d bloggers like this: