Microbit – Logning af sensordata til brug i matematik og fysik

Formål:
At give indsigt i, hvordan man kobler flere typer sensorer til MicroBit-platformen og skriver programmer til MicroBit’en, der gør det muligt at aflæse sensorværdier fra den fysiske verden med faste intervaller på en PC og logge disse til en fil. Filen kan importeres i et Google Sheets dokument for videre databehandling og visualisering.

Om Teknologien:
MicroBit er en microcontroller-platform med flere indbyggede sensorer og aktuatorer.

Microcontrolleren:
En microcontroller er en hel computer i en chip eller IC (Integrated Circuit), som det også kaldes. Den er på mange måder sammenlignelig med den bærbare computer, du måske sidder med foran dig lige nu, men den fylder altså ikke mere end nogle få kvadratmillimeter på et printkort som vist på ovenstående figur af MicroBit og de komponenter, der sidder på den. Her er microcontrolleren benævnt “32-bit ARM Cortex-M0 CPU”, som altså er en bestemt type microcontroller.

Det, at en microcontroller er en hel computer, betyder at den både har en processor, som kan programmeres, noget hukommelse som kan bruges til at afvikle programmerne i og en disk, hvor programmerne kan gemmes. Derudover har den en masse forskellige muligheder for at snakke med andre komponenter som f.eks. det kompas, accelerometer, lysdioder eller knapper, der også sidder på MicroBit’en. Den har også mulighed for at snakke med din bærbare gennem Bluetooth eller USB-kablet eller med nogle ting, som du selv bygger ved siden af, som f.eks. lyssensoren, som vi skal arbejde med senere. Til dette formål har mikrocontrolleren nogle porte, som man kan programmere til forskellige typer af kommunikation – enten digital (input/output) eller analog (input/output). På ovenstående figur er de porte tilgængelige gennem det der kaldes “20 Pin Edge Connectors”. Der kommer mere information om input/output og digital/analog herunder.

Microcontrolleren kan også arbejde med tid, fordi den har noget, der hedder en clock, der bl.a. bestemmer, hvor hurtigt den udfører sine programmer. Clock’ens hastighed er som regel bestemt af et krystal der svinger med en bestemt hastighed (frekvens). Sådan et krystal sidder der også i langt de fleste ure til at sørge for at tiden går rigtigt, så et sekund er et sekund – med ret høj præcision. Da denne hastighed er meget præcis kan man altså også bruge clock-signalet til f.eks. at indsætte pauser i ens program. Det skal vi også bruge senere.

Derudover skal en mikrocontroller, ligesom alle andre elektriske og elektroniske ting have strøm, eller rettere spænding. Det får den via din computer, når den er koblet til med USB-kablet. Den kan dog også forsynes med spænding fra et batteri. Gennem computerens USB-port forsynes MicroBit’en med en spænding på 5V. Microcontrolleren bruger kun 3,3V, så der sidder også en spændningsregulator på MicroBit’en, der sørger for at lave de 5V om til 3,3V.

Output og Input:
Når man snakker om microcontrollere er det meget vigtigt at kende forskel på input og output. Det er det fordi den næsten altid skal fortælles, om den skal tale eller lytte til de komponenter den snakker med. Når MicroBit’ens microcontroller snakker med computeren er kommunikationen begge veje. Det vil sige at microcontrolleren både sender og modtager data til og fra computeren. Der er altså tale om både output af data fra mikrocontrolleren til computeren og input af data fra computeren til microcontrolleren. Når det er microcontrolleren du programmerer, skal du altid kigge på det data der modtages udefra som input og det data du sender som output. Mikrocontrolleren kan også nøjes med at snakke den ene vej, hvilket den ofte gør med dens digitale porte, og der skal man altså så fortælle microcontrolleren i programmet om den skal modtage input eller sende output via en bestemt port.

Digital og Analog:
En microcontroller arbejder både med digitale signaler og analoge signaler.

Et digitalt signal kan enten være højt eller lavt. Inde i mikrocontrolleren er høj lige med microcontrollerens forsyningsspænding – altså 3,3V for MicroBit’en, og lav er lige med 0V – altså ingen spænding. Øverste del af nedenstående figur viser et eksempel på, hvordan et digitalt output fra en microcontroller kunne se ud. Signalet ændrer sig mellem at være enten højt eller lavt mens tiden går.

Et analogt signal kan til forskel fra et digitalt signal bevæge sig i hele spændingsområdet mellem 0V og microcontrollerens forsyningsspænding – altså stadig 3,3V for MicroBit’en. Det betyder at spændingen også kan være f.eks. 2,5V eller 1,2V eller 3,0V o.s.v.

Langt de fleste microcontrollere inklusiv MicroBit’ens microcontroller kan ikke lave analogt output – altså – de kan ikke styre spændingen på et output, så det ændrer sig. De kan kun output’e enten 0V eller 3,3V – altså digitale signaler. Der findes dog noget, der hedder PWM (pulsbreddemodulation), som man kan bruge til at simulere en analog spænding med digitale signaler. Det skal du dog ikke bruge her, så det må du høre om på et andet tidspunkt – eller selv læse om her: https://da.wikipedia.org/wiki/Pulsbreddemodulation.

Derimod har langt de fleste microcontrollere noget, der hedder en A/D converter. En A/D converter kan omsætte analoge spændinger til et tal. A/D converteren er koblet til nogle af microcontrollerens porte, så man kan bruge dem til analogt input og altså få omsat den spænding der læses på porten lige nu til et tal. En A/D Converter har altid en bestemt opløsning, som bestemmer hvad tallet omsættes til. I MicroBit’ens microcontroller er det 10 bit hvilket vil sige at de tal den omsætter til kommer til at være mellem 0 og 1023 – Du kan selv regne efter (2 ganget med sig selv 10 gange eller 2^10 = 1024). Da 0 tælles med går vi kun op til 1023 som den maksimale værdi.

Når du så laver en A/D-konvertering med f.eks. MicroBit-kommandoen analogRead vil den altså omsætte en spændning mellem 0V og 3,3V til et tal mellem 0 og 1023. D.v.s hvis spændningen er 2,5V vil den omsætte det til en talværdi på 775 ((2,5V / 3,3V) * 1023).

Hvad vil microcontrollerens A/D converter omsætte 1,2V og 0,3V til?

Sensorer:
Sensorer er alt hvad der kan måle på vores fysiske verden (omgivelserne) og give de målinger som analogt eller digitalt input til vores microcontroller.

Man kunne f.eks. måle:

  • Lyd
  • Lys
  • Temperatur
  • Afstand
  • Tryk
  • Fugtighed
  • Bevægelse
  • o.s.v.

Forskellige sensorer har forskellige måder at omsætte det de måler i de fysiske omg

ivelser til noget, der kan aflæses digitalt eller analogt af en mikrocontroller. Den type sensorer vi arbejder med her giver en spænding tilbage til mikrocontrolleren – enten alene, eller ved at sætte dem i et kredsløb med andre komponenter.

Aktuatorer:
Aktuatorer er komponenter, der fra microcontrolleren kan styres til at påvirke vores fysiske omgivelser.
Man kunne f.eks. påvirke med:

  • Lyd
  • Lys
  • Temperatur
  • Bevægelse
  • Tryk
  • Duft
  • O.s.v

Aflæsning og logning af en LDR-sensor med Microbit og Chrome:
Først åbner du MicroBit kassen og finder følgende komponenter: