Het testen van het windmeter programma zonder hardware.
© Harry Broeders.
Deze pagina is bestemd voor EP1 studenten van de THRijswijk.
Testen zonder hardware.
De programma's die beschreven staan op de webpagina
windmeter.htm kun je met behulp van THRSim11
ook zonder hardware testen. Het
THRSim11 programma
is een simulatieprogramma voor de 68HC11 microcontroller. Dit programma
is al geïnstalleerd op de PC's op school en kun je ook thuis installeren.
Zie:
http://bd.eduweb.hhs.nl/thrsim11_4_thuis/index.htm
Hier volgt een stap voor stap beschrijving waarmee je de testprogramma's
kunt simuleren:
-
Start THRSim11.
-
Kies de menu optie File, Options, Memory Configuration...
-
Configureer het geheugen als volgt:
Klik hier voor een verklaring van deze instellingen
(indien gewenst).
-
Om het programma te kunnen compileren heb je een zogenaamde makefile en een
linker script nodig. Klik hier voor meer uitleg
over het linker script en de makefile (indien gewenst). Maak een nieuw
directory aan en kopieer de files:
windmeter.c,
simplex3.ld en
makefile in dit directory.
Je kunt deze files kopiëren door met de cursor op de link te gaan staan
en op de rechterknop van de muis te klikken en vervolgens "Save Target
As..." te kiezen. Let op: Internet Explorer zet de extensie
.txt achter de makefile (na het downloaden). Deze extensie moet je
verwijderen.
-
Laad het programma windmeter.c in THRSim11 via het File,
Open... menu. Als het goed is wordt het programma nu automatisch in
de editor SciTe geopend.
-
Bij het simuleren duurt 2 seconden veel te lang. Daarom is het slim om bij
het simuleren maar 0,2 seconden te meten. Pas daarom de volgende regel in
het programma aan:
RT_perioden=49;
in plaats van
RT_perioden=488;
-
Je kunt het ingangssignaal simuleleren met de square wave generator (Kies
menu: Connect, Signal Generators, Square Wave Generator
-
Selecteer pin PA2 (IC1) en klik Connect en daarna OK.
-
Omdat het programma nu
maar 0.2 seconden meet moeten we de ingangsfrequentie 10x zo hoog kiezen
als in werkelijkheid. B.v. bij 14 omwentelingen per seconde moeten in het
echt 7 ledjes branden. Nu moeten dus bij 140 omw/sec 7 ledjes branden. 140
omw/sec komt overeen met een periodetijd van 7143 microseconden. De periodetijd
die je moet instellen voor de Square Wave Generator = 7143 * 2 = 14286 E
cycles (E is het kloksignaal van de 68HC11 en omdat de 68HC11 een klokfreq
heeft van 2 MHz komt 1 E cycle overeen met 0,5 microseconden.)
-
Als je nu de simulator start (F9) en wacht tot de RT_perioden variabele 0
geworden is kun je zien dat de variable aantal_leds op 7 staat. De simulator
gaat sneller als je zoveel mogelijk windows die je niet gebruikt (zoals de
listing en de CPU registers) minimaliseert.
-
Als je op het plusje klikt van de variabelen doa en dob kun je de code zien
die naar de leds wordt gestuurd. Je kunt deze codes binair weergeven door
de variabele te selecteren en via je rechtermuisknop de optie Binary te kiezen.
-
Door de periodetijd van de Square Wave Generator te varieren kun je meer
of minder ledjes laten branden.
Mogelijke
uitbreidingen:
-
Zorg ervoor dat het maximum continue zichtbaar is door het ledje die bij
de maximale waarde hoort te laten knipperen. Je moet het maximum kunnen resetten
door op PA0 te drukken.
-
Hou het maximum en het minimum bij en display het als op de knop PA1 wordt
gedrukt. Als PA0 wordt ingedrukt moet het maximum en minimum worden gewist.
-
Probeer de formule voor het bepalen van het patroon zodanig aan te passen
dat de ledjes de windkracht in Beaufort (0 t/m 12) weergeven. Zie bijvoorbeeld:
http://www.knmi.nl/voorl/nader/decompletewindschaalvanbeaufort.htm
of
http://www.cs.rug.nl/users/peter/Zeilen/Beaufort/
Mogelijke verbeteringen:
In het eerste semester en tweede semster van de hoofdfase (H1 en H2) leer
je nog veel meer over microcontrollers in het algemeen en de 68HC11 in het
bijzonder. Als je de onderwijsmodulen MICB1 en MICB2 volgt zal blijken dat
er nog andere (betere) mogelijkheden zijn:
-
In plaats van zelf (in de software) de pulsen op PA2 te tellen is het ook
mogelijk om de 68HC11 (in de hardware) de pulsen te laten tellen. De 68HC11
heeft voor dit doel een speciale zogenaamde "pulse accumulator". Je moet
dan wel het signaal afkomstig van de Hall sensor doorverbinden met de ingang
van deze pulse accumulator, pin PA7 van de 68HC11 (dit is pin C30 van de
connector).
-
In plaats van telkens 2 seconden lang de pulsen te tellen kun je ook de tijd
tussen twee pulsen bepalen. Met behulp van deze periodetijd kun je dan de
windsnelheid berekenen. Het voordeel van deze methode is dat de
windsnelheidsmeter veel sneller op veranderingen in de windsnelheid reageerd.