Prof Creative Commons License 2016.04.17 0 0 1814

Hali!

 

Nem fogok mélységesen belemenni, csak azt javaslom, kezdjük az alapoktól!

 

Ne a kódolással indíts, hanem a koncepció papírra vetésével. Mit mérsz? Hogyan méred, milyen pontossággal és milyen mintavételezési gyakorisággal? Mikor (milyen gyakorisággal) és hogyan avatkozol be? Milyen sűrűn akarod kiíratni az értékeket?

 

Mindezt papíron, lehetőleg. Aztán kezdd el felfedezni az eredeti kódot, átírni azokat a részeket, amelyek szükségesek ahhoz, hogy úgy működjön, ahogy azt elvárod. Egyszerre egy részbe túrj bele, és addig ne nyúlj hozzá másikhoz, amelddig az nem működik tökéletesen!

 

Hőmérséklet modellehézéshez a legjobb a potméter plusz egy LED (relé felesleges), zéró a késése és viszonylag precíz (legalábbis annyira, hogy érdemben ne befolyásolja a debug folyamatot). Egy általad említett nagy hőtehetetlenségű (óránként 1 celsius) rendszernél ilyen pokoli nagy hiszterézis mellett napokig tesztelhetnéd, hogy működik-e a kód, és ha nem működik, még akkor sem lenne világos, hogy miért nem.

 

A PID-et egyelőre nem javaslom. Tisztán elvi alapon nem más, mint az eredeti if() szakasz kicserélése egy sokkal szofisztikáltabb, if-ekből és else-ekből álló rendszerre. A sima if() nagyjából megfelel egy termosztátnak, a PID viszont nem csak azt figyeli, hogy az adott érték alatt vagy fölött van-e a vizsgált változó, hanem azt is, hogy az aktuális változó értéke éppen közelít vagy távolodik-e a beállított értéktől, illetve ezt milyen sebességgel teszi. A változás mértékétől és irányától függően, továbbá a korábban beállított vagy betanult paramétereknek (P, I, D attribútumok) megfelelően kapcsolja be és ki a fűtőszálta (illetve analóg PID esetén módosítja a fűtési teljesítményt).

 

Ha kódot küldesz, lehetőleg az egészet küldd, mert így átláthatatlan és értelmezhetetlen!

 

Prof

Előzmény: prozZzac (1813)