fredag den 18. september 2009

P. Hejles

Til stede: Pepe og rfogh

Formål
Formålet med dagens øvelser er at undersøge mikrofonen/lydsensoren.

Forløb
Mikrofonen blev bygget på modellen fra 9797 som beskrevet i instruktionen.





Derefter lavede vi SoundSensorTest.java, som er en klasse der sampler lydsensoren 100 gange og udskriver middelværdien til LCD'en. pepe stod for kodningen, mens rfogh guidede ham rundt i Javas library og underholdte om kodestandarder og lignende.
Vi undersøgte (og her) også forskellen på dB og dBA og konstaterede, at forskellen var ligegyldig i vores eksperimenter. Vi målte derfor alle tal i dB.
Endelig blev DataLogger tilføjet, så SoundSensorTest gjorde brug af den, men nu blev hver sample noteret.


import java.util.*;
import lejos.nxt.*;
/**
* A simple sound sensor test program.
*
* The sensor should be connected to port 4. *
* @author pepe and rfogh 
* @version 0.Alpha
*/
public class SoundSensorTest
{
private final static int samples= 100;

public static void main(String [] args) throws Exception
{
ArrayList lydSamples = new ArrayList(samples);
SoundSensor ss = new SoundSensor(SensorPort.S4);
DataLogger dl = new DataLogger("data.log");

float sum,maxSum = 0;
long nu, sidst,freq;


LCD.drawString("Wait... ",0,0);
Thread.sleep(500);
LCD.drawString("GO!!!1!!",0,0);
sidst = System.currentTimeMillis()-1;


while (! Button.ESCAPE.isPressed())
{

if( lydSamples.size() <>
{
lydSamples.add(ss.readValue());
dl.writeSample(lydSamples.get(lydSamples.size()-1));
}
else
{
sum = 0;
for ( int i : lydSamples )
{
sum += i;
}
sum = sum / samples;
if (sum > maxSum)
{
maxSum = sum;
}
lydSamples.clear();
nu = System.currentTimeMillis();
freq = (nu - sidst);
sidst = nu;
LCD.drawString("Reading ",0,0);
LCD.drawInt((int)sum, 8, 0);
LCD.drawString("Max Reading ", 0 , 3);
LCD.drawInt((int)maxSum,12,3);
LCD.drawString("Samples freq(Hz):",0,5);
LCD.drawInt((int)freq,0,6);
}
}
dl.close();
LCD.clear();
LCD.drawString("Program stopped", 0, 0);
Thread.sleep(2000);
}
}

Forsøg
Som nævnt blev DataLogger koblet på vores lydsamplinger.
Data blev samplet så hurtigt som muligt, hvilket i praksis vil sige en sampling pr. 1 millisekunder.

Første forsøg var en blanding af klap og råben og resultatet er vist i følgende graf:
Andet forsøg viser pepe, der forsøger at lære NXT'en at udtale "Interesseorganisation". Trykforskellene i ordet kan tydeligt genkendes på grafen, selvom mikrofonen nok er lidt langsom til at falde til ro - det betyder, at større spikes er lidt langsomme til at falde til ro.
Den første lyd man kan se på grafen, er efterklangen af det bip NXT giver, når et program bliver uploadet og startet.

Det tredje forsøg er pepe, der klapper i variende afstande fra mikrofonen.
Inden forsøget blev udført modificerede vi softwaren, så vi nu venter 500ms inden vi starter målingerne. På den måde undgår vi efterklangen af NXT'ens bip.
Der blev klappet i en tilnærmet parabel, hvor 1. og 5. klap var længst væk og tredie klap var nærmest. Det kan på den måde undre, at 3. klap, som er nærmest, også er den andensvageste peak. Klappene varierede dog i styrke, hvilket må være forklaringen. Alligevel kan det undre, at forskellen mellem klap 3, der foregik mindre end 10cm fra mikrofonen, og klap 5, der foregik omkring en meter fra mikrofonen, er så stor.

Fjerde forsøg viser lyd fra en laptop, der afspiller en sang.
Grafen viser at mikrofonen også kan være mere fintfølende. Bemærk, at værdierne ligger mellem 0 og 35. Alligevel registreres mindre ændringer fint.


Forløsning
Mikrofonen er en god lydmåler, men begrænses af at den maksimalt kan aflæse 90 dB. I mange af vores målinger blev dette maksimum nået.
Mikrofonen måler i %, og giver altid et positivt resultat (registrerer ikke svingninger, hvad lyd jo ellers er), hvilket gør at man ikke kan anvende gængse lydbehandlingsalgoritmer. Man kan ligeledes heller ikke optage lyd og afspille det med NXT'ens højttaler.
Mikrofonens data vil således ikke kunne bruges til at lave fx. talegenkendelse osv., men kan kun kende forskel på lange, korte, høje og lave lyde.

Ingen kommentarer:

Send en kommentar