nodo-domotica.nl http://www.nodo-domotica.nl/forum/ |
|
Temperatuur onder nul meten http://www.nodo-domotica.nl/forum/viewtopic.php?f=26&t=563 |
Pagina 1 van 2 Volgende » |
Auteur: | Sjoerdp [ 24 mei 2012, 13:32 ] |
Titel: | Temperatuur onder nul meten |
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. |
Auteur: | PieterS [ 24 mei 2012, 14:42 ] |
Titel: | Re: Temperatuur onder nul meten |
Auteur: | mvdbro [ 24 mei 2012, 19:13 ] |
Titel: | Re: Temperatuur onder nul meten |
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 |
Auteur: | proza [ 24 mei 2012, 19:29 ] |
Titel: | Re: Temperatuur onder nul meten |
Auteur: | PieterS [ 24 mei 2012, 20:23 ] |
Titel: | Re: Temperatuur onder nul meten |
Auteur: | mvdbro [ 25 mei 2012, 07:03 ] |
Titel: | Re: Temperatuur onder nul meten |
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! |
Auteur: | DrEnergy [ 25 mei 2012, 10:11 ] |
Titel: | Re: Temperatuur onder nul meten |
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. |
Auteur: | mvdbro [ 25 mei 2012, 12:53 ] |
Titel: | Re: Temperatuur onder nul meten |
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. |
Auteur: | mvdbro [ 30 mei 2012, 13:31 ] |
Titel: | Re: Temperatuur onder nul meten |
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: gr Martinus |
Auteur: | DrEnergy [ 30 mei 2012, 13:57 ] |
Titel: | Re: Temperatuur onder nul meten |
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? |
Pagina 1 van 2 | Alle tijden zijn GMT + 1 uur |
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/ |