INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Brauche hilfe bei Nachkommastelle Programmierung
19.10.2015, 18:59
Beitrag #1
Brauche hilfe bei Nachkommastelle Programmierung
Hallo Leute,
Ich habe einen Arduino UNO, eine Kraftmessdose KM26z-500N zum Messen von Druck und Zug und den GSV-14 (Analogausgang) von ME Systems.Ich möchte das es das Gewicht als Pfund angibt und bis zu 9 Nachkommastellen hat aber ich weiß nicht wie man es programmiert.Huh Ich habe es bis jetzt nur geschafft den Code so zu bearbeiten das ich das Gewicht in Newton anzuzeigen. Bitte hilft mir ich bin wirklich mit meinen Latein am Ende. Danke schon im vorraus.
Nullsignal: -0,0215 mV/V
Kennwert: 1,0017 mV/V
Sensor Widerstand: 361.97 Ohm
Code:
float Gewicht = 0;
int masse = 0;
float tara;

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

  //Mittelwert von tara
  for (int i = 0; i < 500; i++) {  
    tara = tara + analogRead(A0);
  }

  tara = tara/500;
  Serial.println(tara);
}

void loop() {
  float sensorValue = 0;

  //Mittelwert des   Messwertes
  for (int i = 0; i < 500; i++) {  
    sensorValue = sensorValue + analogRead(A0);
  }

  sensorValue = sensorValue/500;
  Gewicht = ((sensorValue-tara)/0.2173);  
  masse = Gewicht;

  Serial.print("Messwert: ");
  Serial.print(sensorValue);
  Serial.println(" = ");
  Serial.print(masse);
  Serial.println(" gramm ");
  delay(1000);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2015, 19:40 (Dieser Beitrag wurde zuletzt bearbeitet: 19.10.2015 20:04 von HaWe.)
Beitrag #2
RE: Brauche hilfe bei Nachkommastelle Programmierung
da irrt ihr beide.

@Lötzinnerhitzer:

Er rechnet doch

Code:
for (int i = 0; i < 500; i++) {  
    tara = tara + analogRead(A0);
  }
  tara = tara/500; // arithmetisches Mittel

Das gibt schon einen Bruch, und tara ist ja auch eine float-Zahl.
Ganz sauber ist es trotzdem nicht, ganz exakt lautet es per explizitem type-casting
tara = tara + (float)analogRead(A0);
Bei ANSI-C "sollte" es allerdings implizit (wie beir dir) auch gehen - aber weiß man's? Arduino "ist" kein C, Arduino "benutzt C", bei vielen Dingen hat es seine eigenen Regeln.

Allerdings fehlte die Initialisierung
tara=0;
Ansonsten kann da wer weiß was drinstehen.


Und dann gibt Serial aber standardmäßig immer nur 2 Nachkommastellen aus.
Arduino, naja, was soll man sagen, so machen die das halt... Undecided
Willst du mehr, musst du die Ausgabe formatieren.

Allerdings schafft float aber nur 7-8 Stellen überhaupt, willst du mehr, brauchst du 64-bit double.
64-bit double gibt es aber nicht auf Arduino-AVRs, sondern nur auf Arduino-ARM cpus.

mit
Serial.println(tara, 8);

denke ich, holst du das maximale raus.

Denken musst du aber daran:
die wiederholten Messungen können im Schnitt nie genauer sein als der statische Fehler.
Auch wenn du also auf 8 Stellen ausgeben kannst (entspricht Fehler an der letzten Stelle von <1:1000000),
ist dein statischer Messfehler Wurzel aus n,
wobei n deine Stichprobengröße ist (=500).
Wurzel aus 500 ist 22,36
22.36 auf 500 sind 4,47 % .
(Bei 10000 Messungen hättest du einen statistischen Fehler von 100/10000 = 1/100, also 1%.)

Also kann das Ergebnis eh nie genauer sein als 4/100, also 3-4 Stellen hinterm Komma ist sogar schon sehr an der Grenze zur statischen Lüge Wink.



HTH! 8-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2015, 13:39 (Dieser Beitrag wurde zuletzt bearbeitet: 21.10.2015 13:40 von GaLeMa00.)
Beitrag #3
RE: Brauche hilfe bei Nachkommastelle Programmierung
(19.10.2015 19:40)HaWe schrieb:  da irrt ihr beide.

@Lötzinnerhitzer:

Er rechnet doch

Code:
for (int i = 0; i < 500; i++) {  
    tara = tara + analogRead(A0);
  }
  tara = tara/500; // arithmetisches Mittel

Das gibt schon einen Bruch, und tara ist ja auch eine float-Zahl.
Ganz sauber ist es trotzdem nicht, ganz exakt lautet es per explizitem type-casting
tara = tara + (float)analogRead(A0);
Bei ANSI-C "sollte" es allerdings implizit (wie beir dir) auch gehen - aber weiß man's? Arduino "ist" kein C, Arduino "benutzt C", bei vielen Dingen hat es seine eigenen Regeln.

Allerdings fehlte die Initialisierung
tara=0;
Ansonsten kann da wer weiß was drinstehen.


Und dann gibt Serial aber standardmäßig immer nur 2 Nachkommastellen aus.
Arduino, naja, was soll man sagen, so machen die das halt... Undecided
Willst du mehr, musst du die Ausgabe formatieren.

Allerdings schafft float aber nur 7-8 Stellen überhaupt, willst du mehr, brauchst du 64-bit double.
64-bit double gibt es aber nicht auf Arduino-AVRs, sondern nur auf Arduino-ARM cpus.

mit
Serial.println(tara, 8);

denke ich, holst du das maximale raus.

Denken musst du aber daran:
die wiederholten Messungen können im Schnitt nie genauer sein als der statische Fehler.
Auch wenn du also auf 8 Stellen ausgeben kannst (entspricht Fehler an der letzten Stelle von <1:1000000),
ist dein statischer Messfehler Wurzel aus n,
wobei n deine Stichprobengröße ist (=500).
Wurzel aus 500 ist 22,36
22.36 auf 500 sind 4,47 % .
(Bei 10000 Messungen hättest du einen statistischen Fehler von 100/10000 = 1/100, also 1%.)

Also kann das Ergebnis eh nie genauer sein als 4/100, also 3-4 Stellen hinterm Komma ist sogar schon sehr an der Grenze zur statischen Lüge Wink.



HTH! 8-)

Danke für die Antwort aber Serial.println(tara, 8); funktioniert nicht es wird irgendeine zahl angezeigt die sich dann auch nicht mehr ändert wenn sich die belastung ändert. Kann du den Code etwas verändern oder verbessern weeil ich weiß nicht mehr weiter und so gut kann ich nicht programmieren. Den Code habe ich ja aus dem Internet. Danke schon im Vorraus

(19.10.2015 19:27)Lötzinnerhitzer schrieb:  welches "Pfund" meinst Du ?
das alte "deutsche" Pfund = 500 Gramm oder das "Pound" (lb) ?

Edit um Missverständnisse zu vermeiden

Ich möchte Pound (lb) es geht auch mit 8 Stellen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2015, 15:36
Beitrag #4
RE: Brauche hilfe bei Nachkommastelle Programmierung
Welche Spannung ist unbelastet an A0?
Welche Spannung ist an A0 wenn sich die Belastung geändert hat?

"es wird irgendeine zahl angezeigt die sich dann auch nicht mehr ändert"
Welche Zahl wird angezeigt?

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2015, 15:55
Beitrag #5
RE: Brauche hilfe bei Nachkommastelle Programmierung
(21.10.2015 15:36)ardu_arne schrieb:  Welche Spannung ist unbelastet an A0?
Welche Spannung ist an A0 wenn sich die Belastung geändert hat?

"es wird irgendeine zahl angezeigt die sich dann auch nicht mehr ändert"
Welche Zahl wird angezeigt?

Gruß
Arne

Ich kann erst nächste Woche Montag es nachprüfen. Ich werde dann alles ins Forum schreiben und dir eine pn schreiben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Slider Steuerung, Programmierung blueblack 21 612 16.10.2016 22:31
Letzter Beitrag: blueblack
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 119 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 233 09.10.2016 18:39
Letzter Beitrag: Prosac
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 347 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  at24c256 Hilfe Gandalf 6 248 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 285 27.08.2016 18:23
Letzter Beitrag: Binatone
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 449 22.08.2016 08:07
Letzter Beitrag: b3ta
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 180 28.07.2016 16:30
Letzter Beitrag: Gandalf
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 542 06.07.2016 14:59
Letzter Beitrag: Binatone
  Hilfe beim Arduino Shield reimundko 6 455 05.06.2016 11:28
Letzter Beitrag: rpt007

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste