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
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 461 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 836 11.07.2017 21:37
Letzter Beitrag: Customizer
  Brauche einen Sketch zum Testen HDT 12 488 22.06.2017 07:37
Letzter Beitrag: HDT
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 1.310 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 476 10.05.2017 21:04
Letzter Beitrag: MicroBahner
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.000 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Brauche Zeitverzögerung delay/millis/timer? Spiecky 17 845 15.04.2017 09:41
Letzter Beitrag: hotsystems
  Programmierung von PCa9685 Shield im Bezug auf Arduinos Crazydiver 5 273 10.04.2017 12:20
Letzter Beitrag: hotsystems
  Zeitschaltuhr Hilfe für RTC Anfänger 4Jordy 4 360 24.03.2017 15:23
Letzter Beitrag: MicroBahner
  Programmierung Schleife florikus 0 246 03.03.2017 18:46
Letzter Beitrag: florikus

Gehe zu:


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