Vesikierron lämpötilan lukeminen ilman emolevyä

Liittynyt
24.11.2016
Viestejä
557
Olo on kuin kynsille olisi lyöty, kun osaan kyllä tehdä erilaisille mikrokontrollereille lämpötilojen lukemisen ihan koodaamalla, mutta onko suositella helpointa tapaa tehdä lämpötilojen luku niin että sen saisi esim. fan control:iin luettavaksi arvoksi, jolla sitten säädeltäisiin tuulettimien nopeuksia yms.
 
Tuo olisi yksi vaihtoehto, vähän kalliihko vain jos haluaa lukea yhden 10K termistorin arvon. Pitää tutustua että miten tuo pelaa.
 
GitHub - secretformula/FanControl.UsbTemp: A Fan Control Plugin for USB Temp Sensors
Joku näyttäis tehneen onewire anturille tuollaisen virityksen, joten eiköhän vastaavilla opeilla saa käytettyä termistoriakin. Itse saattaisin lähteä tekemään tuota niin että MCU usbilla kii koneeseen ja anturit MCU:hun kiinni.

Tuskinpa tuossa projektissa isommin säästää jos laskee omalle ajalleen yhtään hintaa. Harrastusmielessä kuitenkin hyvä projekti.
 
Joo siis ennenkaikkea harrastusmielessä. Tuossa mietin äsken, että jos usb yli haluaa hwinfo64:lle dataa(sen data on winkkarin rekisterissä), niin se että on usb-mcu kiinni koneessa ja se kirjoittelee winkkarin rekisteriin yhtään mitään, vaatii jonkin välisoftan kuten aquaputerilla esim. on..menee aika kinkkiseksi.
 
Tähän liittyen, olen itsekkin etsinyt vaihtoehtoa jossa veden lämpötilasensori olisi yhdellä johdolla kiinni vaikkapa mobon sisäisessä USB-liittimessä ilman että pitäisi vetää molexeilla virtaa kuten Quadrolla tarvitsee. Luulisi että joku on tällaisen joskus tehnyt?
 
Näin se pää raksuttaa vaikka asiaa ei aktiivisesti ajattele,
Fan Control - Detailed Documentation <-- fan control -tuuletinohjaussofta näköjään tukee myös "file" -tyyppistä sensoria:
1732051395096.png


Kaivoin wanhan arduino nanon (aliexpress, 2.4€) ja sain tapeltua siihen 10K termistorin lukevan ja sarjaliikenteenä ulos puskevan koodinpätkän,
tein pythonilla simppelin skriptin joka tekee c:\temperature\temp.sensor -tiedoston ja kirjoittaa lämpötilan tuonne.
Tiedosto siis aina aluksi tyhjennetään ja nakataan lämpötila celsiusasteina yhden desimaalin tarkkuudella tiedostoon, jota fan control lukee.
Koodi:
import serial
import sys
import os
import time

def read_temperature_from_serial(port):
    try:
        with serial.Serial(port, baudrate=9600, timeout=2) as ser:
            # Read a line from the serial port
            line = ser.readline().decode('utf-8').strip()
            # Attempt to convert to a float
            return float(line)
    except serial.SerialException as e:
        print(f"Serial error: {e}")
        sys.exit(1)
    except ValueError:
        print("Received invalid temperature data.")
        return None

def save_temperature_to_file(file_path, temperature):
    # Ensure the directory exists
    os.makedirs(os.path.dirname(file_path), exist_ok=True)
    
    # Write the temperature value to the file
    with open(file_path, 'w') as file:
        file.write(f"{temperature:.1f}")

def main():
    if len(sys.argv) != 2:
        print("Usage: python3 script.py <COM_PORT>")
        sys.exit(1)

    com_port = sys.argv[1]
    file_path = r"c:\temperature\temp.sensor"

    while True:
        temperature = read_temperature_from_serial(com_port)
        if temperature is not None:
            save_temperature_to_file(file_path, temperature)
            print(f"Temperature {temperature:.1f} saved to {file_path}")
        else:
            print("Skipping invalid temperature reading.")
        
        time.sleep(5)

if __name__ == "__main__":
    main()


Pitää huomenna illalla vaeltaa työhuoneelle pelikoneen äärelle ja asennella proof-of-concept -piuhahäkkyrä vesisäiliön termistoriin kiinni.
Pari kysymystä tässä vielä on:
1. miten saa järkevästi usb-liittimen kopan sisälle
2. miten saa automaattisesti käynnistymään ja ajamaan taustalla python-skriptin.

Hauska, että työkseen koodailee pythonilla mutta ihan täysin eri paikassa. Ei mitään käsitystä tosta kohdasta 2 vielä.
 
Olen joskus kääntänyt python ohjelmia exeksi, mutta niistä tulee aika kookkaita riippuen käytetyistä kirjastoista. Internetin mukaan windowsin startup osaisi ajaa python skriptin, jos python IDE on laitettu defaultiksi .py-fileille. Kokeilepa toimiiko tuo todella niin: Run a Python file when windows starts - CodeSpeedy

Olihan tuossa joku logiikka joka jäädyttää lämpötilalukeman yli normaalin mittausalueen, jos lämpötila-anturin johto katkeaa tai usb-johto on irti? Onko mikron päässä koodi joka ottaa useammasta näytteestä keskiarvon ennen pc:lle lähettämistä?
 
Joo tuo oli hyvä idea, että vetää lämpötilan skriptissä korkealle jos piuha irti. Tuo keskiarvo myös ns ilmainen idea, yleensä ovat silti peräkkäiset lukemat todella hyvin linjassa. Tällä hetkellä piuha irti - mittaus on absoluuttinen nollapiste. Pitää säätää illalla.
 
Pitää huomenna illalla vaeltaa työhuoneelle pelikoneen äärelle ja asennella proof-of-concept -piuhahäkkyrä vesisäiliön termistoriin kiinni.
Pari kysymystä tässä vielä on:
1. miten saa järkevästi usb-liittimen kopan sisälle
2. miten saa automaattisesti käynnistymään ja ajamaan taustalla python-skriptin.

Emolevystähän löytyy usein useampi USB 2.0 liitin ja kotelon etupaneelin USB:t harvemmin tarvitsee yhtä liitintä enempää. Joku tällainen varmaankin siistein ratkaisu: Internal PC USB 2 Port 2.0 9Pin Female to 2 Port A Female Adapter Converter Motherboard PCB Board Card Extender New - AliExpress 7. Toki jos sattuu lojumaan sopivaa liitintä nurkissa niin itsekin voi askarrella sopivaa piuhaa.
 
Joo, lopputulos on ollut hyvä.

Datan flow:
10Kohm termistori - arduino nano --> serialin kautta floattina celsiukset ulos - windowsilla NSSM(*):lla servicenä pyörivä python-skriptin lukee serialista arvot --> kirjoitetaan arvo tiedostoon temperature.sensor --> fan control:ssa on temperature.sensor -tiedostosta saatava lämpötila

Yksinkertaisia juttuja toisensa perään mutta melko säätö : ) toimii hienosti.

Arduino puskee arvoa 100 serialista ulos jos lämpötilasensori on irti, tai lämpötilamittaukset muuten ovat 10-80 välin ulkopuolella.

Kiitos vinkeistä ketjuun vastanneille!

* NSSM - the Non-Sucking Service Manager
 
Aliexpressistä aaa noita ”halpoja” kontrollereita alle kympillä muistaakseni. Saa kaksi anturia kiinni ja lähtöinä kaksi pwm. Napeista painamalla saa asetettu min ja max lämmöt sekä pwm %. Kolmessa koneessa käyttänyt noita ilman ongelmia.

Valitettavasti linkkiä en saa nyt kaivettua mutta katson myöhemmin jos kiinnostaa eikä löydy.
 

Uusimmat viestit

Statistiikka

Viestiketjuista
261 299
Viestejä
4 534 306
Jäsenet
74 784
Uusin jäsen
vanahabanjo

Hinta.fi

Back
Ylös Bottom