- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: Arduino Eingänge sehr empfindlich?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    Zitat Zitat von fredyxx
    Zitat von HaWe
    in meinen eigenen Programmen jage ich sämtliche Inputwerte (analog + digital) aber auch fast immer durch Filter (Lowpass oder gleitender Median von 3), um auch weitere (!) Störeffekte im laufenden Betrieb durch Prellen von Kontakten oder schwankende ADC Werte zu ent-rauschen und zu glätten
    Trotzdem würde mich interessieren, wie das konkret aussieht.
    am einfachsten geht es mit dem Lowpassfilter; der merkt sich eine Art gleitenden Durchschnitt:

    du fragst in einer schnellen Schleife (z.B. alle 1-10ms) den Wert eines Ausgangs ab, z.B.

    Code:
     void loop() {
       float oldvar, fvar;
       int pinvar, pinNr;
    
       oldvar = fvar;
       pinvar = digitalRead (pinNr);
       fvar = 0.4*pinvar + 0.6*oldvar;
       pinvar = round(fvar);
       delay(5);
       //...
    }

    wenn z.B. bisher "0" anlag (also oldvar=0) und jetzt 1x "1" gemessen wurde, ergibt sich
    0.4*1 + 0 = 0.4
    round(0.4) = 0

    bleibt es ein einmaliger Ausreißer, wird der Wert also verschluckt, es bleibt bei 0.

    Kommt jetzt in der nächsten Abfragerunde aber nochmal eine "1" dazu, ergibt sich
    0.4*1 + 0.6*0.4 = 0.4 +0.24 = 0.64
    round(0.64) = 1

    wenn also erneut eine "1" anliegt, also quasi nach 2 Durchläufen "dauerhaft", dann kommt jetzt eine 1 heraus.

    Die Summe aus beiden Faktoren soll immer 1 betragen, also
    0.4 & 0.6
    oder 0.2 & 0.8
    oder 0.3 & 0.7
    oder 0.5 & 0.5 (entspricht arithmetischem Mittel)
    oder für analoge Werte auch z.B. 0.9 & 0.1 oder 0.1 & 0.9


    allgemein:

    Durchschnitt = a*aktuell + (1-a)*Durchschnitt, 0<a<1

    durch "Spielen" mit den Koeffizienten und testen kannst du den Filter für deine Anwendung darauf optimieren und Störungs-empfindlicher und schneller reagierend (größere a) oder Störungs-unempfindlicher und träger machen (kleinere a).

    Da du sowieso in den loops ein paar ms delays brauchst, fällt das bisschen float-Arithmetik auch absolut nicht ins Gewicht. Falls doch: per Integer mit 100 multiplizieren und das Ergebnis später wieder durch 100 teilen, ist aber nicht nötig bei dem bisschen Rechnerei.
    Geändert von HaWe (01.10.2016 um 15:16 Uhr)

  2. #2
    HaWe
    Gast
    war das verständlich und hilfreich?

  3. #3
    Unregistriert
    Gast
    Verständlich? Ja! Interessant aber Fließkommarechnung nur zur Tastenabfrage frißt unangemessen viel Rechenzeit.
    Hilfreich eher nicht. Problem war ja schon gelöst, oder? Ein Danke wär es aber schon wert gewesen.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Zitat Zitat von HaWe Beitrag anzeigen
    war das verständlich und hilfreich?
    Danke auf jeden Fall!

    Da ich es zZ nicht benötige, habe ich mich damit nicht sehr ausführlich befasst, habe es aber für den Fall, dass ich es mal brauche, gespeichert.

    vG

    fredyxx

  5. #5
    HaWe
    Gast
    ok, gerne.
    OT
    Nachdem in diesem Arduino-Unterform jedes unregistrierte ********* aus dem anonymen Off spammen und trollen und die Atmosphäre vergiften kann, werde ich dir künftig allerdings hier im Forum eher nur noch ausnahmsweise Hilfestellung geben. Ich hoffe, dass die admins und mods hier endlich Einsicht zeigen und hier ebenfalls eine Registrier / LogIn-pflicht für Posts einführen, um Spammer und Trolle zu identifizieren und notfalls zu sperrren. Zum Glück ist das ja auch nicht in allen Unterforen hier so ungeordnet.
    /OT
    Geändert von HaWe (01.10.2016 um 19:36 Uhr)

Ähnliche Themen

  1. HILFE - Stepper Motor Ansteuerung mit Arduino - Zieht sehr viel Strom
    Von DollyStepper im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 20.09.2015, 13:57
  2. Eingänge sind sehr empfindlich
    Von Blackaffe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 24.05.2011, 20:35
  3. Wie empfindlich ist der Ultraschallsensor?
    Von James C. im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 18.03.2009, 21:40
  4. Wie empfindlich ist der NE555?
    Von Mohles im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 31.10.2007, 13:08
  5. Interrupt ist zu empfindlich
    Von Fourstroker im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 02.03.2006, 10:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress