✓ Speciaal voor VO, Technasium & Bèta-onderwijs ✓ Scholen bestellen op rekening (achteraf betalen)
Direct contact: info@funmetelectronica.nl | Tel: 06-53111122
Arduino Gevorderd › Datalogging via Serial

Datalogging via Serial

Arduino Gevorderd

Introductie

Het eerste wat we gaan doen is de Seriële poort gebruiken om data op te slaan. Dit hebben we al eerder gedaan in de Basis Training. De code van les 5 wordt gebruikt:
int analogIn = A0;  // Analoge input van de potmeter
int potmeter = 0;   // waarde te meten van A0 noemen we potmeter

void setup() {
  // initialize serial communications at 9600 bps:
  // maak een seriele communicatie op 9600 bps:
  Serial.begin(9600); 
}

void loop() {
  // lees de analoge waarde:
  potmeter = analogRead(analogIn);            
  Serial.print("potmeterwaarde = " );                       
  Serial.println(potmeter);      
  delay(50);                     
}
Nog even een kleine verheldering van de code: Met de potmeter kunnen we de variabele spanning laten variëren op de analoge pin A0. De waarde die we meten noemen we ‘potmeter’, ‘potmeter’ is een variabele. In de setup geven we Arduino de opdracht om een seriële communicatie op te starten (baud rate 9600 bps). In de loop geven we Arduino de opdracht om A0 te lezen en geven we de opdracht om de gevonden waarde weer te geven op de seriële monitor. De seriële monitor moet wel op dezelfde boud rate worden ingesteld. Standaard is 9600 bps. Serial.print is het commando om data te verzenden, we lezen deze data af in de seriële monitor. Deze waarde van de analoge pin varieert van 0 – 1023.  0 = 0 Volt, 1023 = 5V.

Les 1: Spanningswaarde printen

In plaats van de byte waarde te printen van de analoge pin willen we soms liever een andere waarde printen. In dit geval de spanning. Hiervoor moeten we simpelweg een nieuwe variabele maken voor het overzicht en de pinwaarde omrekenen naar spanning. Deze om rekensom kan gezien worden als:
v_pot = v_pot * (5.0 / 1023.0);
De code zou er nu zo uit moeten zien:
int analogIn = A0;
int v_pot = 0;

void setup() {
  Serial.begin(9600); 
}

void loop() {
  v_pot = analogRead(analogIn);
  v_pot = v_pot * (5.0 / 1023.0);              
  Serial.print("Spanning = " );                       
  Serial.println(v_pot);      
  delay(50);                     
}
Vraag: Wat merk je nu op aan de output? Gaat er iets fout? Ga pas verder met de les op het moment als je een antwoord hebt.

Les 2: De variabele type

Wat we zouden moeten zien van de vorige code, is dat we alleen een héél getal krijgen in plaats van een getal met een paar decimalen. De waardes die in de seriële monitor getoond worden zijn uitsluitend hele getallen. Dat komt omdat onze variabele van het type integer is. (int v_pot = 0;).  Een variabele van het type float geeft wel een getal met decimalen. Verander  int in  float, zie de code hieronder.
int analogIn = A0;
float v_pot = 0;

void setup() {
  Serial.begin(9600); 
}

void loop() {
  v_pot = analogRead(analogIn);
  v_pot = v_pot * (5.0 / 1023.0);              
  Serial.print("Spanning = " );                       
  Serial.println(v_pot);      
  delay(50);                     
}
Krijg je nu wel goede waardes? Goed! Dit was een kleine opwarm les om weer comfortabel met de code en het bordje te worden. Vanaf nu gaan we nieuwe dingen leren!

Gegevens uit de Seriele Monitor gebruiken

Het is mooi dat we waardes in de seriële monitor kunnen aflezen, het zou mooier zijn als we deze gegevens kunnen gebruiken in bijvoorbeeld Excel. Vanuit de seriële monitor: Als je een meting doet en de meting laat je weergeven in de seriële monitor, dan kun je de meting simpel beëindigen door de USB kabel te verwijderen. Selecteer de gewenste gegevens en plak deze in een kladblok-bestand. Dit kladblok-bestand kun je later in Excel importeren. Dit kan vaak onhandig zijn als er gewerkt wordt met een loop die enorm snel vernieuwd. Plus het kopieren plakken voelt onhandig. Hiervoor gebruiken we dan een Capture Programma. Er zijn verschillende soorten Seriele capture programma's, wij gebruiken graag Serial Debug Assistance. Helaas is dit programma alleen beschikbaar voor Windows 10. Voor andere programma's kunt u naar de Ondersteuning op onze website.

Serial Debug Assistance

Met een programma als Serial Debug Assistant kan je ook data ‘vangen’. Serial Debug Assistant is te installeren via de Windows Store. Zorg dat de Arduino is aangesloten op de computer en weet met welke com-poort de Arduino is verbonden. Klik op ‘Open serial port’ en  Serial Debug Assistant gedraagt zich als de seriële poort. Let op: De seriële poort van Arduino zelf niet gebruiken! Deze gegevens kunnen we nu in een tekstbestand gaan ‘vangen’. Kies voor ‘Receive and save to file’ in de ‘Receiving settings’. Hieronder een foto van het gebruikte programma.

Les 3: Opslaan van data

Probeer eens de data van de vorige lessen met een capture programma op te slaan tot een CSV of TXT bestand. We willen minimaal 20 waardes.

Les 4: Importeren in Excel

Deze bestanden kan je goed importeren in Excel. Open Excel, kies voor ‘lege werkmap’. Je kan nu de gegevens uit het tekstbestand importeren. Kies boven voor ‘gegevens’ en links voor ‘uit tekst/CSV’. Hierna volg je de wizard en als het goed is zou de data mooi in een kolom staan. Het is ook mogelijk om de data in meerdere rijen en kolommen op te slaan, dit kan je doen door speciale leestekens zoals ';' en ','. Voor meer info hierover, kan de Excel documenten bekeken worden op de website van Microsoft. Opdracht: Importeer het bestand van les 3 en maak een grafiek.