Log in

View Full Version : Signal Noise


Golto
31-01-2010, 23:43
I don't know how useful this info will be, but I was able to graph out signal noise across a couple KOP sensors.

The hardware was tested on an Arduino Diecimilia, Analog port 0, the code will be posted later. I also used a program called Gobeteeno to assist in logging the data. Then in Excel I manipulated the data and generated a graph. The data was taken over 100 samples 1/10 of a second apart.

The sensors tested were the 2009 KOP 3-axis Accelerometer and the 2010 KOP Gyro, rate and temp. The graphs are attached as a .zip, inside are the PDFs generated.

INSTRUCTIONS:

Download Betweeno from http://mikmo.dk/gobetwino.html
Consulting documentation, add a process for EXCEL in Gobetwino
program the arduino with the following code
start gobetwino
press reset on the Arduino
watch as the data populates!


/*****************************
* ANALOG SENSOR NOISE TEST *
* 2010 Patrick Plude *
*****************************/

// some setup variables
int serInLen = 25;
char serInString[25];
int pId =0;
int result;

void setup()
{
Serial.begin(9600);
Serial.println("#S|EXCEL|[]#"); // start EXCEL
readSerialString(serInString, 5000); // wait 5 seconds (max) for answer from Gobetwino (=porcess ID)
pId= atoi(serInString); // convert result to integer
sendAnalogValues(); // send some data to Excell
}

void loop()
{
// no code here, all carried out in subroutines!
}

void sendAnalogValues()
{
char buffer[5];
int sensorValue;

for (int i=1; i<=100; i++){
//Read the sensor values
sensorValue=analogRead(0);

//Send the values as though it was typed into Excell, using the SENDK command
// This is the total line that is send: #S,SENDK,[pId; sensorValue {TAB} potValue2 {DOWN} {LEFT} ]#
Serial.print("#S|SENDK|[");
Serial.print(itoa((pId), buffer, 10));
Serial.print("&");
Serial.print(itoa((sensorValue), buffer, 10));
Serial.print(" {ENTER} ");
Serial.println("]#");
// wait up to 1000 ms for answer from Gobetwino, answer will be in serInString, answer is 0 if all is OK
readSerialString(serInString, 1000);
//Deal with answer here - omitted in this example
delay(10);
}
}

//read a string from the serial and store it in an array
//you must supply the array variable - will return if timeOut ms passes before the sting is read so you should
//check the contents of the char array before making any assumptions.
void readSerialString (char *strArray,long timeOut)
{
long startTime=millis();
int i;

while (!Serial.available()) {
if (millis()-startTime >= timeOut) {
return;
}
}
while (Serial.available() && i < serInLen) {
strArray[i] = Serial.read();
i++;
}
}


Enjoy! Any questions, send me a PM