Lespakket LabVIEW Starten met LabVIEW en de LEGO NXT LabVIEW starten In dit lespakket maken we gebruik van de studentenversie van LabVIEW 7.1 Om LabVIEW op te starten klik je simpelweg op de snelkoppeling van het programma. We zien het opstartscherm bij eerste gebruik (fig2.1) van het programma verschijnen. Hier klik je op ‘continue’. Je kan het opstarten van dit scherm ook uitschakelen door linksonder het vakje aan te vinken. Dan ga je direct naar het opstartscherm (fig2.2) van LabVIEW. Hier kun je kiezen of je een nieuw document wil openen, wil verder werken aan een bestaand document, de configuraties van het programma wil aanpassen of de helpfunctie wil raadplegen.
Fig2.1 opstartscherm bij eerste gebruik
Fig2.2 opstartscherm
Druk op ‘New…’ om een nieuw document te openen. Wanneer je op deze knop drukt gaat een nieuw scherm open. Hier zie je de verschillende types bestanden om mee te werken. Klik de bovenste mogelijkheid ‘blank VI’ aan. Je kan ook direct een ‘blank VI’ openen door in het opstartscherm (fig2.2) naast ‘New…’ op het pijltje te drukken en op ‘blank VI’ te drukken. Je ziet nu twee schermen opengaan, een ‘Block Diagram’-kader en een ‘Front Panel’-kader. In het blokdiagram (Fig2.3) wordt het programma opgebouwd. Hier komen alle blokken en alle verbindingen die je ook in de elektronica vindt. Hier vind je ook alle inputs, outputs tot zelfs de logische functies.
In het frontpaneel (Fig2.4) wordt het programma bestuurd. Dit wordt vooral gebruikt wanneer er tussen de NXT en het programma gegevens uitgewisseld worden. Zo kunnen gegevens van de NXT in Labview in een tabel of grafiek worden gezet. Hierdoor kan de NXT optimaal benut worden.
Fig2.3 Front Panel
Fig2.4 Block Diagram
Installeren NXT toolkit Om de Lego NXT te kunnen programmeren vanaf LabVIEW moet de Lego NXT Toolkit van de National Instruments website, ni.com, gedownload worden. Op deze website klik je bij zoeken ‘LabVIEW Toolkit for LEGO NXT’ in. Je opent ‘LabVIEW Toolkit for LEGO® Mindstorms® NXT’. Download daar de juiste versie, naargelang het computerbesturingssysteem en de versie van LabVIEW waarmee je werkt. Unzip het bestand en voer vervolgens het exe-bestand uit. Daarna moet je de computer opnieuw opstarten. Om de toolkit te installeren moet je vervolgens LabVIEW openen. In het blokdiagram ga je naar ‘Tools»Advanced»Mass Compile’. Hier zoek je labVIEW\vi.lib\addons\NXTToolkit en klik je op ‘select Curr Dir’. Wanneer je dit gedaan hebt opent er een ander scherm waar je op ‘Mass Compile’ klikt om het compileren te starten. Dit duurt een tiental minuten. Nu is het programma klaar om de Lego NXT te programmeren. (De werking van de Toolkit is momenteel (september 2008) niet gegarandeerd met Windows Vista.)
NXT Functies en ‘Tool palette’ De functies/besturingen waarmee een programma is opgebouwd vind je door in het scherm van het blokdiagram rechts te klikken. Om dit scherm vast te zetten druk je op het icoontje in de titelbalk voor functions/controles (fig2.5). In deze menu’s vind je alle mogelijke functies en besturingen. Diegene om je NXT te programmeren, ‘NXT Toolkit’, vind je bij ‘All Functions’ rechtsonder. Je gebruikt het ‘drag and drop’ systeem om de blokken in het scherm te plaatsen. Gebruik altijd blokken uit de NXT Toolkit om de NXT te programmeren. Om de functieblokken op het scherm te verplaatsen, te verbinden of aan te wijzen kun je gebruik maken van de specifieke symbolen uit de tools-palet. Deze vind je door naar ‘Window» Show Tools Palette’ te gaan. Standaard is dit palet op automatisch ingesteld. Dit merk je aan de groene knop die opgelicht is. Dit is het eenvoudigst, dan gebeurt alles vanzelf. Je kunt echter ook op de verschillende aanwijsmogelijkheden drukken om deze specifieke aanwijzers te gebruiken.
Fig2.5 Functies – niet vastgezet
Fig2.6 Toolpalet
In het frontpaneel zijn er soortgelijke functies die we nu ‘Controls’ of besturing noemen. Deze ‘Controls’ verkrijg je opnieuw door in het scherm rechts te klikken. Kies hier opnieuw voor ‘All Controls’ en ‘NXT Toolkit’.
Fig2.7 Besturingen
Flowcharts Een flowchart is een schematische voorstelling van een programma. Voor je een programma maakt moet je weten hoe je gaat programmeren. Je analyseert de opgave en gaat met die analyse een structuur van het programma maken. Hieronder staan de basiselementen om een flowchart te maken.
-
start/stop, ovaal
-
input/output van informatie, gegevens
-
waarde geven aan een variabele, proces
-
keuze (JA/NEE), beslissing
-
begin herhaling, voorbereiding
-
subprogramma, vooraf ingesteld proces
-
geven richting aan, pijl
vb. : bestelling die binnenkomt in bedrijf
Enkele eerste programma’s Opdracht 1
Opdracht
Laat de robot gedurende 2 seconden rechtdoor rijden.
Flowchart
Programma Om de bovenstaande flowchart te volgen moet je op zoek naar functies in het blokdiagram. Je gaat naar ‘NXT Toolkit’ voor de nodige blokken. Je hebt eerst een input, de NXT-knop nodig. Deze vind je dan ook bij ‘NXT Library Input’. Sleep deze in het werkveld. Op analoge manier zoek je een blok die de robot vooruit laat rijden. Deze blokken bevinden zich bij ‘Output’. De motorblokken zijn opgedeeld zoals bij de software van de NXT. De bovenste rij ‘motor’ is specifiek voor één motor, de tweede rij ‘sync’ is de bediening voor twee motoren samen. Kies voor ‘sync time’. Door dubbel te klikken op het motorblok zie je de mogelijke instellingen en kun je de tijd instellen op twee seconden. Om deze blokken nu correct te verbinden moet je weten welke contacten je moet en vervolgens op het blok. Op deze manier zie je de gebruiken. Klik op betekenis van alle in- en uitgangen van dit blok. Verbind de blokken correct via de ‘Tools palette’. Het programma is klaar. Om dit op de NXT te krijgen zorg je dat de NXT aan staat en ga je naar ‘Tools»NXT Module»NXT Terminal’. De werking van de knoppen komt steeds te voorschijn door met de aanwijzer bovenop de knop te staan. Download het programma door op de tweede knop te drukken! Wil je het programma direct starten druk dan op de eerste knop. Natuurlijk moet de NXT aanstaan om het programma te downloaden.
oplossing
Opdracht 2
Opdracht
Fig2.8 Opdracht 1: oplossing
Laat de robot voortdurend rechtdoor rijden. Wanneer je in de handen klapt, stopt de robot gedurende 3 seconden.
Flowchart
Programma Voor dit programma gebruik je een geluidssensor als input. Aan deze sensor verbinden we een keuzemogelijkheid : ofwel is het geluid dat we waarnemen luider dan 85 ofwel stiller. Controleer deze waarde eerst. Het kan zijn dat je een grotere waarde moet nemen omdat er bijvoorbeeld meer omgevingslawaai aanwezig is. Je vindt de verschillende sensoren terug bij ‘NXT Library»Input’. Logische poorten zijn te vinden onder ‘Comparison’ en numerieke waarden vind je bij ‘Numeric’. Voor dit programma kies je de geluidssensor, het logisch symbool ‘kleiner dan’ en een constante waarde. Vervolgens moeten we programmeren wat er moet gebeuren in beide gevallen. Hiervoor maak je een keuze met behulp van ‘Case Structure’. Deze vind je terug bij ‘Stuctures’. Met een ‘case’ kan je naargelang het inkomend signaal bepalen wat er moet gebeuren. Alles wat je programmeert bij “true” zal uitgevoerd worden wanneer de voorwaarde correct is. Bij “ false” wordt alles uitgevoerd wat geprogrammeerd is wanneer de voorwaarde fout is. Het signaal van de logische poort( het kleiner-dan-symbool) dat je wilt verbinden met de case moet je met het vraagteken verbinden. Voor de programma’s binnen in de case is hetzelfde van toepassing. Programmeer nu bij ‘False’ dat de
robot moet stoppen gedurende 3 seconden. Bij ‘True’ programmeer je dat de robot eeuwig door blijft rijden. Als je de robot een bepaalde actie telkens opnieuw wil laten uitvoeren zal je een herhaling tekenen rond dat deel van het programma dat moet hernomen worden. De herhaling of ‘while loop’ vind je bij ‘Stuctures’. Je kan instellen hoeveel keer de actie opnieuw moet gebeuren of je kan de actie oneindig laten herhalen. Je kunt er ook voor kiezen om de actie stop te zetten vanuit het frontpaneel. Wanneer je gewoon rechts klikt op het rode cirkeltje en kiest voor ‘create constant’, wordt de herhaling voortdurend herhaald omdat het rode icoontje erop wijst dat je kiest voor ‘stop if true’ als voorwaarde en je de voorwaarde via ‘create constant’ op ‘false’ plaatst. Wanneer je klikt op het rode cirkeltje kun je dit wijzigen in ‘stop if false’. Er verschijnt dan een groene pijl. Klik je op de truefalse-knop, dan kun je de voorwaarde wijzigen van ‘false’ naar ‘true’. Wil je de herhaling kunnen sturen vanuit het frontpaneel, dan plaats je een schakelaar in het frontpaneel en verbind je deze in het blokdiagram met het rode cirkeltje in de ‘while loop’. Deze drukschakelaar, ook Boolean genoemd, vind je in het frontpaneel bij ‘buttons’. Let wel op dat je het programma, als het af is, met ‘debug’ downloadt op de NXT. Dit is de derde knop. Dit is nodig opdat de NXT gegevens naar LabVIEW zou kunnen doorzenden. – die zich Je kunt de herhaling ook na een aantal keer laten stoppen. De linksonder de herhaling bevindt - geeft aan in de hoeveelste herhaling je bezig bent. Wil je de herhaling na een aantal keer laten stoppen, dan maak je een . Je voegt een ‘equal’ blok in, deze vind je bij vergelijking met deze met de x ingang en de waarde die het aantal ‘comparison’‘equal’. Je verbindt herhalingen aangeeft met de y ingang. De uitkomst verbind je met het stopteken van de herhaling. Pas wel op : wanneer het cijfer 5 is wordt de proef 6 keer uitgevoerd.
Oplossing
Fig2.9 Opdracht 2: oplossing waarbij de herhaling gestuurd wordt door een knop
_
Fig2.10 Opdracht 2: oplossing waarbij de herhaling na 10 keer stopt
Opdracht 3
Opdracht
Wanneer je het programma start rijdt de robot onbeperkt rechtdoor. Als hij een obstakel ziet stopt hij, rijdt hij achteruit en draait 180°. De robot begint pas opnieuw te rijden als je in je handen klapt. We willen dat de robot dit oneindig blijft herhalen. Daarnaast willen we de afstand die gemeten wordt door de ultrasone sensor aflezen in LabVIEW.
Flowchart
Programma Hier maak je opnieuw gebruik van sensoren als input, maar nu wil je ook de gemeten waarden van een sensor uitzetten in een grafiek in het frontpaneel. In het frontpaneel vind je deze grafieken bij ‘graph’ ‘Waveform Chart’. Wanneer je zo’n grafiek invoegt komt er ook een blok in het blokdiagram te voorschijn waar we de grafiek met de gewenste sensor kunnen verbinden. Let wel dat je ook hier de ‘debug’ gebruikt om het programma naar de NXT te laden. De robot moet rijden tot het signaal van de ultrasone sensor kleiner wordt dan 20 cm. We kiezen een motorblok dat oneindig blijft draaien. Je neemt de ultrasone sensorblok. Je verbindt deze twee met een sequentielijn. Je verbindt de afstand van de sensorblok met een ongelijkheid ‘kleiner dan’. De afstand moet kleiner zijn dan 20 cm vooraleer de robot actie mag ondernemen. Hiervoor voer je een numerieke constante in en je zet deze waarde op 20. Rond de vergelijking en de sensor teken je een herhaling. Je verbindt de uitkomst van de vergelijking met het stopteken van de herhaling. De herhaling stopt als de ultrasone sensor een waarde van 20 cm detecteert. Daarna wordt de rest van het programma doorlopen.
Als de robot iets ziet binnen de 20 cm dan moet de robot stoppen en 180° draaien. Je plaatst dus na de herhaling een ‘sync stop’ blok om de robot te stoppen. Deze verbind je met de uitkomst van de vergelijking van de ultrasone sensor. Om de robot 180° te laten draaien kies je een nieuw motorblok ‘sync distance’ en verbind je de ‘stearing’-uitgang van dit blok met een waarde -100. Daarna moet de robot wachten tot hij een geluid luider dan 85% hoort. Dit verkrijg je op dezelfde werkwijze als bij de ultrasone sensor. Je gaat na of het volume dat de geluidssensor hoort, groter is dan 85%. Dan mag de herhaling stoppen. We willen dat de robot dit blijft herhalen totdat je die handmatig uitzet vanuit het frontpaneel. Je tekent dus een herhaling rond het volledige programma en maakt een voorwaarde zoals in de vorige oefening.
Oplossing
Fig2.11 Opdracht 3: oplossing block diagram
Fig2.12 Opdracht 3: oplossing frontpaneel
Enkele tips Bij moeilijkere programma’s komen al snel fouten voor bij het instellen van de verschillende blokken. Om dit te voorkomen kunnen we de in te stellen waarden buiten het blok zetten. Op deze manier worden de wijzigingen steeds bij alle gelijkaardige blokken toegepast. Als je dubbelklikt kom je in een scherm met alle instellingen van het blok. Daar kun je de gewenste variabelen selecteren, knippen en naast het blok plakken. Je moet daarna wel de juiste variabelen met de juiste ingang van het blok verbinden en met alle andere blokken waar deze variabelen nodig zijn. Voorbeeld:
Bij een motor kun je het vermogen kiezen. Je kunt deze variabele knippen en naast het blok plakken. Deze verbind je dan met de ‘Power’ ingang van het blok. Je kunt deze waarde dan met elk ander blok verbinden. Hierdoor gaan alle blokken die je verbonden hebt aan eenzelfde vermogen rijden.
Je kunt de waarden die je naast de blokken hebt geplakt ook veranderen van een ‘Constant’ naar een ‘Control’. Hierdoor kun je waarden vanuit het frontpaneel besturen. Dit is ook wat in bovenstaande afbeelding is gebeurd. De variabelen van bijvoorbeeld het motorblok, de poorten, zijn naast het blok geplaatst en verbonden met het blok. Door rechts te klikken op de constante en te kiezen voor ‘change to control’ verander je de constante in een schakeloptie in het frontpaneel.