Den giver 100(102 ifølge mine beregninger ;)) fordi der er 0,5 volt på indgangen, hvilket ifølge specifikationerne betyder ingen tryk ;D. Du skal dog bruge lidt ekstra kode til at konventer fra int fra analogRead() til bar. Jeg skrev lidt kode, som du muligvis kan bruge til dette. Jeg ændrede også så den læser fra alle 6 analoge porte, hvilket du skrev du gerne ville.
/*
SD card datalogger - Ændret til at passe med tryksensor
This example shows how to log data from three analog sensors
to an SD card using the SD library.
The circuit:
* analog sensors on analog ins 0, 1, and 2
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
*/
#include <SPI.h>
#include <SD.h>
const int chipSelect = 4;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
void loop() {
// make a string for assembling the data to log:
String dataString = "";
// Læser data fra analog 0 til 5
for (int analogPin = 0; analogPin < 7; analogPin++) {
int sensor = analogRead(analogPin);//Her kommer dataende fra sensoren
// På Ebay siden står det OUTPUTTET fra sensoren er fra 0.5 til 4.5 volt, mens tryk intervallet er
// 0 til 1.2Mpa. 1 Mpa er 10 bar, hvorved 1.2 Mpa må være 12 bar. 0.5Volt er så 0bar, mens 4.5 Volt
// må være 12 bar. analogRead() giver integer på 0 ved 0 volt. Den giver tilgængæld en int på 1023,
// hvis der er 5 volt.
// Hvad giver analogRead(), så når der er 0.5 volt. Lad os regne os frem til dette.
// 1023/5(volt maks)*0.5(volt givet) = 102
// Denne er værdi er altså den samme som den du logger, når de ikke laver over undertruk på sensoren.
// Det giver altså ganske god mening de resultetater du har fået. Lad os bare trække denne værdi fra inddata
sensor = sensor - 102;
// Nu er dataende centerede om nul. Nu mangler de bare at blive konverterede til bar.
// Hvad data må variablen "sensor" give når der er 12bar?
// Der vil altså være 4.5 volt. Nu ønskes det at finde den værdi som analogRead() giver
// 1023/5(volt maks)*4.5(volt givet) = 920.7
// Der skal dog lige trækkes 102 fra dette
// Følgende kan nu opstilles: 818.7 * x(ukendt) = 12(bar)
// Så byttes der lige lidt rundt, og løsningen findes
// 12/818.7 = 0,014657384
//Denne værdi kan nu bruges til at omregne til bar
double bar = sensor * 0.014657384;
dataString += String(bar);
if (analogPin < 6) {
dataString += ",";
}
}
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println("Skrevet til log: \""+dataString+"\"");
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}