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
Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
10.12.2019, 15:04
Beitrag #1
Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
Hallo,

ich benötige eine Monoflop-Funktion die sicher ein Pulsverhältnis von ~20% am Ausgang bei ~60-700 Hz am Eingang liefert.
Das wichtigste ist, schnellst möglich auf die steigende Flanke am Eingang zu reagieren. Als Ergebnis soll (sofort) ein High-Pegel von, sag ich mal, 20% am Ausgang raus kommen.

Mein Lösungsansatz funktioniert natürlich nicht. Weshalb flackert die Impulslänge am Ausgang? Ist dies wegen der Verwendung von Interrupt und Timer?
Wie kann ich das Problem lösen?

Danke, Gruß Alex.

Code:
// byte 0-255
// int -32.768 bis 32.767
// long -2,147,483,648 bis 2,147,483,647
// word 0 bis 65535
//
// unsigned int 0 bis 65,535
// unsigned long 0 und 4,294,967,295
//


byte triggerPin = 2;
byte ausgangPin = 13;
volatile unsigned long neueZeit, zaehler , dauer;
unsigned long drehzahl , alteZeit , zeit;


void setup() {
  
  pinMode(triggerPin, INPUT_PULLUP);
  alteZeit = 0;
  neueZeit = 0;
  zaehler = 0;

  attachInterrupt(0, impuls, RISING);    // Interrupt0 Pin2

}

void loop() {
  
  if (neueZeit > alteZeit) {
    drehzahl = (unsigned)(long)((60000 * zaehler / (neueZeit - alteZeit))/4); // 4 Impulse / Umdrehung
    zeit = (neueZeit - alteZeit); // Zeit zwischen zwei Impulsen
    alteZeit = neueZeit;
    zaehler = 0;
    dauer = map(drehzahl, 60, 9000, 55555, 370);
    }
  
  else {
    drehzahl = 0;
    dauer = 500;
  }
  if (zeit >= dauer) {
     digitalWrite(ausgangPin, LOW);
    }
}

void impuls() {

  zaehler++;
  neueZeit = micros();
  digitalWrite(ausgangPin, HIGH);
  //alteZeit = micros();
  //delayMicroseconds(dauer);              // wait for a second
  //digitalWrite(ausgangPin, LOW);
}
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2019, 15:18
Beitrag #2
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
Ich glaube, Du bringst da etwas durcheinander. Ein Monoflop hat kein Pulsverhältnis.
Er löst bei Anliegen einer Triggerflanke einmalig für eine bestimmte Zeit aus.

Soll der Monoflop retriggerbar sein? Wenn während der aktiven Zeit ein neuer Triggerimpuls kommt soll die Zeit dann neu beginnen zu laufen oder erst ablaufen, bevor auf einen neuen Triggerimpuls reagiert wird?

Wie lange soll die aktive Zeit dauern?
Was triggert den Monoflop und in welchen Abständen?

Du wirst mit hoher Wahrscheinlichkeit keinen Interrupt brauchen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2019, 15:19 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2019 15:20 von MicroBahner.)
Beitrag #3
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
20% von was? Was verstehst Du unter einem Highpegel von 20%? Der Arduino hat nur digitale Ausgänge. Da ist der Highpegel immer 100% ( von Vcc, mal abgesehen vom internen Spannungsabfall bei Belastung des Ausgangs )
Vielleicht erklärst Du mal verständlich was Du tatsächlich willst. Du solltest auch mal beschreiben wozu das ist. Dann kann man sich das leichter vorstellen.
( Kommentare im Programm sind auch sehr hilfreich )

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2019, 19:21
Beitrag #4
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
Ich brauche dies für eine Zünanlage, diese arbeitet wie ein Trafo. So lange der Eingang auf High ist wird gezündet. Es soll vom gewünschten Zündzeitpunkt 20° lange gezündet werden. (V8 Motor)
Ich brauche also ein Monoflop welches am Ausgang ca. 22% Einschaltdauer von der Gesamt-Pulslänge (Puls zu Puls Zeit) hat. (Frequenzabhängig)
Da sich ja die Frequenz ändert, muß sich auch die Zeit ändern.

Ohne Interrupt dauert's länger bis der Ausgang auf high Level geht. Zumindest so wie ich es probiert habe.

Ich bin blutiger Anfänger. Hab damals nur viel mit Basic und Visual Basic gemacht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2019, 19:28
Beitrag #5
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
Dann erkläre mal, wie der Arduino 22% der Dauer eines Signals auf HIGH schalten soll, wenn er die Dauer genau dieses Signals erst hinterher weiß?

Oder soll sich das auf die Dauer des davor anliegenden Signals beziehen, also hinterherlaufen?

Mit einem Monoflop hat das aber überhaupt nichts zu tun.

Wie genau müssen die 22% sein? Der Wert ist rechentechnisch ungünstig. Tun es auch 25% (1/4)?

Als Startwert müsste man dann die Leerlaufdrehzahl nehmen. Wie lang soll da der Impuls sein? Das dürfte dann auch wohl die Mindestlänge werden.

Wenn Du Dir damit aber den Motor zerlegst, dann beschwere Dich nicht bei uns.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2019, 21:20 (Dieser Beitrag wurde zuletzt bearbeitet: 10.12.2019 21:22 von MicroBahner.)
Beitrag #6
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
(10.12.2019 19:21)Alex1328 schrieb:  diese arbeitet wie ein Trafo. So lange der Eingang auf High ist wird gezündet.
Das verstehe ich jetzt nicht. Was hat das mit einem Trafo zu tun? Und so wie ich eine Zündung beim Motor kenne, zündet die genau einmal - im richtigen Moment der Kolbenstellung. Oder von welchem Eingang redest Du jetzt? Vielleicht ist das heutzutage ja anders ...

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2019, 01:14
Beitrag #7
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
...Zündung in nem Benzinmotor... V8 soso... also üblicherweise ist dafür ein Unterbrecher verbaut gleich unterm Zündverteiler...
Und das mit nem uP ersetzen ist irgendwie doch daneben weil der uP muß sich ja mit der Kurbelwellenstellung synchroniseren sonst geht der Zündimpuls ins Leere....zudem gibt es eben durch die Programmlaufzeit einen Jitter beim erzeugen des Zündimpulses...
@TO ....das war dann wohl eine Denksportaufgabe Dodgy
bk Moderator

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2019, 08:00
Beitrag #8
RE: Monostabile Kippstufe mit konstantem Puls/Pausen Verhältnis
Soll ich jetzt erklären wie eine Multispark Zündanlage funktioniert, weshalb diese nötig ist,.... oder kann/will mir jemand helfen. Und nein, es ist kein Unterbrecher verbaut. Es geht nicht um eine Klassische Zündspule.

Ich brauche die Funktion eines MONOFLOP mit veränderbarer Pulsdauer. Da brauch nix im voraus berechnet werden. Wie soll dies auch funktionieren. Es muss eben nur die Frequenz gemessen werden und je nach Frequenz die Pulslänge berechnet werden.

Es soll einfach das Verhältnis Puls/Pause bei verschiedenen Eingangsfrequenzen gleich bleiben.
Damit der Zeitpunkt stimmt, ist es erforderlich innerhalb von <20µs steigende Flanke am Eingang den Ausgang ebenfalls, für die nötige Zeit, auf High zu setzen.

Also MONOFLOP mit veränderbarer Zeit.

Das Eingangssignal ändert sein Verhältnis Puls/Pause. Entscheidend davon ist nur die steigende Flanke.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schrittmotor mit Puls/Richtung Steuern Günni 6 4.028 19.01.2018 10:30
Letzter Beitrag: Tommy56
  Arduino Puls Sensor zum laufen bringen damaris 0 3.212 10.07.2014 20:11
Letzter Beitrag: damaris

Gehe zu:


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