Er hoort natuurlijk een aardig stukje software bij. Voor het besturen van het scherm en het lezen van de sensoren zijn er libraries die gelukkig het werk een heel stuk vergemakkelijken.
Zo heb ik bijvoorbeeld het tekentje van de batterij getekend, alsook de onderste balk die aangeeft op welke uren van de dag de verwarming moet aanslaan. Het tekenen en tekst tonen ziet er zo uit:
// toon temp in groot font
u8g.setFont(u8g_font_helvR18);
u8g.setPrintPos(15, 43);
u8g.print(float(temperatuur) / 10, 1);
// teken de batterij
u8g.drawFrame(117,0,10,6);
u8g.drawFrame(127,2,1,2);
u8g.drawBox(119,2,3,2);
Dat stelt op zich dus niet zo veel voor. De code om mijn eigen brouwsel aan te sturen met het toetsenbord ziet er heel wat vreemder uit:
int keyboard[] = {1040,1140,1296,1400,1904,2000,2144,2240,2648,2740,2876,2968};
int temp=0;
temp = meting();
if (temp < 5000){
int onder = temp - 30;
int boven = temp + 30;
temp = -1;
for (int i=0; i <= 11; i++){
if ((onder < keyboard[i]) and (boven > keyboard[i]))
{temp = i;};
}
}
else
temp = -1;
return temp;
}
Het eerste wat een beetje vreemd lijkt is wellicht de lijst met getallen in het begin van de code. Het principe is nochtans eenvoudig.
Ik heb deze lijst opgesteld door te meten hoe lang het duurt om de condensator op te laden bij elke toets die je indrukt. De getallen zijn tijden in microseconden. Het programma zal nu met een vast interval de condensator opladen en weer ontladen. De tijd die daarvoor nodig is, wordt opgemeten. Stel nu dat het ongeveer 1040 microseconden duurt, dan weet het programma dat toets "1" was ingedrukt. Duurt het rond de 1140 microseconden, was toets "2" actief, enzoverder. Er is een marge van +/- 30 microseconden, want het blijft natuurlijk analoge electronica ;-)
Als er geen toets was ingedrukt, zal het best lang duren voor hij is opgeladen. Hoewel, in het echte leven zijn 26000 microseconden toch nog redelijk snel voorbij. Daar zorgt de extra (8ste) weerstand voor, die is veel groter dan de anderen.
Voor de rest is het belangrijkste deel van de software het berekenen van de juiste stand van de motor. Die zal afhangen van de temperatuur in de kamer en de gewenste temeratuur van de radiator. Dat is een groot stuk code en een beetje te saai om hier neer te schrijven.

Deze figuur toont het schema van een bipolaire stappenmotor. Dat is een economisch voordelige constructie omdat de spoelen worden omgepoold. Je bestuurt zo'n motor in 4 stappen: de spoelen worden één na één actief, en worden elk ook omgepoold. Voor dit soort motor heb je wel een meer complexe (lees: duurdere) besturing nodig omdat het ompolen van de spoelen meer electronica vraagt.
Geen opmerkingen:
Een reactie posten