Msemtd HomeAuto: Difference between revisions
Line 94: | Line 94: | ||
** http://arduino.cc/playground/ComponentLib/Thermistor2 | ** http://arduino.cc/playground/ComponentLib/Thermistor2 | ||
** http://arduino.cc/playground/ComponentLib/Thermistor3 | ** http://arduino.cc/playground/ComponentLib/Thermistor3 | ||
This is the best code I have found so far - from Thermistor2 but allows us to have our own parameters definition... | |||
<div style ="height:200px;overflow-x:hidden;overflow-y:auto;border: 4px solid green;"> | |||
<syntaxhighlight lang="cpp" line="GESHI_FANCY_LINE_NUMBERS"> | |||
#include <math.h> | |||
// enumarating 3 major temperature scales | |||
enum { | |||
T_KELVIN=0, | |||
T_CELSIUS, | |||
T_FAHRENHEIT | |||
}; | |||
// manufacturer data for episco k164 10k thermistor | |||
// simply delete this if you don't need it | |||
// or use this idea to define your own thermistors | |||
#define EPISCO_K164_10k 4300.0f,298.15f,10000.0f // B,T0,R0 | |||
// Temperature function outputs float , the actual | |||
// temperature | |||
// Temperature function inputs | |||
// 1.AnalogInputNumber - analog input to read from | |||
// 2.OuputUnit - output in celsius, kelvin or fahrenheit | |||
// 3.Thermistor B parameter - found in datasheet | |||
// 4.Manufacturer T0 parameter - found in datasheet (kelvin) | |||
// 5. Manufacturer R0 parameter - found in datasheet (ohms) | |||
// 6. Your balance resistor resistance in ohms | |||
float Temperature(int AnalogInputNumber,int OutputUnit,float B,float T0,float R0,float R_Balance) | |||
{ | |||
float R,T; | |||
R=1024.0f*R_Balance/float(analogRead(AnalogInputNumber)))-R_Balance; | |||
T=1.0f/(1.0f/T0+(1.0f/B)*log(R/R0)); | |||
switch(OutputUnit) { | |||
case T_CELSIUS : | |||
T-=273.15f; | |||
break; | |||
case T_FAHRENHEIT : | |||
T=9.0f*(T-273.15f)/5.0f+32.0f; | |||
break; | |||
default: | |||
break; | |||
}; | |||
return T; | |||
} | |||
// example of use #1 | |||
// reading from analog input 1, using episco k164 definition | |||
// and 10k balance, getting result in celsius | |||
void setup() { | |||
Serial.begin(9600); | |||
} | |||
void loop() { | |||
Serial.println("*************************"); | |||
Serial.println("10k Balance"); | |||
Serial.println(Temperature(1,T_CELSIUS,EPISCO_K164_10k,10000.0f)); | |||
Serial.println("*************************"); | |||
delay(500); | |||
} | |||
//example of use #2 | |||
// using numbers instead of episco k164 definition | |||
// this time reading from analog input 2 | |||
// getting result in fahrenheit | |||
void setup() { | |||
Serial.begin(9600); | |||
} | |||
void loop() { | |||
Serial.println("*************************"); | |||
Serial.println("10k Balance"); | |||
Serial.println(Temperature(2,T_FAHRENHEIT,4300.0f,298.15f,10000.0f,10000.0f)); | |||
Serial.println("*************************"); | |||
delay(500); | |||
} | |||
</syntaxhighlight> | |||
</div> | |||
I certainly would like one of these data logger devices... | I certainly would like one of these data logger devices... |
Revision as of 15:01, 16 December 2011
Michael's Home Instrumentation
- New porch doors have required me to rethink my doorbell!
- We can't hear people knocking on the door
- The people at the door don't know if the old doorbell actually rang
- The old wireless doorbell often didn't ring because the batteries were flat!
- The wireless doorbell didn't require drilling holes in the doorframe - this is a plus
- the 12V battery in the wireless doorbell pushbutton was expensive!
I want to do something simple with the old wireless doorbell and start to develop an extensible home automation/instrumentation project. I have a Nanode and a number of Xinos which I intend to connect on a 4-wire bus around the house.
The old doorbell
Push-button:
- PCB labelled "RL-09 04.04.23"
- Battery 12V A23S "Replaces: 23A, MS21/MN21" A23 on WP cheap 10x pack
- IC1: LP801/V8
Chime unit:
- PCB labelled "RL-09B 04.02.27"
- Batteries 4.5V, 3xAA
- IC2: LP816A
http://www.alldatasheet.com/view.jsp?Searchword=HCF4069UBE
The Nanode - Xino 4-wire Bus
Using a Nanode at my internet gateway router and communicating with and powering multiple slave Xinos on a 4-wire bus...
http://wiki.hackspace.org.uk/wiki/Project:Nanode/Applications#Using_the_Local_Serial_Bus
http://sustburbia.blogspot.com/2010/08/wired-network-for-arduinos.html
Read nanode MAC address: -
https://gist.github.com/1020951#file_nanode_mac.pde
MAC Address Read Test MAC address is 00:04:A3:03:DD:C7
The soil moisture tester
Do these plants need watering?
http://www.instructables.com/id/Garduino-Gardening-Arduino/
Temperature
I have a bag of surplus 47k thermistors (about 500) and I intend to build a number of circuits to measure temperature starting with the very simplest and culminating in a teachable HackSpace project with reasonable accuracy. We will put these devices in fridges, near heat sources, near doors, windows, indoors, outdoors, you name it.
The component:
- Listed in stores as "Future Electronics B4090K Thermistor 47k 5%"
- I think it may be this one
- however, the Vishay product may be obsolete and the tolerance is listed as 1.5% rather than 5%
VISHAY
NTCLE100 Series NTC 47 kOhm ±1.5 % Radial Leaded Standard Precision Thermistor
Mfr Part#: NTCLE100E3473JB0
Packaging : BAG
Std Packaging Qty: 500
Min Order Qty: 1
As low as: £0.1751 (GBP)
In Stock: No
Type:
NTC
Resistance:
47 kO
Tolerance (%):
±1.5 %
B-constant:
4090 °K
Temperature Range:
-40 to +125 °C
Some Google digging reveals...
- http://www.vishay.com/docs/29049/ntcle100.pdf
- these thermistors are colour coded
- Yellow Violet Orange Gold
- B25/85-VALUE = 4090K (+/- 5%) (the gold means 5%)
- Yellow Violet Orange Gold
The simplest circuits and Arduino code...
This is the best code I have found so far - from Thermistor2 but allows us to have our own parameters definition...
I certainly would like one of these data logger devices...