SCA100T Dual Axis Inclinometer Winkel in Gradzahlen

Hallo,
ich habe einen SCA100T mit dem Arduino UNO verbunden. Wenn man ihn entsprechend neigt, bekomme ich das auch im Seriellen Monitor angezeit, allerdings nur als Zahlen von 0 bis 1023. Ich möchtejedoch direkt den Winkel in Gradzahlen ausgegeben bekommen. Was muss ich dafür im Code ändern? Die Spanne liegt bei -30° bis +30°.
Die y-Achse des Sensors ist an A3 angeschlossen, von ihr möchte ich die genauen Winkel wissen.
Hier mein Code:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A3); 
  Serial.print(sensorValue);
  delay(1000);        // delay in between reads for stability
}

http://arduino.cc/en/Reference/Map

map(val, 0, 1023, -30, 30);

Meine Recherche brachte diese Website hervor: http://www.muratamems.fi/en/products/inclinometers/sca100t-inclinometers
Dot findet man auch den Link zum Datenblatt, wo unter Punkt 2.2 die Umrechnung auf den Winkel anhand einer Formel gezeigt wird.
RTFD --> Read the f***ing datasheet! :wink:

Ahub:
Zahlen von 0 bis 1023. Ich möchtejedoch direkt den Winkel in Gradzahlen ausgegeben bekommen. Was muss ich dafür im Code ändern? Die Spanne liegt bei -30° bis +30°.

Hm. Kommt "Dreisatz" heute in der Schule eigentlich noch als Thema dran?

Dein Sensor liefert die Zahl 0 als Messwert bei -30° Winkel und er liefert 1023 bei einem Winkel von 30°.

Also:

  Serial.println(-30+60/1023.0*sensorValue);

Wohl eher

Serial.println((+60/1023.0)*sensorValue);

Grüße Uwe

Dein Sensor liefert die Zahl 0 als Messwert bei -30° Winkel und er liefert 1023 bei einem Winkel von 30°.

Must dann aber noch 30 subtrahieren.

Einfache lineare Funktion der Form:
y=mx +b

Eingesetzt:
-30=0m +b
30=1023m + b

30=1023m -30 |+30
1023m= 60 | :1023
m= 60/1023

Y=(60/1023)*x -30

hi,

ich würde vorher X mit 60 multiplizieren und dann erst durch 1023 dividieren. wird wahrscheinlich genauer sein. und spart man sich damit nicht auch die einbindung der gleitkomma-funktionen (sketchgröße!)?

gruß stefan

Hallo,
ich wage mich hier einmal auf dünnes Eis.
Es wird ein Wert von -30 Grad bis +30 Grad geliefert.
Das ist ein Weg von 60 Grad.
Dafür hat er eine Auflösung von 1023(1024)
Wenn ich jetzt die 60 Grad durch 1023 teile, komme ich auf 0,059.
Was soll den diese "0,059" sein. Die Zahl hat doch nichts mit Grad zu tun.
Das andere, ihr rechnet hier doch "lineal".
Aus dem Ding kommt aber alles mögliche raus- nur nichts lineares.
Oder spielt das alles keine Rolle.
Gruß und Spaß
Andreas

SkobyMobil:
Das andere, ihr rechnet hier doch "lineal".

Nein, sie rechnen linear. :smiley: Daher mein Hinweis zum Datenblatt, wo es heißt:

alpha = arcsin ((Vout-Offset)/Sensitivity)

Für kleine alpha gilt ja auch alpha=arcsin(alpha), was auch ganz schön im ausgeführt wird. Zählen die 30° als maximale Auslenkung noch als klein, ist da die spannende Frage. Hierzu gibt auch das Datenblatt eine Antwort: Rechnen man linear, ergibt sich hier eine Winkelabweichung von ca. 1,67°. Das ist meines Erachtens vertretbar, bei 15° liegt die Abweichung bei nur 0,2°.

hi,

andererseits, wenn er schon einen IC um 70 euro kauft, braucht er's wohl genau...

gruß stefan

Natürlich habt ihr Recht, habe keinen Blick in das f***ing datasheet geworfen.

Mir ging es um die Umsetzung der linearen Funktion die durch die Punkte -30/0 30/1023. definiert ist.
Und dies war von jurs und von uwe nicht ganz richtig, bei solchen Leuten ist das aber eher auf einen Flüchtigkeitsfehler zurückzuführen.
Oder die Aufgabe zu einfach :stuck_out_tongue:

hi,

könnte auch sein, daß sie doch schon alt werden, und ein bisserl nachlassen...

gruß stefan

Vielen Dank an alle!