14. Een nauwkeurige en precieze bepaling van g#
14.1. Doel#
14.1.1. Practicumdoel#
In dit practicum mag je uit twee verschillende manieren kiezen om het vierde significante cijfer van de zwaartekrachtsversnelling \(g\) te bepalen, en dat binnen een foutmarge van \(0.5\%\) van de gebruikte waarde in Delft.
14.1.2. Leerdoel#
Na het uitvoeren van dit practicum:
Kun je gemaakte aannames aanwijzen en deze valideren.
Kun je bewuste keuzes maken in de methode wat betreft het verkleinen van de meetonzekerheid.
Kun je een strijdigheidsanalyse uitvoeren.
14.2. Inleiding#
De zwaartekracht zorgt er voor dat je terug naar de grond versnelt wanneer je omhoog springt. De grootte van de zwaartekrachtsversnelling \(g\) is wel bekend en in Delft 9.812… m/s\(^2\). Maar hoe goed kunnen we die waarde bepalen met eenvoudige middelen?
14.3. Voorbereiding#
Installeer de gratis Arduino software op je laptop, kies of vrije val of de slinger en download de bijbehorende code (zie link).
Download het bijbehorende labjournaal. Doe voor je gekozen experimenten een testrun waarbij je gebruikt maakt van de stopwatch op je telefoon.
Voer de slingerproef uit met een slingerlengte van 1,0 m, of de valproef met een valhoogte van 1,0m. Meet vijfmaal.
Bepaal de gemiddelde periode/valtijd, de standaarddeviatie en de meetonzekerheid voor de periode/valtijd die volgt uit dit experiment.
Doe de vorige twee opdrachten nogmaals maar nu voor 10 periodes/valtijden.
Hoe reduceert de meetonzekerheid door 10 periodes/valtijd te bepalen?
Is de verkregen meetonzekerheid in de tijd voldoende om \(g\) te bepalen met een foutenmarge van 0.5%?
Maak nu gebruik van de opstelling om de een gevoel te krijgen voor de spreiding in de metingen. Vergelijk de bepaalde waarden met jouw eerder gevonden waarden. Zie hier voor meer info over de Arduino.
De theorie is te kort door de bocht en dient verder uitgewerkt te worden. Identificeer wat er ontbreekt en wat daaraan toegevoegd moet worden.
Maak een meetplan voor een van de twee experimenten, gebruik daarvoor het labjournaal. Onderbouw elke keuze die je maakt, beschrijf de aannames die je doet en valideer deze waar nodig. Voer extra testen uit indien nodig.
Laat je meetplan controleren door de assistent.
Maak de bijbehorende verwerking voor Python. Bedenk goed hoe je je data gaat analyseren.
14.3.1. Uitvoering#
Voer het bedachte en goedgekeurde meetplan uit.
14.3.2. Verwerking#
Verwerk je gegevens volgens het vooropgezette plan. Voer een strijdigheidsanalyse uit.
14.4. Iets over Arduino#
De Arduino wordt gebruikt om de sensoren uit te lezen, en de tijd tussen twee metingen te sturen naar de computer. Om contact te maken met de Arduino moet je het bestand uploaden naar de Arduino, kiest eerst via het menu tools / port de USB-poort waar de Arduino zit, zie Figuur 14.1.

Fig. 14.1 De stappen om de juiste COM-poort te kiezen.#
Klik vervolgens om de code naar de Arduino te sturen. Via de seriële monitor kun je de gemeten tijden verkrijgen.
Warning
Let op! De BAUD rate staat op 9600, die moet ook op 9600 staan in de seriële monitor.
We breken hieronder de code op in delen om duidelijk te maken hoe deze werkt.
In de programmeertaal C\(^{++}\) moet je aangeven van welk type je variabelen zijn. We maken dan voor het eigenlijke programma de variabelen aan. In de setup()
geven we aan welk van die variabelen pinnen zijn op de Arduino. Met Serial.begin
geven we aan dat we met de Arduino willen “praten”.
int value = 0;
unsigned long time1; //start time
unsigned long time2; //end time
int i = 0; //counter
int last; //
int detectiepin2 = 8;
int poweroutput1 = 7;
//int poweroutput2 = 6;
int detectiepin1 = 2;
void setup() {
pinMode(poweroutput1, OUTPUT);
digitalWrite(poweroutput1,HIGH);
// pinMode(poweroutput2, OUTPUT);
// digitalWrite(poweroutput2,HIGH);
pinMode(detectiepin1,INPUT); //pin 8 is used for the detection
digitalWrite(detectiepin1,HIGH); //an internal resistor is used
pinMode(detectiepin2,INPUT); //pin 8 is used for the detection
digitalWrite(detectiepin2,HIGH); //an internal resistor is used
Serial.begin(9600); //talking with the arduino using the serial monitor
}
In de onderstaande code vertellen we dat de Arduino niets hoeft te doen totdat de eerste detectiepin wordt getriggerd. Als dat zo is, wordt de tijd time1
geregistreerd. Daarna wordt er gekeken naar de tweede detectiepin, als die wordt getriggerd wordt de tijd time2
geregistreerd en het tijdsinterval teruggegeven Serial.println(time2-time1);
.
void loop() {
while(digitalRead(detectiepin2) == 1){}
//Serial.println("check");
time1 = micros();
while(digitalRead(detectiepin1) == 1){}
time2 = micros();
//Serial.println("check2");
Serial.println(time2-time1);
delay(50);
}