Uploaded by Jaydi Maat

SEV pr2 Olimexino Ned v2022

advertisement
Olimexino
Model based software development
for a microcontroller system
Saving Energy in a Vehicle
Practicum: Aansturing LED
Saving Energy in a Vehicle
Rick Gijsberts
Versie 2.0
Inhoudsopgave
1.
Doel van de practicum opdracht ........................................................................................................... 3
2.
Voorwaarde om aan het practicum te beginnen .................................................................................. 3
3.
Informatie over de gebruikte hardware ................................................................................................ 4
4.
Het model in Simulink. (enkel een input) .............................................................................................. 5
5.
Compileer het model en programmeer je Olimexino. .......................................................................... 8
6.
Bekijk variabelen doormiddel van HANtune. ...................................................................................... 10
7.
Bereid het model uit met een output. ................................................................................................ 13
8.
Verbind input en output ...................................................................................................................... 17
9.
Maak een automotive regeling (actieve licht regeling) ....................................................................... 18
Overzicht van afbeeldingen.
Figure 1 Library Browser Analog Input .......................................................................................................... 5
Figure 2 Analog Input Block Parameters ....................................................................................................... 5
Figure 3 Analog Input without signal description ......................................................................................... 6
Figure 4 Analog Input with signal description ............................................................................................... 6
Figure 5 Matlab Command Window (add Signal) ......................................................................................... 7
Figure 6 Added signal visible in Workspace .................................................................................................. 7
Figure 7 Change Signal to Exported Global ................................................................................................... 7
Figure 8 Build button in Simulink .................................................................................................................. 8
Figure 9 Microboot waiting for target reset.................................................................................................. 8
Figure 10 Step 1 for bootloader mode. Press SW1 ....................................................................................... 9
Figure 11 Step 2 for bootloader mode. Press SW2 shortly while SW1 is still pressed .................................. 9
Figure 12 When SW1 is released, you can check if the bootloader is active. ............................................... 9
Figure 13 Add ASAP2 file to HANtune ......................................................................................................... 10
Figure 14 File location of ASAP2 file ............................................................................................................ 10
Figure 15 HANtune ASAP2 Elements ........................................................................................................... 10
Figure 16 Change GaugeViewer range ........................................................................................................ 11
Figure 17 HANtune dashboard with GaugeViewer ..................................................................................... 11
Figure 18 COM port of connected Olimexino ............................................................................................. 12
Figure 19 Setting the COM connection for HANtune .................................................................................. 12
Figure 20 Library Browser PWM Output ..................................................................................................... 13
Figure 21 PWM Module selection ............................................................................................................... 13
Figure 22 PWM channel selection ............................................................................................................... 14
Figure 23 PWM port selection..................................................................................................................... 14
Figure 24 Library Browser Constant ............................................................................................................ 15
Figure 25 Constant Block value ................................................................................................................... 15
Figure 26 Constant Block output data type................................................................................................. 16
Figure 27 Switch Block................................................................................................................................. 18
Figure 28 Constant Block ............................................................................................................................. 18
Olimexino
Model based software Development
2
1. Doel van de practicum opdracht
Het practicum is ingericht om kennis te maken met software tools die gebruikt worden software voor
een microcontroller te ontwikkelen in een model based ontwikkel omgeving. Naast de eerste ervaring
met Matlab Simulink, HANcoder en HANtune leer je wat een analoge spanning inhoudt als het gaat om
sensoren en gebruik je PWM sturing om een LED te regelen.
2. Voorwaarde om aan het practicum te beginnen
Je hebt een laptop met daarop geïnstalleerd:
•
•
•
•
•
•
Matlab Simulink met de juiste plug-ins (software wordt geïnstalleerd tijdens AUM1-SEV-pr2-i)
Vraag de docent welke versie van Matlab je moet hebben, meestal de voorlaatste versie.
Een map met daarin HANcoder
Een map met daarin HANtune (eventueel met snelkoppeling naar HANtune.exe)
GNU ARM Toolchain geïnstalleerd
OpenBLT USB driver geïnstalleerd (voor de standaard Olimexino)
STM32CubeProgrammer (voor Olimexino F3)
Je hebt een Olimexino die gekoppeld kan worden aan je laptop middels een USB kabel
De sensor shield wordt tijdens het practicum ter beschikking gesteld. De practicum opstelling bestaat uit:
•
•
•
•
•
Een sensorshield
3 grove kabels
Een potmeter sensor brick
Een LDR sensor brick
Een LED output brick
De practicum opstelling wordt compleet geleverd in een enveloppe met daarin ook een gebruikers
logboek. Vul deze voor het practicum in en doe hem terug in de enveloppe.
Wees zuinig op de opstelling. Zorg altijd dat jouw Olimexino niet gekoppeld is aan een voeding (Accu, DC
adapter of USB verbinding) alvorens je de sensorshield op de Olimexino drukt. Zorg bij het afnemen van
de shield, dat deze recht van de Olimexino af gehaald wordt om te voorkomen dat er pinnen krom gaan.
Olimexino
Model based software Development
3
3. Informatie over de gebruikte hardware
De fabrikant van de sensoren, LED en sensorshield (Itead) heeft een eigen Wiki omgeving ontwikkeld
waar informatie te vinden is. Mocht de werking van de enkele componenten onduidelijk zijn, bekijk dan
de Wiki.
Algemene info over producten van Itead:
https://www.itead.cc/wiki/Product
Potmeter sensor brick:
https://www.itead.cc/wiki/Rotary_Potentiometer_Brick
LDR sensor brick:
https://www.itead.cc/wiki/Light_Sensor_Brick
LED brick:
https://www.itead.cc/wiki/Lighting_Emitting_Diode_(LED)
Sensorshield:
https://www.itead.cc/wiki/ITEAD_Arduino_Sensor_Shield
Olimexino
Model based software Development
4
4. Het model in Simulink. (enkel een input)
We gaan kennis maken met Simulink. Simulink is de omgeving waarin je je model ontwerpt. We starten
met het openen van het template model.
Doel is om de potmeter die gekoppeld is aan het sensorshield, in te lezen. Zoals je kunt zien is de sensor
gekoppeld aan microcontroller ingang A0. Door simpelweg een Analog Input toe te voegen vanuit de
bibliotheek, kun je een analoge spanning die aangeboden wordt op de sensor shield, door bijvoorbeeld
een potmeter, inlezen.
Open de Library Browser vanuit Simulink. Navigeer naar HANcoder STM32 Target -> Olimexino STM32 ->
Analog Inputs. In het rechter veld verschijnt een blokje Analog Input. Sleep dit blokje naar je model.
Figure 1 Library Browser Analog Input
Configureer (dubbel klik op het blokje) je Analog Input zodat deze input A0 inleest. De output van het
blokje (ingelezen analoge waarde) willen we met HANtune bekijken.
Figure 2 Analog Input Block Parameters
Tip! Lees altijd zorgvuldig de beschrijving van het functieblokje. Hierin staat uitgelegd wat het blokje
doet, wat je in kunt stellen en welk signaal er in of uit gaat.
Olimexino
Model based software Development
5
Aangezien we het signaal niet gebruiken voor het regelsysteem, moeten we deze afsluiten met een
terminator welke ook te vinden is in de Library Browser van Simulink. De terminator wordt vaak gebruikt
en is dan ook te vinden onder Simulink -> Commonly Used Blocks. Verbind het Analog Input blokje met
de Terminator.
Figure 3 Analog Input without signal description
Omdat we het signaal van A0 willen bekijken met HANtune, moeten we zorgen dat deze beschikbaar is
om uit te lezen. In het model geven we het signaal eerst een duidelijke betekenisvolle naam. Dit doe je
door dubbel te klikken op het lijntje. Bijvoorbeeld: Potmeter_out.
Figure 4 Analog Input with signal description
Als je je model bouwt, worden er twee belangrijke bestanden aangemaakt. Een zogenaamde S record file
(.srec) en een ASAP2 file (.a2l)
De S record file bevat het gecompileerde model. Dit is het bestandje dat de machinecode bevat die in de
microcontroller geprogrammeerd wordt.
De ASAP2 file bevat informatie over het gebouwde model met onder andere de signalen die we willen
bekijken met behulp van HANtune. HANtune heeft dit bestand nodig om te weten welke signalen en/of
parameters binnen de microcontroller beschikbaar zijn om uit te lezen of aan te passen.
Olimexino
Model based software Development
6
Als we een signaal of parameter binnen ons model zichtbaar willen maken of aan willen passen met
behulp van HANtune, dan moet we dit signaal toevoegen aan de ASAP2 file. Het toevoegen van het
signaal of parameter gebeurt binnen de Matlab Command Window. Voeg het signaal toe door het
volgende commando te typen: Potmeter_Out = Simulink.Signal
Figure 5 Matlab Command Window (add Signal)
In de Workspace hoeven we enkel nog een eigenschap van het signaal te wijzigen (dubbelklik). Zorg dat
het signaal bij van het type Exported Global is zodat het signaal toegevoegd wordt aan de ASAP2 file.
Figure 6 Added signal visible in Workspace
Figure 7 Change Signal to Exported Global
Olimexino
Model based software Development
7
5. Compileer het model en programmeer je Olimexino.
Het Simulink model is klaar om gecompileerd en vervolgens geprogrammeerd te worden in de
Olimexino. Dit proces verschilt tussen de standaard Olimexino en de Olimexino F3.
Standaard Olimexino:
Bouw je model (CTRL+B).
Figure 8 Build button in Simulink
Na een licentie melding, zal Matlab de GNU ARM Toolchain aanroepen om het model om te zetten naar
machine code. Als het S record bestand gereed is, zal Matlab Microboot opstarten om de code in de
Olimexino te programmeren. Reset je Olimexino en de software wordt geprogrammeerd.
Figure 9 Microboot waiting for target reset
Olimexino F3:
Zorg dat de Olimexino F3 in bootloader modus gebracht wordt. Deze modus zorgt ervoor dat Matlab –
Simulink de Olimexino F3 kan vinden nadat het model gebouwd is.
Stap 1: Druk de knop SW1 in (aan de zijde van de USB kabel) en houd deze ingedrukt (afbeelding 10)
Stap 2: Druk kort knop SW2 in (aan de zijde met het rode ledje) (afbeelding 11)
Stap 3: Laat de knop SW1 weer los. De Olimexino F3 is nu in bootloader modus. Dit kan eventueel
gecontroleerd worden in apparaatbeheer van Windows (afbeelding 12)
Stap4: Bouw je model (CTRL+B).
Olimexino
Model based software Development
8
Figure 10 Step 1 for bootloader mode. Press SW1
Figure 11 Step 2 for bootloader mode. Press SW2 shortly while SW1 is still pressed
Figure 12 When SW1 is released, you can check if the bootloader is active.
Olimexino
Model based software Development
9
6. Bekijk variabelen doormiddel van HANtune.
We hebben de analoge input waaraan de potmeter gekoppeld is, toegevoegd aan ons model. We willen
de ingelezen waarde nu visualiseren met behulp van HANtune. Open HANtune vanuit de map waarin
deze opgeslagen is.
Tip! Plaats de HANtune map in mijn documenten en maak van HANtune.exe een snelkoppeling voor op
het bureaublad.
Zodra HANtune geopend is, maak je een nieuw project aan. File -> New project
Laad nu je ASAP2 file (.a2l) door met je rechtermuis op ASAP2 file te klikken. Je kunt je ASAP2 file vinden
in de map vinden van waaruit je je template Simulink model geopend hebt.
Figure 13 Add ASAP2 file to HANtune
Figure 14 File location of ASAP2 file
Je ASAP2 file moet nog geladen worden alvorens deze actief wordt. Klik met je rechter muisknop op de
ASAP2 file en klik vervolgens op Load file of dubbel klik op de ASAP2 file.
De ASAP2 file is nu actief en de signalen en parameters die Matlab heeft toegevoegd aan de file zijn nu
actief binnen HANtune. We kunnen vervolgens een dashboard gaan bouwen. Klik aan de linkerzijde op
ASAP Elements
Figure 15 HANtune ASAP2 Elements
Olimexino
Model based software Development
10
Er zijn één parameter en 5 signalen beschikbaar in HANtune. Parameters kunnen we aanpassen binnen
HANtune en zullen vervolgens direct terug gestuurd worden naar de Olimexino. Signalen kunnen alleen
bekeken worden.
We willen de potmeter zichtbaar maken met behulp van een GaugeViewer. Sleep het signaal
Potmeter_Out naar het dashboard. Bij het loslaten van het signaal wordt gevraagd hoe het signaal
weergegeven moet worden. Wij kiezen voor GaugeViewer. Indien je de GaugeViewer wilt verplaatsen,
de afmeting wilt wijzigen of wilt verwijderen, druk dan op CTRL-R. Druk je nogmaals op CTRL-R, dan
staan alle weergaven weer vast.
Klik met je rechtermuisknop op de GaugeViewer om eigenschappen van de GaugeViewer aan te passen.
Wij willen de display range aanpassen naar maximaal 4095 omdat dit de maximale resolutie is waarmee
de microcontroller een analoge spanning om kan zetten in een digitale waarde.
Figure 16 Change
GaugeViewer range
Figure 17 HANtune dashboard with GaugeViewer
Tot slot moeten we verbinding maken met de Olimexino om het potmeter signaal daadwerkelijk uit te
kunnen lezen. De Olimexino maakt gebruik van een seriële USB verbinding. Jouw laptop heeft de
Olimexino een COM poort toegewezen. Bij het maken van een verbinding (F5) moet eenmalig bij Settings
aangegeven worden welke COM poort toegewezen is. Om te achterhalen op welke COM poort jouw
Olimexino zit, ga je naar: Configuratiescherm -> Apparaatbeheer -> Poorten (COM & LPT)
Olimexino
Model based software Development
11
Figure 18 COM port of connected Olimexino
Kies als Connection type XCP on USB/UART. Bij dit voorbeeld zit de Olimexino op COM 5. Deze poort
moeten we instellen bij Settings.
Figure 19 Setting the COM connection for HANtune
Tot slot maken we verbinding middels Connect & Request. Controleer of het signaal van de potmeter
gevisualiseerd wordt binnen HANtune.
Olimexino
Model based software Development
12
7. Bereid het model uit met een output.
We gaan terug naar ons model in Simulink om een output toe te voegen. We willen de intensiteit van de
LED die gekoppeld is aan de shield kunnen regelen met een PWM signaal. Om een PWM output te
kunnen genereren moeten we 2 functieblokken toevoegen. Één blok dient ter configuratie van de PWM
module en het tweede blok genereert een PWM output op een specifieke uitgang.
Open de Library Browser vanuit Simulink. Navigeer naar HANcoder STM32 Target -> Olimexino STM32 ->
PWM Outputs. In het rechter veld verschijnen twee blokjes PWM Duty Cycle en PWM Init.
Figure 20 Library Browser PWM Output
Sleep beide blokjes in je model. Dubbelklik op PWM Init om de PWM module te configureren.
De LED zit op uitgang D0. Deze uitgang kan ook gebruikt worden als communicatielijn. In dat geval is dit
de RX lijn. Op de sensorshield lees je bij de vijfde grove connector, RX en TX. Door de LED te verbinden
met deze connector, kunnen wij door een PWM signaal aan te bieden op D0, de LED volledig regelen.
Selecteer de PWM module waarin D0 geconfigureerd wordt.
Figure 21 PWM Module selection
Olimexino
Model based software Development
13
De module is geconfigureerd. We moeten enkel nog het kanaal selecteren waarop de PWM gegenereerd
wordt.
De PWM module is: TIM2: D2 & D3 & n/a & D0. Als we een PWM signaal willen generen voor D2
activeren we Channel 1, voor D3 activeren we Channel 2 etc. Aangezien we een signaal willen genereren
op D0 moeten we dus Channel 4 activeren.
Figure 22 PWM channel selection
Klik op OK om de instellingen te bevestigen.
We zijn nu zo ver dat we een PWM signaal kunnen genereren met het PWM Duty Cycle blokje. Open de
configuratie van het blokje door er dubbel op te klikken. Selecteer de juiste Output pin en klik op ok.
Figure 23 PWM port selection
Olimexino
Model based software Development
14
De output gaan we aansturen doormiddel van HANtune. Binnen het model moeten we een parameter
creëren die we aan kunnen passen vanuit HANtune. Een parameter wordt gezien als een constante
waarde in ons model. Het enige dat wij doen vanuit HANtune is deze waarde (indien wij dat willen)
wijzigen naar een andere waarde.
Voeg een parameter toe aan het model. Sleep een Constant blokje vanuit de Library Browser van
Simulink in je model. Het Constant blokje wordt vaak gebruikt en is dan ook te vinden onder Simulink ->
Commonly Used Blocks. Verbind vervolgens de uitgang van Constant met de ingang van het PWM blokje
Figure 24 Library Browser Constant
Open het blokje en geef de parameter (Constant Value) een betekenisvolle naam in dit geval
LED_DutyCycle . De naam van deze parameter wordt zichtbaar in HANtune. Het is dan handig om te
weten wat de parameter precies doet.
Figure 25 Constant Block value
Olimexino
Model based software Development
15
Doel van de parameter is om een PWM signaal uit te sturen zodat we de LED van 0 tot 100% kunnen
regelen. De digitale waarde die we naar het PWM blokje sturen loopt van 0 tot 1023 (digitale resolutie)
en die komt overeen met een aansturing van 0 tot 100%. Deze informatie staat ook in het PWM blokje
beschreven.
Aangezien we een gehele waarde tussen 0 en 1023 sturen naar het PWM blokje, moeten we aangeven
welk formaat getal er gestuurd wordt vanuit het Constant blokje naar het PWM blokje. Door de Output
data type te wijzigen naar uint16, sturen we vanuit ons Constant blokje het juiste getal formaat richting
het PWM blokje.
Figure 26 Constant Block output data type
Bouw je model. Simulink zal vragen welke waarde standaard aan je constante meegegeven moet
worden. Simulink geeft standaard de waarde 0 mee. Klik op ok en wacht tot Microboot start en
programmeer je Olimexino.
In HANtune dien je je ASAP2 file opnieuw te laden omdat je model dat geprogrammeerd is in de
microcontroller gewijzigd is. Dubbelklik op de ASAP2 file om het bestand te ontkoppelen. Dubbelklik
vervolgens nogmaals om de gewijzigde ASAP2 file te herladen.
Ga naar ASAP2 elements waar bij parameters LED_DutyCycle toegevoegd is. Sleep deze parameter in je
project als SliderEditor. Pas de range van SliderEditor aan naar de maximale resolutie van het PWM
blokje (1023). Dit doe je door met de rechtermuisknop op het slider gedeelte te klikken (het meest
rechter deel van het blokje).
Maak verbinding met de Olimexino (F5) en bedien de LED met behulp van de SliderEditor.
Olimexino
Model based software Development
16
8. Verbind input en output
De volgende stap is om de input van de potmeter te verbinden met het PWM blokje zodat je doormiddel
van de potmeter het PWM blokje kunt regelen. Verwijder het Constant blokje en de Terminator en
koppel vervolgens de Analog Input aan de PWM Output. Programmeer je Olimexino en controleer of je
regeling werkt.
Als de Olimexino geprogrammeerd is zal je ontdekken dat slechts een klein gebied van de potmeter, de
LED volledig regelt van 0 tot 100%. De microcontroller zet de analoge spanning van de potmeter om in
een waarde van 0 tot 4095. Het PWM blokje wordt aangestuurd tussen 0 tot 1023. We moet het signaal
dus door 4 delen om het hele bereik van de potmeter te gebruiken voor de aansturing van de LED.
Plaats een Gain blokje tussen de Analog Input en de PWM Output. Met het Gain blokje kunnen we een
signaal versterken/vermenigvuldigen. Gezien we het signaal willen delen door 4 moeten we het signaal,
dus versterken met een factor ¼ = 0.25. Denk aan de Ouput data type van het Gain blokje…
Olimexino
Model based software Development
17
9. Maak een automotive regeling (actieve licht regeling)
Moderne auto’s zijn vaak uitgerust met diverse comfortregelingen. Één van deze regelingen is het
automatisch inschakelen van verlichting als het donker wordt of wanneer men een tunnel in rijdt.
Op de sensorshield is naast de potmeter een LDR sensor gekoppeld. Deze sensor geeft een analoge
spanning af afhankelijk van de hoeveelheid licht die op de Photosensor schijnt.
Bekijk met behulp van HANtune het signaal dat deze sensor afgeeft. Bepaal zelf het punt waarbij de
verlichting ingeschakeld moet worden en bouw voor deze toepassing een regeling met behulp van
functie blokken. In de voorgaande hoofdstukken zijn alle stappen die je moet doorlopen uitgelegd. Kijk
gerust terug voor specifieke informatie.
Tip: De volgende functieblokken kunnen van pas komen en zijn allemaal beschikbaar in de Library
Browser onder Simulink -> Commonly Used Blocks.
Figure 27 Switch Block
Figure 28 Constant Block
Als je het regelsysteem werkend hebt, laat het model en systeem dan zien aan de practicum docent.
Ben je klaar met het practicum, Ontkoppel dan de Olimexino van de laptop (spanningsloos) en haal
voorzichtig het sensorshield los van de Olimexino. Doe de sensorshield inclusief sensoren en LED terug in
de enveloppe samen met het gebruikers logboek.
Olimexino
Model based software Development
18
Download