1 2 Geïntegreerde eindproef Industriële wetenschappen leerjaar – graad TSO De jonglerende robot Stijn Cambie Jonathan Debruyne 2011-2012 3 Woord vooraf Wij zijn Stijn Cambie en Jonathan Debruyne, leerlingen uit het 6e jaar IW. Als eindwerk kozen we voor het project “De jonglerende robot” waar we mee in aanraking kwamen via meneerTytgat en de Howest. We willen tot slot nog dhr. Tytgat, dhr. Kinget en dhr. Beirlaen, de begeleiders uit het PIH, onze klasgenoten en onze ouders bedanken bij de steun en hulp tijdens het eindwerk. 4 Inhoudsopgave 1 Theoretische achtergrond ............................................................................................. 1 1.1 mechanisch aspect ..................................................................................................................... 1 1.1.1 de schuine worp .............................................................................................. 1 1.1.2 de cirkelvormige beweging ............................................................................... 5 1.1.3 benodigdheden sterkteberekeningen ................................................................. 6 1.2 de stappenmotor ........................................................................................................................ 9 1.2.1 opbouw .......................................................................................................... 9 1.2.2 werking ........................................................................................................ 10 2 Berekeningen ............................................................................................................ 14 2.1 schuine worp ............................................................................................................................. 14 2.2 massatraagheidmoment .......................................................................................................... 15 2.3 versnelling ................................................................................................................................. 17 2.3.1 begin............................................................................................................ 17 2.3.2 einde ............................................................................................................ 18 2.4 botsing ....................................................................................................................................... 18 2.5 sterkteberekeningen ................................................................................................................ 20 2.5.1 krachten ....................................................................................................... 20 2.5.2 spanning....................................................................................................... 21 3 Programma ............................................................................................................... 23 3.1 maininflowcode is het mogelijk om tekst te plaatsen bij de verschillende stappen....... 23 3.2 macro’s....................................................................................................................................... 24 3.2.1 Pulsentrein en pulsentreinms .......................................................................... 24 3.2.2 Joggen en joggensnel ...............................Fout! Bladwijzer niet gedefinieerd. 3.2.3 Interruptuitgaan ............................................................................................ 25 3.2.4 Pulsen .......................................................................................................... 26 3.2.5 Werpen en werpenrechts ............................................................................... 27 4 Bronvermelding ......................................................................................................... 30 5 besluit ...................................................................................................................... 31 6 algemene vakken ...................................................................................................... 32 5 gebruikte symbolen en afkortingen 2 2 6 lijst met tabellen en tabellen Figuren: 1.1 grafiek met parabolen van de baan 1.2 verband hoek afgelegde weg 1.3 balk berekening massatraagheidsmoment 1.4 bolschil bepalen massapunt en massatraagheidsmoment 1.5 parallelle assen 1.6 stappenmotor reluctantie 1.7a unipolaire stappenmotor 1.7b bipolaire stappenmotor en H-brug 1.8 stappenmotor fullstep 1.9 stappenmotor halfstep 2.1 voorstelling arm positie 2.2 stappenmotor arm hoek gooien en vangen 2.3 simulatie 1 2.4 simulatie 2 2.5 foto simulatie 2.6 krachten bout 1 2.7 krachten bout 2 3.1 blokschema programma 3.2 programma hoofdprogramma 3.3 programma pulsentrein 3.4 programma joggen 3.5 programma interrupt 3.6 programma pulsen 3.7 programma werpen naar links 3.8 programma werpen naar rechts Tabellen 2.1 berekeningen schuine worp in Excel 2.2 zwaartepuntberekekeningen Geen indexgegevens gevonden. 7 Inleiding Een robot doen jongleren, gaat niet zomaar. Het is een mechanisch werkstuk dat niet zelf kan redeneren. Er moet worden voor gezorgd dat de bal op de juiste plaats valt door de juiste informatie mee te geven tijdens het programmeren. Hiervoor bestuderen we de schuine worp, de cirkelvormige beweging en de stappenmotor. De theorie over de schuine worp geeft ons inzicht over de baan van de bal. Bij de stappenmotor kunnen we enkel de tijd tussen 2 pulsen instellen, waardoor we de werking van de stappenmotor en besturing moeten snappen om de baan goed te laten gaan. Dit project is samen met het PIH georganiseerd, de hogeschool heeft geholpen met de theorie uit te spitten. Er werd een robot voorzien met een programma dat reeds geprogrammeerd was om het ons makkelijker te maken. In het VTI bouwden we onze eigen robot, waarvoor we alle communicatie zelf moesten regelen en de berekeningen via flowcode werden doorgegeven aan de stappenmotor die de robot bestuurt. Het PIH doet onderzoek op stappenmotoren om o.a. het rendement met betere aansturing te verhogen. Dit project dat jaarlijks een eindwerk zou kunnen worden voor andere scholen, stond nog in zijn kinderschoenen. Ons doel is goede hoop te geven en een traject vinden dat een groot aantal keer kon werpen en opvangen aan een redelijk tempo. Om dat doel te bereiken, denken we goed na over de berekeningen en passen we de waarden zorgvuldig aan, wetend dat theorie en praktijk bijna nooit 100% samenstemmen. Hierbij focussen we ons niet enkel op 1 traject/ manier van werken, maar durven ook dat veranderen. Omdat we werken met 2 robots, kunnen we ook deze robots vergelijken om conclusies uit te trekken. Doorheen het jaar wordt er gewerkt aan de bundel, waar we de theorie beschrijven en de berekeningen doen voor het traject zelf, maar ook kijken of de eigen robot sterk genoeg is om het traject uit te voeren zonder breuk of blijvende vervorming. In deze bundel wordt er een besluit geschreven over de resultaten van dit experiment, die ook kleine experimenten vereiste in het onderzoek naar de berekeningen. 1 1 Theoretische achtergrond Voor het we beginnen met dit eindwerk moeten we eerst wat berekeningen maken met bepaalde formules. Deze formules hallen we uit de theorie vandaar dat we de theorie uitleggen en onze eigen formules hier ook afleiden. 1.1 mechanisch aspect 1.1.1 de schuine worp We bespreken de schuine worp om het traject van het balletje te kunnen volgen na dat hij is losgelaten zodat we precies weten waar hij zal terechtkomen als het valt. Een schuine worp is de beweging die gemaakt wordt, wanneer een voorwerp schuin de hoogte wordt ingegooid. Het voorwerp zal hierbij een bergparabool beschrijven. De hoek en snelheid die wordt gemaakt, verandert ten gevolge van de zwaartekracht. Hiervoor hebben we de valversnelling nodig. De gravitatiewet van Newton is de formule die bepaald werd om de aantrekkingskracht tussen 2 voorwerpen te berekenen in het algemeen: (1.1) Hierbij is ’ De tweede wet van Newton stelt dat Met De valversnelling is de versnelling ten gevolge van de aantrekkingskracht tussen de aarde en een voorwerp. We kunnen met de algemene gravitatiewet de valversnelling berekenen: 1 2 (1.2) Hier is Omdat de aarde geen perfecte bol is, is de afstand tot het massapunt van de aarde veranderlijk, waardoor ze tussen de waarden 9.78 een 9.83 (op de evenaar en de polen respectievelijk) schommelt en bij ons 9.81 beneden gericht) is, is g negatief: -9.81 is. Omdat de versnelling naar de aarde toe (naar . Nu kunnen we starten met het berekenen van de baan van de schuine worp, deze start met een snelheid , die we opsplitsen in de componenten in 2 onderling loodrechte richtingen: Hierbij is . de hoek die de beweging van het voorwerp maakt met het aardoppervlak bij de start. De luchtweerstand is te verwaarlozen ,zodat we kunnen stellen dat constant blijft. Dit omdat de aardversnelling enkel loodrecht op het aardoppervlak werkt. Voor geldt er echter dat aangezien de aardversnelling de snelheid steeds beïnvloed. Hierbij kunnen we deze component zien als de verticale worp, die een E.V.R.B (éénparige veranderlijke rechtlijnige beweging) is. De positie van het voorwerp in de twee richtingen, kunnen we berekenen met de volgende formules: (1.3) (1.4) Hierbij is de positie, afstand tot de oorsprong op de horizontale as de positie op de verticale as de y-as de snelheden in respectievelijk de horizontale en verticale richting ( ) 2 3 De weg die het voorwerp aflegt, is afhankelijk van de snelheid en de hoek waaronder het gegooid wordt. Een eigenschap die op te merken valt, is dat het voorwerp het meest ver komt, als de hoek 45° is. Dit omdat of is de tijd dat het voorwerp in de lucht bewoog, aangezien op dit moment het voorwerp terug op de grond is. In deze tijd is de afstand die het voorwerp afgelegd heeft in onze x-richting. Aangezien supplementaire hoeken een gelijk sinus hebben en de sinus het grootst is bij 90°, weten we dat complementaire hoeken een zelfde afstand geven en de hoek van 45° de langste verplaatsing heeft. De volgende illustratie toont dit voor enkele waarden: Figuur 1.1 parabolen met de baan Betekenis van de assen: x-as: afstand in meter y-as: hoogte in meter 3 4 Het hoogste punt dat wordt bereikt, verkrijgen we wanneer de verticale snelheid 0 is, op dat moment gaat het voorwerp van stijgen over naar dalen. In de formule zien we dat dit het geval is, wanneer of . (1.5) Het invullen van deze tijd, geeft dus de maximale hoogte van . Tot nu werkten we nog steeds met 2 vergelijkingen in functie van de tijd, onze bergparabool geeft in functie van en die verhouding kunnen we als volgt berekenen: (1.6) Wanneer we dit invullen in onze formule voor de verticale positie, verkrijgen we (1.7) Hierbij is stx de positie, afstand tot de oorsprong op de horizontale as (m) sty de positie op de y-as (m) vx0, vy0 de snelheden bij de start in respectievelijk de horizontale en verticale richting ( ) de hoek waaronder het projectiel wordt afgeschoten tegenover de x-as (°) t de tijd dat het projectiel onderweg is (s) g de gravitatieconstante op aarde ( de startsnelheid ( Hiermee kunnen we de mogelijke startsnelheid (v0) in functie van een gekozen hoek bepalen om het voorwerp de baan te laten lopen door de oorsprong en het gevraagde punt, bestaande uit de horizontale - en verticale positie. Met de formules die we hier toelichten, kunnen we de baan van onze bal berekenen bij het werpen met de robot en interessante info uitrekenen. 4 5 1.1.2 de cirkelvormige beweging Om het verband te weten tussen de hoeksnelheid van de motor en de snelheid van de bal bespreken we de cirkelvormige beweging hier om zo de gegevens correct in het programma te kunnen invullen. De arm van de stappenmotor moet de snelheid en hoek bepalen : Figuur 1.2: verband hoek afgelegde weg Er geldt dat (1.8) (1.9) (1.10) Uitleg symbolen: Een radiaal/rad is hierbij , daar de omtrek van een cirkel is bij radialen, zal de boog van de sector met hoek 1 rad r zijn, wat de afgelegde weg is. Na radialen, hebben we Met de formules en meter afgelegd. zien we dat de eerste formule geldt. 5 6 1.1.3 benodigdheden sterkteberekeningen Als men een voorwerp laat versnellen rond een as met een bepaalde kracht, hangt de versnelling van dat voorwerp af van de vorm en massadichtheid. Een goed voorbeeld om dit waar te nemen is een kunstschaatser die door zijn armen samen te nemen, zijn snelheid vergroot. De verhouding tussen het moment dat de kracht uitoefent en de versnelling, wordt gegeven door het massatraagheidsmoment. Om deze te berekenen, bepalen we hier de formules die we nodig hebben om het massatraagheidsmoment te bepalen van onze arm om zo te kunnen controleren of onze arm sterk genoeg is. Het massatraagheidsmoment geeft de grootte van de inertie bij rotatie aan. De algemene formule is gegeven door .Dit omdat . In de lessen leerden we enkele basisformules voor dit “moment”: Massieve cilinder: dunwandige cilinder: Bal: cilinder: . Enkele speciale gevallen bewijzen we zelf: Balk: a y x r b Figuur 1.3: balk berekeningen massatraagheid (1.11) 6 7 Bolschil: h e r α ar Figuur 1.4: bolschil (1.12) Het massapunt van de halve bolschil bepalen: (1.13) Het zwaartepunt ligt dus in het midden van de hoogtelijn. 7 8 Stelling van Steiner Hierbij is J het massatraagheidsmoment tov een as door het massacentrum en het massatraagheidsmoment tov een parallelle as. Bewijs: Figuur 1.5: parallelle assen =md²+J (1.14) Kracht door botsing van de bal: Dit omdat de bal een impulsverandering ondergaat tijdens de botsing met de pot. We hebben dan nog enkele algemene formules i.v.m. wringing en buiging: De formule van Huber en Hencky werd experimenteel vastgelegd en zegt dat Bij afschuiving en buiging gelden hierbij dat en , bij wringing geldt . met . In het mechanisch aspect hebben we hier uitgelegd hoe de baan bij de worp is en op welke manier we die moeten omzetten in de juiste hoeksnelheid die we aan de stappenmotor moeten geven. Bij het derde deel werden de formules uitgelegd die de sterkteberekeningen kunnen gebruiken, waarmee we testen of onze arm sterk genoeg is. 8 9 1.2 de stappenmotor Voor het in beweging brengen van de arm gebruiken we een stappenmotor, deze wordt hier besproken om er goed de werking ervan te begrijpen. De stappenmotor wordt gebruikt als je precieze regeling nodig hebt van een systeem, namelijk om precies de hoek te bepalen waaronder we het balletje gooien. Enkele belangrijke eigenschappen van deze synchrone motor: - koppel leveren bij stilstand, dit noemen we de holding torque, er is bekrachtiging bij stilstand, alsook een kracht voor de cogging torque: de kracht om onder een hoek te staan met een rechte door de veldlijnen - hoekverdraaiing kan vrij exact gebeuren in stappen - het rendement van een stappenmotor is zeer laag met 10% - het koppel is vrij groot in verhouding tot het volume van de stappenmotor De stappenmotor van de eigen robot is een Berger Lahr RDM 5913/50.(geen datablad gevonden) We konden aflezen dat de weerstand van een spoel 1 is en de hoek per puls 0.72° bedraagt en weten dat het aantal spoelen van de stappenmotor 5 is. De stappenmotor van de PIHrobot is gekenmerkt met MMAA0006 en wordt bestuurt met microstepping, de spoelen hebben een weerstand van 0,8 . (eveneens geen info over gevonden, we kregen de info dat het 2 paar spoelen bevat) 1.2.1 opbouw De stappenmotor bestaat uit een rotor en een stator zonder koolborstels: De stator bestaat uit een paar spoelen (elektromagneten) die samen gestuurd worden om een resulterend magnetisch veld te maken. De rotor volgt dit magnetisch veld. Als de stappen motor meer spoelen gebruikt, wordt de hoek die je de stappenmotor kan veranderen kleiner. De rotor is gemaakt uit permanente magneten waarbij de noordpolen en de zuidpolen elkaar opvolgen en/of heeft een grillige vorm zodat de reluctantie verschilt volgens de positie (zie fig.1). We sturen met een microcontroller een stuurkaart aan die pulsen ontvangt. Als de microcontroller een puls krijgt, dan verandert het de spanning over de spoelen zodat een 9 10 nieuw resulterend magnetisch veld ontstaat die de rotor in een andere positie duwt zodat het inhaakt op het nieuwe veld. Figuur 1.6:stappenmotor reluctantie 1.2.2 werking Er zijn 3 soorten stappenmotoren met hun specifieke werking: Stappenmotor met permanente magneet: de magnetische rotor wordt aangetrokken of afgestoten door het elektrische veld die in de stator wordt opgebouwd. Het aantal # stappen per omwenteling is = # rotorpolen × # statorfasen Stappenmotor met variabele reluctantie: de magnetische veldlijnen willen een weg volgen met een zo’n klein mogelijke magnetische weerstand, waardoor ze op de rotor een kracht uitwerken om deze te doen draaien tot de reluctantie minimaal is. De rotor is vertand zoals bij figuur 1-6 zodat de tanden zich richten op een samenvallende rechte met het magnetisch veld die door de bekrachtigde spoelen loopt. Wanneer 2 opeenvolgende spoelparen worden gemagnetiseerd, zullen de tanden zich verdraaien, zodat de rotor een hoekverdraaiing ondervond. 10 11 De hybride stappenmotor: combinatie met permanente magneet en variabele reluctantie. Deze soort wordt het meest gebruikt en werkt op beide principes. Een ander onderscheid dat we kunnen nemen, is het verschil tussen bipolaire en unipolaire stappenmotoren. De unipolaire stappenmotor bevat wikkelingen met een vertakking zodat de draairichting Zoals we op volgende tekening zien, is het voldoende de middenaftakking altijd te bekrachtigen en door de wikkeling A1 / A2 te bekrachtigen, is de richting omgepoold. Figuur 1.7a: unipolaire motor Bij het bipolaire type, wordt de richting van de stappenmotor bestuurd met de H-brug in de driver (besturing). Deze brug bestaat uit 4 transistoren en staat over iedere spoel , door S1 en S4 te sluiten, wordt de spoel bekrachtigd in de ene richting en met de 2 andere schakelaars werkt het magnetisch veld in de andere richting. 11 12 Figuur 1.7b: bipolaire motor De werking van een 2fasenstappenmotor Figuur 1.8: fullstep Figuur 1.9: halfstep Bij het eerste deel werken we fullstep: we draaien 90° wanneer we een andere spoel bekrachtigen. Door de vorm en magnetische eigenschappen van de rotor, probeert het elektrische veld mee te draaien met het elektrisch veld dat 90° gedraaid is, waardoor we bovenstaande volgorde bekomen. Onderaan kunnen we 2 spoelen tegelijk bekrachtigen, waardoor de resultante van de 2 velden 45° gedraaid is met het eerdere veld. We werken hier op halfstep. 12 13 De stappenmotors met meer dan 2 paren spoelen werken op gelijkaardige wijze: terug worden de spoelen in de juiste volgorde bekrachtigd om een vloeiende beweging te krijgen. Door meerdere spoelen, meer polenparen en vertanding op de rotor en door microstepping, kunnen we kleinere hoekverdraaiingen bekomen. Microstepping gebeurt met de elektronische schakeling in de microcontroller die de stroomsterkte over iedere spoel een verschillende waarde kan geven, waardoor de magnetische velden een resultante hebben die een exactere verhouding kan hebben tussen 2 posities en dus ook meer posities kan aannemen. De stappenmotor wordt bij ons aangestuurd door een stuurkaart met de H-brug die per puls de spanningen over de verschillende spoelen verandert zodat er een hoekverdraaiing optreedt in wijzerzin of in tegenwijzerzin. De stuurkaart wordt bestuurt door de microcontroller die geprogrammeerd werd in C-code (eventueel met flowcode als tussenprogramma bij het eigen ontwerp). 13 14 2 Berekeningen Hier tonen we welke berekeningen we hebben gedaan om tot een goed resultaat te komen. 2.1 schuine worp De berekeningen van de schuine worp werden eerst in Excel gedaan zodat bij waardeveranderingen, de berekeningen niet helemaal moesten worden overgedaan. tabel 2.1 berekeningen schuine worp in Excel v r Figuur 2.1: voorstelling robotarm positie We zullen de berekening ervan onze eigen robot hier uitwerken: We hebben dat de afgelegde afstand . Door het symmetrisch werpen, weten we dat We gebruiken nu formule (1) van pagina 10: Hierbij is Omvormen van de formule geeft: 14 15 De waarden invullen Uit en dus halen we dat , Per puls leggen we 0.72° af of 12.57 delen we dit door . . bekomen we dat we per 901 µs een puls moeten sturen. 2.2 massatraagheidmoment We berekenen hier de massatraagheidsmoment van ieder deel. Om later de krachten eruit te halen. Arm Figuur 2.2: arm robot Berekenen van het massatraagheidsmoment van de balk om de centrale as. Doordat de centrale as op dezelfde plaats is als de as van de motor geld Bij deze berekeningen berekenen we de balk die uit de eerste balk wordt uitgenomen. 15 16 Berekenen van het massatraagheidsmoment van de balk om de centrale as. Doordat de balk niet om de centrale as draait maar 1 mm van de centrale as draait moeten we er een factor bijtellen met de stelling van Steiner: Het berekenen van het massatraagheidsmoment van de arm: Potjes(bolschillen) Het massatraagheidsmoment berekenen van een halve bol rond het bovenvlak van de bol. Doordat de centrale as niet de as is waarrond we berekend hebben moeten we een deel aftrekken om het voor de centrale as te hebben. Bereken van het massatraagheidsmoment van een potje rond de as van de motor. Berekenen van een nieuwe tussenwaarde, we nemen 2 keer Jzpot omdat er 2 zijn. Bouten Omdat we zagen dat bij de potjes het gewone massatraagheidsmoment zo klein was hebben we het bij de boutjes verwaarloosd, want de massa is dichter bij het massapunt en de massa is kleiner. 16 17 We berekenen nu het massatraagheidsmoment van een bout tegenover de as waarrond het draait. We berekenen nu het massatraagheismoment van de volledige arm Bal Totaal 2.3 versnelling We versnellen de bal bij het werpen. Doordat we het laten versnellen door de tijd bij iedere puls met een constante verlagen tussen de pulsen, is de versnelling het grootst bij het begin waar het de beginsnelheid in 1 puls moet halen of op het einde waar het verschil in snelheid van het begin en het einde van de puls het grootst is. Wij hebben deze versnelling nodig om later ook sterkteberekeningen te kunnen uitvoeren. 2.3.1 begin Versnelling met de factor door de microcontroller ingerekend. 17 18 2.3.2 einde De hoeksnelheden bij de laatste en voorlaatste puls zijn: Versnelling met de factor door de microcontroller ingerekend. 2.4 botsing Bij het opvangen heeft de bal een bepaalde snelheid waarmee het tegen het potje botst waar het invalt. Daardoor moet het potje een reactiekracht uitoefenen. Hiervoor heeft de rotor stil moeten blijven staan en was er een moment om de as gecreëerd. We hadden gemeten en berekend dat en zodat Zoals in onderstaande simulatiesmet het programma DataStudio zien we dat de topwaarde veel groter is. Bij de berekeningen van het moment gebruiken we 30N. De wrijving zorgt voor een gedempte trilling, die we door de frequentie van het opmeten niet volledig kunnen opmeten. Uit de fysica weten we dat de snelheid 90° verschoven zou zijn in ideale omstandigheden, waardoor de snelheid nul is op het moment dat de versnelling maximaal is, door de tweede wet van Newton weten we dat dit plaats vindt wanneer de kracht maximaal is. Hierdoor konden we tijd aflezen. De snelheid was al berekend in het deel van de schuine worp (6.1). Bij de tweede simulatie zien we een algemener beeld van de gedempte sinusbeweging, waarbij het balletje van iets hoger werd geworpen op de meetplaat, zoals we zien op volgende pagina. 18 19 Figuur 2.3: simulatie 1 Figuur 2.4: simulatie 2 Figuur 2.5: opstelling 19 20 2.5 sterkteberekeningen We berekenen hier of ons armpje wel sterk genoeg is om de krachten te kunnen opvangen. 2.5.1 krachten Doordat we zagen dat de versnelling op het einde groter was de dan versnelling in het begin rekenen we verder met de eindversnelling. Moment berekenen bij het opvangen. Nu zien we dat Mb groter is dan Me dus rekenen we verder met Mb. Bereken van de kracht die op een van de kleine boutjes komt door het moment. Doordat de boutjes ook het stuk omhoog moeten houden moet er ook rekening gehouden worden met de zwaartekracht. De kracht door de zwaartekracht op 1 van de bouten en de kracht om de impuls op te vangen (niet het moment), zijn verdeeld over de boutjes: en . Bout 1 Figuur 2.6:krachten bout 1 20 21 bout 2 , Figuur 2.7: krachten bout 2 We zien dat de resulterende kracht bij bout 2 het grootst zal zijn en ontbinden ze allemaal. 2.5.2 spanning De toegelaten spanning is 9,6 kN/cm², dus zijn de ijzeren bouten sterk genoeg. We berekenen ook de ideële spanning van de arm tegenover de buiging en wringing: Bepalen zwaartepunt met de stelling van Varignon, gebeurde in volgende tabel: Tabel 2-2:zwaartepuntberekeningen A A(mm²) x(mm) y(mm) Ax(mm³) Ay(mm³) 1 36 1 9 36 324 2 40 9 19 400 760 totaal 76 10 14,26 436 1084 21 22 Bepalen van het oppervlaktetraagheidsmoment. Doordat het stuk symmetrisch is, is en Volgens de formule van Huber en Hencky geldt . Dus het aluminium is sterk genoeg, aangezien de maximale toegelaten spanning was. 22 23 3 Programma In dit hoofdstuk bespreken we het programma dat de robot bestuurt. Het volgende blokschema toont schematisch wat de functie van het programma is: Figuur 3.1: blokschema programma 3.1 main Het eerste dat we plaatsten, is een interrupt. Deze functie uit flowcode werd verbonden met parameter Rb0, zodat het drukken op knop SW0 (switch 0) zorgt dat het programma onmiddelijk stopt en naar het deelprogramma van de interrupt gaat. Op deze manier konden slechte, onveilige situaties simpel beëindigd worden in alle gevallen. Omdat het programma niet steeds opnieuw zou moeten worden gestuurd, wordt het eigenlijke programma in een lus (loop) gestoken die nooit stopt. In die lus wordt drukknop SW1 ingelezen via een input en geassocieerd met een variabele die in de decision (beslissing) wordt ingelezen. Indien er wel degelijk op de knop werd gedrukt, wordt de variabele op 0 gezet en zal het echte werptraject worden uitgevoerd tot we op drukknop 7 drukken om het werpen stop te zetten, maar de laatste cyclus laat eindigen (vergelijk met interrupt die direct stopt ). Wanneer bij de decision B1 niet ingedrukt stond, is er mogelijkheid tot “joggen”, dat is de robotarm waterpas zetten om het programma correct te verlopen. Hier werden 2 mogelijkheden voor voorzien die zorgen dat grote afstanden sneller kunnen verlopen, Figuur 3.2: hoofdprogramma terwijl om het geheel precies te zetten, we per puls kunnen regelen. 23 24 3.2 macro’s Om het programma overzichtelijk te houden, werden de functies zoals het joggen en het werpen in aparte macro’s (deelprogramma’s) gezet. Deze deelprogramma’s kunnen we makkelijk meerdere keren gebruiken zonder veel werk. 3.2.1 Pulsentrein en pulsentreinms Deze macro’s besturen de ingangen van de stuurkaart om pulsen te sturen, waardoor het magnetisch veld in de stappenmotor per puls een stap verplaatst is. We hebben 1 pulsentrein die de variabellen T2 en T1 gebruiken die we vroeger in het programma invoeren met een calculation, deze is de snelste pulsentrein. En we hebben een pulsentrein die 2 delay’s heeft van 100ms deze gebruiken we voor de arm waterpas te zetten, het stuurt het dan heel traag aan zodat Figuur 3.3: pulsentrein figuur 3-2 programma pulsentrein we snel genoeg kunnen stoppen. Deze puls wordt gestuurd naar A1. Deze is verbonden met de stuurkaart zodat bij een puls de spanningen over de spoelen verandert. 24 25 3.2.2 Joggen en joggensnel Bij het positioneren van de arm, gebruiken we 4 drukknoppen, per snelheid hebben we 2 richtingen: in wijzerzin en in tegenwijzerzin. Die richting wordt gestuurd met uitgang A0. Snel joggen Bij het rechtse gebruiken we de drukknoppen SW2 en SW3 die we eerst inlezen en overzetten naar respectievelijk Figuur 3.4: joggen B2 en B3. Dan hebben we een decission die kijkt of B2 hoog staat, indien het hoog staat gaan we naar de lus van B2 en indien het laag staat gaan we naar de lus van B3. We zetten de lussen niet na mekaarzodat het per lus die we in het hoofdprogramma doen slechts jogt aan 1 kant. We gaan enkel in die lus als de variabellen B2 of B3 hoog staan. In de lus zetten we bij B2, A0 laag en bij B3, A0 hoog. Dit is om de wijzerzin van de stappenmotor duidelijk te maken. We gaan dan naar de macro pulsentrein om een puls te sturen naar A1. Dan lezen we SW2 of SW3 weer in zodat al het losgelaten is je dan ook uit de lus gaat. Traag joggen Analoog bij snel joggen maar we gebruiken de drukknoppen B5 en B6 en in plaats van naar pulsentrein te gaan, gaan we naar pulsentreinms. 25 26 3.2.3 Interruptuitgaan Als de drukknop SW0 wordt ingedrukt gaat het automatisch naar deze macro. Hier wordt de interrupt stop gezet door het drukken op SW4, omdat deze variabele nergens anders wordt gebruikt, moet de variabele ergens terug op 0 worden gezet. Dit mocht zowel voor als na de lus gebeuren. Indien het niet gebeurt, zal de lus worden verlaten als B4=1 en als we de volgende keer op SW0 drukken ga je nooit in de lus waardoor je gewoon doorgaat in het programma. In de lus is er nog een delay zodat het programma niet constant SW4 inleest en naar B4 schrijft. Figuur 3.5: interrupt 3.2.4 Pulsen Figuur 3.6: pulsen In deze macro worden de pulsen steeds rapper gegeven door de tijd te verkleinen. Op deze manier moet de stappenmotor de hoge snelheid niet bij de start kunnen geven, alsook de extreem hoge versnelling bij de start. Dit doen we door de variabele T2 te kiezen in het begin en dan een lus een bepaald aantal keer te laten gaan, dit nummer is gebasseerd op de hoek waaronder we willen werpen. In de lus verkleinen we de T2 met een vaste waarde. En dan gaan we naar pulsentrein, aangezien pulsentrein de variabele T2 gebruikt in een delay verkleint telkens de tijd die het duurt om de macro pulsentrein te doorlopen waardoor het constant sneller pulsen geeft en de stappenmotor versnelt. 26 27 3.2.5 Werpen en werpenrechts Figuur 3.7:werpen naar links Figuur 3.8: werpen naar rechts Dit zijn de 2 grootste macro’s die de stuurkaart bij het werpen zelf regelt. Om de snelheid te kunnen opbouwen, moet er even naar beneden worden gedraaid met de arm. Dit gebeurt langzaam genoeg om de bal nog niet er uit te laten vallen. 27 28 Er wordt even gewacht zodat de bal steeds in rust op de zelfde plaats blijft (met de bedoeling dat iedere cyclus identiek kan worden afgelegd) en daarna werpt men de bal opnieuw, waarna de stappenmotor draait om op te vangen. De gedetailleerde uitleg over de werking in het programma om dit uit te voeren is als volgt: Werpen naar links We beginnen met de variabelle A0 om de draaizin aan te tonen namelijk wijzerzin. Dan zetten we de 2 variabelle T2 en T1 op een hoge waarde zodat het een trage snelheid onderneemt, dan gaan we naar de macro pulsentrein waar er een puls gegeven wordt. Dan zetten we nog een delay in om het nog trager te doen verlopen. We ondergaan deze cyclus 25 keer. Dit gedeelte is om de hoek te vergroten zodat we tijdens het versnellen een kleiner hoekversnelling kunnen nemen. Dan nemen we een delay om te zorgen dat het balletje in een stabiele toestand in het potje is. Dan veranderen we A0 om het in de juist draaizin te draaien namelijk tegenwijzerzin. En dan veranderen we de waarde van T1 naar 139, dit is om de correcte snelheid te verkrijgen bij het werpen dan gaan we naar de macro pulsen die hiervoor is uitgelegd. Dan nemen we een delay zodat de arm op stilstand is en niet doordraait als we direct terugdraaien. Door de inertie van het balletje vliegt deze verder zoals we berekent hebben bij de schuine worp. Dan veranderen we A0 weer zodat het terug in wijzerzin draait. En we veranderen T2 zodat de stappenmotor geen stappen overslaat als we T2 laten doordat het in pulsen zo laag is gezet. Dan gebruiken we weer een lus die 20 keer doorlopen wordt. In deze lus verkleint T2 iedere keer dat deze lus doorlopen is en we sturen een puls naar de stuurkaart met pulsentrein. We versnellen hier doordat we snel op de plaats staat waarop we vangen. Dan nemen we een gewone lus die we 30 keer doorlopen met pulsentrein erin om met deze snelheid verder te gaan. Dan zetten we een delay om te wachten totdat het balletje inslaat. De arm staat dan onder een hoek zodat het balletje zo loodrecht mogelijk inslaat in het potje en niet op de rand botst en doorvliegt. Dan zetten we A0 terug om in tegenwijzerzin te draaien. Dan zetten we T2 en T1 hoog om niet te zorgen dat het balletje niet er uit vliegt. Dan nemen we een lus die 20 keer doorlopen is die per keer een puls stuurt met de macro pulsentrein. Er is dan nog een delay om de snelheid nog wat in te perken. Deze laatste cyclus doen we om de arm terug horizontaal te zetten. Analoog bij het werpen naar rechts. 28 29 3.2.6 interface PIHrobot Bij de robot van het PIH werd met volgende interface (programma samengesteld door de HOWEST) het programma ingegeven dat daarna werd omgezet in C-code. Hierbij is het makkelijker om het programma te snappen dan met flowcode. De hoek geeft de waarde aan tegenover onze referentieas, we zorgen dat 0° overeen komt met de as die precies horizontaal staat. De richting om onder de nieuwe hoek te staan wordt met CW: klokwijs of CCW: counterclockwise/ tegen de wijzers in te draaien en bij de hoeksnelheid kunnen we rechtstreeks de hoeksnelheid invullen, zonder de pulsen te moeten uitrekenen. Bij de laatste kolom staat de wachttijd om de robot eventueel in rust te laten staan. We zien duidelijk dat de arm naar de positie onder 355° gaat bij stap 1, de arm gaat dus 5° naar beneden om daarna met een hogere hoeksnelheid de bal los te laten onder een hoek van 20°. Tijdens de worp wordt de arm 40° gedraaid om aan de andere kant op te vangen. Hierna wordt het traject symmetrisch afgelegd aan de andere kant. Onderaan kunnen we het aantal cycli meerdere keren laten herhalen om de worpen vloeiender te laten volgen, zonder het programma langer te schrijven. 29 30 4 Bronvermelding We geven de bron van de figuren weer op deze pagina: De figuren: figuur 1-6: http://nl.wikipedia.org/wiki/Stappenmotor figuur 1-1: http://nl.wikibooks.org/wiki/Klassieke_Mechanica/Kinematica figuur 1-5: http://commons.wikimedia.org/wiki/File:Formule_van_Steiner.png figuur 1-2: http://www.wetenschapsforum.nl/index.php%3Fshowtopic%3D7623&docid=qTwh6R8k9ONi EM&imgurl=http://img127.exs.cx/img127/4093/img12n47iw.gif&w=216&h=135&ei=v1RwT figuur 1-8/9: http://educypedia.karadimov.info/library/thesis.pdf figuur 1-7a: www.zenot.nl/prod03.htm figuur 1-7b : http://www.fraxeon.com/files/Stappenmotor_bipolair.jpg en http://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/H_bridge.svg/310pxH_bridge.svg.png 30 31 5 besluit Gedurende dit jaar hebben we enkele problemen opgewerkt in verband met het werpen van de bal met robot, die de slaagkansen van de robot beïnvloeden: (1): Bij bepaalde omstandigheden is het magnetisch veld in de stappenmotor niet sterk genoeg om de gevraagde beweging uit te voeren. De geprogrammeerde versnelling, snelheid en massa van de bal, mogen niet te groot zijn. Wanneer de motor te warm krijgt, kan de motor het programma niet altijd juist uitvoeren. Deze factoren zorgen voor duidelijke, slechte worpen. (2): de motor zorgt dat de bal kinetische energie heeft bij het landen, die het kwijt moet verliezen: we zien duidelijk de bal rond draaien in het potje. (3): als de bal perfect in het midden van het potje valt, kan het gebeuren dat er geen wrijving genoeg is om de energie kwijt te raken en kaatst de bal er terug uit. (4): een programma werkt niet altijd meer na een verandering aan de omgeving door de tijd heen. Dit door kleine wijzigingen, werkt het programma niet meer met dezelfde slaagkansen. De redenen: ondergrond heeft andere helling bij het verplaatsen van de robot of bij het opnieuw enablen, is de arm niet op de identieke plaats. 6: de massa van de projectielen worden verwaarloosd, we zien echter dat verschillende balleneen erg verschillende baan afleggen met hetzelfde geprogrammeerde traject. De theorie kon niet alles verklaren met eenvoudige voorstellingen. Enkele voorbeelden waren trajecten waarbij men theoretisch verwacht dat de bal in dezelfde pot zal landen, terwijl in de praktijk de bal in het andere potje landde. Geen enkel traject kan echter in realiteit de bal altijd opvangen. Het rendement van de robots wordt opgemeten tijdens de opendeurdag om zo het effectief resultaat te kennen van onze trajecten, waarmee we het besluit kunnen trekken van de geslaagdheid. De berekeningen en theorie toonden dat de robot mechanisch sterk genoeg is. 31 32 6 algemene vakken Nederlands: brief om inlichtingen Datapross B.V. Vloeddijk 5 7397 NR Nijbroek Informatie GIP (eindwerk) Geachte heer, Om onze middelbare studies Industriële wetenschappen te kunnen beëindigen, zijn we op zoek naar de normale resultaten bij gebruik van de regeldoos van een Ardenna 80 WA - zoutstrooier. In ons laatste jaar is het maken van een GIP (geïntegreerde eindproef) vereist. Een voorstel dat we deden, was het herstellen van de schakelkast van een zoutstrooier (Ardenna 80 WA zoals eerder vermeld) waarvan de schakeling na vele jaren een defect vertoont in verband met de strooibreedteregeling. We hebben al wat gezocht, maar kwamen tot de conclusie dat het beter zou zijn als we de resultaten bij goede werking zouden kunnen verkrijgen. Aangezien de programma’s die we op de school gebruiken, ontoereikend zijn om iedere component exact te vinden, vragen we aan jullie of het mogelijk is het elektronische schema van de schakelkast met simulaties te delen met ons? Dit zou er voor zorgen dat we bij het testen van de werking zeker kunnen zijn van wat we moeten bekomen om zo de component die defect is, te kunnen vinden. We hopen dat jullie ons hiermee kunnen helpen en bedanken jullie alvast Met vriendelijke groet, Stijn Cambie 32 33 7 Toevoeging na druk Bij de opdracht van het PIH hoorde de statistiek van hun beste traject met hun robot om zo te kunnen bepalen welke groep het allerbeste traject had kunnen ontwerpen.Hiervoor werd tijdens de opendeur op 3 juni met een opstelling die niet kon bewegen het programma meermaals uitgevoerd om hier de resultaten weer te geven: 1 2 4 20 38 41 44 70 75 88 90 96 115 127 130 143 144 150 177 186 191 210 230 235 260 269 425 545 604 615 634 646 x=206,41 s=198,56 med= 143,5 Wanneer we dit plotten met klassenbreedtes van 50 verkrijgen we 8 7 6 5 4 Reeks1 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 De klokcurve die dit experiment normaal zou moeten hebben, is hier niet te vinden. Dit konden we ook al merken aan de extreem hoge standaardafwijking die onze conclusie over het vermoedelijke gemiddelde bemoeilijkt. Errata p.22: de kracht is 30N ipv 30kN. 33