theorie - Profielwerkstuk

advertisement
COMPUTERGESTUURDE RC AUTO
PWS beoordelingsmoment 2
10-10-2008
Namen:
Klas:
Docent:
Wilco Wisse, Jan van den Ende
A6
STE
INLEIDING
Beiden programmeren we al enkele jaren. Daarom wilden we een onderwerp kiezen
dat iets met programmeren en met de computer te maken heeft. Om de kennis van
programmeren te gebruiken in het profielwerkstuk voor natuurkunde, moest dit
gecombineerd worden met een natuurkundig probleem. Na wat gebrainstormd te
hebben kwamen we op het volgende idee: een radiografisch bestuurbaar autootje
aansturen met de computer. Dit onderwerp heeft twee aspecten.
Ten eerste de softwarekant. Dit is vooral een informaticatechnisch probleem. Voor
het aansturen van het autootje en andere mogelijkheden in de software moet een
programma worden geschreven. Dit willen we doen door zelf een programma te
schrijven die de elektronica in de afstandbediening kan aansturen d.m.v. de parallelle
ofwel printerpoort. We programmeren de software in Java. Deze taal is
platformonafhankelijk. Dit is vooral handig voor de pws-computer, die we voor het
profielwerkstuk gebruiken, waar Linux op staat.
Ten tweede is er de hardwarekant. Dit heeft vooral met natuurkunde te maken. Via
de computer moet de afstandsbediening van het autootje worden aangestuurd. De
afstandsbediening moeten we dus gaan aanpassen om er de parallelle poort op te
laten aansluiten. Dit heeft dus alles te maken met elektriciteit: de signalen die vanaf
de computer komen moeten tot gevolg hebben dat de afstandsbediening
ingeschakeld wordt. Daarvoor moet bovendien de afstandsbediening doorgemeten
worden, zodat de juiste elektronische componenten gekozen kunnen worden. Het
autootje en de afstandbediening zijn niet zelfgemaakt.
Met de printerpoort hebben we praktisch nog geen ervaring. We weten niet precies of
dit wel allemaal te realiseren is met Java, daarom is dit onderwerp juist een
uitdaging.
2
THEORIE
Software
Schema afhandeling acties hoofdprogramma
ProfielwerkstukProgramma (Grafische deel)
Stuur commando met tijdsduur
Stuur commando voor onbeperkte tijdsduur
Kernel (Besturingsdeel)
Stuur byte
ParPort (Native interface: extra bibliotheek
voor Java die niet standaard aanwezig is).
Printerpoort
Parport
Parport is een simpele Java class die het mogelijk maakt bytes te ontvangen en
sturen van en naar de parallelle poort(printerpoort) van de computer. Het maakt
hierbij gebruik van enkele C++ functies door middel van JNI, deze zijn niet standaard
aanwezig in Java. Het gebruikt de functies van de programmeertaal C++ omdat Java
in een virtuele machine draait en daardoor de hardware niet direct kan aanspreken,
maar daarover meer onder het kopje Java.
3
Bij NT besturingssystemen (waaronder Win. XP) is uit veiligheidsredenen de
rechtstreekse verbinding met de parallelle poort uitgeschakeld. Met het programma
UserPort kan ingesteld worden welke poorten wél bereikbaar moeten zijn. Onder
Linux is deze stap niet nodig, maar daar moet je wel als root ingelogd zijn om de
poort te kunnen benaderen. Voor de volledigheid verwijzen we nogmaals naar de
informatie op onze website.
Java
Java is een objectgeoriënteerde en platformonafhankelijke programmeertaal.
Platformonafhankelijk wil zeggen dat Java programma's niet rechtstreeks op de
hardware draaien, maar in een virtuele computer. De Java Virtual Machine. Dit
betekent dat Java programma's op elk platform( Linux, Unix, Mac en Windows)
draaien. De enige voorwaarde is dat de JVM voor elk platform opnieuw is
geschreven, maar het voordeel daarvan is dat je niet elk programma voor elk
platform opnieuw hoeft te schrijven. Het is zoals de Java slogan zegt: “write once,
run anywhere.”
Een nadeel hiervan is dat de hardware niet direct kan worden aangesproken omdat
Java programma's dus niet direct op de hardware draaien. Er is dus geen
communicatie over en weer mogelijk met hardware vanuit Java zelf.
Er bestaat gelukkig wel een API die dat mogelijk maakt: JNI(Java Native Interface).
JNI is een interface tussen Java programma's en programma's die in instructietaal
voor de hardware(C++ o.i.d.) zijn geschreven, zogeheten native programma's.
Hierdoor gaat wel de platformonafhankelijkheid van het programma verloren, want nu
moet het native programma voor elk platform opnieuw worden geschreven.
Van code tot programma
Teksteditor
broncode
Compiler
bytecode
Uitvoering
Java Virtual
Machine
Native code
Besturingssystee
m
Processor opdrachten en geheugen opvraag enz.
Processor +
Hardware
4
Stappen uitgelegd:
1. Het programma wordt getypt in een teksteditor (géén tekstverwerker).
2. De broncode wordt door de compiler omgezet in bytecode die wordt begrepen
door de JVM.
3. De bytecode wordt door de JVM uitgevoerd. En omgezet naar de bytecode die
de hardware begrijpt en wordt naar het besturingssysteem gezonden.
4. Het besturingssysteem zorgt voor de geordende afhandelingen van de
aanvragen en commando's van de native code.
Hardware
-Parallelle poort/printerpoort
De parallelle poort ook wel (LPT- of printer poort
genoemd) bestaat uit 25 pinnetjes. Elke keer als de
computer informatie naar de printer stuurt, worden er 8
bits (dat is één byte) tegelijk verzonden. Daardoor komt
het aan de naam Parallelle poort.
Pin #
Label
2
D0
Bit waarde om
naar de poort te
sturen
20 = 1
3
D1
21 = 2
5
4
D2
22 = 4
5
D3
23 = 8
6
D4
24 = 16
7
D5
25 = 32
8
D6
26 = 64
9
D7
27 = 128
Zoals aan de afbeeldingen en tabellen is te zien, kan er naar de poorten 2 t/m 9 data
worden verstuurd. Pin 18-25 is de aarde.
De poort heeft een spanning van 5 Volt en een stroomsterkte van 10-15 milliampère
wanneer de pin “aan” staat. De overige pinnetjes hebben functies die voor ons niet
van enige waarde zijn.
Relais
Definitie
Een relais is een schakelaar die wordt bediend door een elektromagneet. Hiermee
kan een zwakke stroom door middel van de elektromagneet bijvoorbeeld een nieuwe
en sterkere stroomkring openen of sluiten.
Constructie
Een relais bestaat uit een spoel die fungeert als
elektromagneet. Zodra er op die spoel een passende
spanning wordt gezet(S1, S2), wordt er een magnetisch
veld opgewekt en schakelt er ergens een contact(C) om,
zodat er een stroomkring(NC, NO) wordt geopend of
gesloten.
Zodra de spanning wordt verbroken, schiet de schakelaar
weer terug naar zijn oorspronkelijke positie door middel van een veer o.i.d.
De meeste relais hebben meerdere contacten. Een Common-contact(C), een
maakcontact(NO) en een breekcontact(NC). Het laatste contact is altijd gesloten bij
afwezigheid van de stuurspanning(spanning die nodig is om te laten schakelen).
6
Toepassing
Een relais wordt gebruikt om met een kleine spanning een grotere stroom te kunnen
schakelen. Er zijn dus eigenlijk twee circuits die door elkaar worden gescheiden met
behulp van een relais.
De mogelijkheid om twee circuits van elkaar te scheiden, kunnen wij gebruiken om
met behulp van de stroom uit de printerpoort de stroomkring van de
afstandsbediening te sluiten. Hieronder staat een schematische weergave van onze
hardware, waarin het relais de hoofdrol speelt. Circuit 1 is op de printerpoort
aangesloten, deze regelt circuit 2 zoals onder de afbeelding wordt uitgelegd.
Onderdeel A is de printerpoort. Als deze ‘spanningsbron’ aanstaat zal hierdoor het
relais (B) ingeschakeld worden.
Onderdeel C is de drukknop die op de afstandsbediening aanwezig is. Deze willen
we niet gebruiken omdat we met behulp van de printerpoort willen schakelen. Het
relais overbrugt de schakelaar zodat met behulp van circuit 1, circuit 2 kortgesloten
kan worden. Voor de volledigheid: onderdeel D is de voeding in de
afstandsbediening zelf en onderdeel E stelt de inwendige elektronica van de
afstandsbediening voor.
De printerpoort heeft een spanning van 5V. De maximaal belastbare stroomsterkte
bedraagt 10-20 mA. Met behulp van deze gegevens moet een geschikt relais
gekozen worden. De nominale spanning moet dus 5V zijn.
Voor de spoelweerstand geld:
Rmin = U / Imax
U = 5V
Imax = 20 mA = 0,020A
Rmin = 5 / 0,020 = 250Ω
7
De volgende relais uit de Conrad catalogus komen in aanmerking voor gebruik:
Voor meer informatie: vul het artikelnummer in op de website van conrad:
www.conrad.nl.
Artikel nummer: 503410 – 89
Prijs: €5,29 per stuk
Afm.:
(lxbxh) 13.5 x 8 x 8 mm
IS max.:
1A
Schakelvermogen:
60 W/AC / 30 W/DC
Schakelspanning:
125 V/AC/150 V/DC
RM:
5.08 mm
Contactsoort:
1 wisselaar
Rspoel:
320 Ω
Nominale spanning (spoel):
5V
Conform RoHS:
Ja
Prijs: €3,69 per stuk
Artikel nummer: 504513-89
Afm.:
(lxbxh) 19.1 x 6.6 x 10.2 mm
Vermogen:
10 W
Contactbelastbaarheid:
10 W
Nominale spanning:
5 V/DC
Weerstand:
500 Ω
Continuegrensstroom:
0.5 A
Contactsoort:
1 sluiter
Max. schakelspanning:
100 V
Conform RoHS:
Ja
Prijs: €2,89 per stuk
Artikel nummer: 504572-89
Afm.:
(lxbxh) 19.1 x 6.6 x 10.2 mm
Vermogen:
10 W
Contactbelastbaarheid:
10 W
Nominale spanning:
5 V/DC
Weerstand:
500 Ω
Continuegrensstroom:
0.5 A
Contactsoort:
1 sluiter
Max. schakelspanning:
100 V
Conform RoHS:
Ja
8
Artikel nummer: 504599 – 89
Prijs: €2,69 per stuk
Afm.:
(lxbxh) 19 x 5.08 x 7.4 mm
IS max.:
0,5 A
Schakelvermogen:
Max 10 W
Weerstand:
500 Ω
Contactsoort:
1 sluiter
Max. schakelspanning:
200 V=
Conform RoHS:
Ja
Voedingsspanning:
5 V/DC
9
ONTWERPPROBLEEM, PROGRAMMA VAN EISEN EN
ONTWERPVOORSTEL
De vetgedrukte deeloplossingen hieronder worden gekozen. Voor toelichtingen op de
keuzes: zie de screenshots op de site van dit profielwerkstuk:
www.profielwerkstuk.freehostia.com
Hoofdprobleem 1: Er moet software gemaakt worden voor zenden van
signalen naar de printerpoort.
Het programma moet:
1. Het autootje direct kunnen aansturen.
- Door middel van knoppen in het programma.
- Met de pijltjestoetsen van het toetsenbord.
- Met de beweegrichting van de muis wordt de auto aangestuurd.
2. Volledig grafisch zijn.
- Met Java een Frame maken en tonen op het beeldscherm.
- Gebruik maken van output naar de command.
3. Overzichtelijk zijn.
- Voor elke toepassing een ander programma
- Voor elke functie wordt een nieuw venster geopend vanuit een hoofdprogramma.
- In het hoofdprogramma zijn verschillende tabbladen waarin de onderdelen verwerkt
zitten.
- Boven de verschillende onderdelen staan de namen ervan.
4. Een traject uit kunnen zetten die het autootje volgt.
- Verschillende stuurhoeken en afstanden die opgeven worden in een tekstveld, die het
programma uitvoert.
- Het autootje volgt een route die getekend kan worden op het scherm.
5. Weergeven welke acties uitgevoerd worden.
- De rijopdrachten worden onder elkaar weergegeven in een tekstveld (logvenster).
- Alleen de opdracht die uitgevoerd wordt, wordt weergegeven op een label.
- De rijopdrachten worden naar de command geschreven.
Aparte eis na keuze deelprobleem 1:
1. De knoppen van het programma moeten te bedienen zijn (oplossing voor het
10
feit dat geen twee knoppen tegelijkertijd ingedrukt kunnen worden).
- Een knop staat aan totdat er opnieuw is geklikt op die knop.
- Na het klikken op een knop voert deze de opdracht uit voor een instelbare tijdsduur
(invoerveldje).
Aparte eisen na keuze deelprobleem 4:
1. Tijdens het rijden moet weergegeven worden aan welk deel van de route de
auto
bezig is.
- Een punt dat beweegt op de route.
- Het huidige lijnstuk krijgt een andere kleur.
- De gepasseerde punten krijgen een andere kleur.
2. Tijdens het rijden moet weergegeven worden op hoeveel procent van de route
de auto is.
- Een progressbar
- Het aantal procent weergeven in het rijgebied op het scherm.
3. Van het punt moet tijdens het slepen getoond worden welke hoek hij maakt en
welke lengte afgelegd wordt.
- Deze gegevens worden in de hoek van het programma weergegeven.
- Worden bij het te verslepen punt gezet worden en meebewegen tijdens slepen.
- Worden in een apart venster in een tabel genoteerd.
4. Dit moet ook achteraf getoond kunnen worden.
- Elk punt kan geselecteerd worden door erop te klikken.
- In een tabel kan van elk punt de gegevens opgezocht worden.
5. Het traject moet instelbaar zijn wat betreft de eigenschappen van het
autootje(schaal, snelheid, stuurgevoeligheid).
- Verschillende schuifbalkjes op het rijgebied op het scherm.
- Verschillende schuifbalkjes in een apart dialoogvenster.
- Tekstvakken om de gegevens in te voeren op het rijgebied op het scherm.
- Tekstvakken in een apart dialoogvenster.
6. De route moet verwijderd kunnen worden
- Automatisch verwijderen na het rijden van de route
- Een aparte verwijderknop - onder het rijgebied - die hiervoor zorgt.
- Een aparte verwijderknop – in het instellingen dialoogvenster - die hiervoor zorgt.
Aparte eis na keuze deelprobleem 5
1. Het logvenster moet geleegd kunnen worden
- Een leeg-knop onder het logvenster.
- Alleen de laatste 10 opdrachten blijven staan de rest wordt verwijderd.
11
Hoofdprobleem 2: Er moet hardware gemaakt worden om het signaal om
te zetten in een actie.
1. Moet veilig zijn
- Gebruik maken van een oude computer (gevolgen minder erg als het toch fout gaat).
- De onderdelen niet te dicht bij elkaar solderen zodat minder snel kortsluiting ontstaat.
- Gebruik maken van goed geïsoleerde draad.
- Gebruik maken van een beschermkapje over de elektronica.
2. Een elektrische stroom uit de printerpoort moet de schakelaar van de
afstandsbediening aansturen.
- Gebruik maken van relais.
- Gebruik maken van transistor.
12
WERKWIJZE
Materialenlijst
Hardware
 Rc autootje
 Afstandsbediening
 Computer met printerpoort
 Printerkabel
 4 relais
 bedrading
Software
 Parport
 Userport voor Windows.
 JDK (Java Development Kit)
 Teksteditor (JCreator, Wordpad, Kladblok, Kate)
13
Installatie Software:
Parport

pak het zip-bestand uit en plaats de map in de map waarin het javaprogramma zich bevindt.

plaats parport.dll uit de map parport in de map [JRE]/bin/.
Bij linux moet het bestand libparport.so in de map: /usr/lib/jvm/[jdk]/jre/lib/i386
worden geplaatst.
UserPort

Download het zip-bestand met Userport onder het kopje Downloads

Pak het zip bestand uit op de plek die je wilt

In de uitgepakte bestanden is het bestand "UserPort.sys" aanwezig. Dit moet
je kopiëren naar %windir%/system32/drivers/.

In de uitgepakte bestanden vind je "UserPort.exe". Dit moet je starten. Klik
linksonder in het programma op "Start".

Als het goed is draait de driver nu op de achtergrond. Je kunt op exit klikken.
Om de driver te stoppen moet "UserPort.exe" opnieuw gestart worden en op
"stop" geklikt worden.
JDK


Download en installeer de setup. Het is te downloaden van onze site.
Voor alleen het draaien van de software is alleen de JRE(Java Runtime
Environment) nodig.
JCreator of andere teksteditor
(JCreator is eenvoudig voor beginners)


Download van http://www.jcreator.com/download.htm
Installeer de setup
14
Aanpak hardware





Open de afstandsbediening
Zoek uit welke pinnetjes(4) van de
schakelaar met elkaar moeten worden
verbonden voor een gesloten
stroomkring.
Sluit op die pinnetjes het relais aan
zoals op de afbeelding hiernaast is
vermeldt.
Verbind het relais met de printerpoort.
Hierbij moet één draad aan één van
de pinnen 2 t/m 9(data) en de andere
draad in één van de 18-25(aarde)
pinnen.
Doe dit met elk van de vier
schakelaars.
15
Download