PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Entstörung bei Arduino Beschaltung



Moppi
07.10.2018, 09:09
Guten Morgen!

Als Beispiel dieses Tutorial zur Beschaltung (https://www.arduino.cc/en/Tutorial/ShiftOut) mit dem Schieberegister.

Das ist ein 10µF an der Speisespannung. Desweiteren wird drauf verwiesen, dass der Latch-Pin mit 0.1F (100µF) entstört werden kann, falls ein Flackern auftritt.

Dazu folgende Fragen.

1. Wann tritt denn - wenn - so ein undefinierter Zustand ein, beim Logikspannungswechsel oder generell, auch wenn ein eindeutiger Logikpegel anliegt?
2. Warum zur Entstörung an einem Logikeingang 10x mehr Kapazität, als zur Entstörung der Speisespannung (denke, dass der 10µF dazu da sein soll)?
3. Wie berechnet man die Kapazität an einem Logikeingang - ist das nicht auch von der Pulslänge abhängig? - Die Pulssignale sollen idealer Weise ja nicht verfälscht oder gar ganz unterdrückt werden, sondern eher stabilisiert.


Freundliche Grüße
Moppi

shedepe
07.10.2018, 09:39
Hallo,
sollte man bei CMOS eigentlich nicht so machen. Habe im Datenblatt leider auf die Schnelle nichts finden können was passiert wenn man ein Pegel zwischen High und Low anlegt. Je nach verbauten Mosfets bist du dann in einem Hochohmigenzustand (Beide Mosfets sind eher nicht leitend) oder ein Mosfet leitet schon mehr als der andere. Aufjedenfall ist es nicht gut wenn man definierte Zustände haben will.

Ich halte die 0,1F an der Stelle ehrlich gesagt für unnötig, wenn nicht sogar schädlich. Habe auch schon verschiedene Schaltungen mit einem 74HC595 gemacht und wüsste nicht warum man diesen Kondensator einbauen sollte, wenn man nicht Blödsinn in seinem Programm gemacht hat oder starke Störfelder hat. Wenn ich raten müsste, dann hat der Author des Artikels damit nur versucht ein anderes Problem zu kaschieren, von dem er sich nicht bewusst war, dass er es hat ;) Z.B. schlechter Kontakt im Breadboard oder sein Code macht manchmal Blödsinn und togglet zu viel.

Wenn ich diese berechnen müsste würde ich mir anschauen, was ist die kürzeste Pulslänge die ich habe und das Ganze dann mit einer geschätzten Ausgangs bzw. Leitungsimpedanz als RC Tiefpass auslegen -> Dabei wird aber automatisch deine Flankensteilheit schlechter (Flanken haben ja sehr hochfrequente Anteile).

Edit: Das PDF beschreibt CMOS ganz gut https://www.fairchildsemi.com/application-notes/AN/AN-77.pdf

Moppi
07.10.2018, 10:07
Danke für die Auskunft erst mal! Ich hatte das auch gelesen, dass Kapazitäten nicht gut sein sollen, weil man damit andere Probleme schafft, ich habe das leider nicht mehr genau im Kopf, wie das gemeint war. Die 0.1F sind auch nicht nötig. Ich hatte das schon mal ausprobiert, aus Interesse. Aber die Überlegung dazu mit diesem Flackern... Neigen Arduino Ausgänge dazu oder ATmega328-Ausgänge? Bei den Eingängen kennt man das ja schon, dass im unbeschalteten Zustand die Logikpegel nicht stabil sind. An den Ausgängen von CMOS-Logik-Gattern jedenfalls stören schon 10 oder 15µF. Weil ich gerade welche in Betrieb habe, hatte ich das ausprobiert. Außer dass die Logikpegel an den Ausgängen dann futsch sind, ist nichts weiter passiert. Pull-Down-Widerstände dagegen können aber die Logik-Pegel stabilisieren.

shedepe
07.10.2018, 10:28
Ich vermute eher, dass die Breadbord Verbindung für Probleme sorgt. Die Ausgänge eines Atmegas flackern aufjedenfall nicht. Wenn du da High setzt dann liegt da auch High an. Eingänge sind ja ein komplett anderer Schuh dabei.

Wenn du das ehh grade testest: Miss mal die Stromaufnahme der CMOS Schaltung mit und ohne Kondensator wenn du schnell hin und her schaltest. Die könnte mit Kondensator wesentlich höher liegen.
Bei Highspeed CMOS Schaltungen versucht man aufjedenfall die Kapazitäten so gering wie möglich zu halten.

Moppi
07.10.2018, 11:46
Leider kann ich mit meinem Billigmultimeter hier nichts messen. Das scheint defekt zu sein oder so. Es hat ja einen Messbereich 200µA, aber es zeigt überhaupt nichts an. Wobei der IC 74xx32 max 20µA nehmen soll. :(