klasicke Arduino, 3x thermistor 10 kOhm, 3x odpor 10 kOhm, ev. LED a 120 Ohm odpor
Zapojenie je prakticky skopirovano s internetu: Pouzil som 0, 1, a 2. Zdalo sa mi, ze by stacil len jeden cerveny a len jeden cierny... Asi dva mesiace som to mal na stole, nez som nasel odvahu to zapojit.
Program je uz viacej zmeneny:
Kód: Vybrať všetko
#include <math.h>
unsigned long millis_start=millis();
void setup() {
pinMode(11, OUTPUT); // pin(11) - 120 Ohm - LED - GND
Serial.begin(9600);
}
double Thermister(int RawADC) { //Function to perform the fancy math of the Steinhart-Hart equation
double Temp=log(((10240000/RawADC)-10000));
Temp=1/(0.001129148+(0.000234125+(0.0000000876741*Temp*Temp))*Temp);
return Temp-273.15;
}
void secs(int s) {
millis_start+=s*1000;
while(millis()<millis_start);
return;
}
void loop() {
for(unsigned int i1=0; i1<=2; i1++) {
int val=analogRead(i1);
double temp=Thermister(val);
Serial.print(temp);
Serial.print(" ");
# ked pridam SD kartu, nebudem vedet, ci sensory funguji
if(!isnan(temp)) analogWrite(11,25);
delay(3);
digitalWrite(11,LOW);
delay(180);
}
Serial.println();
secs(5);
}
Etapa 2:
- Python 3.4.2
- pyserial-2.7.win32_py3k.exe (ten sa nenainstaluje ked Python nie je installed in the default location).
Kód: Vybrať všetko
import msvcrt
import serial
import string
import time
ser=serial.Serial(port='COM3',baudrate=9600,timeout=0)
print("Connected to: "+ser.portstr)
f1=open(time.strftime("%Y%m%d")+".dat","w")
line=""
while 1:
for c in ser.read().decode('utf-8'):
line+=c
if c=='\n':
# will fail with NAN
while not line[len(line)-1].isdigit(): line=line[0:len(line)-1]
print(time.strftime("%Y/%m/%d %H:%M:%S "),line)
print(time.strftime("%Y/%m/%d %H:%M:%S "),line,file=f1)
line=""
if msvcrt.kbhit():
if ord(msvcrt.getch())==27:
break
ser.close()
Konecna sustava vyzera takto: Ako prve som meral teplotu v mojej kanadskej studni:
- snima po 10 minut
- zelena: teplota v pivnici
- cervena: teplota, kde vychadza vzduch
- zelena: teplota 3 metry hluboko v potrubi
Etapa 3:
Napisat program, co to zobrazi. Ten asi nie je pre vas zaujimavy, urcite uz ccosi take mate.
Som z toho trocha zklamany, pocital som, ze vzduch sa v potrubi ohreje viac. Tie vykyvy teploty si neviem vysvetlit, zkusim to az bude velka zima a az prijdem na to, ako dostat sesnsor 40 m hluboko (tento som uvazal na vysuvny centimeter a napchal do rury. Zkusime dalkove ridene auticko, ak sa nepustim do robota).
Myslel som si, ze som techniku zvladol a pustil som sa do toho, na co to je urcene:
- smima po 30 vterin
- modra: voda z krbu
- cervena: boiler
- zelena: teplota v technickej mistnosti (ziarovka zhasnuta, pocitac inde, len Arduino)
Akoze sa cerpadlo spusti pri 71 C a mi ukazovalo menej ako 30, prehodil som sensor, coz vysvetluje skok modrej cary.
Chcel som mat na graphu 70 C, tak som rozne prehazoval sensor. Vypadavalo mi Arduino, musel som restartovat pocitac. Nakonec som zistil, ze sensor sa nesmi dotknut kovu - myslel som, ze je to akasi keramika. (Mohli to uz v tovarne odisolovat.)
V zufalstvi som si povedal, ze zacnem skolnou ulohou (nie je to ztratene, chcem jednou zmerat, jak dlho boiler udrzi teplu vodu, ked sa nepouziva):
- snima po 30 verinach
- zelena: sklenica s teplou vodou, trocha isolovana
- modra: sklenica s teplou vodou, neisolovana
- cervena: teplota v pivnici
Stupa teplota v pivnici... a zistil som, ze sa mi sensor dotyka sklenice.
Cudne, co robi ten modry sensor. Chapem, ze meranie nie je uplne presne, no, za nejaky cas sa upokoji.
Zda sa, ze elektronika nie je taka lahka, ako som si myslel