Wunderschönen guten Morgen,
ich greife aus einer bestehenden Schaltung auf einer Leitung folges ab:
Eine Rechteckspannung 200kHz mit einer Tal-Spitze von 0 -> 4,5V.
Davon hab ich 20 Amplituden, dann kommt eine lange Pause.
Das Spiel wiederholt sich ca.3x die Sekunde...
1
1 2 3 4 5 6 7 8 9 20
2
...____#_#_#_#_#_#_#_#_#_...._#_____...
Nun möchte ich gern nach der fallenden 20. Flanke, also am Ende des
Blockes eine Messung durchführen (an einem anderen Pin)...
Nun hatte ich versucht mit einem Arduino das Ende der 20. fallenden
Flanke zu ermitteln, aber ich würde sagen dass das der Arduino nicht
schafft.
Grob wie ich rangegangen bin:
(Arduino Mega 2560, Interrupt auf Pin 2, absteigender Counter für die 20
Flanken, Berechnung mit micros() um sicherzustellen, dass ich da im
Block bin)
----
Nun war meine Idee das Signal irgendwie zu modulieren (umganssprachlich
das Signal glätten), um nur einmal die fallende Flanke zu ermitteln und
die vorher versuchten Berechnungen an welcher Stelle ich bin entfallen
zu lassen.
Alternativ auch einfach die erste Steigende Flanke, da die 20er-Länge ja
fest ist.
1
1 2 3 4 5 6 7 8 9 20
2
Vorher: _#_#_#_#_#_#_#_#_#_...._#_______
3
Nachher: _########################_______
Da ich kein Elektrotechniker bin, weiß ich nicht, wie ich das
realisieren kann bzw. nach was ich suche.
Mit freundlichen Grüßen
Christian
Vielen Dank,
das scheint genau das zu sein was ich brauche.
Jetzt brauch ich also einen nicht Nachtriggerbaren Monoflop den ich
mithilfe von einem Widerstand und einen Kondensator auf 100µs einstelle.
Richtig?
Kennt jemand einen den ich dafür verwenden könnte?
bzw. Wo schaut man wenn man so ein Bauteil braucht?
Mit freundlichen Grüßen
Christian
Christian S. schrieb:> Wunderschönen guten Morgen,>> ich greife aus einer bestehenden Schaltung auf einer Leitung folges ab:>> Eine Rechteckspannung 200kHz mit einer Tal-Spitze von 0 -> 4,5V.> Davon hab ich 20 Amplituden, dann kommt eine lange Pause.
20 Pulse, nennt sich Burst.
> Das Spiel wiederholt sich ca.3x die Sekunde...> 1 2 3 4 5 6 7 8 9 20> ...____#_#_#_#_#_#_#_#_#_...._#_____...>> Nun möchte ich gern nach der fallenden 20. Flanke, also am Ende des> Blockes eine Messung durchführen (an einem anderen Pin)...> Nun hatte ich versucht mit einem Arduino das Ende der 20. fallenden> Flanke zu ermitteln, aber ich würde sagen dass das der Arduino nicht> schafft.
Deine Programmierung schafft es nicht, der Arduino schon.
> Grob wie ich rangegangen bin:> (Arduino Mega 2560, Interrupt auf Pin 2, absteigender Counter für die 20> Flanken, Berechnung mit micros() um sicherzustellen, dass ich da im> Block bin)
Spar dir die die Lyrik, zeige originalen Quelltext.
> Nun war meine Idee das Signal irgendwie zu modulieren (umganssprachlich> das Signal glätten),
Unfug. Modulieren und Glätten sind vollkommen verschiedene Dinge.
> Da ich kein Elektrotechniker bin, weiß ich nicht, wie ich das> realisieren kann bzw. nach was ich suche.
Das kommt der Sache schon näher.
Man kann das über einen externen Interrupt machen, der auf die fallende
Flanke eingestellt ist. Dazu noch ein Timer für das Timeout und bissel
Logik.
Christian S. schrieb:> Vielen Dank,> das scheint genau das zu sein was ich brauche.>> Jetzt brauch ich also einen nicht Nachtriggerbaren Monoflop den ich> mithilfe von einem Widerstand und einen Kondensator auf 100µs einstelle.
Das allein reicht nicht. Denn du willst ja relativ genau an der letzten
Flanke irgendwas messen. Das kann das Monoflop nicht allein, da braucht
es mehr Logik.
> Kennt jemand einen den ich dafür verwenden könnte?> bzw. Wo schaut man wenn man so ein Bauteil braucht?
Es reicht nicht. Wenn du schon einen Arduino hast, kannst du das mit dem
machen, wenn gleich das sicher nicht so ganz so einfach ist wie eine LED
blinken lassen.
Du kannst einen Timer extern takten und dann einfach auf -20 vorladen.
Dann erfolgt nach 20 Takten ein Overflow-Interrupt.
Christian S. schrieb:> Das Spiel wiederholt sich ca.3x die Sekunde...
Also >300ms Pause.
Das kannst Du mit einem weiteren Timer feststellen. Wenn z.B. nach 100ms
keine Flanke erfolgt (Pin-Change Flag), dann ist das ne Pause, d.h. den
Zähltimer auf -20 setzen.
Falk B. schrieb:> Das allein reicht nicht. Denn du willst ja relativ genau an der letzten> Flanke irgendwas messen. Das kann das Monoflop nicht allein, da braucht> es mehr Logik.
Ich hab den Eindruck, dass es nicht so genau sein muss und es genug ist,
nahe der ersten Flanke nach der langen Pause zu lesen.
> Es reicht nicht. Wenn du schon einen Arduino hast, kannst du das mit dem> machen, wenn gleich das sicher nicht so ganz so einfach ist wie eine LED> blinken lassen.
K.A. ob der Ardiino schnell genug ist. Desshalb hab ich die
Hardware-Lösung vorgeschlagen. Schadet ja auch nichts, wenn ein Anfänger
beide Wege kennt.
Christian S. schrieb:> Kennt jemand einen den ich dafür verwenden könnte?
Steht doch im Wiki drinnen. Nimm irgendwas aus der 40xx-Serie oder der
74xx-Serie.
Ich kenn nicht mal die Versorgungsspannung vom Aruino. 74xx geht nur mit
5 Volt.
Ich bin absichtlich etwas dürftig mit meinen Antworten, weil ich dich
dazu bringen will, selbst zu recherhieren.
Vorkauen will dir hier kaum jemand was. Spezifische Fragen werden aber
gerne gegeben.
Falk B. schrieb:> 20 Pulse, nennt sich Burst.
Danke, wieder was gelernt
Falk B. schrieb:> Deine Programmierung schafft es nicht, der Arduino schon.
Dem widerspreche ich nicht.
Falk B. schrieb:> Unfug. Modulieren und Glätten sind vollkommen verschiedene Ding
gut, da mir der Fachbegriff fehlt, habe ich versucht was verständliches
darzulegen
Falk B. schrieb:>Das allein reicht nicht. Denn du willst ja relativ genau an der letzten>Flanke irgendwas messen. Das kann das Monoflop nicht allein, da braucht>es mehr Logik.
Meine Idee war es nun, an der steigenden Flanke einen Timer für den
Moment der fallenden Flanke zu setzen.
Den Monoflop wollte ich nutzen um nicht in 20 Interrupt behandlungen zu
laufen, die ich nicht benötige.
Peter D. schrieb:>Du kannst einen Timer extern takten und dann einfach auf -20 vorladen.>Dann erfolgt nach 20 Takten ein Overflow-Interrupt.>...> Also >300ms Pause.> Das kannst Du mit einem weiteren Timer feststellen. Wenn z.B. nach 100ms> keine Flanke erfolgt (Pin-Change Flag), dann ist das ne Pause, d.h. den> Zähltimer auf -20 setzen.
Ok, das hört sich ganz interessant an, das werde ich mir mal anschauen.
Nick M. schrieb:> Ich bin absichtlich etwas dürftig mit meinen Antworten, weil ich dich> dazu bringen will, selbst zu recherhieren.> Vorkauen will dir hier kaum jemand was. Spezifische Fragen werden aber> gerne gegeben.
Ich hab schon mehr Infos und anregungen bekommen als ich erwartet hatte!
Danke schonmal an alle Beteiligten!
Ich hab auf jedenfall erstmal Futter für die nächsten Tage
LG Christian
Christian S. schrieb:> Eine Rechteckspannung 200kHz mit einer Tal-Spitze von 0 -> 4,5V.> Davon hab ich 20 Amplituden, dann kommt eine lange Pause.> Das Spiel wiederholt sich ca.3x die Sekunde...>>
1
> 1 2 3 4 5 6 7 8 9 20
2
> ...____#_#_#_#_#_#_#_#_#_...._#_____...
3
>
>> Nun möchte ich gern nach der fallenden 20. Flanke, also am Ende des> Blockes eine Messung durchführen (an einem anderen Pin)...> Nun hatte ich versucht mit einem Arduino das Ende der 20. fallenden> Flanke zu ermitteln, aber ich würde sagen dass das der Arduino nicht> schafft.>> Grob wie ich rangegangen bin:> (Arduino Mega 2560
Also, der Controller selber wäre mit dieser Aufgabe keinesfalls
überfordert, nichtmal näherungsweise (wird ja vermutlich mit 16MHz
betrieben).
Alles, was Scheiße ist, ist dein Programm. Und es ist deswegen Scheiße,
weil es auf dem Arduino-Software-Framework basiert, denn das ist bereits
Scheiße.
Also: weg von Arduino, das ist ein Irrweg. Die Hardware kannst du
immerhin weiter verwenden. Du mußt nur lernen, wirklich selber zu
programmieren...
c-hater schrieb:> Also, der Controller selber wäre mit dieser Aufgabe keinesfalls> überfordert, nichtmal näherungsweise (wird ja vermutlich mit 16MHz> betrieben).
Ja deswegen war ich etwas überrascht, aber natürlich in meiner Umsetzung
schon...
Vielleicht gibt es auch noch andere Probleme, die sich später noch
zeigen werden.
> Alles, was Scheiße ist, ist dein Programm. Und es ist deswegen Scheiße,> weil es auf dem Arduino-Software-Framework basiert, denn das ist bereits> Scheiße.>> Also: weg von Arduino, das ist ein Irrweg. Die Hardware kannst du> immerhin weiter verwenden. Du mußt nur lernen, wirklich selber zu> programmieren...
Ja, da mag ich dir zustimmen, aber irgendwo muss man anfangen und auch
da hilft das Framework immerhin einen einfachen Einstieg zu bekommen.
Programmieren ist ja nur eines der Kompetenzen die man benötigt um die
Sachen umzusetzen...
Und auch Programmieren teilt sich in viele Bereiche, es mag Leute geben
die gut programmieren können und trotzdem nicht in der Lage sind auf
Anhieb einen Mikrocontroller zu programmieren.
Bis vorhin hab ich nicht gewusst, dass die Timer/Counter unabhängig
sind.
Gut, aber was empfiehlst du den um vom Arduino-Software-Framework
wegzukommen?
Und was verstehst du darunter überhaupt?
Ich benutze jetzt nicht die IDE sondern nutze CLion, aber im im
Hintergrund nutz ich ja trotzdem das Arduino-Framework.
Nun, ich lese mal weiter die Doku um mein Unterfangen mit den
Registern/Timer/Counter umzusetzen.
Und später versuch ich mal die Hardwarelösung, obwohl die wohl obsolet
ist, wie es mir scheint.
LG Christian