Forum: Mikrocontroller und Digitale Elektronik Hilfe bei 74HC595 über Komparator ansteuern, Ansteuerzeiten/Signalqualität


von Felix (failx92)



Lesenswert?

Hallo Zusammen,

folgende Situation:

Ein PIC32MM0128GPM048 auf Board A, hat zu wenige 24V-Ausgänge, weshalb 
ich mit einem 74HC595 auf Board B 16 weitere 24V-Ausgänge schaffen 
möchte.

Ausgangsschaltung auf Board A siehe „24V-Ausgang_Board_A“. Hier ist im 
24V-Ausgang gleichzeitig ein 24V-Eingang auf verschiedene Pins am µC (O9 
und I9). Via Software kann die Funktion gewählt werden, funktioniert, 
macht keine Probleme bei der bisherigen Verwendung.

Bei der Ansteuerung des 74HC595 über diese 24V-Ausgänge kommt es aber zu 
Problemen (den Teilern und Cs für den Eingang geschuldet), diese habe 
ich durch Verwendung eines LM339 umgehen können.

Vref sind hier ½ Vcc, also 12V. Die 24V werden über einen Teiler auf 18V 
reduziert um den nötigen Abstand zu Vcc des LM339 zu erreichen, siehe 
„Input“.

Wie gewünscht sorgt der LM339 für eine hohe Flankensteilheit am Eingang 
des Schieberegisters im Vergleich zu den reinen 24V-Eingängen mit 
Teiler.

Mit Oszi habe ich die Eingangssignale am 595 aufgezeichnet, leider zeigt 
dieser nicht die gewünschte Funktion trotz "sauberer" Signale. Der 
Screenshot ist vom Oszi ist dummerweise einer ohne Daten sondern nur das 
Initialisieren des 595 mit Nullen. Pulsdauer 10ms On und 10ms Off.

Bei Verwendung eines ESP8266 direkt an den 595 funktioniert alles wie 
gewünscht.

Was habe ich übersehen?

Edit: Auf anraten habe ich den Kompletten Schaltplan als ganzes 
angehängt.

Grüße Felix

: Bearbeitet durch User
von Hans (ths23)


Lesenswert?

Glaubst Du die Leute hier haben Lust Deine Schaltplanfragmente zu einem 
vollständigen  Plan zusammen zu setzen? Dir ist (hoffentlich) klar was 
Du da tust, der Außenstehende muß sich erst einmal in Deine 
Gedankengänge einarbeiten, um überhaupt Hilfestellung geben zu.
Auch wenn es momentan wohl gerade schick ist für jeden IC ein eigenes 
Blatt zu malen, bleibt es eine Unsitte, die anderen Leuten das 
Verständnis der Schalung unnötig erschwert.

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


Lesenswert?

Felix schrieb:
> Ausgangsschaltung auf Board A siehe „24V-Ausgang_Board_A“.
Und warum gehst du da nicht einfach ohne Komparator über einen 
(hinreichend niederohmigen) Spannungsteiler direkt auf den 595?

Warum ist in diesem Ausgang eigentlich der unnötige C9 drin, der beim 
Einschalten der 24V jedes Mal geladen und beim Ausschalten erst noch 
entladen werden muss?

> Mit Oszi habe ich die Eingangssignale am 595 aufgezeichnet, leider zeigt
> dieser nicht die gewünschte Funktion trotz "sauberer" Signale.
Was tut er denn stattdessen? Wie gut passt das Timing an den Pins des 
595 zu dem, was er an diesen Pins laut Datenblatt erwartet?

von Michael B. (laberkopp)


Lesenswert?

Felix schrieb:
> Ein PIC32MM0128GPM048 auf Board A, hat zu wenige 24V-Ausgänge

Hmm, wenn T109 nur -20V Gate-Spannung aushält, an orange aber 24V 
anliegen, killt C309 den T109.

Wer auch immer den Murks verzapft hat.

Felix schrieb:
> leider zeigt dieser nicht die gewünschte Funktion trotz "sauberer"
> Signale

Tja. An deiner extrem aufwändigen Schaltung liegt es demnach also nicht.

Felix schrieb:
> Bei Verwendung eines ESP8266 direkt an den 595 funktioniert alles wie
> gewünscht.

Klingt, als ob man die 595 Steuersignale vor den nicht 
kurzschlussgeschützten nicht rückwirkungsgeschutzten 24V Pegelwandlern 
an T209 abgreifen sollte.

von Rainer W. (rawi)


Lesenswert?

Felix schrieb:
> Ein PIC32MM0128GPM048 auf Board A, hat zu wenige 24V-Ausgänge

Um es genau zu sagen: Ein PIC32MM0128GPM048 hat gar keine 24V-Ausgänge. 
Laut Datenblatt vertragen die GPIOs im günstigsten Fall maximal 6V (DS 
Kap. 29.0).

von Felix (failx92)


Lesenswert?

Erstmal Vielen Dank für eure Antworten.

Hans schrieb:
> Glaubst Du die Leute hier haben Lust Deine Schaltplanfragmente zu einem
> vollständigen  Plan zusammen zu setzen?

Entschuldigung mein Fehler, ich dachte das wäre so üblich. Ich hab den 
Plan hochgeladen.

Lothar M. schrieb:
> Und warum gehst du da nicht einfach ohne Komparator über einen
> (hinreichend niederohmigen) Spannungsteiler direkt auf den 595?
>
> Was tut er denn stattdessen? Wie gut passt das Timing an den Pins des
> 595 zu dem, was er an diesen Pins laut Datenblatt erwartet?

Das Problem ist, das Board A ist schon fertig so im Einsatz und im 
Nachhinein wollte man noch kleine LED Anzeigen(Ausgänge) haben, da hatte 
ich dann durch andere Projekte die Idee mit den Schieberegistern.

Der 595 macht gar nichts, kein Ausgangssignal. Ich habe das Datenblatt 
von TI hoch und runter gelesen sowie manche Applikations Notes und 
leider komme ich nicht dahinter wo das Problem liegt, deshalb ja der 
Beitrag hier im Forum.

Mir ist bewusst das die Ansteuerung durch Board A weit weg von Optimal 
ist, aber ich kann das Design leider nicht ändern sondern nur versuchen 
eine Lösung zu suchen.

Grüße
Felix

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


Lesenswert?

Felix schrieb:
> Der 595 macht gar nichts, kein Ausgangssignal. Ich habe das Datenblatt
> von TI hoch und runter gelesen
Nochmal: der 595 erwartet einen bestimmten zeitlichen Ablauf und 
bestimmte Pegel an seinen(!) Eingangspins. Ich sehe da nur Messungen am 
(eigenartig gezeichneten) Komparator. Hast du nachgemessen, ob diese 
Pegel und Zeiten an den Pins des 595 zu dessen Datenblatt passen. Aus 
dem Oszi-Screenshot kann man da leider nichts sehen, weil weder 
Spannungen noch Zeiten zu erkennen sind.

Irgendwie erkenne ich in dem Suchbild übrigens nicht, dass SER vom IC2 
irgendwo angeschlossen ist, wenn die Brücke zu SER_DIRECT offen ist.

Es ist übrigens eine ganz schlechte Idee, ein Signal SER und eines SER' 
zu nennen, weil man den "Mückenschiss" beim ersten Blick gar nicht 
sieht.

Es ist übrigens auch eine schlechte Idee, die Schieberegister nicht 
zwischendurch mal mit SRCLR# zurückzusetzen. Denn wenn ein einziges Mal 
ein ESD-Spike auf dem Takt kommt, ist fürderhin die Übertragung um 1 Bit 
versetzt. Ergebnis: die falschen LED leuchten.

: Bearbeitet durch Moderator
von Felix (failx92)


Lesenswert?

Lothar M. schrieb:
> Felix schrieb:
>> Der 595 macht gar nichts, kein Ausgangssignal. Ich habe das Datenblatt
>> von TI hoch und runter gelesen
> Nochmal: der 595 erwartet einen bestimmten zeitlichen Ablauf und
> bestimmte Pegel an seinen(!) Eingangspins. Ich sehe da nur Messungen am
> (eigenartig gezeichneten) Komparator. Hast du nachgemessen, ob diese
> Pegel und Zeiten an den Pins des 595 zu dessen Datenblatt passen. Aus
> dem Oszi-Screenshot kann man da leider nichts sehen, weil weder
> Spannungen noch Zeiten zu erkennen sind.

Ich erstelle morgen nochmal bessere Screenshots vom Oszi mit Pegeln etc.
Als Datenblatt habe ich dieses benutzt

https://www.ti.com/lit/ds/symlink/sn74hc595.pdf?ts=1706511779986&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252Fde-de%252FSN74HC595

so wie ich das verstehe ist auf Seite 6 bei 6.6Timing Requirements die 
Maximale Schaltfrequenz Schaltfrequenz angegeben und die Minimalen 
Zeiten welche das Signal anstehen muss. Jedoch nicht das man nicht auch 
langsamer sein dürfte?

An die Grafik habe ich mich gehalten, wann welches Signal kommen soll. 
Nur mit dem Unterschied das ich OE und SRCLR# fest verbunden habe.

6.7 Switching Characteristics erklärt dann wie schnell der 595 reagiert?

Habe ich etwas übersehen?

> Irgendwie erkenne ich in dem Suchbild übrigens nicht, dass SER vom IC2
> irgendwo angeschlossen ist, wenn die Brücke zu SER_DIRECT offen ist.
>

Den Teil kann man noch ignorieren, mit dem Plan bin ich noch nicht ganz 
fertig.

> Es ist übrigens eine ganz schlechte Idee, ein Signal SER und eines SER'
> zu nennen, weil man den "Mückenschiss" beim ersten Blick gar nicht
> sieht.

In der Tat, das überarbeite ich gleich.

> Es ist übrigens auch eine schlechte Idee, die Schieberegister nicht
> zwischendurch mal mit SRCLR# zurückzusetzen. Denn wenn ein einziges Mal
> ein ESD-Spike auf dem Takt kommt, ist fürderhin die Übertragung um 1 Bit
> versetzt. Ergebnis: die falschen LED leuchten.

Ja das hatte ich auch erst überlegt, kostet mich aber wieder einen Pin, 
als workaround schiebe ich 1 mal pro Sekunde ein neues Bitmuster raus. 
(zumindest war so der Plan)

Grüße

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


Angehängte Dateien:

Lesenswert?

Felix schrieb:
> Ja das hatte ich auch erst überlegt, kostet mich aber wieder einen Pin,
> als workaround schiebe ich 1 mal pro Sekunde ein neues Bitmuster raus.
Du kannst das auch 10x pro Sekunde rausschieben. Dann bist du halt 10x 
pro Sekunde um ein Bit versetzt. Denn ausser Tritt ist ausser Tritt.

> (zumindest war so der Plan)
Den musst du nochmal durchdenken. Denn auch wenn das jedes 
Arduino-Tutorial so macht, wird die grundlegende Idee nicht besser. 
Nicht umsonst wird der Pin im Datenblatt dynamisch vor jeder Übertragung 
passend angesteuert.

> kostet mich aber wieder einen Pin
Ich würde probieren, den RCLK zu invertieren und das invertierte Signal 
an den SRCLR# zu legen. Denn wenn du dir das Timingdiagramm mal genauer 
anschaust, dann siehst du, dass die quasi "gegenläufig" also 
"invertiert" sind.

: Bearbeitet durch Moderator
von Jens M. (schuchkleisser)


Lesenswert?

Lothar M. schrieb:
> Denn ausser Tritt ist ausser Tritt.

Nein.
Den SRCLR kann man vollständig ignorieren, wenn man ihn fest auf 0 legt.
Das Schieberegister wird einfach die letzten 8 reingeschobenen Bits 
ausgeben, beim nächsten rewrite ist wieder alles gut, sofern nicht 
wieder ein ESD-Extrabit kommt. Dann hilft dir aber SRCLR auch nicht... 
;)

Felix schrieb:
> Jedoch nicht das man nicht auch
> langsamer sein dürfte?

Gibt es auch nicht, das Ding ist statisch. Das kannst du mit Tastern 
machen, wenn die entprellt sind.

Felix schrieb:
> Der 595 macht gar nichts, kein Ausgangssignal.

Nochmal zur Verdeutlichung:
- du steuerst mit dem µC die 24V-Ausgänge an
- diese liest du wieder ein
- über den Komparator auf 5V "digitalisiert"
- auf die Steuersignale des Schieberegisters
- Es gibt keine Ausgangsaktivität am SR

Checkliste:
- SRCLR high?
- OE low?
- Daten bei steigender Flanke an SER (und entsprechend lange 
vorher/nachher) richtig?
- Nach dem reintakten aller Daten einmal RCLK high->low "getickert"?

Der Chip ist der einfachste Schieberegisterchip den es gibt, aber man 
muss die Daten lange genug vor der steigenden Flanke anlegen und 
beachten das es noch das Latchsignal RCLK gibt, da ist oft der Bock 
drin.
Timing halt, ähnlich wie beim SPI mit den Modes, die bestimmen welche 
Flanke wann wie was auslöst.

Felix schrieb:
> Bei Verwendung eines ESP8266 direkt an den 595 funktioniert alles wie
> gewünscht.

Wie das?
Der ESP ist 3,3V, der 595 5V. Das dürfte nur knapp ausgehen.
Welche Software ist auf dem ESP? Am Ende ein schnell zusammengestricktes 
SPI-out oder SerOut vom Arduino?
Dann isses dein Timing...

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Jens M. schrieb:
> Dann isses dein Timing...

Oder er hat Masse der PIC32MM0128GPM048 Platine nicht mit Masse der 
75HC595 verbunden, oder wer weiss was sich noch alles durch das 
Schaltplangemetzel ergibt.

von Jens M. (schuchkleisser)


Lesenswert?

Michael B. schrieb:
> Oder er hat Masse der PIC32MM0128GPM048 Platine nicht mit Masse der
> 75HC595 verbunden

Oh ja, das ist auch ein Klassiker.

von Stephan S. (uxdx)


Lesenswert?

Jens M. schrieb:
> Der Chip ist der einfachste Schieberegisterchip den es gibt, aber man
> muss die Daten lange genug vor der steigenden Flanke anlegen und
> beachten das es noch das Latchsignal RCLK gibt, da ist oft der Bock
> drin.

Das ist auch ein beliebter Klassiker: Daten mit SRCLK reinschieben, aber 
nicht mit RCLK rausgeben :) zumal er an den Pins rumknapst :)

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


Lesenswert?

Jens M. schrieb:
> Das Schieberegister wird einfach die letzten 8 reingeschobenen Bits
> ausgeben
Stimmt auch wieder, der Sync erfolgt ja einfach zum Schluss mit dem 
blauen RCLK im Oszi-Screenshot. Also Entwarnung, das Problem liegt 
woanders. Die Messungen an den IC-Pins werden es zeigen.

: Bearbeitet durch Moderator
von Peter D. (peda)


Lesenswert?

Der Schaltplan ist wirklich die Krätze. Man braucht ewig da 
durchzusehen, was wie verbunden ist. Und dann noch als PNG. Wenigstens 
als PDF, dann kann man es beliebig skalieren.

Ein Komparator ist kein Schmitt-Trigger, er kann im Umschaltpunkt 
schwingen und dann verzählt sich der HC595.
Nimm Spannungsteiler 24V->4V und dahinter Schmitt-Trigger (74HCT14).

von Felix (failx92)


Angehängte Dateien:

Lesenswert?

Hallo,
es hat einen Moment gedauert den Fehler mit dem Oszi zu finden.

Wie Peter D. schon richtig schrieb lag es am Schwingen vom Komparator. 
Der Wechsel von 0 auf 1 war i.O. der Wechsel von 1 auf 0 war das Problem 
hier kamen noch ein Paar Pulse nach.

Zum testen habe ich dann einen Rückführwiderstand eingesetzt mit dem hat 
die Schaltung dann funktioniert.

Ich hab den Plan dann wie empfohlen mit einem Schmitt-Trigger statt 
Komparator überarbeitet,  dabei ist mir aufgefallen das es den 595 
gleich mit Integriertem Schmitt-Trigger gibt.

Gibt es beim integrierten Irgendwelche Fallstricke?

Im Anhang mal beide Varianten, diesmal als PDF :-)

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


Lesenswert?

Felix schrieb:
> dabei ist mir aufgefallen das es den 595 gleich mit Integriertem
> Schmitt-Trigger gibt.
Wie ich schon mal sagte: du brauchst da gar keinen Komparator und/oder 
Schmittrigger. Ein simpler Spannungsteiler reicht aus. Der muss wegen 
des C109 im Ausgangstreiber nur spürbar niederohmiger sein als 20k/3k9. 
Ich würde da mal mit 4k7/1k direkt auf die Eingänge des 595 gehen. Dann 
muss das auch nicht extra einer mit Schmitttriggereingängen sein.

: Bearbeitet durch Moderator
von Jens M. (schuchkleisser)


Lesenswert?

Felix schrieb:
> Gibt es beim integrierten Irgendwelche Fallstricke?

Der ist seltener.
Den normalen gibts von 31 Herstellern bei tausend Distris.

: Bearbeitet durch User
von Peter D. (peda)



Lesenswert?

Felix schrieb:
> dabei ist mir aufgefallen das es den 595
> gleich mit Integriertem Schmitt-Trigger gibt.

Ja, die HCS-Serie:
https://www.digikey.de/de/products/detail/texas-instruments/SN74HCS595PWR/13532278

Felix schrieb:
> Gibt es beim integrierten Irgendwelche Fallstricke?

Sollte auch gehen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Was schon ärgerlich ist, daß man bei einem neuen Design des 595 nicht 
endlich auch das Ausgangsregister mit auf Reset legt. So werden 
weiterhin nach einem Power-On Zufallswerte ausgegeben.

Ich habe daher notgedrungen den /OE mit auf die CPU gelegt, d.h. bis 
gültige Daten anliegen, werden die Ausgänge auf hochohmig gehalten.

von Daniel D. (danielduese)


Lesenswert?

Peter D. schrieb:
> Was schon ärgerlich ist, daß man bei einem neuen Design des 595 nicht
> endlich auch das Ausgangsregister mit auf Reset legt. So werden
> weiterhin nach einem Power-On Zufallswerte ausgegeben.
>
> Ich habe daher notgedrungen den /OE mit auf die CPU gelegt, d.h. bis
> gültige Daten anliegen, werden die Ausgänge auf hochohmig gehalten.

Dazu den "Reset" MR bzw. SRCLR vor Power on auf  pulldown legen und dann 
mit I/O auf high ziehen.

: Bearbeitet durch User
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.