[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4762: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4764: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4765: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4766: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
Toon onderwerp - Temperatuur onder nul meten • nodo-domotica.nl

nodo-domotica.nl

Temperatuur onder nul meten

Hier kan gediscussieerd worden over sensoren, electronica problemen, componenten, etc.

Temperatuur onder nul meten

Berichtdoor Sjoerdp » 24 mei 2012, 13:32

Met een LM35 sensor kun je in principe temperaturen meten die onder nul zijn, maar dan moet je hem met zowel een positieve als negatieve voedingsspanning voeden. Dat wordt lastig met een Arduino volgens mij.

Waarom kiezen de meeste mensen specifiek voor een LM35 als er niet beneden nul gemeten kan worden? Voor de woonkamer geen probleem, maar voor buitentemperatuur natuurlijk wel.

De LM34 kan wel makkelijker beneden nul meten, maar is gecalibreerd naar Fahrenheit. Dus geen lineair verloop op Celcius (zit een constante in de omrekening als ik het me goed herinner).

Iemand tips of ideeën? Ik zou graag de binnentemperatuur en buitentemperatuur in de WebApp zichtbaar maken en met twee sensoren zou dat niet zo moeilijk moeten zijn.
Sjoerdp
 
Berichten: 106
Geregistreerd: 01 okt 2011, 17:20

Re: Temperatuur onder nul meten

Berichtdoor PieterS » 24 mei 2012, 14:42

PieterS
 
Berichten: 234
Geregistreerd: 21 dec 2011, 22:11

Re: Temperatuur onder nul meten

Berichtdoor mvdbro » 24 mei 2012, 19:13

Ik gebruik al enkele maanden een Oregon Scientific THN132N buitensensor die draadloos via RF werkt en ook temperaturen onder nul meet. Hoef je ook geen gaten te boren in de muur voor een draadje. De RF modulatie is compatible met de RF ontvanger van de Nodo (On/Off keying)

Prijs 19.95

Heeft wel een extra stukje code in de nodo sofware nodig. Kan op termijn als plugin draaien.

Gr
Martinus
mvdbro
 
Berichten: 1092
Geregistreerd: 21 okt 2011, 12:06

Re: Temperatuur onder nul meten

Berichtdoor proza » 24 mei 2012, 19:29

- Jura Impressa F50 and a Starbucks MUG makes my day complete
Gebruikers-avatar
proza
 
Berichten: 420
Geregistreerd: 03 nov 2011, 22:44

Re: Temperatuur onder nul meten

Berichtdoor PieterS » 24 mei 2012, 20:23

PieterS
 
Berichten: 234
Geregistreerd: 21 dec 2011, 22:11

Re: Temperatuur onder nul meten

Berichtdoor mvdbro » 25 mei 2012, 07:03

Dit is de code die ik gebruik voor de Nodo r386 beta. Ik ben er nog niet helemaal uit of dit de juiste wijze is om de call naar processevent te maken, maar het werkt in elk geval wel. De waardes komen bij mij ook in de Webapp terecht. Ik gebruik zelf 3 van deze sensoren en sla de waardes op in de Nodo variabelen 11,12 en 13.

unsigned long Oregon_Decode(void)
{
int y = 1;
int c = 1;
int startpulses = 0;
unsigned long rfbit = 1;
unsigned long id = 0;
unsigned long channel = 0;
unsigned long rc = 0;
unsigned long flags = 0;
unsigned long data = 0;
unsigned long sign = 0;
byte digit1, digit2, digit3;
byte var;
int datavalue = 0;

// valid messages are between 196-206 pulses
if ((RawSignal.Number < 196) | (RawSignal.Number > 206)) return 0L;

// should start with minimum of 30 long pulses
for(byte x=1;x<=32;x++) if(RawSignal.Pulses[x] > 500) startpulses++;
if (startpulses < 30) return 0L;

for(byte x=1;x<=RawSignal.Number;x++)
{
if(RawSignal.Pulses[x] < 500)
{
rfbit = rfbit ^ 1;
x++;
}
if (y%2 == 1)
{
if ((c>=21) && (c<=36)) id = (id >> 1) | (rfbit << 15);
if ((c>=37) && (c<=40)) channel = (channel >> 1) | (rfbit << 3);
if ((c>=41) && (c<=48)) rc = (rc >> 1) | (rfbit << 7);
if ((c>=49) && (c<=52)) flags = (flags >> 1) | (rfbit << 3);
if ((c>=53) && (c<=64)) data = (data >> 1) | (rfbit << 11);
if ((c>=65) && (c<=68)) sign = (sign >> 1) | (rfbit << 3);
c++;
}
y++;
}

digit3 = data & 0xf;
digit2 = (data >> 4) & 0xf;
digit1 = (data >> 8) & 0xf;

// if valid type (1230), update user variable and process event
if (id == 1230)
{
var = 10 + channel;
if (var == 14) var = 13;
if ((var >= 11) & (var <= 13))
{
datavalue = ((1000 * digit1) + (100 * digit2) + (10 * digit3));
if ((sign & 0x8) == 8) datavalue = -1 * datavalue;
UserVar[var-1] = datavalue;
ProcessEvent(AnalogInt2event(UserVar[var-1], var, CMD_VARIABLE_EVENT), VALUE_DIRECTION_INTERNAL, VALUE_SOURCE_VARIABLE, 0, 0);
}
}

// broadcast sensor data through UDP packet
// broadcastUDP(TempString);

return 1L;

}

Ik gebruik de plugin (nog) niet omdat deze pas wordt aangeroepen na de RAW signal verwerking. Ik wil dat deze functie als eerste in de RAWsignal verwerking wordt uitgevoerd en dat daarna verdere verwerking ook niet meer nodig is. Om dit te bereiken heb ik de functie 'AnalyzeRawSignal' ook aangepast:

unsigned long AnalyzeRawSignal(void)
{
unsigned long Code=0L;

if(RawSignal.Number==RAW_BUFFER_SIZE)return 0L; // Als het signaal een volle buffer beslaat is het zeer waarschijnlijk ruis.

if(Code=Oregon_Decode()) return 0L;

if(!(Code=HomeEasy_Decode()))
if(!(Code=RawSignal_2_Nodo()))
if(!(Code=RawSignal_2_KAKU()))
if(!(Code=RawSignal_2_NewKAKU()))
Code=RawSignal_2_32bit();

return Code; // Geen Nodo, KAKU of NewKAKU code. Genereer uit het onbekende signaal een (vrijwel) unieke 32-bit waarde uit.
}

Zo komen de waarden bij mij in de Nodo log voorbij:

Date=2012-05-25 (Fri), Time=07:58, System=Variables, Unit=1, Event=Variable 13,20.6
Date=2012-05-25 (Fri), Time=07:58, Output=HTTP(93.95.0.90), Event=Variable 13,20.6

Dit is dus sensor nr 3 met temperatuur 20.6 graden

Succes!
mvdbro
 
Berichten: 1092
Geregistreerd: 21 okt 2011, 12:06

Re: Temperatuur onder nul meten

Berichtdoor DrEnergy » 25 mei 2012, 10:11

Super! Ziet er erg goed uit! Leuk zou zijn als we op deze manier ook een compleet weerstation kunnen koppelen aan de Nodo, zodat je ook wind en regen etc kan meten en draadloos kan doorsturen naar de Nodo.

Ook een one-wire plugin zou erg welkom zijn voor de Nodo, ik heb alleen weinig kaas gegeten, los heb ik de DS18B20 sensoren allemaal al werken, aangesloten op 1 poort. Alleen geen idee hoe ik hier een plugin voor moet maken.
DrEnergy
 
Berichten: 145
Geregistreerd: 04 jan 2012, 09:09
Woonplaats: Dordrecht

Re: Temperatuur onder nul meten

Berichtdoor mvdbro » 25 mei 2012, 12:53

Ik gebruik zelf ook nog een DHT11 one-wire sensor die de relatieve luchtvochtigheid meet.
De code kun je in principe in het plugin tabblad opvoeren in de functie:

void UserPlugin_Periodically()

{
// VOORBEELD-1: Kookwekker die (ongeveer) iedere minuut af gaat
return;
}

In je functie kun je dan b.v. een event aanroepen die een variabele instelt.

Deze functie wordt echter niet iedere minuut aangeroepen, maar elke seconde. Dat is wellicht teveel voor dit doel. Houdt er rekening mee dat het uilezen van de one-wire unit tijd kost en als je dit heel vaak doet dan mis je mogelijk IR of RF signalen.
mvdbro
 
Berichten: 1092
Geregistreerd: 21 okt 2011, 12:06

Re: Temperatuur onder nul meten

Berichtdoor mvdbro » 30 mei 2012, 13:31

Ik kreeg af en toe nog foute metingen binnen en recentelijk had ik wat tijd om de checksum controle in te bouwen. Nu geen issues meer. Mijn huidige Nodo versie (op een Nodo Arduino 1.6):



Ziet er in mijn eigen paneel zo uit:
Afbeelding

gr
Martinus
mvdbro
 
Berichten: 1092
Geregistreerd: 21 okt 2011, 12:06

Re: Temperatuur onder nul meten

Berichtdoor DrEnergy » 30 mei 2012, 13:57

Ziet er erg mooi uit! Ikzelf wil nog steeds one-wire sensoren koppelen aan de Nodo, heb alleen geen flauw idee waar ik moet beginnen.

Heb al meerdere opstellingen gemaakt waar ik de sensoren (8 tot nu toe) kan uitlezen, ik kan de data versturen naar een SQL database en leuke query's draaien. Ik wil nu alleen de gegevens zoals jullie dit ook hebben met die andere sensoren laten zien in de webapp.

Huidige temperatuur, temp van afgelopen dagen, weken, maanden etc.

Wie kan mij helpen?
DrEnergy
 
Berichten: 145
Geregistreerd: 04 jan 2012, 09:09
Woonplaats: Dordrecht

Volgende

Keer terug naar De electronica hoek

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 29 gasten