Inhoudsopgave:

Temperatuursensor (LM35) interface met ATmega32 en LCD-scherm - Automatische ventilatorregeling - Ajarnpa
Temperatuursensor (LM35) interface met ATmega32 en LCD-scherm - Automatische ventilatorregeling - Ajarnpa

Video: Temperatuursensor (LM35) interface met ATmega32 en LCD-scherm - Automatische ventilatorregeling - Ajarnpa

Video: Temperatuursensor (LM35) interface met ATmega32 en LCD-scherm - Automatische ventilatorregeling - Ajarnpa
Video: Test LM35 met Labjack 2024, November
Anonim
Temperatuursensor (LM35) interface met ATmega32 en LCD-scherm | Automatische ventilatorregeling
Temperatuursensor (LM35) interface met ATmega32 en LCD-scherm | Automatische ventilatorregeling

Temperatuursensor (LM35) Interfacing met ATmega32 en LCD-scherm

Stap 1:

In dit project leer je hoe je een temperatuursensor (LM35) kunt koppelen aan een AVR ATmega32-microcontroller en een LCD-scherm.

Voor dit project moet je leren over de volgende artikelen

hoe een lcd-bibliotheek toe te voegen in avr studio| zelfstudie over avr microcontroller

inleiding tot ADC in AVR Microcontroller | voor beginners

Temperatuursensor (LM35) is een populaire en goedkope temperatuursensor. De Vcc kan van 4V tot 20V zijn, zoals gespecificeerd in de datasheet. Om de sensor te gebruiken, sluit u eenvoudig de Vcc aan op 5V, GND op aarde en de Out op een van de ADC (analoog naar digitaal converterkanaal).

De output is 10MilliVolts per graad Celsius. Dus als de output 310 mV is, dan is de temperatuur 31 graden C. Om dit project te maken, moet u bekend zijn met de ADC van AVR's en ook met het gebruik van LCD. Dus de resolutie van AVR's ADC is 10 bit en voor referentiespanning gebruikt u 5V, dus de resolutie in termen van spanning is

5/1024 = 5,1 mV ongeveer

Dus als het resultaat van ADC overeenkomt met 5,1 mV, d.w.z. als de ADC-waarde is

10 x 5,1mV = 51mV

U kunt de waarde van elk ADC-kanaal lezen met behulp van de functie adc_result(ch);

Waarbij ch het kanaalnummer (0-5) is in het geval van ATmega8. Als je de uitgang van de LM35 hebt aangesloten op ADC-kanaal 0, bel dan

adc_result0 = adc_read(0);

hierdoor wordt de huidige ADC-waarde opgeslagen in de variabele adc_value. Het gegevenstype adc_value moet int zijn, aangezien de ADC-waarde kan variëren van 0-1023.

Zoals we zagen, zijn ADC-resultaten een factor van 5,1 mV en voor 1 graad C is de output van LM35 10 mV, dus 2 eenheden ADC = 1 graad.

Dus om de temperatuur te krijgen delen we de adc_value door twee

temperatuur = adc_result0 /2;

Ten slotte zal de microcontroller de temperatuur in graden Celsius weergeven op het 16X2 alfanumerieke LCD-scherm.

Stap 2: Schakelschema

Schakelschema
Schakelschema

Stap 3: Programma

#ifndef F_CPU

#define F_CPU 1600000UL

#stop als

#erbij betrekken

#erbij betrekken

#include "LCD/lcd.h"

ongeldig adc_init()

{

// AREF = AVcc

ADMUX = (1<

// ADC inschakelen en prescaler van 128

ADCSRA = (1<

}

// lees adc-waarde

uint16_t adc_read(uint8_t ch)

{

// selecteer het corresponderende kanaal 0~7

ch &= 0b00000111; // AND-bewerking met 7

ADMUX = (ADMUX & 0xF8)|ch;

// start enkele conversie

// schrijf '1' naar ADSC

ADCSRA |= (1<

// wacht tot de conversie is voltooid

// ADSC wordt weer '0'

terwijl(ADCSRA & (1<

retour (ADC);

}

int hoofd()

{

DDRB=0xff;

uint16_t adc_result0;

int-temp;

int ver;

char-buffer[10];

// initialiseer adc en lcd

adc_init();

lcd_init(LCD_DISP_ON_CURSOR); //CURSOR

lcd_clrscr();

lcd_gotoxy(0, 0);

_delay_ms(50);

terwijl(1)

{

adc_result0 = adc_read(0); // lees adc-waarde bij PA0

temp=adc_result0/2.01; // de temperatuur vinden

//lcd_gotoxy(0, 0);

//lcd_puts("Adc=");

//itoa(adc_result0, buffer, 10); // ADC-waarde weergeven

//lcd_puts(buffer);

lcd_gotoxy(0, 0);

itoa(temp, buffer, 10);

lcd_puts("Temp="); // temperatuur weergeven

lcd_puts(buffer);

lcd_gotoxy(7, 0);

lcd_puts("C");

ver=(1.8*temp)+32;

lcd_gotoxy(9, 0);

itoa(ver, buffer, 10);

lcd_puts(buffer);

lcd_gotoxy(12, 0);

lcd_puts("F");

_delay_ms(1000);

als(temp>=30)

{lcd_clrscr();

lcd_home();

lcd_gotoxy(0, 1);

lcd_puts("VENTILATOR AAN");

POORTB=(1<

}

als (temp<=30)

{

lcd_clrscr();

lcd_home();

lcd_gotoxy(7, 1);

lcd_puts("VENTILATOR UIT");

POORTB=(0<

}

}

}

Stap 4: Code Uitleg

Ik hoop dat je weet dat je weet hoe je ADC inschakelt en hoe je het lcd-scherm met Avr-microcontroller in deze code kunt interfacen wanneer de temperatuur meer dan 30 graden is, dan is de ventilator aan en kun je zien op de led-display FAN AAN en wanneer de temperatuur lager is dan 30 dan ventilator is uit en je kunt VENTILATOR UIT zien

Stap 5: U kunt het volledige project downloaden

Klik hier

Aanbevolen: