mikrocontroller.net

Forum: PC-Programmierung Wert sichern von Serial / ADC in Arduino-IDE


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Gerdi68 (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo,

ich brauche mal bitte einen Denkansatz.

In der Arduino-IDE (ich hoffe in der richtigen Rubrik zu sein) erfasse 
ich einen Wert über einen ADC und via Serial.

Der ADC-Wert wird immer ein wenig schwanken, der über Serial bleibt so, 
wie er übertragen wurde (liegt halt in der Natur der Dinge)

Nun möchte ich aber immer den zuletzt geänderten Wert für eine Regelung 
übernehmen.
Entweder stelle ich am Poti etwas ein oder sende einen anderen Wert über 
RXD.

Wie (es muss nicht der Programm-Code sein, die logische Beschreibung 
würde mir reichen) erkenne ich was zuletzt geändert wurde und wie 
verhindere ich das kleine Spannungsschwankungen am ADC als neuer Wert 
gewertet werden?


Danke für eure Hilfe!!!

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Gerdi68 schrieb:
> Wie (es muss nicht der Programm-Code sein, die logische Beschreibung
> würde mir reichen) erkenne ich was zuletzt geändert wurde und wie
> verhindere ich das kleine Spannungsschwankungen am ADC als neuer Wert
> gewertet werden?

Du speicherst den Werte im EEPROM, sofern dein Arduino sowas hat (die 
AVR-basierenden sollten sowas auf jeden Fall haben).
Den Wert kannst du dann auch wieder aus dem EEPROM in dein Programm 
laden.

Autor: Gerdi68 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht habe ich mich ungünstig ausgedrückt.
Zur Laufzeit des Programms soll das passieren.
Den Wert kann ich in einer Variable speichern.
Der Wert darf nach einem Neustart auch 0 sein.

Wie erkenne ich die Änderung?
Und wie wird eine geringe Schwankung am ADC ignoriert?

Wenn das Poti am ADC 100 erzeugt soll die Regelung mit 100 erfolgen. 
Wenn über Serial 200 empfangen wird dann soll die Regelung mit 200 
erfolgen. Wenn wieder am Poti gedreht wird dann mit diesem Wert.
Wenn die Versorgungsspannung schwankt oder die Bahn des Potis etwas 
dreckig ist und sich dadurch der ADC Wert ändert soll weiterhin mit dem 
letzten Wert geregelt werden.

Autor: Stromspardose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerdi68 schrieb:
> Wie erkenne ich die Änderung?
> Und wie wird eine geringe Schwankung am ADC ignoriert?

Alten Wert merken, mit Neuem vergleichen, nur bei (relevant großer) 
Änderung reagieren:


...

void loop() {
  static float alter_messwert;
...

  float neuer_messwert=messe_und_berechne_irgendwas_vom_ADC();

  if (fabs(alter_messwert - neuer_messwert) > 0.123) {
     sende_messewert_sonswohin(neuer_messwert);
     mache_regelungs_sachen_und_mehr(neuer_messwert);
      ...
     alter_messwert = neuer_messwert; // merken
  }
...

}

...

Autor: PittyJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach zu jedem Wert auch einen Zeitstempel abspeichern. Dann kann man 
prüfen, welches der neueste Wert ist.

Autor: Gerdi68 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!!!

Ich glaube das habe ich verstanden ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.