Versnelling bepalen

Datum: Maart 2009

Inleiding:

Een experiment om eens goed met enkele Lego Mindstorms sensors, maar vooral met de bijbehorende data analyse, aan de slag te gaan.

Principe:

Het effect van de hellingshoek op de versnelling van een auto te onderzoeken.

Materiaal:

  • Lego Mindstorms RCX
  • Rotatiesensor
  • Lichtsensor
  • Lego bouwonderdelen zoals geleverd bij de Mindstorms kits.
  • Bricx Command Center (software voor aansturing RCX die het mogelijk maakt om NQC programma's te schrijven).
  • Plank
  • Isolatietape
  • Schaar
  • Dozen
  • Computer
  • Lineaal / Meetlint / Geodriehoek
  • Potlood


rotatiesensor            lichtsensor

RCX

Experimentele opstelling:

  • Bouw de auto op zoals in de foto's is weergegeven. De rotatiesensor is op een as geplaats en de lichtsensor op de kop.  
    De auto is ook beschikbaar als LDRAW file, die een meer gedetailleerde componentenlijst bevat: slopebot.ldr

  • Neem een plank van meer dan 1 m lengte bij voorkeur met een witte ondergrond.

  • Teken op op een afstand van exact 25 cm t.o.v. elkaar 5 lijnen af.

  • Neem een stuk isolatietape en plak dat precies onder de streep die zojuist getrokken is.

  • Laad het benodigde NQC programma in de RCX.

  • Leg de plank met een kant op een doos zodat er een helling ontstaat.

  • Zet de auto vlak boven de streep op de top van de helling.

  • Start het programma in de RCX en laat de auto los zodat deze over de plank naar beneden rijdt. (Oppassen dat deze er niet vanaf valt).

  • Haal de data uit het datalog van de RCX en save deze als teksfile.

  • Laadt de tekstfile in een spreadsheet en analyseer de data.

  • Herhaal het experiment nogmaals waarbij we een doos bovenop de eerste plaatsen en zo de hellinghoek vergroten.

  • Herhaal dit eventueel nog een keer.

Het NQC programma dat we in de RCX laden om de data te verzamelen
// Versnelling bepalen
// Auto staat op hellende plank.
// Op regelmatige afstand gemarkeerd.
// Data wordt verzameld met lichtsensor en rotatiesensor.
// Max aantal datapunten in RCX = 1000

# define Light SENSOR_1
# define Angle SENSOR_2
# define DATALOG_SIZE 500

task main()
{
SetSensor(Light,SENSOR_LIGHT);
SetSensor(Angle,SENSOR_ROTATION);
CreateDatalog(DATALOG_SIZE);
ClearTimer(0); // Set de timer to 0

int i=0; // teller
while (i < DATALOG_SIZE)

{
AddToDatalog(FastTimer(0)); // Tijdswaarde aan datalog toevoegen
AddToDatalog(Light); // licht waarde toevoegen
AddToDatalog(Angle); // rotatie sensor waarde toevoegen
i++;
}

PlaySound(3); // Einde loop bereikt
}
De ruwe data wordt opgeslagen in een text file. Deze lezen we vervolgens in in excel en converteren deze mbv een eenvoudige macro naar een handzamer formaat.
Sub ProcessData()
'Program to convert LEGO datalog values to a more operatable form.
' @ 16/10/2005 by Ruud.Herold

'Notes:
'index = row, column

'Define some variables
Dim CounterData As Integer 'counter in processed data sheet
Dim CounterRaw As Integer 'counter in Raw data sheet

'Initialize variables
CounterRaw = 1
CounterData = 2

'Start of program
While Worksheets("rawdata").Cells(CounterRaw, 1).Value <> ""
If Worksheets("rawdata").Cells(CounterRaw, 1).Value <> "" Then
'Convert RCX ms value to s
Worksheets("data").Cells(CounterData, 1).Value = Worksheets("rawdata").Cells(CounterRaw, 2).Value / 100
'Copy cell values
Worksheets("data").Cells(CounterData, 2).Value = Worksheets("rawdata").Cells(CounterRaw + 1, 2).Value
Worksheets("data").Cells(CounterData, 3).Value = Worksheets("rawdata").Cells(CounterRaw + 2, 2).Value
End If
CounterRaw = CounterRaw + 3
CounterData = CounterData + 1
Wend

End Sub

Uitvoering, resultaten en discussie:

De data die we verzameld hebben analyseren we vervolgens m.b.v. een spreadsheet maar ook m.b.v. pen en papier. Ik heb eerst een experiment gedaan om te zien welke dataset gegenereerd wordt en op basis van de analyse van deze dataset de experimenten vervolgens nogmaals netjes uit te voeren. De eerste resultaten zijn weergegeven in onderstaande grafiek waarin de gemeten waardes van de lichtsensor en de rotatiesensor als functie van de tijd zijn weergegeven.

Concentreren we ons in eerste instantie op de waardes die de lichtsensor laat zien. Dan zien we een vijftal pieken en een zesde piek waar het wagentje de plank afreed. De pieken representeren het moment waarop het wagentje over een stukje isolatietape heenrijdt. We willen nu het moment bepalen dat het wagentje een bepaalde afstand afgelegd heeft. We worden hier echter met een probleem geconfronteerd. De eerste piek is niet echt een piek maar een balk. Niet echt verrassend aangezien het wagentje op dat moment erg langzaam reed en de lichtsensor dus relatief lang een donkere waarde registreerde. De keuze die nu gemaakt moet worden is welk tijdstip bepalend wordt, het moment dat de lichtsensor in contact komt met de isolatietape of het moment dat deze verlaten wordt. Aangezien de breedte van de isolatie tape steeds hetzelfde is maakt het in principe niet uit welke van de twee we kiezen zolang we vervolgens maar consequent zijn. Indien de tape wel van breedte verschilt kan men het beste het eerste contact moment kiezen en daarom heb ik voor deze methode gekozen. In onderstaande grafiek zijn die momenten aangegeven.

Daarnaast heb ik de methode van de 2de afgeleide toegepast om het tijdstip nog nauwkeuriger te kunnen bepalen. Met de 2de afgeleide bepalen we het moment waarop het grootste verschil gemeten wordt tussen 2 meetwaarden (de 1ste afgeleide is het verschil tussen 2 meetwaarden, de 2de afgeleide is het verschil tussen twee 1ste afgeleiden). Men kan met deze methode onderstaande grafiek creëren. De berekening voor het eerste buigpunt is daarnaast weergegeven. We kunnen deze methode toepassen aangezien het tijdsverschil tussen twee metingen steeds exact hetzelfde is nl 0.02 s.

Passen we dit principe verder toe dan kunnen we voor elk contactmoment nauwkeurig het tijdstip bepalen. Vervolgens normaliseren we deze tijdstippen naar een startmoment waarvoor geldt t=0 het moment waarop de wagen de eerste strip isolatietape passeerde. Daaropvolgend kunnen we snelheid en versnelling, iedere keer als er weer een isolatietape gepasseerd wordt, berekenen hetgeen resulteert in de onderstaande tabel.

En natuurlijk ook in een grafiek.

Vervolgens gaan we met de waardes van de rotatiesensor aan de slag. Een rotatiesensor telt leest 16 posities per rotatie van de as met een maximale resolutie van 500 rpm. In de firmware is het gekalibreerd om of hoeken of 1/16 de rotaties te meten. In dit geval hebben we steeds 1/16 de van een rotatie gemeten.
Kijken we nu op de tijdstippen die we hierboven bepaald hebben dan lezen we een waarde 3 af op 0 cm en een waarde 120 op t = 1 m. Het verschil is 117. In totaal heeft het wiel dus 117/16 = 7.31 wiel rotaties. De diameter van een wiel is 4.3 cm. De omtrek van een cirkel is 2.∏.r hetgeen in dit geval overeenkomt met 13.5 cm. Voor 117 tikken komt dit overeen met 98.8 cm een fout van 1.2 %.
De les die we uit deze eerste analyse trekken is dat het startpunt erg van belang is. Voor de keuzes die gemaakt zijn kan men het beste de lichtsensor vlak voor de bovenste isolatietape zetten. Tevens heb ik het design van de slopebot een beetje aangepast. In bovenstaand experiment had ik de rotatiesensor op een van assen naast het frame zitten. Bij de daaropvolgende experimenten heb ik de rotatiesensor in het midden gezet.
Na deze eerste analyse ben ik de experimenten gaan uitvoeren door op twee verschillende hoogtes het wagentje minimaal twee maal de helling af te laten rijden en het datalog vervolgens te analyseren. De hoek waaronder de helling staat kunnen we berekenen mbv de sinus vergelijking.
De schuine zijde is 127 cm lang
Hoogte 1: rechte zijde = 9.5 cm ; sin a = 9.5/127 --> a = ca. 4 °
Hoogte 2: rechte zijde = 17.5 cm ; sin a = 17.5/127 --> a = ca. 8 ° 
Het resultaat van de experimenten met een helling van 4 ° is in onderstaande grafiek weergegeven.

Het resultaat van de experimenten met een helling van 8 ° is in onderstaande grafiek weergegeven.

Middelen we de resultaten uit en zetten v en a uit tegen de afgelegde afstand dan krijgen we de volgende grafiek.

Bekijken we de afstand die we steeds berekenen met de rotatiesensor en passen we daar een beetje statistiek op toe om standaarddeviatie en betrouwbaarheidsinterval te berekenen  dan kunnen we onderstaande tabel opstellen.

Het lijkt er dus op dat de rotatiesensor niet echt een nauwkeurig instrument is om afstanden mee te bepalen, een fout van 2% zit er al snel in.

Conclusies:

  • Mbv een goed ontworpen traject, een lichtsensor en een Lego Mindstorms RCX kunnen we vrij nauwkeurig snelheid en versnelling bepalen van een voorwerp dat aan een continue versnelling onderworpen wordt.
  • Indien men een rotatiesensor gebruikt om afstanden te berekenen maakt men al snel een fout van 2-3% (95% BI = 1.5 cm)

Literatuur:

  • R. J. Flink;  "Mechanica"; Nijgh & Van Ditmar; 1ste druk; 1992; ISBN 9023606744.
  • Niek de Kort; "Klassieke Mechanica"; Teleac; 1989; ISBN 9065332081.

Relevante websites:

Opmerkingen:

  • De spreadsheet met meetresulaten en de macro is downloadbaar: versnelling.xlsm
  • Ook voor dit experiment geld weer dat men het kan uitvoeren met een goede stopwatch. het gebruik van Lego Mindstorms is niet noodzakelijk, maar maakt het wel leuker.

Achtergrondinformatie:

De verplaatsing van een lichaam (massapunt) door de ruimte en door de tijd kunnen we omschrijven met de formule: x = f (t)
Deze relatie noemen we de bewegingsvergelijking van een massapunt.

De gemiddelde snelheid van een massapunt gedurende een tijdsinterval is de afgelegde weg gedurende dat tijdsinterval gemiddeld per eenheid van tijd.
In formule, met als eenheid dus m/s:

De snelheid van een massapunt bij een willekeurige rechtlijnige beweging op een tijdstip t is de grenswaarde waartoe de gemiddelde snelheid over het interval Dt, volgend op het tijdstip t, nadert als dit tijdsinterval nul nadert.
In formulevorm:

Als we nu van een willekeurige rechtlijnige beweging de snelheid v als functie van de tijd t kennen, bv v = g(t), dan kunnen we de afgelegde afstand x gedurende een tijdsinterval t door integratie oplossen:

 

De gemiddelde versnelling bij een rechtlijnige beweging van een massapunt gedurende een tijdsinterval is de snelheidstoename gedurende dat tijdsinterval gemiddeld per eenheid van tijd.

De versnelling van een massapunt bij een rechtlijnige beweging op een tijdstip t is de grenswaarde waartoe de gemiddelde versnelling over het interval Dt, volgend op het tijdstip t, nadert als dit tijdsinterval tot nul nadert. 
In formulevorm:

Als we nu der versnelling van een rechtlijnige beweging als functie van de tijd kennen (a=h(t)) dan kunnen we de snelheid berekenen:  

Omdat:

Volgt hieruit voor de snelheid v op tijdstip t:

Voor een eenparig veranderlijke rechtlijnige beweging geldt dat a constant is.

Voor de snelheid vinden we dan de vergelijking van een rechte lijn:

Voor de afgelegde weg vinden we dan de vergelijking van een parabool:  

 

Men moet zich goed realiseren dat de bovenstaande vergelijkingen betrekking hebben op het vallen in het luchtledige, als er dus geen luchtweerstand is die een remmende werking uitoefent.

 

12/01/2017