Bygga energimätare för vätska

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
FormerMazda
Inlägg: 6412
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Bygga energimätare för vätska

Inlägg av FormerMazda »

Kanske skulle det vara en projekttråd, men jag kommer nog inte orka lägga energin för att göra en bra tråd så att säga.

Men iallafall, till mitt HVAC hemmavid så vill jag komplettera med ett par energimätare, och dessa tänkte jag bygga själv för det är kul mest. :)
Till flödesmätning, som blir den stora kullen att gå över, så har jag köpt ett par mätare från amazon: Länk

Dessa är helt enkelt en liten propeller med magnet som snurrar förbi en halleffekt. Så man får x pulser per enhet vätska som flödar förbi.
Enligt spec: Flödesimpuls: 6,6 x Q (Q = L/min ± 3 %)

Den är redan enkelt uppkopplad till en esp32 med ett jätteenkelt program i som teoretiskt borde ge mig flöde.
Men jag tror mer på att mäta fram vad faktorn är, men hur?

Enklaste, men också noggrannaste, vore att fylla en 10-liters hink vid olika flöden och mäta antal pulser jag får?
Hade jag ett känt flöde kunde jag såklart kalibrerat mot det, men det har jag helt enkelt inte. Det får bli genom att öppna en kran olika mycket.

Eller har vi andra idéer? :)
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31237
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Re: Bygga energimätare för vätska

Inlägg av MadModder »

Teoretiskt borde du få samma antalet pulser oavsett hur fort eller sakta du fyller hinken, så är mätaren någorlunda stabil/linjär är det bara att dela 10L med antalet pulser.
Annars måste nog tiden tas med i beräkningen så man kan plotta en kurva med flöde relativt frekvens.
Användarvisningsbild
FormerMazda
Inlägg: 6412
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Bygga energimätare för vätska

Inlägg av FormerMazda »

Teoretiskt borde det inte skilja antal pulser. Men det räknar jag med. :D
Sen hoppas jag det kommer vara inom acceptabel differens.

Men jag tänker att fyller jag en hink i typ 4-5olika flöden så ser jag väl relativt exakt hur exakt den är.
Och ponera att diffen inte är så stor så borde jag få en bra siffra på pulser per liter. (eller annat enhet)

Kanske kommer jag hitta ett flöde där den inte är pålitlig, "databladet" säger 1-30L/min, men verkligheten kanske är en annan.
Vet jag när den slutar räkna rätt så kan jag väl i mjukvara bortse från ytterflöden och bara mäta inom ok flöden.

Tänker högt här. :)
Användarvisningsbild
petertub
Inlägg: 1026
Blev medlem: 21 september 2022, 15:59:11
Kontakt:

Re: Bygga energimätare för vätska

Inlägg av petertub »

FormerMazda skrev: 21 maj 2025, 11:23:33 Kanske skulle det vara en projekttråd, men jag kommer nog inte orka lägga energin för att göra en bra tråd så att säga.

Men iallafall, till mitt HVAC hemmavid så vill jag komplettera med ett par energimätare, och dessa tänkte jag bygga själv för det är kul mest. :)
Till flödesmätning, som blir den stora kullen att gå över, så har jag köpt ett par mätare från amazon: Länk

Dessa är helt enkelt en liten propeller med magnet som snurrar förbi en halleffekt. Så man får x pulser per enhet vätska som flödar förbi.
Enligt spec: Flödesimpuls: 6,6 x Q (Q = L/min ± 3 %)

Den är redan enkelt uppkopplad till en esp32 med ett jätteenkelt program i som teoretiskt borde ge mig flöde.
Men jag tror mer på att mäta fram vad faktorn är, men hur?

Enklaste, men också noggrannaste, vore att fylla en 10-liters hink vid olika flöden och mäta antal pulser jag får?
Hade jag ett känt flöde kunde jag såklart kalibrerat mot det, men det har jag helt enkelt inte. Det får bli genom att öppna en kran olika mycket.

Eller har vi andra idéer? :)
Bättre noggranhet kan fås med kugghjolsmätare https://www.ebay.com/itm/166783492814?_ ... R86ApKzeZQ
Dessa är dock känslaga för föroreningar. Köpte själv en sådan och gjorde en bränsleförbrukningsmätare för en motorbåt.
Användarvisningsbild
FormerMazda
Inlägg: 6412
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Bygga energimätare för vätska

Inlägg av FormerMazda »

Det kanske blir att byta givare om dessa inte duger. Men tills det beslutet är taget så försöker jag få dessa att funka. :)

Gjorde ett enkelt test på lunchen med att tejpa fast den på en pet-flaska som jag skar hål i och trädde på en kran.
På så vis fick jag givaren under nivån så att säga, så ingen luft var med i flödet.

Med den teoretiska beräknade flödesmätningen så kunde jag faktiskt se att den låg hyfsat stabilt på dryga 1 L/min, men orörd kran så mätte den typ 1,15-1,2 L/min.
Sen är ju denna siffra i botten på teoretisk lägsta flöde, jag skulle vilja ha ett högre flöde men det är blir snabbt slabbigt i en diskho med porlande vatten och sladdar och allt. :D

Testet bevisade inget mer än att värdet åtminstone inte fladdrade mellan osannolika värden.

Programmet för den nyfikne förresten:
(Ta det för vad det är, ett ihopkastat test bara för att se nåt)

Kod: Markera allt

#include <SPI.h> //För OLED
#include <Wire.h> //vene..
#include <Adafruit_SSD1306.h> //För OLED
Adafruit_SSD1306 display(128, 64, &Wire, 4); //Width, height, vene, RST-pin (anv. ej på disp, men låt stå
// this constant won't change:
const int buttonPin = 27;  // the pin that the pushbutton is attached to


// Variables will change:
int buttonPushCounter = 0;  // counter for the number of button presses
int buttonState = 0;        // current state of the button
int lastButtonState = 0;    // previous state of the button

int Htime;              //integer for storing high time
int Ltime;                //integer for storing low time
float Ttime;            // integer for storing total time of a cycle
float frequency;        //storing frequency
float lph;            //Flow Rate (Litres/hour) = (Pulse frequency x 60 min) / 7.5Q
float lpm;
float lps;

void setup() {

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //starta OLED, adress 0x3C
  display.display();  delay(1000);
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  Serial.begin(19200);

    display.clearDisplay();
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0, 0);            // Start at top-left corner
    display.setTextSize(2);
     display.display();

}


void loop() {
    
    Htime=pulseIn(buttonPin,HIGH);      //read high time
    Ltime=pulseIn(buttonPin,LOW);        //read low time
    Ttime = Htime+Ltime;
    frequency=1000000/Ttime;    //getting frequency with Ttime is in Micro seconds
    
    lpm = frequency / 6.6;
    lph = lpm * 60;
    lps = lpm / 60;
display.clearDisplay();
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0, 0);            // Start at top-left corner
    display.setTextSize(2);
    display.println(lps);
    display.println(lpm);
    display.println(lph);
    display.display();

delay(500);

}

Skriv svar