Hallo Besucher, der Thread wurde 2,8k mal aufgerufen und enthält 12 Antworten

letzter Beitrag von maik am

8-Kanal Puffer mit 20mA pro Pin?

  • Hallo,


    ich versuche gerade für meine FPGA-Experimente ein kleines Board mit 8-stelliger 7-Segment-Anzeige zusammenzubasteln. Basis hierfür sind zwei 8-Bit Schieberegister 74HC595. Ein Schieberegister steuert die 8 Segmente (7-Segmente + Punkt), das zweite Schieberegister schaltet die 8 gemeinsamen Kathoden für das Mulitplexen über n-Kanal MOSFETs (BSS138) durch.


    Da ich also gleich achtfach mulitplexe, möchte ich die LEDs auch mit gut 20 mA ansteuern, damit noch gut Helligkeit übrig bleibt. Das schafft der 74HC595 nicht, der hat so um die 6 mA pro Pin, wenn ich das Datenblatt nicht falsch lese.


    Kennt jemand einen 8-fachen nicht-invertierenden Puffer der bei 3,3 Volt 20 mA pro Pin liefert?


  • Kennt jemand einen 8-fachen nicht-invertierenden Puffer der bei 3,3 Volt 20 mA pro Pin liefert?

    Der ULN2803 wird gerne als LED-Treiber benutzt und sollte das hinbekommen. Ist dann aber zusätzlich.


    Nachtrag: Der geht leider gegen GND und deine Anzeigen sind schon gemeinsame Kathode. Wird also wohl nicht funktionieren. Schau dir mal den TD62783 an, der ist ein Highside driver. Gibts bei Reichelt als UDN2981.

  • Danke für den Tipp, das sieht vielversprechend aus. Dafür müssen die LEDs aber "anders herum rein" - damit könnte ich meine BSS138 zur Schaltung der gemeinsamen Kathoden ersetzen.


    Vielleicht schalte ich VCC für die einzelnen Leuchtdioden mit einem p-Kanal MOSFET (IRML2244) durch - das würde zwar invertieren, das kriege ich aber auf Seiten des FPGAs natürlich wieder gerade...

  • So, habe jetzt einfach BSS84 p-Kanal MOSFETs (die sind superbillig - und die 10 Ohm Widerstand stören hier nicht) als Verstärker vorgesehen. Wie ich mein Glück kenne, habe ich die jetzt falsch herum eingebaut...



    edit: Gerrit, ich habe deinen Tipp mit dem UDN 2981 jetzt leider erst gesehen. Das sieht passend aus! Wenn ich die acht SOT32 BSS84 Layout-technisch nicht gut auf die Platine bekomme, dann wäre das eine gute kompakte Lösung!

  • Sieht schick aus, aber du weisst schon, dass man das fertig kaufen kann? Ist eine Standard-Lösung für Arduinos mit serielle Ansteuerung (über zwei Signalleitungen):
    https://www.aliexpress.com/ite…-Arduino/32654081007.html


    Hier noch eine Lösung mit 2 x 74HC595. Wie machen die das ganz ohne Transistoren?
    https://www.aliexpress.com/ite…5-drives/32332893686.html

  • Ich Dummerchen vernachlässige anscheinend schon fast gewohnheitsmäßig die Marktsicht und fange schonmal an zu basteln... autsch.


    Na ja, ist ja auch in Hobby.


    Zur Lösung mit dem MAX7219: Das ist natürlich genau das, was man hierfür braucht. Kleiner Schönheitsfehler: Der MAX7219 will zwischen 4 und 5,5 Volt Betriebsspannung, aber ich möchte gerne eine Lösung, die ich direkt mit einem PMOD-Port auf meiner FPGA-Platine verbinden kann - und da stehen nur 3,3 Volt an. Ergo bräuchte ich noch ein bisschen Kabelei, um die 5 Volt irgendwo herzubekommen. Machbar, aber nicht *ganz* das, was mir vorschwebte.


    Zur 2 x 74HC595-Lösung: Ich habe keine Ahnung, wie die das ohne Transistoren (oder sonstige Verstärkerschaltung) gemäß Datenblatt hinbekommen. Ich vermute Folgendes:


    • Die haben herausgefunden, dass die 74HC595 mehr Strom liefern bzw senken, als im Datenblatt (6 mA pro Pin) steht. Würde mich nicht wundern, wenn die z.B. auch 10 mA liefern könnten. Das könnte ja auch schon hell genug sein.
    • Normalerweise sind ja nicht alle Segmente gleichzeitig und dauerhaft aktiv. Der worst-case, dass alle Segmente die 8 mit Dezimalpunkt anzeigen, ist ja "selten". Im "Mittel" können die 74HC595 es vielleicht wuppen.
    • Vielleicht bricht ja einfach die Spannung ein, wenn man den 74HC595 zu viel abverlangt. Dann würde halt die Helligkeit etwas schwanken aber es würde wohl kein magischer Rauch aufsteigen.


    Ich hingegen versuche, strikt nach Datenblatt zu gehen und möchte auch den worst-case abgedeckt haben. Das kann den Unterschied machen zwischen einer preiswerten Lösung, die in 99,9% der Fälle einfach funktioniert (und in den restlichen Fällen auch nicht abrauchen wird) und einer Lösung, die absolut overengineered und unwirtschaftlich ist (aber vielleicht uns alle überleben könnte).

  • Ich Dummerchen vernachlässige anscheinend schon fast gewohnheitsmäßig die Marktsicht und fange schonmal an zu basteln... autsch.


    Na ja, ist ja auch in Hobby.


    Zur Lösung mit dem MAX7219: Das ist natürlich genau das, was man hierfür braucht. Kleiner Schönheitsfehler: Der MAX7219 will zwischen 4 und 5,5 Volt Betriebsspannung, aber ich möchte gerne eine Lösung, die ich direkt mit einem PMOD-Port auf meiner FPGA-Platine verbinden kann - und da stehen nur 3,3 Volt an. Ergo bräuchte ich noch ein bisschen Kabelei, um die 5 Volt irgendwo herzubekommen. Machbar, aber nicht *ganz* das, was mir vorschwebte.


    Dann musst Du nur etwas weitersuchen: MAX6951


    Der funktioniert auch mit Deinen 3,3V am PMOD-Port der FPGA-Platine (und auch mit 5V beispielsweise am Arduino).


    Und wenn man dann noch etwas Arbeit reinsteckt kommt dabei sowas raus:



    Ich glaube, ich habe die Platine damals (tm) in Eagle gezeichnet. Ich habe im Moment auch keine Ahnung, ob es die SMD-7Segment-Anzeigen noch in "so klein" gibt. Typenbezeichnung habe ich nämlich auch nicht parat.


    Funktioniert jedenfalls am PMOD-Port einwandfrei.


    Falls das jedoch etwas für Dich wäre, dann schmeiß ich den Eagle nochmal an und erzeuge Gerberfiles...


    Gruß
    Thomas


    PS: Ich habe mir gerade mal die PMOD-Spezifikation angesehen. Es gibt den "Pmod Interface Type 2 (SPI)", den habe ich (noch) nicht berücksichtigt. Der erwartet nämlich die Daten- und Clock-Leitung auf bestimmten Pins. Ich habe nur den "Pmod Interface Type 1 (GPIO)" berücksichtigt und mir die Data- und Clock-Leitung so auf die Pins gelegt, wie ich sie benötigte... Aber man könnte ja ggf. das Eaglefile nochmal ansprechend anpassen, falls es einem wichtig wäre...

  • Wow, das ist eine sehr hübsche Platine! Ich habe hier dummerweise schon die meisten Bauteile für den ursprünglichen Ansatz herumliegen - ich werde also erstmal sehen, dass die auf einer Platine "verbraucht" werden. Technisch ergibt Dein Ansatz jedenfalls mehr Sinn.


    Über JP2 gibst Du vermutlich die PMOD-Signal wieder raus? Hast Du vorgesehen, mehrere Anzeigen zu kaskadieren? Ich hatte für meine Bastelei vorgesehen, dass ich einfach auf der linken Seite bei Bedarf noch ein paar höherwertige Stellen dranklemmen kann (das ist ja bei einem Schieberegister super-easy).

  • Über JP2 gibst Du vermutlich die PMOD-Signal wieder raus? Hast Du vorgesehen, mehrere Anzeigen zu kaskadieren? Ich hatte für meine Bastelei vorgesehen, dass ich einfach auf der linken Seite bei Bedarf noch ein paar höherwertige Stellen dranklemmen kann (das ist ja bei einem Schieberegister super-easy).

    Ne, JP1 und JP2 sind einfach parallel geschaltet. Ich wollte einfach nur eine alternative Anschlußmöglichkeit haben (und habe sie letztlich nicht genutzt).


    Gruß
    Thomas

  • So, hier mal ein Update zu dem, was raus geworden ist:





    Läuft jetzt wie von mir erhofft. Was habe ich gelernt? Die BSS138 n-Kanal MOSFETs (Q1 bis Q8) sind *sehr* empfindlich gegen ESD. Als ich in meinem Plüschschlafanzug mit meinen Plüschpuschen auf meinem Plüschteppich mit Plüschsitz das zusammengebraten habe, sind doch tatsächlich und sehr überraschend einige von denen hops gegangen. Äußerte sich in Segmenten, die dauerhaft schwach oder volle Pulle geleuchtet haben - die musste ich dann nochmal rauspulen.


    Die p-Kanal FETs scheinen da deutlich robuster zu sein.

  • Jeder MOSFET ist empfindlich gegen ESD. Wenn sie mal in eine Schaltung eingebaut sind, ists (je nach Schaltung) wesentlich besser, weil dann das Gate nicht mehr so hochohmig zu den anderen Pins ist. Ein (idealer) FET zieht am Gate keinen Strom - also kann sich die Spannung ungehindert aufbauen, bis die Oxidschicht auf dem Chip, die das Gate vom Rest isoliert, durchbricht. Danach zieht er dann Strom am Gate... Es ist übrigens nicht mal nötig, die FETs zu berühren - unverpackt auf dem Tisch liegend mit aufgeladenem Körper darüber herumfuchteln reicht auch, um sie zu zerstören. Mein 'LieblingsFET' (super empfindlich): BS170

  • Womöglich kann ja die Eingangskapazität des FETs einen groben Hinweis geben, wie übel es mit der ESD-Empfindlichkeit aussieht:


    - BSS138: 27 pF
    - BS170: 60 pF


    Zum Vergleich:
    - Si2302DS: 340 pF (die werde ich in Zukunft voraussichtlich statt BSS138 verbauen, da viel nettere Daten bei gutem Preis)
    - AO3401: 645 pF (p-Kanal FETs, die ich verbaut habe - die alle überlebt haben)



    Meine Milchmädchenüberlegung: Je kleiner die Kapazität, desto schneller ist das Gate auf Zerbröselspannung für das Oxid, wenn Ladung herumfliegt.