Zdravo,
go imam senzorot LM335Z i sakam da go iskoristam.Dali ima nekoj programa,naravno vo PBP so MCS so primer za ovoj senzor?
Ako ima i ako go postavi ke bidam mnogu blagodaren
Pomos so LM335Z
Moderators: pedja089, stojke369, [eDo], trax
Re: Pomos so LM335Z
Ja nisam radio sa njim,ali poenta je AD konverzija i meris neki napon koji zavisi od temperature.Pogledaj pdf od LM35!
Re: Pomos so LM335Z
Evo jedan banalan kod koji sam pisao za sistem sa LM35C senzorom. Kod je pisan u CCS C-u. Kopiraj ovo sebi u notepad, bice preglednije.
Code: Select all
#include <16F876.h>
#device ADC = 10
#fuses HS, NOWDT, NOLVP, NOPROTECT, PUT
#use delay (clock = 20000000)
#use rs232 (baud = 9600, xmit = PIN_C6, rcv = PIN_C7)
///////////////////////////////////////////////////////////////////////////////
//U ovom projektu je koristen temperaturni senzor LM35C koji ima opseg od
//-40°C do +110°C. Osnova sistema je PIC 16F876A uC
///////////////////////////////////////////////////////////////////////////////
float vrijednost, temperatura, rezolucija, odnos;
void main()
{
setup_adc_ports(ALL_ANALOG); //svi pinovi AD konvertroa su analogni, referentni napon je radni napon uC (Vdd)
setup_adc(ADC_CLOCK_INTERNAL); //koristi se interni oscilator
set_adc_channel(0); //setuje se kanal 0 (pin AN0)
delay_us(10); //pauza za inicijalizaciju kanala 0
while(1)
{
rezolucija = 0.00488; // 5 / 1023 = 0,00488 -> referentni napon je 5 V, AD konvertor radi 10bitnu konverziju (1023)
odnos = 1.5 / 5; //odnos maksimalnog moguceg ulaza i referentnog napona
vrijednost = read_ADC(); //citanje podatka sa ADC ulaza i upisivanje u promjenjivu
temperatura = (rezolucija * vrijednost * odnos * 100) - 40; // * 100 -> potrebno je dobiti milivolte pa se zbog toga mnozi sa 1000,
//a posto senzor mjenja izlaz u koracima od 10mV rezultat treba podijeliti sa 10
// - 40 -> u ovom slucaju se koriti senzor kojem je opseg temperatura koje mjeri od -40°C do +110°C
//kada je temperatura koju mjeri -40°C tada na izlazu daje 0mV, a od rezultata se oduzima 40 da bi
//se dobilo ispisivanje tacne temperature (od -40°C do +110°C)
printf("\rTemperatura: %g°C\r", temperatura);
delay_ms(5000);
}
}
Re: Pomos so LM335Z
LM35 za mjerenje temperatura manjih od 0°C treba negativni napon, i ova teorija da na -40°C daje 0mV nije točna. Pogledaj datasheet, imaš tamo ovakvu shemu spoja: http://i39.tinypic.com/f9e1kh.jpg
Bolja opcija je korištenje TMP36, koji ne zahtjeva offset za mjerenje negativnih temperatura: http://www.ladyada.net/media/sensors/TMP35_36_37.pdf" onclick="window.open(this.href);return false;
Ili, ako ćemo digitalno, DS1820 je dobar izbor. Inače, LM35 mi pokazuje 2°C manje od DS1820, vjerojatno radi loše kalibracije parametara u kodu, dok DS1820 ima deklariranu točnost od 0.5°C po datasheetu, kontrolirano drugim termometrom.
Bolja opcija je korištenje TMP36, koji ne zahtjeva offset za mjerenje negativnih temperatura: http://www.ladyada.net/media/sensors/TMP35_36_37.pdf" onclick="window.open(this.href);return false;
Ili, ako ćemo digitalno, DS1820 je dobar izbor. Inače, LM35 mi pokazuje 2°C manje od DS1820, vjerojatno radi loše kalibracije parametara u kodu, dok DS1820 ima deklariranu točnost od 0.5°C po datasheetu, kontrolirano drugim termometrom.
Re: Pomos so LM335Z
Da, u pravu si. Moja greska, nisam dovoljno detaljno prelistao datasheet.
Re: Pomos so LM335Z
Sve pet, tu smo da pomognemo jedni drugima
Inače, što se tiče formule (primjer za AVR Arduino, isto 10-bit ADC), išlo bi nekako ovako:
Inače, što se tiče formule (primjer za AVR Arduino, isto 10-bit ADC), išlo bi nekako ovako:
Code: Select all
Voltage at pin in milliVolts = (reading from ADC) * (5000/1024)
This formula converts the number 0-1023 from the ADC into 0-5000mV (= 5V)
If you're using a 3.3V Arduino, you'll want to use this:
Voltage at pin in milliVolts = (reading from ADC) * (3300/1024)
This formula converts the number 0-1023 from the ADC into 0-3300mV (= 3.3V)
Then, to convert millivolts into temperature, use this formula:
Centigrade temperature = [(analog voltage in mV) - 500] / 10