Pera1
Kansalainen
- Liittynyt
- 16 Tammikuu 2023
- Viestit
- 21
Moi
Tuollaisen pykäsin python3.lla ja hyvillä ohjeilla.
Lämpöanturit ovat yksilöllisiä ja niillä on oma tunnistenumero 28-00..jotain.
Voit ketjuttaa niitä melkein loputtomasti.
Mulla tässä seitsämän anturia ja hyvin pelaa.
Pisin johdotus 4m.
Käytän raspberry pi zeroa.
Anturissa 3,3V + 4,7kilo-ohmin vastus datapinnin väliin
5V syöttöjännite mitä ei saa laittaa zeron pinneihin käy anturiin, valmistajan mukaan.
Eli kummatkin jännitteet tarvitaan, jos matkat pitkiä tai antureita paljon.
Yksittäiset toimii 3,3V hyvin.
Tarvikkeet DS18B20 lämpöanturiin.
Raspberry pi Zero tai muu raspberry pi 33,50 € 1kpl
Jos et omista, vaikeuksia saada 25.1.2023.
https://www.partco.fi/fi/raspberry-pi/raspberry-pi/20722-rpi-zero-wh.html
lämpötila-anturi ds18b20
esim. https://www.triopak.fi/fi/tuote/DS18B20 6.80€ 1kpl
Vastus
esim. https://www.triopak.fi/fi/tuote/MFR60S4K70LFA1 0,15€ 1kpl
Jos lämpotila-antureita ketjuttaa 1kpl vastuksia riittää ketjua kohti.
Rinnan kytkentä vaatii jokaiseen anturiin oman vastuksen.
Virtalähde 5V itsellä 7,5V 1,5A ja kotelossa regulaattori 5-32V 1kpl
jolla saan vakaan 5V jännitteen.
Voi käytää raspin omaa 5V mutta jos paljon ketjutettu amppeerit ei riitä.
Jännite regulaattori https://www.triopak.fi/fi/tuote/LM2576T-ADJG
säädettävä 1.3-37V 3A 2,73€
Ei kauhean hintavaa jos omistaa jo raspberry pi:n.
Tällä pääsee alkuun:
https://blogit.gradia.fi/sahkonet/k...ry-pi-harjoitukset/7-1-wire-lampotila-anturi/
Jouduin tulostukseen laittamaan nuo pisteet eteen koska en osaa laitaaa upotusta python koodista.
Ne täytyy poistaa varsinaisessa pythonissa.
Python3 tarkka sisennyksistä ei toimi jos siennykset ei kohdallaan.
Aika sekasotku siitä kuvan mukaan tullut matta toimii.
#ds18b20 lämpötilan mittaus
import time
import csv
import os
import glob
base_dir = '/sys/bus/w1/devices'
#Store our device files to a list
device_files = []
device_files.append(base_dir + '/28-00000e81750d/w1_slave')
device_files.append(base_dir + '/28-00000e80c597/w1_slave')
device_files.append(base_dir + '/28-00000e813d17/w1_slave')
device_files.append(base_dir + '/28-00000e80b7bb/w1_slave')
device_files.append(base_dir + '/28-00000e8098a3/w1_slave')
device_files.append(base_dir + '/28-00000e81cc61/w1_slave')
device_files.append(base_dir + '/28-00000e809b57/w1_slave')
def read_temp_raw(device_file):
........f = open(device_file, 'r')
........lines = f.readlines()
........f.close()
........return lines
def read_temp(device_file):
........lines = read_temp_raw(device_file)
.........while lines[0].strip()[-3:] !='YES':
................time.sleep(1)
................lines = read_temp_raw_a
........equals_pos = lines[1].find('t=')
........if equals_pos != -1:
................temp_string = lines[1][equals_pos+2:]
................temp_c = int(temp_string) / 1000 # /1000 for correction into C,>
................temp_c = str(round(temp_c, 1))
................return temp_c
#Create a list to store our results. List will be the same length as the number>
temperature_results = [0]*len(device_files)
while True:
..............timenow = time.asctime
..............for device_num, device_file in enumerate(device_files):
#Read each device in turn and store the result to the results list.
..............temperature_results[device_num] = read_temp(device_file)
........print(" Lattia_menovesi =",temperature_results[0],"C")
........print(" Lattia_paluuvesi =",temperature_results[1],"C")
........print("_______________________________")
........print(" Ulko_lampotila =",temperature_results[2],"C")
........print("Kotelon_lampotila =",temperature_results[3],"C")
........print("_______________________________")
........print(" Kattilan_lampotila =",temperature_results[4],"C")
........print("_______________________________")
........print(" Sisaatulo_ilma =",temperature_results[5],"C")
........print(" Poisto_ilma =",temperature_results[6],"C")
........print("_______________________________")
........print("_______________________________")
........print("|-----------------------|")
........obj = time.localtime()
........t = time.asctime(obj)
........print(t)
........print("|-----------------------|")
........print("_______________________________")
........print("_______________________________")
........time.sleep(600) #This is the pause between readings in seconds, there is lag #induced by the 1w protocol
Tällainen tulos:
_______________________________
Lattia_menovesi = 33.8 C
Lattia_paluuvesi = 26.7 C
_______________________________
Ulko_lampotila = 4.4 C
Kotelon_lampotila = 26.2 C
_______________________________
Kattilan_lampotila = 61.3 C
_______________________________
Sisaatulo_ilma = 17.9 C
Poisto_ilma = 13.9 C
_______________________________
_______________________________
|-----------------------|
Wed Jan 25 11:26:40 2023
|-----------------------|
_______________________________
_______________________________
Lattia_menovesi = 33.2 C
Lattia_paluuvesi = 26.7 C
_______________________________
Ulko_lampotila = 4.4 C
Kotelon_lampotila = 26.2 C
_______________________________
Kattilan_lampotila = 60.4 C
_______________________________
Sisaatulo_ilma = 18.0 C
Poisto_ilma = 14.0 C
_______________________________
_______________________________
|-----------------------|
Wed Jan 25 11:36:47 2023
|-----------------------|
_______________________________
_______________________________
Lattia_menovesi = 32.4 C
Lattia_paluuvesi = 26.7 C
_______________________________
Ulko_lampotila = 4.4 C
Kotelon_lampotila = 26.2 C
_______________________________
Kattilan_lampotila = 63.9 C
_______________________________
Sisaatulo_ilma = 18.0 C
Poisto_ilma = 14.0 C
_______________________________
_______________________________
|-----------------------|
Wed Jan 25 11:46:53 2023
|-----------------------|
Tuollaisen pykäsin python3.lla ja hyvillä ohjeilla.
Lämpöanturit ovat yksilöllisiä ja niillä on oma tunnistenumero 28-00..jotain.
Voit ketjuttaa niitä melkein loputtomasti.
Mulla tässä seitsämän anturia ja hyvin pelaa.
Pisin johdotus 4m.
Käytän raspberry pi zeroa.
Anturissa 3,3V + 4,7kilo-ohmin vastus datapinnin väliin
5V syöttöjännite mitä ei saa laittaa zeron pinneihin käy anturiin, valmistajan mukaan.
Eli kummatkin jännitteet tarvitaan, jos matkat pitkiä tai antureita paljon.
Yksittäiset toimii 3,3V hyvin.
Tarvikkeet DS18B20 lämpöanturiin.
Raspberry pi Zero tai muu raspberry pi 33,50 € 1kpl
Jos et omista, vaikeuksia saada 25.1.2023.
https://www.partco.fi/fi/raspberry-pi/raspberry-pi/20722-rpi-zero-wh.html
lämpötila-anturi ds18b20
esim. https://www.triopak.fi/fi/tuote/DS18B20 6.80€ 1kpl
Vastus
esim. https://www.triopak.fi/fi/tuote/MFR60S4K70LFA1 0,15€ 1kpl
Jos lämpotila-antureita ketjuttaa 1kpl vastuksia riittää ketjua kohti.
Rinnan kytkentä vaatii jokaiseen anturiin oman vastuksen.
Virtalähde 5V itsellä 7,5V 1,5A ja kotelossa regulaattori 5-32V 1kpl
jolla saan vakaan 5V jännitteen.
Voi käytää raspin omaa 5V mutta jos paljon ketjutettu amppeerit ei riitä.
Jännite regulaattori https://www.triopak.fi/fi/tuote/LM2576T-ADJG
säädettävä 1.3-37V 3A 2,73€
Ei kauhean hintavaa jos omistaa jo raspberry pi:n.
Tällä pääsee alkuun:
https://blogit.gradia.fi/sahkonet/k...ry-pi-harjoitukset/7-1-wire-lampotila-anturi/
Jouduin tulostukseen laittamaan nuo pisteet eteen koska en osaa laitaaa upotusta python koodista.
Ne täytyy poistaa varsinaisessa pythonissa.
Python3 tarkka sisennyksistä ei toimi jos siennykset ei kohdallaan.
Aika sekasotku siitä kuvan mukaan tullut matta toimii.
#ds18b20 lämpötilan mittaus
import time
import csv
import os
import glob
base_dir = '/sys/bus/w1/devices'
#Store our device files to a list
device_files = []
device_files.append(base_dir + '/28-00000e81750d/w1_slave')
device_files.append(base_dir + '/28-00000e80c597/w1_slave')
device_files.append(base_dir + '/28-00000e813d17/w1_slave')
device_files.append(base_dir + '/28-00000e80b7bb/w1_slave')
device_files.append(base_dir + '/28-00000e8098a3/w1_slave')
device_files.append(base_dir + '/28-00000e81cc61/w1_slave')
device_files.append(base_dir + '/28-00000e809b57/w1_slave')
def read_temp_raw(device_file):
........f = open(device_file, 'r')
........lines = f.readlines()
........f.close()
........return lines
def read_temp(device_file):
........lines = read_temp_raw(device_file)
.........while lines[0].strip()[-3:] !='YES':
................time.sleep(1)
................lines = read_temp_raw_a
........equals_pos = lines[1].find('t=')
........if equals_pos != -1:
................temp_string = lines[1][equals_pos+2:]
................temp_c = int(temp_string) / 1000 # /1000 for correction into C,>
................temp_c = str(round(temp_c, 1))
................return temp_c
#Create a list to store our results. List will be the same length as the number>
temperature_results = [0]*len(device_files)
while True:
..............timenow = time.asctime
..............for device_num, device_file in enumerate(device_files):
#Read each device in turn and store the result to the results list.
..............temperature_results[device_num] = read_temp(device_file)
........print(" Lattia_menovesi =",temperature_results[0],"C")
........print(" Lattia_paluuvesi =",temperature_results[1],"C")
........print("_______________________________")
........print(" Ulko_lampotila =",temperature_results[2],"C")
........print("Kotelon_lampotila =",temperature_results[3],"C")
........print("_______________________________")
........print(" Kattilan_lampotila =",temperature_results[4],"C")
........print("_______________________________")
........print(" Sisaatulo_ilma =",temperature_results[5],"C")
........print(" Poisto_ilma =",temperature_results[6],"C")
........print("_______________________________")
........print("_______________________________")
........print("|-----------------------|")
........obj = time.localtime()
........t = time.asctime(obj)
........print(t)
........print("|-----------------------|")
........print("_______________________________")
........print("_______________________________")
........time.sleep(600) #This is the pause between readings in seconds, there is lag #induced by the 1w protocol
Tällainen tulos:
_______________________________
Lattia_menovesi = 33.8 C
Lattia_paluuvesi = 26.7 C
_______________________________
Ulko_lampotila = 4.4 C
Kotelon_lampotila = 26.2 C
_______________________________
Kattilan_lampotila = 61.3 C
_______________________________
Sisaatulo_ilma = 17.9 C
Poisto_ilma = 13.9 C
_______________________________
_______________________________
|-----------------------|
Wed Jan 25 11:26:40 2023
|-----------------------|
_______________________________
_______________________________
Lattia_menovesi = 33.2 C
Lattia_paluuvesi = 26.7 C
_______________________________
Ulko_lampotila = 4.4 C
Kotelon_lampotila = 26.2 C
_______________________________
Kattilan_lampotila = 60.4 C
_______________________________
Sisaatulo_ilma = 18.0 C
Poisto_ilma = 14.0 C
_______________________________
_______________________________
|-----------------------|
Wed Jan 25 11:36:47 2023
|-----------------------|
_______________________________
_______________________________
Lattia_menovesi = 32.4 C
Lattia_paluuvesi = 26.7 C
_______________________________
Ulko_lampotila = 4.4 C
Kotelon_lampotila = 26.2 C
_______________________________
Kattilan_lampotila = 63.9 C
_______________________________
Sisaatulo_ilma = 18.0 C
Poisto_ilma = 14.0 C
_______________________________
_______________________________
|-----------------------|
Wed Jan 25 11:46:53 2023
|-----------------------|
Viimeksi muokattu: