Hej!
Är på jakt efter en regulator i LUA som funkar i Fibaro. Har letat som en galning men hittar inget som jag kan översätta. Kanske finns det nån här som kan ge mig en hint eller om det finns nån enkel lösning.
Jag har en Frånluftsfläkt som jag vill styra via en RGBW och en PWM-omvandlare för 0-10V. Det rent fysiska här är löst och jag kan reglera hastigheten i Fibban. I kanalen har jag en C02-sensor som också rapporterar värdet via 0-10V till RGBW'n. Allt detta funkar alltså som det ska.
PROBLEMET: Jag vill styra fläkten så att den reglerar hastigheten så att CO2't ligger runt 800PPM. Önskar att det fanns nåt lätt sätt t.ex "Linked Devices" men när jag rotar runt där kan jag inte välja min sensor eller min varvtalsstyrning så kvar är väl då LUA.
Oerhört tacksam för hjälp!!!
Mattias, Umeå
PID Regulator för frånluftsfläkt.
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Det finns lite att hämta på Fibaros forum. Google translate kan behövas här.
https://forum.fibaro.com/topic/16652-ba ... ment-49535
Och nedanstående scen har jag laddat ned tidigare, men aldrig använt.
https://forum.fibaro.com/topic/16652-ba ... ment-49535
Och nedanstående scen har jag laddat ned tidigare, men aldrig använt.
Code: Select all
--[[
%% autostart
%% properties
90 value
90 valueSensor
%% globals
BoilerOnTime
--]]
if (fibaro:countScenes()>1)
then
fibaro:debug('Killed the second scene!');
fibaro:abort();
end
------------------------ Initialise variables ----------------------------
---------------------------- Set by user ---------------------------------
local kP = 400; -- Proportional value
local kI = 10; -- Integral value
local kD = 30; -- derivative value
local StepSize = 10; -- measuring interval in seconds
local CycleTime = 10; -- measure for 10 minutes (6 cycles/h) / 5 minutes (12 cycles/h) / 20 minutes (3 cycles/h)
local Threshold = 1; -- temperature threshold in degrees
------------------------ Measured/Calculated -----------------------------
if CycleTime < 5 then CycleTime = 5 end; -- minimum cycle time is 5 minutes
local ScaleFactor = CycleTime / 5;
local Actual = 0; -- Actual temperature
local SetPoint = 0; -- Set temperature
local Err = 0;
local Integral = 0; -- Calculated Integral value
local Boiler = 0; -- boiler on/off value
local heatingTime = 0;
local LastErr = 0;
fibaro:debug("Running...");
while true do
Actual = fibaro:getValue(90, "valueSensor"); -- read actual temperature
SetPoint = fibaro:getValue(90, "value"); -- read set temperature
fibaro:debug(Actual .. " ... " ..SetPoint);
Err = SetPoint - Actual; -- calculate temperature difference
fibaro:debug("Error=".. Err);
if (math.abs(Err) < Threshold) -- check if out of bounds
then
Integral = Integral + Err; -- accumulate the error integral
else
Integral = 0; -- zero it if out of bounds
end
P = Err*kP; -- proportional term
fibaro:debug("P="..P);
I = Integral*kI; -- integral term
fibaro:debug("I="..I);
D = (Err - LastErr)*kD; -- derivative term
fibaro:debug("D="..D);
heatingTime = P + I + D; -- Total heat = P+I+D
Integral = 0; -- reset integral
LastErr = Err; -- store last error value
if (heatingTime > 0) -- heatingTime must be positive to turn the boiler on
then
if heatingTime > 300 then heatingTime = 300 end
heatingTime = heatingTime*ScaleFactor;
-- fibaro:debug("Turning boiler on for "..heatingTime.." seconds."); -- Boiler on
-- fibaro:call(2,"sendEmail", "Heating", "Boiler on for: "..heatingTime.." seconds");
else
fibaro:debug("No heating required");
end
fibaro:setGlobal("BoilerOnTime", heatingTime);
fibaro:startScene(53) -- start boiler activator
heatingTime = 0; -- reset heatingtime
fibaro:sleep(CycleTime*60*1000); -- wait
end
--fibaro:abort();
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Tusen tack!
Hade missat det i forumen.
Det tråkiga är ju bara att jag skulle vilja ha en reglering på en analog utgång. Alltså ju mer avvikelse ju mer spänning på utgången.
Om jag inte fattar helt fel så reglerar dessa exempel bara en binär (AV/PÅ) utgång.
Om du har nån mer ledtråd så vore det grymt
Hade missat det i forumen.
Det tråkiga är ju bara att jag skulle vilja ha en reglering på en analog utgång. Alltså ju mer avvikelse ju mer spänning på utgången.
Om jag inte fattar helt fel så reglerar dessa exempel bara en binär (AV/PÅ) utgång.
Om du har nån mer ledtråd så vore det grymt
Kanske du kan jobba vidare med denna?
https://labjack.com/support/software/ex ... id-example
Skickat från min SM-N960F via Tapatalk
https://labjack.com/support/software/ex ... id-example
Skickat från min SM-N960F via Tapatalk