I then took readings at every centimetre from 10cm to 80cm from the sensor and added a trend line.
I think it is important to do this, since the trend line given in my datasheet was distance = 12343.85 * (reading ^ -1.15). My trend line from the graph was distance = 7883.10 * (reading ^ -1.08). I plotted the datasheet equation and my new equation against the actual distance.
It show that the new equation has better agreement than the datasheet equation. I then changed the reference voltage from 5V to 3.3V to make it more accurate. I read this before changing the voltage, so I didn't break anything. I took the data in the same way as before.
This gave a new trend line, distance = 12214.16 * (reading ^ -1.08) and plotted against the actual distance.
I think I will use 3.3V as the reference voltage with the new equation and the 10uF across the sensor power rails. The program I used for the sensor calibration is...
void setup() {
analogReference(EXTERNAL); // Set the ADC reference voltage to external (only use if using 3V, read
// this first)
Serial.begin(115200); // sets the speed of the serial connection to the computer
}
void loop() {
// 10 second countdown to start
for(int i=10;i>0;i--) {
Serial.println(i); // print to the computer when the USB cable is connected
delay(1000); // 1 second delay
}
Serial.println("Taking reading...");
int reading; // used for taking the averages
//take the readings
reading=0; // needs to start at 0 and then 6 readings will be added to it
for(int i=0;i<6;i++) {
reading+=analogRead(0); // read from analog input 0
delay(1); // wait one millisecond
}
reading/=6; // finally average the 6 reading
Serial.println(reading);
Serial.println("Done");
}
Next is to check for timing errors in the sensor sweeps.
EDIT: I have just realised that the Arduino generates 3.3V not 3V, so I have changed all the references to 3V to 3.3V.
interesting blog. It would be great if you can provide more details about it. Thank you
ReplyDeleteHello Calibration,
ReplyDeleteCan you be more specific in what you would like to know, so I can be of more help.
Thanks
Adam