Forum: Analoge Elektronik und Schaltungstechnik 24V 1ms Impuls verlängern


von Nuri O. (nurios)


Lesenswert?

Mahlzeit,

ich bekomme aus einer Hühnerklappensteuerung einen 24V Impuls von ca. 1 
ms, welchen ich mit einem Arduino über einen Optokoppler Auswerten 
möchte.

Diesen möchte ich, damit ich den auch sauber auswerten kann, auf 100 ms 
verlängern.

Hatte zu erst an ein RC glied gedacht, bin mir aber nicht ganz sicher, 
ob das so sauber funktioniert.

Hat jemand eine wie man so etwas am saubersten realisiert und nicht 
allzu kompliziert löst?

Gerne auch ohne ICs, dann lernt man vielleicht noch etwas in analoger 
Schaltungstechnik.

Mfg

von Nerd 8. (nerd81)


Lesenswert?

Google nach Monoflop

von Nemopuk (nemopuk)


Lesenswert?

1 ms ist doch nicht zu schnell für deinen Arduino (egal welcher). Selbst 
wenn es so wäre, könntest du attachInterrupt() verwenden.

Dein Ansatz mit dem R/C Glied ist schon OK. Als R könnte der interne 
Pull-Up des Mikrocontrollers dienen. Zwischen Eingang und GND kommt ein 
Kondensator mit 1 uF. Und der Ausgang des Optokopplers zieht den Eingang 
auf Low. Durch den Kondensator wird der Impuls verlängert. Nicht genau 
auf 100ms aber ungefähr.

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Nerd 8. schrieb:
> Google nach Monoflop

74HC4538

von Peter D. (peda)


Lesenswert?

Nuri O. schrieb:
> ich bekomme aus einer Hühnerklappensteuerung einen 24V Impuls von ca. 1
> ms, welchen ich mit einem Arduino über einen Optokoppler Auswerten
> möchte.

Das ist doch weit mehr als ausreichend.
Bei 16MHz Quarz kann der Arduino 62,5ns Pulse erfassen.

von Lutz (Gast)


Lesenswert?

Wenn es um robuste störsichere Auswertung geht kann man mit einem 
transistor und einen widerstand einen kondensator entladen, 
zeitkonstante 0.25ms und dann mit einem weiteren R aufladen, 
zeitkonstante 50ms
Das ganze dann per adc mit 10 khz sampeln

Das wäre eine sehr robuste störsichere lösung bei der man viel lernen 
kann

Andernfalls was auch gut ist, interrupt auslösen mit fallender flanke 
und dann den digitalausgang mit z.B 8 khz 10 mal hinzereinander abfragen

Wenn dann die mehrheit low ist als puls erkannt, das ganzen kann man mit 
einem tiefpass mit 2-5us zeitkonstante noch entstören, ist auch sehr 
robust

Eine weitere lösung ist den digitaleingang permanent zu sampeln, wieder 
z.b 10khz und mittels ringspeicher länge 10 den gleitenden mittelwert zu 
berechenen, bzw auf integer level die summe, für digital high wäre die 
10 und für low 0, fällt der wert unter 3 oder 4 ist low erkannt

von Nemopuk (nemopuk)


Lesenswert?

Man kann sich auch einen Knopf an die Backe nähen.

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

Kein Problem!
Ein ganz normaler Arduino kann in der Zeit sogar mehrfach "hingucken".
Dazu brauchst Du den Impuls nicht zu "verfälschen" (verlängern).

von Michael B. (laberkopp)


Lesenswert?

Nuri O. schrieb:
> Diesen möchte ich, damit ich den auch sauber auswerten kann, auf 100 ms
> verlängern.

Mikrocontrollerprogrammierung ist nicht so dein Ding ?


Auch ein Arduino kann PinChange Interrupts auswerten, da darf der Impuls 
so kurz sein wie er will.

Lern programmieren an statt die Defizite mit Extrahardware vor dir 
herzuschieben.

https://docs.arduino.cc/libraries/pinchangeinterrupt/

von Chantalle (chantalle2000)


Lesenswert?

Für den fall, das dein code für einen schleifendurchlauf länger als 1 ms 
benötigt, was durchaus sehr wahrscheinlich ist

Die robuste und rechenzeitoptimierze lösung wäre z.B mittels 
tomerinterrupt den eingang mit 16 khz abzufragen und einen ringbuffer 
mit 16 speicherplätzen anzulegen, für den summe schaut man immer wie der 
älteste wert war und entfernt den aus der summe und addiert den neuesten 
dazu, wenn  man von low aktiv für das klappensignal ausgeht, dann wäre 
16 klappe zu, und wenn sie öffnet läuft der bis 0 und dann wirder hoch, 
legst du die schwelle z.B bei 6, dann würde man bei diesem wert ein flag 
setzen, klappe auf, das passiert alles in der timerinterruptroutine

Wenn du in deiner programmschleife das flag abfragt, wirst du wenn es 
aktiv ist in die entsprechende routine springen, und auch gleichzeitig 
das flag zurücksetzen, das ist dann wie die angefragte pulsverlängerung, 
nur besser/eleganter

Was beim programmieren hilft und fast fertigen code für die 
interruptroutine bereitstellt ist auch chatgpt, wenn du sagst wie du es 
machen willst als ringbuffer interrupt gleitende summe über 16 flag 
setzen usw, dann ist der code fast fertig

von Chantalle (chantalle2000)


Lesenswert?

Michael B. schrieb:
> Lern programmieren an statt die Defizite mit Extrahardware vor dir
> herzuschieben.

Was ich hier nie verstehen werde, wenn man nicht helfen möchte, wieso 
man dann zeit investiert für solche Kommentare

Jeder fängt mal an und hat noch nicht das notwendige wissen und dann 
sind die ideen wie man etwas löst eben nicht optimal

Aber ich habe festgestellt, je weniger fundiertes wissen umso mehr 
werden andere diffamiert

Wers braucht, Männer

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Chantalle schrieb:
> Jeder fängt mal an und hat noch nicht das notwendige wissen und dann
> sind die ideen wie man etwas löst eben nicht optimal

Und du sagst dem Verirrten der seinem Navi folgt und langsam am Weg 
zweifelt: du bist auf dem richtigen Weg, dein Navi leitet dich, da 
hinterm Feldweg über den Fluss und die Mauer rauf ist schon richtig.

Von mir kriegt der Verirrte ein klares "Falsch" und eine 
Arduino-Library. Von Chantalle nix

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Michael B. schrieb:
> Chantalle schrieb:
>> Jeder fängt mal an und hat noch nicht das notwendige wissen und dann
>> sind die ideen wie man etwas löst eben nicht optimal
>
> Und du sagst dem Verirrten der seinem Navi folgt und langsam am Weg
> zweifelt: du bist auf dem richtigen Weg, dein Navi leitet dich, da
> hinterm Feldweg über den Fluss und die Mauer rauf ist schon richtig.
>
> Von mir kriegt der Verirrte ein klares "Falsch" und eine
> Arduino-Library. Von Chantalle nix

Ich habe eine lösung beschrieben, ist deiner wahrnehmung entgangen, 
vielleicht ja bewusst, wer weiß das schon

von H. H. (hhinz)


Lesenswert?

Popcorn! Noch jemand ohne Popcorn!?

von Lutz (Gast)


Lesenswert?

Michael B. schrieb:
> Auch ein Arduino kann PinChange Interrupts auswerten, da darf der Impuls
> so kurz sein wie er will.
>
> Lern programmieren an statt die Defizite mit Extrahardware vor dir
> herzuschieben.

Sagt einer der es offensichtlich selber nicht kann, per interrupt wo die 
pulse so kurz sein dürfen wie sie wollen

Das ist definitiv falsch, genauso wie die verwendung flankengetriggerter 
monoflops

Der will ja nur auf das lffnen der klappe teagieren, nicht auf jede 
Störung

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nuri O. schrieb:
> Hatte zu erst an ein RC glied gedacht, bin mir aber nicht ganz sicher,
> ob das so sauber funktioniert.
So ginge das sauber:
1
Signal ----->|-----o------
2
0/24V              |      |
3
                  ===    22k
4
                1u |      |
5
                   |      o--- uC
6
                   |      |
7
                   |     5k6
8
                   |      |
9
GND ---------------o------o---'

von Lutz (Gast)


Lesenswert?

Chantalle schrieb:
> Für den fall, das dein code für einen schleifendurchlauf länger als 1 ms
> benötigt, was durchaus sehr wahrscheinlich ist
>
> Die robuste und rechenzeitoptimierze lösung wäre z.B mittels
> tomerinterrupt den eingang mit 16 khz abzufragen und einen ringbuffer
> mit 16 speicherplätzen anzulegen, für den summe schaut man immer wie der
> älteste wert war und entfernt den aus der summe und addiert den neuesten
> dazu, wenn  man von low aktiv für das klappensignal ausgeht, dann wäre
> 16 klappe zu, und wenn sie öffnet läuft der bis 0 und dann wirder hoch,
> legst du die schwelle z.B bei 6, dann würde man bei diesem wert ein flag
> setzen, klappe auf, das passiert alles in der timerinterruptroutine
>
> Wenn du in deiner programmschleife das flag abfragt, wirst du wenn es
> aktiv ist in die entsprechende routine springen, und auch gleichzeitig
> das flag zurücksetzen, das ist dann wie die angefragte pulsverlängerung,
> nur besser/eleganter


Genau so!

von Jörg R. (solar77)


Lesenswert?

H. H. schrieb:
> Popcorn! Noch jemand ohne Popcorn!?

Soviel Popcorn wie man hier aktuell braucht möchte ich gar nicht 
futtern.


Lutz schrieb:
> Michael B. schrieb:
>> Auch ein Arduino kann PinChange Interrupts auswerten, da darf der Impuls
>> so kurz sein wie er will.
>>
>> Lern programmieren an statt die Defizite mit Extrahardware vor dir
>> herzuschieben.
>
> Sagt einer der es offensichtlich selber nicht kann, per interrupt
> wo die pulse so kurz sein dürfen wie sie wollen

Femtosekunden reichen auch?

> Das ist definitiv falsch, genauso wie die verwendung flankengetriggerter
> monoflops

Unsinn.

> Der will ja nur auf das lffnen der klappe teagieren, nicht auf jede
> Störung

Man, man, man:-(

von Michael B. (laberkopp)


Lesenswert?

Lutz schrieb:
> Der will ja nur auf das lffnen der klappe teagieren, nicht auf jede
> Störung

Boh, Entprellung wurde erfunden, und im Gegensatz zu dir habe ich zur 
Kenntnis genommen, welche Aussenschaltung er derzeit verwendet:

Nuri O. schrieb:
> welchen ich mit einem Arduino über einen Optokoppler Auswerten

und Nein, der schaltet keine femtosekunden, sondern immer behäbig genug 
damit ein AVR PinChange auf jeden Fall mitkommt.

Also Lutz: lern programmierrn.

von R. L. (roland123)


Lesenswert?

Chantalle schrieb:
> Was ich hier nie verstehen werde, wenn man nicht helfen möchte, wieso
> man dann zeit investiert für solche Kommentare

die meisten, die hier 24 Stunden im forum sind, wollen nicht primär 
helfen, sondern ihr ego aufbessern. Mit freundlicher Hilfe für andere 
durch Fachwissen gelingt das nur wenigen. Andere niedermachen, als 
unfähig bezeichnen und beleidigen ist für die meisten die einzige 
Möglichkeit.

von Michael (bastler2)


Lesenswert?

Nuri O. schrieb:
> ich bekomme aus einer Hühnerklappensteuerung einen 24V Impuls von ca. 1
> ms, welchen ich mit einem Arduino über einen Optokoppler Auswerten
> möchte.
>
> Diesen möchte ich, damit ich den auch sauber auswerten kann, auf 100 ms
> verlängern.

Du brauchst den Impuls nicht zu verlängern, Du kannst einen 
Hardware-Zähler vom Arduino verwenden, um die externen Impulse zu 
zählen.

In der loop()-Schleife liest Du den Zähler aus, und vergleichst ihn mit 
dem letzten Wert. Hat sich der Wert verändert, gab es einen (oder 
mehrere) Impuls(e). Du weißt dann zwar nicht wann genau der Impuls war, 
aber das dürfte bei der Hühnerklappe egal sein, ob Du in 10 
Millisekunden oder 100 Millisekunden reagierst.

Wegen Störung und Prellen wirst Du Dir kaum Sorgen machen müssen, da der 
Impuls sicherlich elektronisch (ohne Relais) erzeugt wird.

Ein Beispiel, wie das mit dem Hardware-Zähler geht, findest Du unter:

https://deepbluembedded.com/arduino-counter-timer/

von Lutz (Gast)


Lesenswert?

Michael B. schrieb:
> Lutz schrieb:
>> Der will ja nur auf das lffnen der klappe teagieren, nicht auf jede
>> Störung
>
> Boh, Entprellung wurde erfunden, und im Gegensatz zu dir habe ich zur
> Kenntnis genommen, welche Aussenschaltung er derzeit verwendet:
>
> Nuri O. schrieb:
>> welchen ich mit einem Arduino über einen Optokoppler Auswerten
>
> und Nein, der schaltet keine femtosekunden, sondern immer behäbig genug
> damit ein AVR PinChange auf jeden Fall mitkommt.
>
> Also Lutz: lern programmierrn.

Du scheinst wirklich sehr ahnungslos zu sein, wie kommt man auf 
entprellen wenn man von einem sensor einen 1ms puls bekommt

Aber störungen über lange zuleitungen sind real

Sicher es kommt auf den anspruch an, wem 99.9% als Zuverlässigkeit hoch 
genug ist, und für das hobby ist dies ausreichend, der macht das so

Wenn man etwas entwickelt, das zig hunderttausendfach produziert wird 
und jeweils tausende stunden fehlerfrei laufen soll, der sieht das 
anders

Und ja, auch bei denen die das beruflich machen sind sehr viele die das 
nicht gut machen, >90%

Ich weiß wovon ich da schreibe, weil irgendwer sucht dann ja die 
ursachen

von Nuri O. (nurios)


Lesenswert?

Nemopuk schrieb:
> 1 ms ist doch nicht zu schnell für deinen Arduino (egal welcher).

Dann hast du mich noch nicht programmieren sehen! Ich bin froh wenn mein 
code die 100ms sieht :D

Muss aber auch sagen, dass ich an programmieren nicht ganz so viel Spaß 
habe. Dafür umso mehr an Schaltung aufbauen, rumspielen, messen und vor 
allem neues lernen.

Chantalle schrieb:
> Die robuste und rechenzeitoptimierze lösung wäre z.B mittels
> tomerinterrupt den eingang mit 16 khz abzufragen und einen ringbuffer
> mit 16 speicherplätzen anzulegen

Das klingt sehr weit außerhalb meiner Kompetenz, aber kannst du gute 
Literatur empfehlen, um sich da reinzulesen?

Lothar M. schrieb:
> So ginge das sauber:

Wird getestet, danke!

von Peter X. (dcf)


Lesenswert?

Nuri O. schrieb:

> Wird getestet, danke!

Ansonsten 74HC4538:-)

von Michael B. (laberkopp)


Lesenswert?

Lutz schrieb:
> Ich weiß wovon ich da schreibe

Offensichtlich nicht

Lutz schrieb:
> Aber störungen über lange zuleitungen sind real

Durch einen Optokoppler hindurch ? Das müssen schon sehr massive 
Störungen sein um die LED austeichend lange (femtosekunden reichen hier 
nicht) zum Leuchten zu bringen damit die Ausgsngsspannung einen Impuls 
liefert.

Lutz schrieb:
> Du scheinst wirklich sehr ahnungslos zu sein, wie kommt man auf
> entprellen wenn man von einem sensor einen 1ms puls bekommt

Schau dir einfach Peter Danneggers Entprellroutine an, die hier im Forum 
so prominent ist. Da lernst du noch was beim programmieren.

von Lutz (Gast)


Lesenswert?

>> Ich weiß wovon ich da schreibe
>
> Offensichtlich nicht
>
>
> Schau dir einfach Peter Danneggers Entprellroutine an, die hier im Forum
> so prominent ist. Da lernst du noch was beim programmieren.

Das schöne ist ja wenn man so arrogante besserwisser persönlich im 
beruflichen umfeld trifft, die sind dann nach 3 wochen so klein, man 
sieht sie nicht mehr.
Aber ja  die glauben ja tatsächlich das sie so gut sind, bis das 
gegenteil unausweichlich vorliegt

von R. L. (roland123)


Lesenswert?

Nuri O. schrieb:
> Nemopuk schrieb:
>> 1 ms ist doch nicht zu schnell für deinen Arduino (egal welcher).
>
> Dann hast du mich noch nicht programmieren sehen! Ich bin froh wenn mein
> code die 100ms sieht :D
>
> Muss aber auch sagen, dass ich an programmieren nicht ganz so viel Spaß
> habe. Dafür umso mehr an Schaltung aufbauen, rumspielen, messen und vor
> allem neues lernen.

in dem Fall würde ich ein RS-Flipflop nehmen, das von dem 1ms Impuls 
gesetzt wird und vom Arduino zurückgesetzt werden kann. An den Ausgang 
des Flipflops kommt ein Eingang vom Arduino und eine LED. Dann hast du 
alle Zeit der Welt, um den Zustand einzulesen und das Flipflop 
zurückzusetzen. Mit der LED hast du auch noch eine Funktionskontrolle. 
Wenn alles funktioniert, kannst du es immer noch eleganter in SW lösen.

von Nemopuk (nemopuk)


Lesenswert?

R. L. schrieb:
> in dem Fall würde ich ein RS-Flipflop nehmen, das von dem 1ms Impuls
> gesetzt wird und vom Arduino zurückgesetzt werden kann

Ist schon im Arduino drin und nennt sich Counter.

Er geht auf 1, wenn ein Impuls erkannt wurde. Und per Software kann man 
ihn wieder auf 0 zurück setzen.

von R. L. (roland123)


Lesenswert?

Nemopuk schrieb:
> Ist schon im Arduino drin und nennt sich Counter.
>
> Er geht auf 1, wenn ein Impuls erkannt wurde. Und per Software kann man
> ihn wieder auf 0 zurück setzen.

mein Vorschlag war auch nicht für dich, sondern für den TO

von Chantalle (chantalle2000)


Lesenswert?

Nuri O. schrieb:
> Chantalle schrieb:
>> Die robuste und rechenzeitoptimierze lösung wäre z.B mittels
>> tomerinterrupt den eingang mit 16 khz abzufragen und einen ringbuffer
>> mit 16 speicherplätzen anzulegen
>
> Das klingt sehr weit außerhalb meiner Kompetenz, aber kannst du gute
> Literatur empfehlen, um sich da reinzulesen?

also ChatGPT ist da eine gute quelle, wenn du deine Aufgabe sauber 
formulierst bekommst du Code mit Erklärung, und man kann auch nachfragen 
und ganz wichtig ChatGPT ist immer sehr höflich und macht einen nicht 
blöd an

Wenn du die Frage so formulierst

"ich möchte mit arduino mit arduino IDE per Timer Interrupt mit 16 kHz 
einen Digitaleingang abfragen und in einen Ringbuffer der länge 16, für 
high einen 1 eintragen und für low eine 0, dann soll nach jeder Abfrage 
die gleitende Summe ermittelt werden, d.h. von der Summe den ältesten 
Wert aud dem Ringbuffer entfernen und den aktuellen dazuaddieren.
Wenn die Summe unter 4 fällt soll ein Flag gesetzt werden
Im Hauptloop will ich bei jedem Durchlauf das Flag abfragen und wenn 
gesetzt in die Routine springen, in der Routine wird das Flag dann auch 
wieder zurückgesetzt, kannst du den Code schreiben"

spuckt er den Code raus, ich habe im dann aber gesagt das es besser wäre 
den Ringbuffer mit 1 zu iniiaisieren und die summe sum mit 16, weil beim 
start ja nicht aktive sein soll, aber das ist das erste Ergebniss, 
weiter unten nochmal die Korektur

// === Konfiguration ===
const uint8_t INPUT_PIN = 2;       // Digitaleingangspin
const uint8_t BUFFER_SIZE = 16;    // Länge des Ringbuffers
const uint16_t SAMPLE_RATE = 16000; // 16 kHz

// === Ringbuffer & Logik ===
volatile uint8_t ringBuffer[BUFFER_SIZE];
volatile uint8_t bufferIndex = 0;
volatile uint8_t sum = 0;
volatile bool flagLowSignal = false;

void setup() {
  pinMode(INPUT_PIN, INPUT);  // Eingangspin konfigurieren
  Serial.begin(9600);         // Optional für Debugging

  // Buffer initialisieren
  for (uint8_t i = 0; i < BUFFER_SIZE; i++) {
    ringBuffer[i] = 0;
  }

  // Timer1 initialisieren für 16 kHz Interrupt
  noInterrupts();
  TCCR1A = 0;
  TCCR1B = 0;

  // Timer-Berechnung: 16 MHz / (Prescaler * TargetRate) - 1
  // Prescaler = 1 → 16 MHz / 16000 = 1000 → OCR1A = 999
  OCR1A = 999;
  TCCR1B |= (1 << WGM12);     // CTC-Modus
  TCCR1B |= (1 << CS10);      // Prescaler = 1
  TIMSK1 |= (1 << OCIE1A);    // Interrupt aktivieren
  interrupts();
}

ISR(TIMER1_COMPA_vect) {
  // Eingang lesen
  uint8_t value = digitalRead(INPUT_PIN);

  // Gleitende Summe berechnen
  uint8_t oldValue = ringBuffer[bufferIndex];
  sum = sum - oldValue + value;

  // Ringbuffer aktualisieren
  ringBuffer[bufferIndex] = value;
  bufferIndex = (bufferIndex + 1) % BUFFER_SIZE;

  // Flag setzen, wenn Summe < 4
  if (sum < 4) {
    flagLowSignal = true;
  }
}

void loop() {
  if (flagLowSignal) {
    // Flag zurücksetzen
    noInterrupts();
    flagLowSignal = false;
    interrupts();

    // Behandlung der Bedingung (z. B. Ausgabe)
    Serial.println("Signal unter Schwellwert!");
    // Hier kann deine Routine aufgerufen werden
  }

  // Sonstige Logik im Loop
}


hier dann noch mal die Korrektur

// === Konfiguration ===
const uint8_t INPUT_PIN = 2;       // Digitaleingangspin
const uint8_t BUFFER_SIZE = 16;    // Länge des Ringbuffers
const uint16_t SAMPLE_RATE = 16000; // 16 kHz

// === Ringbuffer & Logik ===
volatile uint8_t ringBuffer[BUFFER_SIZE];
volatile uint8_t bufferIndex = 0;
volatile uint8_t sum = BUFFER_SIZE;  // Anfangssumme = 16
volatile bool flagLowSignal = false;

void setup() {
  pinMode(INPUT_PIN, INPUT);  // Eingangspin konfigurieren
  Serial.begin(9600);         // Optional für Debugging

  // Buffer initialisieren mit lauter 1en
  for (uint8_t i = 0; i < BUFFER_SIZE; i++) {
    ringBuffer[i] = 1;
  }

  // Timer1 initialisieren für 16 kHz Interrupt
  noInterrupts();
  TCCR1A = 0;
  TCCR1B = 0;

  // Timer-Berechnung: 16 MHz / (Prescaler * TargetRate) - 1
  // Prescaler = 1 → 16 MHz / 16000 = 1000 → OCR1A = 999
  OCR1A = 999;
  TCCR1B |= (1 << WGM12);     // CTC-Modus
  TCCR1B |= (1 << CS10);      // Prescaler = 1
  TIMSK1 |= (1 << OCIE1A);    // Interrupt aktivieren
  interrupts();
}

ISR(TIMER1_COMPA_vect) {
  // Eingang lesen
  uint8_t value = digitalRead(INPUT_PIN);

  // Gleitende Summe berechnen
  uint8_t oldValue = ringBuffer[bufferIndex];
  sum = sum - oldValue + value;

  // Ringbuffer aktualisieren
  ringBuffer[bufferIndex] = value;
  bufferIndex = (bufferIndex + 1) % BUFFER_SIZE;

  // Flag setzen, wenn Summe < 4
  if (sum < 4) {
    flagLowSignal = true;
  }
}

void loop() {
  if (flagLowSignal) {
    // Flag zurücksetzen (kritischer Abschnitt)
    noInterrupts();
    flagLowSignal = false;
    interrupts();

    // Behandlung bei Unterschreitung des Schwellenwerts
    Serial.println("Signal unter Schwellwert!");
    // Hier kannst du deine spezielle Routine aufrufen
  }

  // Andere Aufgaben im Loop...
}


jetzt kann dein Hauptprogramm so langsam sein wie du möchtest, das Flag 
wird per Interrupt im "Hintergrund" gesetzt, ganz so wie mit Hardware.
Ich hatte auch anfangs immer die Tendenz Hardware zu nutzen statt 
Software, aber die geschickte Kombination, jetzt nur die Störungen 
entsprechend wenn vorhanden reduzieren mit einem RC Glied und es ist ein 
gute Lösung.

Mit ChatGPT kann man schon einiges erreichen, man muss aber auch genau 
schraiben was man will und kontrollieren und evtl. mit Ideen ergänzen. 
Weil die KI lernt aus dem Internet und "lernt" auch die Fehler oder 
schlechten Programmierstil wenn er denn weit genug verbreitet ist. Aber 
zum Glück scheint er die offiziellen Applikationen stärker zu gewichten 
als Foren

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Lutz schrieb:
> Aber ja  die glauben ja tatsächlich das sie so gut sind, bis das
> gegenteil unausweichlich vorliegt

Und die über hunderte hier im Forum, die von meinem Code begeistert 
sind, habe ich dann wohl alle hypnotisiert.

Du kannst Dich gerne auch sachlich zu meinen Beispielen äußern, aber das 
wird Dir nicht gelingen.

von Peter D. (peda)


Lesenswert?

Nuri O. schrieb:
> Dann hast du mich noch nicht programmieren sehen! Ich bin froh wenn mein
> code die 100ms sieht :D

Solche Sachen läßt man einen Interrupt erledigen, dann hat das Main alle 
Zeit der Welt, darauf zu reagieren. Der Pin-Change Interrupt ist gut 
geeignet, da hat man die meiste Pinauswahl.
Man kann im Interrupt auch bis ~10µs lang prüfen, ob es nur ein Glitch 
ist, das tut noch nicht weh.

von Lutz (Gast)


Lesenswert?

Peter D. schrieb:
> Lutz schrieb:
>> Aber ja  die glauben ja tatsächlich das sie so gut sind, bis das
>> gegenteil unausweichlich vorliegt
>
> Und die über hunderte hier im Forum, die von meinem Code begeistert
> sind, habe ich dann wohl alle hypnotisiert.
>
> Du kannst Dich gerne auch sachlich zu meinen Beispielen äußern, aber das
> wird Dir nicht gelingen.

Das kan man so machen und für viele hobbyprojekte ok

Aber trotzdem 2 nachteile
1 wenn das hauptprogramm beschäftigt ist dann bekommt man kurze 
tsstendrücke nicht mit, ich habe für einen steuerung mal ausprobiert, 
tastendrücke mit einer dauer unter 200ms sind möglich, davon war am 
anfang fast 50ms prellen
Das programm könnte also einen solchen tastendruck nicht mitbekommen 
wenn der loop 100ms benötigt, weil in deiner schleife ja auch delay sind

2. Die debounce funktion zält den counter runter und hat dazwischen 
immer ein delay, das bedeutet das sie solange den hauptprozess blockiert

Ich hatte ja alternativen geschrieben über ringbuffer und interrupt, das 
ist im professionellen bereich weitesgehend standard, man bekommt es 
immer mit und blockiert nicht den hauptprozess

Das erst mal zur debounce funktione
In dem folgenden beispiel, das kann ich nicht 100% am handy bewerten, 
müsste man zumindest mal ausdrucken, schöner wären einmal durchtesten 
und emulieten um alle zustände eindeutig nachzuvollziehen.
Aber ich sehe keine merkmale auf anhieb , das zustände gespeichert 
werden, so dass das hauptprogramm diese auch verzögert noch abfragen 
kann wenn der taster wieder losgelassen ist.
Auch hier, für dies code gibt es auch die berechtigung wenn man abfragen 
will ist jetzt ein taster gedrückt.
Wenn man aber die aufgabe hat, wenn ein taster gedrückt wird dann 
soll...
Dann ist es ohne speicherung die falsche lösung
Cantalle2000 hatte dazu ein beispielcode gepostet,und ich muss gestehen, 
der ist noch ein schritt weiter gedacht, natürlich ist ringbuffer der 
Länge 2^n besser, weil man dann schnellere rechenoperationen eines 8 
bitters nutzen kann mittels maske statt if else

Nichts für ungut, der code ist ok und in vielen Projekten benötigt es 
nicht mehr.
Aber warum immer so überheblich als die alten hasen hier im forum das 
mass der dinge darstellen.

von Otto K. (opto_pussy)


Lesenswert?

Nuri O. schrieb:
> Mahlzeit,
> ich bekomme aus einer Hühnerklappensteuerung einen 24V Impuls von ca. 1
> ms, welchen ich mit einem Arduino über einen Optokoppler Auswerten
> möchte.

So wie Roland123 schon sagte, wäre ein RS-Flip-Flop mit nachgeschaltetem 
Optokoppler hier angebracht, denn ein 24 Volt Impuls hat am Arduino 
nichts zu suchen!

Man könnte das RS-Flip-Flop aus zwei einzelnen Transistoren bauen und 
ebenfalls an 24 Volt betreiben und das Ausgangssignal über einen 
Doppel-Optokoppler mit dem Arduino verbinden. Zur optischen Kontrolle 
sollte man in Reihe zur Optokoppler-LED noch eine LED einschleifen, 
sobald der Arduino den Impuls registriert hat, kann er eine Sekunde 
später über den zweiten Optokoppler einen Feedback-Impuls zurück an das 
RS-Flip-Flop senden und es so bequem zurücksetzen.

von R. L. (roland123)


Lesenswert?

Otto K. schrieb:
> wäre ein RS-Flip-Flop mit nachgeschaltetem
> Optokoppler hier angebracht, denn ein 24 Volt Impuls hat am Arduino
> nichts zu suchen!

der Optokoppler wäre vor dem Flipflop besser aufgehoben. Also die LED 
vom Optokoppler am 24V Impuls und der Rest an der Versorgung vom 
Arduino.

von Michael B. (laberkopp)


Lesenswert?

Peter D. schrieb:
> Solche Sachen läßt man einen Interrupt erledigen, dann hat das Main alle
> Zeit der Welt, darauf zu reagieren. Der Pin-Change Interrupt ist gut
> geeignet,

Eben.

Lutz schrieb:
> Das kan man so machen und für viele hobbyprojekte ok
> Aber trotzdem 2 nachteile
> 1 wenn das hauptprogramm beschäftigt ist dann bekommt man kurze
> tsstendrücke nicht mit, ich habe für einen steuerung mal ausprobiert,

Boh ey, da erklärt sich so ein Satz

Lutz schrieb:
> Das schöne ist ja wenn man so arrogante besserwisser persönlich im
> beruflichen umfeld trifft, die sind dann nach 3 wochen so klein, man
> sieht sie nicht mehr

und warum man Lutz noch nie gesehen hat. Klein wie ein Sandkorn unterm 
Schuh.

Von Programmieren nicht die Bohne einer Ahnung, aber hier auf den dicken 
Macker tun.

Pedas Vorschlag sind für dich böhmische Dörfer.

von Otto K. (opto_pussy)


Lesenswert?

R. L. schrieb:
> der Optokoppler wäre vor dem Flipflop besser aufgehoben. Also die LED
> vom Optokoppler am 24V Impuls und der Rest an der Versorgung vom
> Arduino.

Das ist zwar richtig, aber dabei habe ich nur ein bisschen Angst, dass 
eine Signallänge von nur einer Millisekunde nicht ausreicht, um durch 
den trägen Optokoppler zu kommen.

Ein direkt angesteuertes RS-Flip-Flop ist schneller.

von Günter L. (Firma: Privat) (guenter_l)


Lesenswert?

von Nuri O. schrieb:
>Hat jemand eine wie man so etwas am saubersten realisiert und nicht
>allzu kompliziert löst?

In Hardware geht das zum Beispiel hiermit.

https://www.build-electronic-circuits.com/7400-series-integrated-circuits/74hc121-74ls121/

von Nemopuk (nemopuk)


Lesenswert?

Otto K. schrieb:
> ich nur ein bisschen Angst, dass eine Signallänge von nur einer
> Millisekunde nicht ausreicht, um durch den trägen Optokoppler zu kommen.

Bei 1 ns würde ich zustimmen, aber nicht bei gemütlichen 1 ms.

Musiker nutzen mit ihren Midi Geräten 30x so hohe Frequenzen völlig ohne 
Probleme mit ganz normalen Optokopplern.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Auch ein Arduino kann PinChange Interrupts auswerten, da darf der Impuls
> so kurz sein wie er will.

Laberkopp - genau darum geht es, jeder beliebig kurze Puls, der über die 
Leitung reinpurzelt, löst erstmal den Interrupt aus. Um da ein bisschen 
Störsicherheit reinzubringen, ist es sicher nicht verkehrt, kurz vor 
erwartetem Ende des Impulses noch einmal zu prüfen, ob das Signal immer 
noch ansteht und ansonsten den Triggerversuch zu verwerfen.

Otto K. schrieb:
> Das ist zwar richtig, aber dabei habe ich nur ein bisschen Angst, dass
> eine Signallänge von nur einer Millisekunde nicht ausreicht, um durch
> den trägen Optokoppler zu kommen.

Dann hast du vielleich den falschen Optokoppler. Es gibt auch welche, 
die 25MHz Signale sauber übertragen.
Letztendlich ist sogar jede Glasfaserstrecke, die 1GHz überträgt, ein 
besserer Optokoppler.

von Rainer W. (rawi)


Lesenswert?

Lutz schrieb:
> Aber ja  die glauben ja tatsächlich das sie so gut sind, bis das
> gegenteil unausweichlich vorliegt

Dann behaupte ich zur Stabilisierung der KI einmal das Gegenteil und 
lege es vor.

von Michael B. (laberkopp)


Lesenswert?

Rainer W. schrieb:
> ist es sicher nicht verkehrt, kurz vor erwartetem Ende des Impulses noch
> einmal zu prüfen, ob das Signal immer noch ansteht und ansonsten den
> Triggerversuch zu verwerfen.

Kann man problemlos machen, z.B. in der Interuptroutine die vom 
PinChange aufgerufen wurde per Portabfrage gucken ob der Impuls noch 
immer aktiv ist. Aber so kurze Impulse schaffen es nicht über den 
Optokoppler, wie du wüsstest, wenn du es jemals absichtlich versucht 
hättest.

Rainer W. schrieb:
> Dann hast du vielleich den falschen Optokoppler. Es gibt auch welche,
> die 25MHz

Er hat vermutlich einfach NORMALE Optokoppler, aber das passt nicht in 
dein rant-Weltbild.

Es gibt immer Einen, der der blödeste ist. Den Preis hat du heute 
gewonnen.

von Peter D. (peda)


Lesenswert?

Lutz schrieb:
> 1 wenn das hauptprogramm beschäftigt ist dann bekommt man kurze
> tsstendrücke nicht mit

Vielleicht solltest Du mal verlinken, welche Lib Du denn eigentlich 
meinst.

Wenn von "Peter Danneggers Entprellroutine" geredet wird, dann ist 
typisch diese hier gemeint:
Beitrag "Universelle Tastenabfrage"

Ich habe noch eine Macroversion ohne Timerinterrupt gepostet, aber auch 
klar deren Limits genannt.

von Lutz (Gast)


Lesenswert?

Peter D. schrieb:
> Vielleicht solltest Du mal verlinken, welche Lib Du denn eigentlich
> meinst

Hier auf der seite unter artikelübersicht entprellung

Aber zum kommunikationsstiel, wenn  man schreibt
"
Du kannst Dich gerne auch sachlich zu meinen Beispielen äußern, aber das
wird Dir nicht gelingen"
Hättest du ja auch einen link posten können und die Annahme das niemand 
in deinem code verbessereungsporential sieht, ehrlich das ist schon sehr 
arrogant

Ich kenne meine position als ingenieur, zeig da schon sehr vielen wo es 
lang geht, ich würde aber nie behaupten das es für meine lösungen nicht 
noch bessere gibt

Anders wie manche Idi***n hier im forum die sich für sonst was halten, 
aber sowas von offensichtlich in der kindergartenliga unterwegs sind

Und das soll keine kritik an hobbyelektroniker sein, das ist doch auch 
als hobby schön und dann muss auch nicht alles perfekt sein, das ist ok

Aber manche hier, naja, da fehlen mir die Worte

Und sollten die das beruflich machen, ja die kenne ich, ganz große 
klappe aber nach 3 Wochen unsichtbar

von Lutz (Gast)


Lesenswert?

Peter D. schrieb:
> Lutz schrieb:
>> 1 wenn das hauptprogramm beschäftigt ist dann bekommt man kurze
>> tsstendrücke nicht mit
>
> Vielleicht solltest Du mal verlinken, welche Lib Du denn eigentlich
> meinst.
>
> Wenn von "Peter Danneggers Entprellroutine" geredet wird, dann ist
> typisch diese hier gemeint:
> Beitrag "Universelle Tastenabfrage"
>
> Ich habe noch eine Macroversion ohne Timerinterrupt gepostet, aber auch
> klar deren Limits genannt.
Aber noch mal zum punkt der Abfrage eines digitaleingangd
Es gibt da schon die zwei unterschiedlichen zustände die man wenn man in 
de r schleife an den punkt kommt abfragen kann
- ist der Eingang aktiv
- war der Ekngang seit der letzten Abfrage aktiv

Entsprechend ist der Code unterschiedlich, und wenn man für die falsche 
Aufgabenstellung nicht die richtige methode benutzt ist das falsch

Aber dss sagt ja nichts über die routine selber aus

Die habe für die jeweilige Aufgabe ihre Berechtigung

von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Kann man problemlos machen, z.B. in der Interuptroutine die vom
> PinChange aufgerufen wurde per Portabfrage gucken ob der Impuls noch
> immer aktiv ist.

Du willst nicht wirklich in der Interruptroutine ein delay() einbauen, 
dass die Zeit bis kurz vor dem erwarteten Ende eines gültigen Pulses mit 
Nixtun verdaddelt, oder?
Das mag allenfalls in der Einzelanwendung ok sein, wenn man weiß, dass 
bestimmt keine anderen zeitkritischen Dinge anliegen, ist ansonsten aber 
alles andere als guter Programmierstil und kann einem ganz schnell auf 
die Füße fallen.

von Michael B. (laberkopp)


Lesenswert?

Rainer W. schrieb:
> Du willst nicht wirklich in der Interruptroutine ein delay() einbauen,

Für deine Nanosekunden-Störimpulse die es angeblich über den Optokoppler 
schaffen reicht der übliche C-Interruptoverhead und 
Arduino-Pinabfrageoverhead locker.

Aber schön wie du Allen zeigst dass du von tuten und blasen keine Ahnung 
hast.

von Nemopuk (nemopuk)


Lesenswert?

Rainer W. schrieb:
> Das mag allenfalls in der Einzelanwendung ok sein

Es ist eine Einzelanwendung.

Auf der Arbeit haben wir diese Diskussion auch immer wieder. Da gibt es 
(inzwischen nur noch einen) erfahrenen Programmierer, der immer so tut, 
als würden wir unsere Programme als Bibiliothek bei der Apache 
Foundation veröffentlichen. Alles muss immer super universell und 
austauschbar sein, und noch drölfzig fiktive Anwendungsfälle abdecken, 
die wir gar nicht brauchen. So verschwendet man Zeit und Geld.

von Georg M. (g_m)


Lesenswert?

Mit den aktuellen AVR ist alles viel einfacher.

https://www.mikrocontroller.net/attachment/615726/AVR_TCB.png

von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Für deine Nanosekunden-Störimpulse

Du verwechselst "Nano" mit "Mikro". Da liegen ein paar Größenordnungen 
zwischen.
Eine TVS und RC-Tiefpass mit Schmitt-Triggereingang sollte sowieso als 
ESD-Schutz vorhanden sein und ist geeignet, Störimpulse hardwaremäßig zu 
unterdrücken. Bei Einsatz des vom TO angedachten Monoflops zur 
Impulsverlängerung hätte man übrigens das gleiche Problem. Das dürfte 
auch nicht von jedem Furz angestoßen werden.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Rainer W. schrieb:
> Du verwechselst "Nano" mit "Mikro

Nein, ich weiss dass nicht mal 1us-Störimpulse es über den Optokoppler 
schaffen, und ich weiss dass eine Arduino-Portabfrage gut 109us braucht.

Es war der hirnrissige Beitrag

Jörg R. schrieb:
> Femtosekunden reichen auch?

der die aberwitzigen Zeiten bar jeder Realität ins Spiel brachte.

Beitrag #7895649 wurde vom Autor gelöscht.
von Jörg R. (solar77)


Lesenswert?

Michael B. schrieb:
> Rainer W. schrieb:
>> Du verwechselst "Nano" mit "Mikro
>
> Nein, ich weiss dass nicht mal 1us-Störimpulse es über den Optokoppler
> schaffen, und ich weiss dass eine Arduino-Portabfrage gut 109us braucht.
>
> Es war der hirnrissige Beitrag
>
> Jörg R. schrieb:
>> Femtosekunden reichen auch?
>
> der die aberwitzigen Zeiten bar jeder Realität ins Spiel brachte.

In welchem Zusammenhang habe ich das denn geschrieben? Das hast du wohl 
nicht verstanden.

von Peter D. (peda)


Lesenswert?

Lutz schrieb:
> Aber zum kommunikationsstiel, wenn  man schreibt
> "
> Du kannst Dich gerne auch sachlich zu meinen Beispielen äußern, aber das
> wird Dir nicht gelingen"

Ich denke mal, auf Deine Beleidigungen und Unterstellungen hin, habe ich 
damit schon extrem zurückhaltend reagiert.
Soviel zu Deinem Kommunikationsstil, der paßt doch eher zu einem 
bockigen Kind.
Wenn Du schon länger im Forum mitlesen würdest, dann wüßtest Du bereits, 
daß ich mich sehr um Sachlichkeit bemühe.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Nemopuk schrieb:
> Es ist eine Einzelanwendung.

Wirklich?
Oft ist es sinnvoll, mal über den Tellerrand zu schauen, ob man nicht 
das Problem etwas universeller lösen könnte und es dann ein für allemal 
vom Tisch hat.
Auch jeder Profi hat mal so angefangen eine Entprellung nur für die 
konkrete Aufgabe reinzuweben. Es ist kein Fehler, es bei ersten mal so 
zu machen. Es ist aber ein Fehler, eine Task bei jedem Projekt neu zu 
implementieren.

von Nemopuk (nemopuk)


Lesenswert?

Peter D. schrieb:
> Es ist aber ein Fehler, eine Task bei jedem Projekt neu zu
> implementieren.

Da stimme ich dir zu. Spätestens wenn man Code zum dritten mal neu 
schreibt oder kopiert, sollte man wach werden.

von R. L. (roland123)


Lesenswert?

Nemopuk schrieb:
> Spätestens wenn man Code zum dritten mal neu
> schreibt oder kopiert, sollte man wach werden

bei einem Anfänger sieht das meistens anders aus. Wenn er einen Code für 
die gleiche Funktion zum 2. oder 3. mal schreibt, ist das schon so viel 
besser und strukturierter, dass er den Murks vom ersten Versuch sowieso 
nicht mehr nehmen würde, egal wie universell es hätte werden sollen.
Ausnahmen sind die Lernresistenten, da wird es beim 3. Mal auch nicht 
besser, und die allwissend geborenen, da ist es beim ersten Mal schon 
perfekt.

von Thomas B. (thombde)


Lesenswert?

Nuri O. schrieb:
> ich bekomme aus einer Hühnerklappensteuerung einen 24V Impuls von ca. 1
> ms, welchen ich mit einem Arduino über einen Optokoppler Auswerten
> möchte.

Was ist das eigentlich für eine Hühnerklappensteuerung.
Gibt es da einen Schaltplan oder einen Link?
Oder selber gebaut?

von Peter D. (peda)


Lesenswert?

R. L. schrieb:
> die allwissend geborenen, da ist es beim ersten Mal schon
> perfekt.

Nur gut, daß Du meine Programmieranfänge nicht kennst.
Aber ich nehme es als Kompliment, daß Du denkst, ich wäre schon 
allwissend geboren worden. Aber wäre das Leben dann nicht furchtbar 
langweilig?
Nur was man sich hart erarbeitet hat, ist auch befriedigend.

von Lutz (Gast)


Lesenswert?

Peter Danneggers Entprellroutine ist definitiv eine elegante und 
bewährte Lösung, die in vielen Hobby- und einfachen 
Mikrocontroller-Anwendungen sehr gut funktioniert. Sie ist kompakt, 
effizient und kommt ohne aufwändige Hardware aus – genau das macht sie 
für viele Projekte attraktiv.

Allerdings ist die Routine aus einer Zeit, in der Speicher knapp und 
Rechenleistung limitiert war – man könnte sie daher als etwas 
„oldschool“ bezeichnen. Das heißt nicht, dass sie schlecht ist, sondern 
eher, dass es heute auch modernere Methoden gibt, die in bestimmten 
Situationen robuster sein können.

Wenn man tiefer in die Materie einsteigt, lohnt es sich, Fragen zu 
stellen wie:

- Wie robust ist die Entprellung bei kurzen Störimpulsen in beide 
Richtungen (z.B. kurze High-Spikes bei Low-Erkennung)?
- Kann die Routine mit einer Hysterese oder gleitenden Mittelung noch 
stabilere Ergebnisse liefern?
- Wie verhält sie sich in stark gestörten Umgebungen oder bei längeren 
Leitungslängen?
- Eignet sich die Methode für viele Taster oder komplexere 
Eingabegeräte?

Für viele einfache Anwendungen im Hobbybereich ist Danneggers Code 
absolut ausreichend und pragmatisch. Wer jedoch in raueren Umgebungen 
arbeitet oder höchste Zuverlässigkeit braucht, sollte überlegen, ob er 
mit modernen Filtermethoden – z.B. gleitende Summen mit Hysterese – noch 
besser fahren kann.

Abschließend sollte man auch erwähnen, dass es wichtig ist, sich als 
erfahrener Entwickler neuen Ideen und Methoden zu öffnen, anstatt Kritik 
mit Beleidigungen oder herablassenden Kommentaren abzutun. Konstruktiver 
Austausch fördert den Fortschritt – und davon profitieren letztlich 
alle.

von Peter D. (peda)


Lesenswert?

Lutz schrieb:
> z.B. gleitende Summen mit Hysterese

Wenn man sich den Algorithmus genauer anschaut, ist es ein gleitender 
Mittelwert mit maximaler Hysterese. D.h. erst 4 aufeinander folgene 1 
oder 0 bewirken eine Erkennung der Änderung. Ein Störabtastung bewirkt 
lediglich eine Verzögerung, aber keinen Fehler.
Für mich habe ich ein Abtastintervall von 10ms als optimal ermittelt. Es 
ist aber überhaupt kein Problem, für besonders junge oder nervöse 
Benutzer es kleiner zu wählen.
Der Hauptvorteil gegenüber den meisten anderen Lösungen ist es, einen 
Timerinterrupt zu benutzen. Dadurch ergeben sich minimale Seiteneffekte 
der Laufzeit der Mainloop.
Oft erfolgt aber die Entprellung in der Mainloop, was dann sehr 
unterschiedliche Einflüsse der Laufzeit ergibt.
Ich habe leider haufenweise solche "professionelle" Geräte, die entweder 
Tastendrücke verlieren oder doppelt auslösen. Insbesondere die 
Auswertung von Drehgebern ist oft absolute Rotte.
Man ist der Meinung (besser gesagt der Hoffnung), "Ich benutze ja ein 
RTOS, also kann doch nichts passieren".

Z.B. die Aufzüge in der Firma sind alle ESD empfindlich. Geht man über 
den Teppich zum Aufzug und nähert sich dem Tastenfeld, gehen beide 
Richtungslampen an. Ich erde mich daher vorher an der Aufzugstür, damit 
die Türen nicht unnütz öffnen und schließen.

Es ist auch schön zu beobachten, wie ein ehemals super teurer Tektronix 
immer noch die Drehgeber und Tasten brauchbar auswertet, ein deutlich 
günstigerer moderner Hameg aber ständig Fehler produziert.
Man gibt sich leider heutzutage keine Mühe mehr, die Physik hinter den 
Eingabegeräten zu verstehen. Bzw. das Wissen ist einfach verloren 
gegangen.

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Lutz schrieb:
> ..anstatt Kritik mit Beleidigungen oder herablassenden Kommentaren
> abzutun.

Darin bist du ja Experte;-(

Dabei sollte das Forum froh sein jemanden wie dich zu haben. Schließlich 
bist du scheinbar ausgewiesener Speziallist..wenn man deiner 
Selbsthudelei Glauben schenken darf.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Welcher Kasper hat eigentlich diese unsinnige Stör- und Prelldiskussion 
ins Spiel gebracht? Wenn ich die Aufgabenstellung des TO lese, kommt 
rein gar nichts davon vor. Wozu Nebelkerzen werfen?

Thomas B. schrieb:
> Was ist das eigentlich für eine Hühnerklappensteuerung.
> Gibt es da einen Schaltplan oder einen Link?
> Oder selber gebaut?
Und woher kommt aus dieser Steuerung der besagte 1ms-Impuls?

Nur darum geht es. Und erst wenn man das weiß, kann man sinnvoll über 
eine Lösung diskutieren.

: Bearbeitet durch Moderator
von Roland F. (rhf)


Lesenswert?

Hallo,
Lutz schrieb:
> Wer jedoch in raueren Umgebungen
> arbeitet oder höchste Zuverlässigkeit braucht, sollte überlegen, ob er
> mit modernen Filtermethoden – z.B. gleitende Summen mit Hysterese – noch
> besser fahren kann.

Interessant. Zeig doch mal wie man sowas (vorzugsweise in C) 
programmiert.

rhf

von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> Ich habe leider haufenweise solche "professionelle" Geräte, die entweder
> Tastendrücke verlieren oder doppelt auslösen.

ich habe hier ein ehemals sündhaft teures Antennenmeßgerät KWS AMA 210, 
Tastenbedienung fast unmöglich, entweder die Taste wird nicht erkannt 
oder man hat gleich doppelte Tastendrücke -> error, ich weiß nicht was 
die damals gebaut hatten. Ich wollte schon mal PeDas Routine einbauen.

: Bearbeitet durch User
Beitrag #7895808 wurde vom Autor gelöscht.
von Chantalle (chantalle2000)


Lesenswert?

Roland F. schrieb:
> Hallo,
> Lutz schrieb:
>> Wer jedoch in raueren Umgebungen
>> arbeitet oder höchste Zuverlässigkeit braucht, sollte überlegen, ob er
>> mit modernen Filtermethoden – z.B. gleitende Summen mit Hysterese – noch
>> besser fahren kann.
>
> Interessant. Zeig doch mal wie man sowas (vorzugsweise in C)
> programmiert.
>
> rhf

Es wurde mehrfach hier schon beschrieben, aber wenn ihr euch darauf 
nicht einlassen wollt weil das euren Ego verletzt, da  ist jede mühe 
umsonst

Ich kann auch gar nicht nachvollziehen warum mein beispielcode so 
negativ bewertet wurde

von Chantalle (chantalle2000)


Lesenswert?

Lothar M. schrieb:
> Welcher Kasper hat eigentlich diese unsinnige Stör- und Prelldiskussion
> ins Spiel gebracht? Wenn ich die Aufgabenstellung des TO lese, kommt
> rein gar nichts davon vor. Wozu Nebelkerzen werfen?
>
> Thomas B. schrieb:
>> Was ist das eigentlich für eine Hühnerklappensteuerung.
>> Gibt es da einen Schaltplan oder einen Link?
>> Oder selber gebaut?
> Und woher kommt aus dieser Steuerung der besagte 1ms-Impuls?
>
> Nur darum geht es. Und erst wenn man das weiß, kann man sinnvoll über
> eine Lösung diskutieren.

Das kam auf, weil lösungen vorgeschlagen wurden die probleme bereitet 
hätten

Warum kann man das nicht auf sachlicher Ebene belassen

Monoflop war einer der ersten votschläge und jeder mit ein wenig 
erfahrung sollte wissen welche probleme flankengetriggerte monoflops 
bereiten können

Aber wie ich hier ja schon gelesen habe und aus eigenet bisheriger 
erfahrung bestätigen kann, wenn für eine einzige anwendung 99.9% 
zuverlässigkeit reichen kann man das machen

Aber ich denke hier gibt es ein paar, die weiter denken.

Und ganz ehrlich, es macht doch Sinn sich auszutauschen und dann mit 
gleichen Aufwand  bessere lösungen zu generieren

Beitrag #7895835 wurde vom Autor gelöscht.
von Jörg R. (solar77)


Lesenswert?

Chantalle schrieb:
> Ich kann auch gar nicht nachvollziehen warum mein beispielcode so
> negativ bewertet wurde

Der TO hat doch ganz unmissverständlich geschrieben dass programmieren 
nicht sein Ding ist. Und du meinst ihm dann einen Code in der Länge 
eines Romans posten zu müssen? So ein langer Code gehört übrigens in 
eine Datei, nicht in kompletter Länge in das Kommentarfeld.

Nuri O. schrieb:
> (..)
> Muss aber auch sagen, dass ich an programmieren nicht ganz so viel Spaß
> habe. Dafür umso mehr an Schaltung aufbauen, rumspielen, messen und vor
> allem neues lernen.

von Jörg R. (solar77)


Lesenswert?

Chantalle schrieb:
> Monoflop war einer der ersten votschläge und jeder mit ein wenig
> erfahrung sollte wissen welche probleme flankengetriggerte monoflops
> bereiten können

Welche Probleme vermutest du können beim TO denn auftreten? Ich habe 
schon oft CD4538 bzw. 74HC4538 eingesetzt..ohne Probleme.


> Aber ich denke hier gibt es ein paar, die weiter denken.

Weiter als du sicherlich.

: Bearbeitet durch User
von Mani W. (e-doc)


Lesenswert?

Chantalle schrieb:
> Aber wie ich hier ja schon gelesen habe und aus eigenet bisheriger
> erfahrung bestätigen kann, wenn für eine einzige anwendung 99.9%
> zuverlässigkeit reichen kann man das machen

Nein, man tut es ohne µC...

Weil es zu 100% ohne geht...

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Das ist nicht korrekt, er hat danach und nach einer anleitubg gefragt

Und selbst wenn nicht, warum dann negativ bewerten

Ich bekomme langsam zweifel ob ich hier richtig wenn ich sehe was hier 
unterwegs ist

von Jörg R. (solar77)


Lesenswert?

Mani W. schrieb:
> Chantalle schrieb:
>> Aber wie ich hier ja schon gelesen habe und aus eigenet bisheriger
>> erfahrung bestätigen kann, wenn für eine einzige anwendung 99.9%
>> zuverlässigkeit reichen kann man das machen
>
> Nein, man tut es ohne µC...
>
> Weil es zu 100% ohne geht...

Nicht wenn man Chantalle heißt..:-)

von Manfred P. (pruckelfred)


Lesenswert?

Chantalle schrieb:
> Ich bekomme langsam zweifel ob ich hier richtig wenn ich sehe was hier
> unterwegs ist

Es gibt keinen Grund für Zweifel, Du bist hier fehl am Platze.

von Chantalle (chantalle2000)


Lesenswert?

Mani W. schrieb:
> Chantalle schrieb:
>> Aber wie ich hier ja schon gelesen habe und aus eigenet bisheriger
>> erfahrung bestätigen kann, wenn für eine einzige anwendung 99.9%
>> zuverlässigkeit reichen kann man das machen
>
> Nein, man tut es ohne µC...
>
> Weil es zu 100% ohne geht...

Natürlich gibt es anwendungen wo es geht, sonst würde es solche ic ja 
schließlich nicht geben, aber es gibt auch anwendungen wo die probleme 
bereiten

von Jörg R. (solar77)


Lesenswert?

Chantalle schrieb:
> Mani W. schrieb:
>> Chantalle schrieb:
>>> Aber wie ich hier ja schon gelesen habe und aus eigenet bisheriger
>>> erfahrung bestätigen kann, wenn für eine einzige anwendung 99.9%
>>> zuverlässigkeit reichen kann man das machen
>>
>> Nein, man tut es ohne µC...
>>
>> Weil es zu 100% ohne geht...
>
> Natürlich gibt es anwendungen wo es geht, sonst würde es solche ic ja
> schließlich nicht geben,

Ach was.

> ..aber es gibt auch anwendungen wo die probleme bereiten

Dann ist die Schaltung falsch konstruiert.

von Mani W. (e-doc)


Lesenswert?

Chantalle schrieb:
> Ich bekomme langsam zweifel ob ich hier richtig wenn ich sehe was hier
> unterwegs ist

Gut für Dich, dann kannst Du das Lager ja einfach verlassen oder
denkst etwas anders...

von Mani W. (e-doc)


Lesenswert?

Die Schaltung ist locker mit einem 4093 zu realisieren,
100% funktionstüchtig und ohne Fehler...

von H. H. (hhinz)


Lesenswert?

Mani W. schrieb:
> Die Schaltung ist locker mit einem 4093 zu realisieren,
> 100% funktionstüchtig und ohne Fehler...

Der TE will einen Optokoppler verwenden, und mehr als ein/zwei 
Widerstände und einen Kondensator braucht man drum herum nicht.

von Mani W. (e-doc)


Lesenswert?

H. H. schrieb:
> Der TE will einen Optokoppler verwenden, und mehr als ein/zwei
> Widerstände und einen Kondensator braucht man drum herum nicht.

Dann soll er sich darüber Gedanken machen...

von Roland F. (rhf)


Lesenswert?

Hallo,
Chantalle schrieb:
> Das ist nicht korrekt, er hat danach und nach einer anleitubg gefragt

Bitte mit Bezug antworten.

Chantalle schrieb:
> aber es gibt auch anwendungen wo die probleme
> bereiten

Kannst du mal ein Beispiel zeigen?

rhf

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Lothar M. schrieb:
> Welcher Kasper hat eigentlich diese unsinnige Stör- und Prelldiskussion
> ins Spiel gebracht? Wenn ich die Aufgabenstellung des TO lese, kommt
> rein gar nichts davon vor.

Bist du in deinem tiefen Inneren Jurist und hängst am exakten Wortlaut 
irgendwelcher Texte?

Auch das vom TO geforderte Monoflop löst sein EIGENTLICHEN Problem 
nicht, weil das genauso auf Störimpulse triggern würde. Da nützt es 
überhaupt nichts, wenn der Ausgangsimpuls hübsch und 100ms lang ist.
Die Frage an den TO wäre, wie sein System aussieht, d.h. wo liegen 
(lange) Leitungen, die ggf. gestört werden können, wieviel Strom kann 
die Signalquelle liefern und wo soll ggf. sein Monoflop sitzen.
Wenn man sich da kein Gedanken macht, spielt das Ding beim nächstbesten 
Gewitter verrückt. Im Endeffekt kommt es auf das Verhältnis von Signal- 
zu ggf. einwirkender Störpulsenergie an. Darüber muss man filtern - 
betrachtet über die ganze Signalkette.
Dem Mikrocontroller ist es eigentlich egal, ob das Monoflop in die 
Software verlagert wird - das Problem bleibt das gleiche, nur wäre das 
Monoflop dann überflüssig, weil der µC auch mit einem 1ms-Puls prima 
zurecht kommt.

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Es wurde beteits mehrfach hervir gehoben aber noch öfter ignoriert: Der 
erste Schaltungsentwurf mit Optokoppler und R/C Filter ist bereits gegen 
die üblichen Störungen abgesichert.

Und von unüblichen Störungen hat er nichts erwähnt. Wie gesagt: man kann 
sich einen Knopf an die Backe nähen.

von Peter D. (peda)


Lesenswert?

Lothar M. schrieb:
> Welcher Kasper hat eigentlich diese unsinnige Stör- und Prelldiskussion
> ins Spiel gebracht? Wenn ich die Aufgabenstellung des TO lese, kommt
> rein gar nichts davon vor. Wozu Nebelkerzen werfen?

Störungen können immer und überall einstreuen. Wenn ich z.B. das Statron 
neben dem Hameg einschalte, schaltet sich dessen Meßbereich um.

Ein Optokoppler mit Fototransistor ist recht langsam und filtert gut. 
Aber was passiert auf der Leitung vom Optokoppler bis zum µC?
Für viele Projekte hat es sich bewährt, Eingänge des µC mit 1k..10k in 
Reihe unmittelbar am µC-Pin zu entkoppeln. Das nimmt schonmal vielen 
Transienten die Energie.
Es ist daher nie unsinnig, sich über Störeinflüsse Gedanken zu machen!

von Lutz (Gast)



Lesenswert?

Roland F. schrieb:
> Chantalle schrieb:
>> aber es gibt auch anwendungen wo die probleme
>> bereiten
>
> Kannst du mal ein Beispiel zeigen?

Ich kann mal aus meiner Anwendung ein Beispiel zeigen, das filtert 
direkt die Signale eines ganzen Ports, basiert auf dem gleichen Prinzip 
wie Chantalle2000 beschrieben hat, aber effizient mit BIT Arithmetik, 
der Interrupt benötigt auf einem ATMEGA328 mit 16MHz weniger als 10us 
(8us-9us), der wird je nach Signallänge und Anwendung mit 1kHz bei 
Signal 16ms oder bei kürzeren Signalen z.B. 1ms mit 16 kHz aufgerufen, 
Anpassung OCR1A und Prescaler

Das ganz funktioniert sehr robust auch mit Störungen, im Loop ist jetzt 
nur ein Demo statt der Code meiner Anwendung, das delayMiscoseconds 
steht beispielhaft für den restlichen Code.
Zur Kontrolle mit dem Oszi wird der "erkannte Low Pegel" portDLow auf 
portB ausgegeben.
im Ausdokumentierten Teil wird es Bit Selektiv bewertet, ist von der 
Anwendung abhängig was man möchte

In meiner Anwendung liest ein mega2560 3 Ports ein von digitalen 
Signalen, Schaltkontakte Modellbahn, die bis zu über 20 Meter parallel 
zu den DCC Fahrstromsignalen liegen, ohne Probleme.

Getestet mit einer Arbiträr Sequenz wo die Auslösedauer Nutzsignal der 
minimal Dauer / 2 entspricht und die Störpulse 50 mal länger sind als 
das was ich gemessen habe
Grün unterstrichen ist das Signal was erkannt werden soll und blau 
unterstrichen ist der Bereich mit den Störrungen, die Störungen machen 
aber keine echten Nullpegel, die gehen vielleicht auf 1.5V bis 2V 
runter, das ist das Testsignal für die Software.
Ein weiteres "analoges Testsignal" um dann incl. der RC Tiefpass 
Filterung zu testen gibt es ebenfalls

von Lutz (Gast)


Angehängte Dateien:

Lesenswert?

Lutz schrieb:
> Roland F. schrieb:
>> Chantalle schrieb:
>>> aber es gibt auch anwendungen wo die probleme
>>> bereiten
>>
>> Kannst du mal ein Beispiel zeigen?
>
> Ich kann mal aus meiner Anwendung ein Beispiel zeigen, das filtert

Bei der Anpassung das es auf UNO auch läuft und Reduzierung auf ein 
einfaches Beispiel hat sich ein Fehler eingeschlichen, die Variablen in 
Zeile 5 portDLow und 6 portDHigh stehen auf BOOL, muss aber uint8_t 
sein, gerade gemerkt das es nur auf Pin D0 läuft

von Lutz (Gast)


Angehängte Dateien:

Lesenswert?

Lutz schrieb:
> Lutz schrieb:
>> Roland F. schrieb:
>>> Chantalle schrieb:
>>>> aber es gibt auch anwendungen wo die probleme
>>>> bereiten
>>>
>>> Kannst du mal ein Beispiel zeigen?
>>
>> Ich kann mal aus meiner Anwendung ein Beispiel zeigen, das filtert
>
> Bei der Anpassung das es auf UNO auch läuft und Reduzierung auf ein
> einfaches Beispiel hat sich ein Fehler eingeschlichen, die Variablen in
> Zeile 5 portDLow und 6 portDHigh stehen auf BOOL, muss aber uint8_t
> sein, gerade gemerkt das es nur auf Pin D0 läuft

Ok, zur Kenntnis genommen, Code geliefert und negativ bewertet, aber im 
Vergleich zu Peters Routine läuft diese nun mal robuster

Beide Routinen so den Interrupt eingestellt das bei Peters Routine bei 
einem 4ms Puls 4 mal abgetastet wird und da ich ja mehr werte abfrage 
das 12 mal abgetastet wird.
Mit einer Testsequenz, 4ms Puls 3.5ms Puls 4.4ms plus + pos Störung 4.4 
ms pos Störfolge

bei meiner Routine werden die 4ms erkannt die 3.5ms bewusst nicht mehr, 
die 4.4ms + Störungen werden beide immer zuverlässig erkannt
bei Peters Routine werden die 4ms erkannt die 3.5ms manchmal genauso wie 
die Pulse mit Störungen, die werden manchmal erkannt

Das sind Fakten, aber wer nichts lernen möchte weil er alles weiß, darf 
gerne seinen Frust abbauen und negativ bewerten weil ich sein Ego 
verletzt habe

von Alexander W. (Firma: AW-Elektronik) (alexanderwalter)


Lesenswert?

Nuri O. schrieb:
> Dann hast du mich noch nicht programmieren sehen! Ich bin froh wenn mein
> code die 100ms sieht :D
>
> Muss aber auch sagen, dass ich an programmieren nicht ganz so viel Spaß
> habe. Dafür umso mehr an Schaltung aufbauen, rumspielen, messen und vor
> allem neues lernen.

Vielleicht wäre es an der Zeit, dass du uns mal deinen Code zeigst und 
wir dir Verbesserungsvorschläge machen. Eventuell kommst du dann 
schneller deine Hühnerklappe richtig ausgewertet wird, als wenn du einen 
Umbau deiner Hardware machst.

von Jörg R. (solar77)


Lesenswert?

Lutz schrieb:
> Ok, zur Kenntnis genommen,

Du hast nicht zur Kenntnis genommen dass der TO keine SW-Lösung möchte.

Er ist allerdings scheinbar an gar keiner Lösung mehr interessiert. 
Ansonsten hätte er längst mal Hintergrundinformationen geliefert.


> Das sind Fakten, aber wer nichts lernen möchte weil er alles weiß, darf
> gerne seinen Frust abbauen und negativ bewerten weil ich sein Ego
> verletzt habe

Du beweihräucherst dich vor allem am liebsten selbst, gehörst ja zu den 
privilegierten <10% die es können und richtig machen.

Lutz schrieb:
> Und ja, auch bei denen die das beruflich machen sind sehr viele die das
> nicht gut machen, >90%


Dich ruft man wenn sonst niemand mehr weiterweiß.

> Ich weiß wovon ich da schreibe, weil irgendwer sucht dann ja die
> ursachen

: Bearbeitet durch User
von Lutz (Gast)


Lesenswert?

Alexander W. schrieb:
> Vielleicht wäre es an der Zeit, dass du uns mal deinen Code zeigst und
> wir dir Verbesserungsvorschläge machen. Eventuell kommst du dann
> schneller deine Hühnerklappe richtig ausgewertet wird, als wenn du einen
> Umbau deiner Hardware machst.

Der Code ist doch im Anhang, was willst du eigentlich

hier noch der vergleich vom Ergebnis
https://youtu.be/K2aZe2dSWbM

meine Routine, der erste Puls ist 4ms soll erkannt werden, der zweite 
ist 3.5ms soll nicht mehr erkannt werden, die beiden nächsten haben 
Störungen sollen aber erkannt werden weil ja auch 4.4ms lang, also min 
4ms low

das ist Peters Routine
https://youtu.be/vDS2BaqkluQ

der 4ms Puls wird sauber erkannt (habe den IRQ schneller laufen lassen 
wegen Vergleichbarkeit auf 1 kHz)
die drei anderen werden mal erkannt mal nicht
https://youtu.be/vDS2BaqkluQ

von Lutz (Gast)


Lesenswert?

Jörg R. schrieb:
> Du hast nicht zur Kenntnis genommen dass der TO keine SW-Lösung möchte.
>
> Er ist allerdings scheinbar an gar keiner Lösung mehr interessiert.
> Ansonsten hätte er längst mal Hintergrundinformationen geliefert.
>
>> Das sind Fakten, aber wer nichts lernen möchte weil er alles weiß, darf
>> gerne seinen Frust abbauen und negativ bewerten weil ich sein Ego
>> verletzt habe
>
> Du beweihräucherst dich vor allem am liebsten selbst, gehörst ja zu den
> privilegierten <10% die es können und richtig machen.

Nein, beweihräuchern tun sich hier andere, die haben aber wie du ein 
Problem damit wenn man ihren Ego verletzt

Es wurde mehrfach von denen geschrieben, "dann zeig mal den Code" obwohl 
er zigfach geteilt wurde

Der TO war nicht an Software interessiert weil er es lieber in Hardware 
macht und weil er in Software nicht weiß wie es geht.
Es wurden schlechte Hardwarelösungen vorgestellt, Monoflop, RS FlipFlop, 
was bei Störungen mit langen Leitungen, die ich erst mal annehmen würde 
und nicht ideale Welt voraussetzen würde, niemanden glücklich macht.

Und dann wurde ja auch auf eine Software Routine verwiesen, wozu man ja 
sagen muss, für Schalter abzufragen in der Nähe des Boards ist die ok, 
und wenn es langsam sein darf, kann man Filter davorschalten.

Für kurze Signalpulse zu entstören ist diese Routine aber weniger robust 
als heutige Stand der Technik, deswegen hatte ich diese Lösung 
aufgezeigt.

Und trotzdem war dann eine der Antworten, "Du kannst Dich gerne auch 
sachlich zu meinen Beispielen äußern, aber das
wird Dir nicht gelingen."
Es ist so offensichtlich ...

von R. L. (roland123)


Lesenswert?

Lutz schrieb:
> Der TO war nicht an Software interessiert weil er es lieber in Hardware
> macht und weil er in Software nicht weiß wie es geht.

genau so ist es.

Lutz schrieb:
> Es wurden schlechte Hardwarelösungen vorgestellt, Monoflop, RS FlipFlop,
> was bei Störungen mit langen Leitungen, die ich erst mal annehmen würde
> und nicht ideale Welt voraussetzen würde, niemanden glücklich macht.

denkst du wirklich, dass man das Problem in Hardware nicht lösen kann, 
oder kannst nur du es nicht?
Es ist zwar nicht der Stand der Technik, aber für jemand, der Probleme 
mit der SW und Spaß am Basteln hat, keine schlechte Lösung.

Und bei langen Leitungen mit unbekannten Störungen wirst du um Hardware 
nicht herumkommen, weil du bei einen zerstörten µC-Eingang mit SW nichts 
mehr korrigieren kannst.

von Nemopuk (nemopuk)


Lesenswert?

Manchmal will man es halt hard lösen. Heute bin ich mit meiner Frau zum 
Rhein gefahren, um Schiffe zu gucken. Ein Stream bei Netflix hätte es 
auch getan, aber war halt nicht gewünscht.

von Lutz (Gast)


Lesenswert?

R. L. schrieb:
> denkst du wirklich, dass man das Problem in Hardware nicht lösen kann,
> oder kannst nur du es nicht?

Und schon wieder so eine unglaubliche arrogante Bemerkung weil ihr ja 
alles solche Helden seid.

Ich weiß wie man das Problem in Hardware lösen kann, deswegen weiß ich, 
dass die vorgeschlagenen Lösungen wenn Störungen im Spiel sind nichts 
taugen, weil alles was irgendwie flankengetriggert ist löst eben auf 
Störungen aus, was letztendlich bedeutet das man erst mal filtern muss 
Schmitt Trigger mit Hysterese dahinter und dann mit der Flanke aufs 
FlipFlop, auch hier wäre dann ein RS FlipFlop die bessere Wahl als ein 
Monoflop, weil wenn der Puls so lange ist wie meine längste 
Programmlaufzeit und das Programm keine feste Durchlaufzeit hat, könnte 
ich den gleichen Puls auch 2x zählen, mit einem RS kann man es wie bei 
der Softwarelösung nach der Abfrage zurücksetzen, benötige ich dann 2 IO 
Pins um ein Signal abzufragen, ist spannend, ja, und für Spass kann man 
es so machen, aber wenn wir hier Lösungen diskutieren sollte es auch den 
Raum geben Verbesserungen aufzuzeigen.
Somit, wenn das Signal auf einen µC geht dann gibt es bessere Lösungen 
in Software und auch da sind die Überlegungen zum Filter in 
Zusammenspiel mit der Software eine spannende Sache wenn man es 
optimieren will in puncto Robustheit.
Peters Code für einen ATiny Tasten abzufragen ist ja genau für den Zweck 
auch eine gute Lösung, weil es im Zusammenspiel mit einem RC Tiefpass 
eine robuste Lösung liefert, für Signale die schneller sind und mehr 
Störungen haben ist es dann nicht mehr so robust aber mit ein klein 
wenig mehr Speicher und Rechenleistung kann man es deutlich robuster 
realisieren.

Das muss man ja aufzeugen dürfen, aber dann heist es direkt "sachlich 
wird mir nicht gelingen" als ob diese Code so perfekt ist.
Er ist gut wofür er gemacht wurde, genauso wie mein Code gut dafür ist, 
wofür er gemacht wurde, was aber ja nicht bedeutet das man damit jetzt 
jedes Problem lösen kann.
Neue Probleme erfordern oft auch neue Lösungen, wobei es immer gut ist 
etwas über den Tellerrand zu blicken das man Lösungen für einen weiteren 
Bereich einsetzen kann

von R. L. (roland123)


Lesenswert?

Lutz schrieb:
> Und schon wieder so eine unglaubliche arrogante Bemerkung weil ihr ja
> alles solche Helden seid.

das sagt der richtige.

Lutz schrieb:
> das man erst mal filtern muss
> Schmitt Trigger mit Hysterese dahinter

hat jemand behauptet, dass man in HW nichts filtern muss, um Störungen 
zu eliminieren?

Lutz schrieb:
> Neue Probleme erfordern oft auch neue Lösungen, wobei es immer gut ist
> etwas über den Tellerrand zu blicken das man Lösungen für einen weiteren
> Bereich einsetzen kann

das ist sicher nicht das primäre Anliegen des TO.

von Lutz (Gast)


Lesenswert?

R. L. schrieb:
> Lutz schrieb:
>> Und schon wieder so eine unglaubliche arrogante Bemerkung weil ihr ja
>> alles solche Helden seid.
>
> das sagt der richtige.

Im Gegensatz zu deinen Aussagen sind meine nachvollziehbare Fakten und 
keine aus dem Zusammenhang gerissenen Halbwahrheiten

Aber wenn du das nötig hast, dann tust du mir Leid

von Lutz (Gast)


Lesenswert?

Lutz schrieb:
> Alexander W. schrieb:
>> Vielleicht wäre es an der Zeit, dass du uns mal deinen Code zeigst und
>> wir dir Verbesserungsvorschläge machen. Eventuell kommst du dann
>> schneller deine Hühnerklappe richtig ausgewertet wird, als wenn du einen
>> Umbau deiner Hardware machst.
>
> Der Code ist doch im Anhang, was willst du eigentlich
>
> hier noch der vergleich vom Ergebnis
> https://youtu.be/K2aZe2dSWbM
>
> meine Routine, der erste Puls ist 4ms soll erkannt werden, der zweite
> ist 3.5ms soll nicht mehr erkannt werden, die beiden nächsten haben
> Störungen sollen aber erkannt werden weil ja auch 4.4ms lang, also min
> 4ms low
>
> das ist Peters Routine
> https://youtu.be/vDS2BaqkluQ
>
> der 4ms Puls wird sauber erkannt (habe den IRQ schneller laufen lassen
> wegen Vergleichbarkeit auf 1 kHz)
> die drei anderen werden mal erkannt mal nicht
> https://youtu.be/vDS2BaqkluQ

habe gerade mal geschaut, 3 Leute habe sich die Videos angeschaut aber 5 
haben den Post negativ bewertet

Das sagt doch alles über euch aus

von Chantalle (chantalle2000)


Lesenswert?

Lutz schrieb:
> Das sagt doch alles über euch aus

Das Verhalten dieser Community in diesem Fall erfüllt nicht den Anspruch 
eines Technikerforums.

Es geht offenbar nicht mehr um:
-Inhalte oder Lösungen,
-Nachvollziehbare technische Argumente,
-Faktenbasierte Diskussion,

sondern viel zu oft um:
-Dominanzgehabe,
-Abwertung anderer,
-Verteidigung des eigenen Weltbildes.

im übrigen, ich hatte mir die Videos angeschaut und keine Bewertung zum 
Beitrag abgegeben, soviel dazu
Interessanter Test um die Unterschiede der beiden Routinen aufzuzeigen

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Lutz schrieb:
> meine Routine, der erste Puls ist 4ms soll erkannt werden, der zweite
> ist 3.5ms soll nicht mehr erkannt werden

dann sollte man halt dafür sorgen das diese nicht auslösen, in PeDas 
Software ist schon mal ein guter Anfang und dafür sorgen das Störungen 
eben nicht einkoppeln.

Wenn diese auslösenden 4ms in regelmäßigen Abständen kommen sperrt man 
halt weitere Auslösungen bis zum nächsten erwarten Impuls.
Genauso habe ich Laser Triggerimpulse entstört da die Lasertrigger 
geplant regelmäßig kamen und nur zwischendurch Fehltrigerungen die nicht 
durchgelassen wurden.

von Rainer W. (rawi)


Lesenswert?

Lutz schrieb:
> hier noch der vergleich vom Ergebnis
> https://youtu.be/K2aZe2dSWbM
>
> meine Routine, der erste Puls ist 4ms soll erkannt werden, der zweite
> ist 3.5ms soll nicht mehr erkannt werden, die beiden nächsten haben
> Störungen sollen aber erkannt werden weil ja auch 4.4ms lang, also min
> 4ms low

Willst du jedes Funkenfeuer, dass sich über mehr als 4ms erstreckt, als 
gültigen Puls ansehen? Oder nach welchen Kritierien soll ein gültiger 
4ms-Puls von 4ms Störkram unterschieden werden?
Wenn du einen vernünftigen Mittelwert bestimmen willst, um daran 
Gültigkeit, Dauer und Art von Störungen zu klassifizieren, oder wenn du 
kurze Störpulse als solche erkennen willst, musst du so schnell 
abtasten, dass die kurzen Störpulse aufgelöst werden.

von Lutz (Gast)


Lesenswert?

Joachim B. schrieb:
> dann sollte man halt dafür sorgen das diese nicht auslösen, in PeDas
> Software ist schon mal ein guter Anfang und dafür sorgen das Störungen
> eben nicht einkoppeln.

Wer den Sinn einer Testsequenz nicht versteht sollte da erst mal bei 
sich selber anfangen und nicht herablassend erklären was man machen 
sollte.

Es gibt keine Erwartung wann der nächste Puls kommt

Die kürzesten gemessenen Pulse sind 8 ms, die längsten über 200ms

Die Testsequenz dient einem objektiven Vergleich für die Trennschärfe 
zwischen Falschauslöung und Nichterkennung.
Also warum soll man an einem vernünftigen Test was ändern

von Lutz (Gast)


Lesenswert?

Rainer W. schrieb:
> Willst du jedes Funkenfeuer, dass sich über mehr als 4ms erstreckt, als
> gültigen Puls ansehen? Oder nach welchen Kritierien soll ein gültiger
> 4ms-Puls von 4ms Störkram unterschieden werden?
ź
Nichts verstanden

Die Pulse sind 8ms minimum, aber ab 4ms lass ich sie erkennen, alles 
schon beschrieben, und die Störpulse sind deutlich kürzer wie 
beschrieben, das ist die synthetische Testroutine, wird sozusagen 
übertestet, dann hat man Reserven

Funkenfeuer, haha, lustig, kein Plan, DCC ist das digitalprotokoll, mit 
einer robusten Routine muss man die Kabel nicht separieren

Mir zu erklären das etwas was zuverlässig funktioniert nicht 
funktionieren kjann weil ich das falsch mache, starke Nummer

von Joachim B. (jar)


Lesenswert?

Lutz schrieb:
> Also warum soll man an einem vernünftigen Test was ändern

ok ich wollte nur helfen, aber du weißt es besser es sind deine 
Störungen.
Du erklärst auch nicht wo sie herkommen und wie man sie fernhalten kann, 
hier an Tastatur und Monitor kann das niemand für dich richten.

von Lutz (Gast)


Lesenswert?

Joachim B. schrieb:
> Lutz schrieb:
>> Also warum soll man an einem vernünftigen Test was ändern
>
> ok ich wollte nur helfen, aber du weißt es besser es sind deine
> Störungen.
> Du erklärst auch nicht wo sie herkommen und wie man sie fernhalten kann,
> hier an Tastatur und Monitor kann das niemand für dich richten.

Wieso willst du mir helfen, ich habe zu der Fragestellung wie man Pulse 
empfangen und entprellen meine funktionierende Lösung vorgestellt

Und wieso sagst du ich hätte nicht erklärt wo die störungen her kommen
Das hatte ich beschrieben und auch das bei der Testsequenz die Störungen 
um Faktor 50 länger sind als gemessen
Ursache der Störung auch beschrieben genau wie die Kopplung

Für mich muss keiner was richten, meine Routine arbeitet robust

Peters Routine nicht so robust

von Jörg R. (solar77)


Lesenswert?

Chantalle schrieb:
> Lutz schrieb:
>> Das sagt doch alles über euch aus
>
> Das Verhalten dieser Community in diesem Fall erfüllt nicht den Anspruch
> eines Technikerforums.
>
> Es geht offenbar nicht mehr um:
> -Inhalte oder Lösungen,
> -Nachvollziehbare technische Argumente,
> -Faktenbasierte Diskussion,

Dem TO wurde bereits im ersten Kommentar geschrieben wonach er suchen 
muss. 2 weitere Kommentare später habe ich ihm einen Vorschlag für einen 
entsprechenden Chip gemacht. Weitere sinnvolle Vorschläge folgten dann 
auch noch von anderen Usern.

Der TO gibt aber keine detaillierten Informationen preis. Er kann auch 
nicht erwarten dass ihm hier eine entsprechende Schaltung gezeichnet 
wird, schon deshalb weil er sich viel zu wenig einbringt.

Du und Lutz führen eine Diskussion die den TO überhaupt gar nicht 
interessiert, soviel hat er zumindest von sich gegeben.


> sondern viel zu oft um:
> -Dominanzgehabe,
> -Abwertung anderer,
> -Verteidigung des eigenen Weltbildes.

Unsinn.


Lutz schrieb:
> Und schon wieder so eine unglaubliche arrogante Bemerkung weil ihr ja
> alles solche Helden seid.

Lutz schrieb:
>>> Das sind Fakten, aber wer nichts lernen möchte weil er alles weiß, darf
>>> gerne seinen Frust abbauen und negativ bewerten weil ich sein Ego
>>> verletzt habe

Arrogant und im Ego getroffen bist ausschließlich du selbst. Dazu kommt 
eine gehörige Portion Überheblichkeit. Du merkst allergisch nicht wie du 
hier auftrittst bzw. wie du teilweise wahrgenommen wirst.


PS: Dafür dass du vorgibst Ingenieur zu sein hast du einen zum Teil 
grausamen Schreibstil.

: Bearbeitet durch User
von Mani W. (e-doc)


Lesenswert?

Lutz schrieb:
> Funkenfeuer, haha, lustig, kein Plan,

Lutz schrieb:
> Für mich muss keiner was richten,

Lutz schrieb:
> Mir zu erklären das etwas was zuverlässig funktioniert nicht
> funktionieren kjann weil ich das falsch mache, starke Nummer

Lutz, wenn man solche Dinge, und auch viele andere von Dir,
lesen muss -

dann erweckst Du keinen guten Eindruck, kannst mit anderen Menschen
nicht gut kommunizieren und bist ein Selbstdarsteller...

Meine Meinung!

von Mani W. (e-doc)


Lesenswert?

R. L. schrieb:
> die meisten, die hier 24 Stunden im forum sind, wollen nicht primär
> helfen, sondern ihr ego aufbessern. Mit freundlicher Hilfe für andere
> durch Fachwissen gelingt das nur wenigen. Andere niedermachen, als
> unfähig bezeichnen und beleidigen ist für die meisten die einzige
> Möglichkeit.

Deine Sichtweise, Deine Empfindung!

von Rainer W. (rawi)


Lesenswert?

Lutz schrieb:
> Funkenfeuer, haha, lustig, kein Plan, DCC ist das digitalprotokoll ...

Aus Sicht des "Hühnerklappensignals" ist das kein Unterschied. Das 
Hühnerklappensignal ist das Nutzsignal und der Rest ist Müll aka 
Störung.

Mit der im Anfangspost genannten Signalverlängerung verlagert man 
lediglich das Problem. Im einen Fall muss die Software ausreichend 
häufig abtasten, damit die überkoppelnden DCC-Signale herausgefiltert 
werden können, im anderen Fall muss das Eingangssignal der 
Pulsverlängerungsmimik gefiltert werden, damit keine Fehltrigger 
auftreten. In jedem Fall sollte erstmal definieren, was gültige Signale 
sind und dann muss ausreichend häufig abtasten, um sie zu erkennen.

Nuri O. schrieb:
> 24V Impuls von ca. 1 ms

Lutz schrieb:
> Die kürzesten gemessenen Pulse sind 8 ms, die längsten über 200ms

Lutz schrieb:
> bei meiner Routine werden die 4ms erkannt die 3.5ms bewusst nicht mehr,

Lutz schrieb:
> hier noch der vergleich vom Ergebnis
> https://youtu.be/K2aZe2dSWbM
> ...

Tolle Links:
Video nicht verfügbar
Dieses Video wurde vom Uploader entfernt

Wie soll man da über irgendetwas diskutieren :-(

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Rainer W. schrieb:
>> https://youtu.be/K2aZe2dSWbM
>> ...
>
> Tolle Links:
> Video nicht verfügbar
> Dieses Video wurde vom Uploader entfernt
>
> Wie soll man da über irgendetwas diskutieren :-(

Heute willst du diskutieren, sah gestern anders aus

Gestern habe ich die Videos gesehen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.