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
![Smile :)](./images/smilies/icon_smile.gif)
Moderators: pedja089, stojke369, [eDo], trax
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);
}
}
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