Stap 3: PID logica
De PID is het hart van deze code. De basistheorie is dat u drie factoren overwegen om erachter te komen hoeveel warmte toe te passen op het systeem:
1] hoe ver zijn we van de streefcijfers?
2] hoe snel krijgen we er?
3] hoeveel we zijn consequent uit?
OK, dus eerst vertegenwoordigen af, want dit is een 8-bit micro die overweg kan met een paar 16-bits registers, wij de temperaturen als de temp vermenigvuldigd met 64. Dit heet dekpunt math, omdat we alleen het decimaalteken verschuiven. Een 64 x vermenigvuldiger laat me krijgen een temp tot 1024 graden met 5 stukjes decimaaltekens (1/64ste per divisie). Omdat de temp sensor ons 2 decimale stukjes geeft, is dit genoeg voor precisie voor wat we maximaal.
Wanneer we berekenen hoeveel voor het opwarmen van de ruimte (het gevraagde vermogen), beginnen we met de proportionele winst. Om dit te krijgen, we aftrekken van de doel-temp van de huidige temperaturen en vermenigvuldig met de instelling van de winst. Als we dichter, voegen we minder en minder warmte. Uitgevoerd dit vanzelf zal, echter ons verlaten met een fout. Als de winst te laag is, zal dan de fout worden bijna constant. Te hoog, en het zal schommelen. Het is belangrijk om ervoor te zorgen wanneer jij deze wiskunde dat u wel op zoek naar overstorten op de registers. Als uw winst 1024 is en uw lezing 16C is, werkt de wiskunde aan het goed over de 65.535 dat je mag gaan. Dus zorg ervoor dat alle grenswaarden te gezond ones.
Om trilling te voorkomen dat toevoegen we de afgeleide gedeelte. De afgeleide van de temperatuur is een maat voor hoeveel het verandert. Dus om dit te doen we de laatste lezing besparen en het aftrekken van de huidige sessie. Nu, we vermenigvuldig dat met de afgeleide winst en krijgen een maat voor hoeveel van de proportionele krijgen wij nood te halen afhelpen van ter voorkoming van de overschrijding van het doel-temp.
Tot slot kan dat beetje fout die zullen altijd aanwezig wanneer u alleen P en D delen gebruikt worden verwijderd door het toevoegen van een factor die afkomstig is van hoe ver u bent geweest. Terwijl handig voor het houden van de set-punt, het kan niet worden benadrukt genoeg dat, omdat het zich ophoopt, de integraal winst het potentieel heeft om problemen sneller dan iets anders. Denk eraan: opstarten van het systeem en het is 82F, maar je hebt ingesteld voor de 225F. Voor de 45 minuten duurt om te komen tot het temp stapelen zich op meer winst.
We vermijden de meeste van deze door twee eenvoudige methodes:
1] limiet de I om iets kleins gedeelte... niet meer dan ongeveer 10% totale beschikbare winst
2] niet accumuleren ik winnen als de temperatuur zich beweegt in de juiste richting.
De tweede bit er is niet standaard, maar het leek te werken het beste in deze toepassing.
Zodra u alle onderdelen van de winst bij elkaar opgeteld hebt, converteren naar een output waarde.