Hallo, ich habe ein Problem mit meinem Arduiono und den Interrupts. Ich habe ein Signal, das 2,5 Volt hat. In das Signal sind negative Peaks auf ca. 0,5 bis 1 V geprägt. Also so: ----- ------- 2,5V | | | | |_| 0,5V _____________0V (Gnd) Mit dem Arduino möchte ich nun die positiven und negativen Flanken detektieren um eine LED ein, bzw. auszuschalten. Außerdem sollen die negativen Flanken gezählt werden. Zum Testen habe ich das Signal mit einem Taster näherungsweise dargestellt. Alles hat funktioniert. Wenn ich aber mein reales Signal, dass ich habe an den Pin anlege funktioniert es nicht mehr, da das Signal anscheinend zu stark rauscht. Es gibt kleinere Peaks, die ich nicht haben will, die von 2,5V aus ca. 200mW nach oben und untern reichen. Also insgesamt rauscht das Signal ungefähr 400mW breit. Die LED flackert nur noch uns es werden viel zu viele negative Flanken gezählt. Werden diese Peaks auch schon als Flanken detektiert? Was kann ich dagegen tun?
Wo hast Du das Signal angeschlossen? An den Komparator, einen analogen Eingang oder einen digitalen?
rollmops schrieb: > ich habe ein Problem mit meinem Arduiono und den Interrupts. Wenn es ein 5V-Arduino ist dann hast du schon deswegen Probleme weil dein Signal sich in einem undefinierten Bereich bewegt. Um dein Signal sauber zu detektieren brauchst du einen Komparator dazwischengeschaltet.
rollmops schrieb: > Was kann ich dagegen tun? Eine ordentliche Schaltung aufbauen ? Ein Eingang ist doch nicht per Definition für jedes noch so krude Signal geeignet was du da reinstopfst. Sondern man muss sich schon an die Datenblattvorschläge was als high und was als low erkannt wird halten. Also brauchst du bei deinem schlechten Signal eine Signalpräkonditionierung, die Rauschen entfernt und die Signalpegel auf high und low verstärkt. Vielleicht ein externer Komparator. Vielleicht ist dein Signal auch ok, und man kann elektronisch entstören, so wie man Taster entprellt, weil man weiss, was ein zulässiges Signal wäre und was Störungen sein müssen. Übrigens liefern Taster auch kein saoberes Signal bei dem man Flanken zählen kann. Wenn es damals also funktionierte, hast du die Fehlfunktion bloss nicht gesehen....
Beim testen hat mein Programm natürlich die Flanken mitgezählt, als der Taster geprellt ist. Aber ich wusste ja, dass das passiert und habe es toleriert. Ich wollte ja nur sehen on mein Programm so funktioniert. Ich habe schon eine kleine Schaltung gebaut. Die ist aber noch falsch. Ich weiß leider nicht wie ich die Zeitkonstante ausrechne. Ich habe nur einen Kondensator mit 1µF, Widerstände habe ich aber alles bis 1 Mega Ohm. Würde es mit einem Spannungsteiler machen ( vllt. 1:10). Kann es sein, dass man bei meiner Schaltung fie Zeitkonstante so ausrechnet: ((R1*R2)/(R1+R2))/C = tau ??? Kann mir bitte jemand die richtige Gleichung sagen? Ein weiteres Problem, das ich habe, ist dass die Peaks beim Ausgangssignal (roh) von 0 bis auf -5 Volt fallen. An meinem Arduino Anschluss geht das Signal aber nur von 2,5 V los. Liegt aber am Spannungsteiler. Ich bin mir nicht sicher was mit meinem Kondensator nicht stimmt (bzw. Schaltung), wenn ich den Aufbau eine Weile laufen lasse, dann verschwinden die negativen Peaks auf dem Oszi. Der Kondensator lässt sie nicht mehr durch. Wenn ich dann die Masse von meinem Eingangssignal kurz von der Masse des Arduinos trenne und dann wieder anschließe, passt wieder alles. Aber man kann zuschauen wie in einer bis zwei Minuten die Peaks immer näher an 2,5 V rangehen, bis sie im rauschen untergehen.
Wenn Dein Signal -5V ist, dann nimm eine Z-Diode (5,1V) und nen Pullup (10k) zur Pegelverschiebung.
rollmops schrieb: > kannst du mir bitte die schaltung sagen? https://translate.google.de/#de/en/Schaltung Unten links auf das Lautsprechersymbol klicken.
Hallo, schöne Idee um Informationen zwischen verschiedenen Potenzialen zu übertragen. Ich habe so etwas schon mal im LTSpice simuliert und hat gut funktioniert. Entferne einfach den unteren 1 MOhm. Die Pulse hinter dem Kondensator müssen ja von 5 V nach 0 V gezogen werden, nicht von 2,5 V. Schöne Grüße Michal
rollmops schrieb: > Ich habe schon eine kleine Schaltung gebaut. Du willst es nicht kapieren? Dein 5V Arduino weiss nicht was er mit einem Pegel von 2.5V anfangen soll.
Arduinoquäler schrieb: > Du willst es nicht kapieren? Dein 5V Arduino weiss > nicht was er mit einem Pegel von 2.5V anfangen soll. Ich sag doch, dass ich weiß, dass der Spannungsteiler falsch ist. Bei 1:1 werden die 5V auf 2,5V geteilt. Ich will aber noch nichts neues bauen, weil ich nicht weiß wie ich die Zeitkonstante ausrechne.
Du brauchst nich viel rechnen. In meinen Simulationen hat es mit breitem Spektrum von R und C sehr gut funktioniert, auch runter in nF und kOhm Bereich. Das Konzept ist gut. Das einzige was wichtig ist, die High Zeiten müssen wesentlich länger als die Low Pulse dazwischen sein, damit sich das High Level über den oberen pull up Widerstand wieder aufladen kann. Sonst wandert das Low Pegel langram hoch. Gräße Michal
rollmops schrieb: > Ich will aber noch nichts neues bauen, Dann mache es so: Michal P. schrieb: > Entferne einfach den unteren 1 MOhm.
Michal P. schrieb: > Das einzige was wichtig ist, die High Zeiten müssen wesentlich länger > als die Low Pulse dazwischen sein, damit sich das High Level über den > oberen pull up Widerstand wieder aufladen kann. Das muß garnicht sein. Die Eingangsdioden beim AVR 'klemmen' das Signal auf den richtigen Pegel.
m.n. schrieb: > Die Eingangsdioden beim AVR 'klemmen' das Signal > auf den richtigen Pegel. ??? Nö. Was das Signal am Arduino-Eingang wieder hochzieht ist einzig und alleine der pull up Widerstand. Es würde sogar der µC interne 40 kOhm funktionieren. Sonst ist der Eingang alleine ja hochimpedant passiv.
:
Bearbeitet durch User
Habe es jetzt hinbekommen. Habe einen Optokoppler von meinem Kollegen vorgeschlagen bekommen, damit funktioniert es einwandfrei. Vielen Dank für eure Hilfe!!!
rollmops schrieb: > Ich habe schon eine kleine Schaltung gebaut. Wenn die eingetragenen Signalpegel und Formen richtig sind: Einfach GND der Quelle mit +5V des uC verbinden. Wenn das nicht geht: Einfach die unteren 1M entfernen, ich würde auch R mit 19k und C mit 100nF dimensionieren, weil sonst die Einschwingzeit, also die Zeit zwischen einschalten der Versorgung und Funktion der Schaltung zu lange dauert. Falls deine Quelle niederohmig ist (mehr als 20mA liefern kann): Noch zumindest 4k7, besser 10k vor den C in Reihe.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.