- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 36

Thema: 4x7 Seg. mit 3 Ader SW SPI, Einstieg mit BASCOM u. ATtiny45

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133

    Asynchron gemultiplexte 4 X 7 Segment Speicheranzeige mit 74xx595 für 2 Ader SW-SPI

    Hallo,
    ich hatte da noch ein paar Chips rumliegen und wie immer zu wenig Pins an meinem ATtiny45. Wie der Vorgänger wird diese Anzeige auch nur mit 2 Ader in SW-SPI angesteuert.

    Bei dieser neuen Version ist es aber nicht mehr notwendig die einzelnen Ziffern vom µC aus zu multiplexen. Die einmalige Ausgabe aller 4 Ziffern wird in den kaskadierten Schieberegistern gespeichert und durch einen externen Takt zb von einem 555, an die Siebensegmentanzeige ausgegeben.

    Die Inverter sorgen dafür, daß durch inaktiv schalten von Output Enable am 595 alle Ausgänge hochohmig werden, bis auf die, die gerade zur Segmentansteuerung gebraucht werden.

    Jetzt brauch ich nur per SPI entsprechende Daten dann auszugeben, wenn sie wirklich anfallen und kann dadurch Recourcen zum Multiplexen einsparen.

    Na gut, sowas könnte man sicher auch einfach haben. Für mich war und ist es eine schöne Übung. Konnte bisher nur 2 Ziffern realisieren, da mir noch zwei 595er fehlen.

    Code:
                                                   VCC                  .-----------------.
                                                    +                   |       .---------)-.  irgendein
                                                    |      .------------)-------)---.     | |      Takt
                                                    o------)------------)-----. | .-)-----)-)-------<
                                                    |      |            |     | | | | | | | |
          Seg A                                     |     ===           |     o_o_o_o_o_o_o_o
     D1.->|--o--   Q0-------------------------------)--.  GND           |    |  4017         |
       |     |B                              __     |  |                |    |1_ _ _ _ _ _ _ |
       |->|--)--   Q1---------------o------o|1 |o---o  |                |     o o o o o o o o
       |     |     Q2-------------o-)------o|  |o---)--o       ---------)--.  | | | | | | | |
             |     Q3-----------o-)-)------o|  |o---)--)------'    /|   |  |      | | |     |
             |     Q4---------o-)-)-)------o|  |o---)--)------o--O< |---)--)------. | |     |
             |     Q5-------o-)-)-)-)------o|  |o---)--)------'    \|   |  |      | | |     |
             |     Q6-----o-)-)-)-)-)------o|  |o---)--)----.   Inverter|  |      | | |     |  SPI data
             |            | | | | | |     -o|  |o---o  |    |           |  '------)-)-)-----)-------<
        Seg A|            | | | | | |   o--o|__|o---)--)--. |           |         | | |     |
     D2  ->|-o            | | | | | |   |   595     |  |  | |           |         | | |     |  SPI clock
             |            | | | | | |   |    __     |  |  | o-----------)---------)-)-)-----)-------<
     D3  ->|-o            | | | | | o---)--o|1 |o---o  |  | |           |         | | |     |
             |            | | | | o-)---)--o|  |o---)--o  | |           |         | | |     |
     D4  ->|-'            | | | o-)-)---)--o|  |o---)--)--' |      /|   |         | | |     |
                          | | o-)-)-)---)--o|  |o---)--)----)-o--O< |---)---------)-. |     |
                          | o-)-)-)-)---)--o|  |o---)--)----)-'    \|   |         | | |     |
     4 X 7 Seg            o-)-)-)-)-)---)--o|  |o---)--)----o           |         | | |     |
     mit gem. Anode       | | | | | |   | -o|  |o---o  |    |           |         | | |     |
                          | | | | | |   o--o|__|o---)--)--. |           |         | | |     |
                          | | | | | |   |    595    |  |  | |           |         | | |     |
                          | | | | | |   |    __     |  |  | |           |         | | |     |
                          | | | | | o---)--o|1 |o---|  |  | |           |         | | |     |
                          | | | | o-)---)--o|  |o---)--o  | |           |         | | |     |
                          | | | o-)-)---)--o|  |o---)--)--' |      /|   |         | | |     |
                          | | o-)-)-)---)--o|  |o---)--)----)-o--O< |---.         | | |     |
                          | o-)-)-)-)---)--o|  |o---)--)----)-'    \|   |         | | |     |
                          o-)-)-)-)-)---)--o|  |o---)--)----o           |         | | |     |
                          | | | | | |   | -o|  |o---'  |    |           |         | | |     |
                          | | | | | |   o--o|__|o------)--. |           |         | | |     |
                          | | | | | |   |    595       |  | |           |         | | |     |
                          | | | | |    ===             |  | |           |         | | |    ===
                          | | | |      GND             |  | |      /|   |         | | |    GND
                          | | |                        |  | | .--O< |---)---------)-)-.
                          | |                          |  |   |    \|   |         | | |
       eventuell         Q6                           Q0  |   |         |         | | |
       Treiber                                                          |         | | |
         /|     Digit 1                                                 |         | | |
      --< |-------------------------------------------------------------)---------' | |
         \|   D2 -------------------------------------------------------)-----------' |
           D3 ----------------------------------------------------------              |
         D4 --------------------------------------------------------------------------'
    
    
    
    
                            Pin Belegung
    
               74HC595N                          HEF4017B
                 __                                 __
           Q1 -o|1 |o- VCC                    Q5 -o|1 |o- VCC
           Q2 -o|  |o- Q0                     Q1 -o|  |o- MR
           Q3 -o|  |o- Ds                     Q0 -o|  |o- CP0
           Q4 -o|  |o- OE (low aktiv)         Q2 -o|  |o- CP1 (low aktiv)
           Q5 -o|  |o- STcp                   Q6 -o|  |o- Q5-9 (low aktiv)
           Q6 -o|  |o- SHcp     .             Q7 -o|  |o- Q9
           Q7 -o|  |o- MR (low aktiv          Q3 -o|  |o- Q4
          GND -o|__|o- Q7'                   GND -o|__|o- Q8

    PS Frisch vom Basteltisch weiß ich noch nicht ob es versteckte Fehler gibt. Bis jetzt funktioniert es perfekt. (Hoffe natürlich auch, das ich die ASCII Art fehlerfrei hinbekommen habe

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn man die Anzeigen gar nicht gemultiplext ansteuern will, kann man sich den 4017 und die Transistoren ganz sparen, und die Anzeigen direkt an die HC595 legen. Und die Anoden fest auf VCC. Das geht aber nur wenn die Anzeigen nicht schon mit den Segmenten verbunden sind. Sonst wäre es einfacher statt der ganzen Logic einen kleinen µC (Tiny261 ) zu nehmen.

    Bei der Schaltung so wie gezeigt braucht man wirklich die OE Pins. Es könnte noch der Anschluss für die Datenübernahme beim 595 fehlen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Das geht aber nur wenn die Anzeigen nicht schon mit den Segmenten verbunden sind
    @Besserwessi: Danke für die Vorschläge. Leider muß ich multiplexen. Liegt an der Art des Displays. Wie im anderen thread schon beschrieben, ist es eine 4-fach Anzeige in einem Block. Zur Ansteuerung aller 4 Ziffern (28 Segmente) gibt es nur 11 Anschlüsse. (1 Anschluß (gemeiname Anode) pro Ziffer = 4 und 7 Anschlüsse der gleichen parallel geschalteten Segmente aller Ziffern)

    Datenübenahme klappt. Am 595 sind OE und STcp parallel geschaltet. Wenn dort getoggelt wird, gehen die Daten vom Shiftregister ins Outputregister. und spätestens beim nächsten Toggle auf die Ausgänge.

    Anzeige ist ähnlich dieser mit CODE A: http://www.leds.com.hk/pdf/49KT40281AD.pdf

    Gruß
    Searcher
    Geändert von Searcher (24.07.2011 um 13:43 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    So, die asynchron gemultiplexte 4-fach Siebensegmentanzeige mit SPI Interface existiert nun nicht mehr nur auf dem Steckbrett.

    Klicke auf die Grafik für eine größere Ansicht

Name:	AsynchronMultilpexed_4X7_Seg_gesamt.jpg
Hits:	15
Größe:	29,3 KB
ID:	19463 Klicke auf die Grafik für eine größere Ansicht

Name:	AsynchronMultilpexed_4X7_Seg_innen.jpg
Hits:	12
Größe:	33,8 KB
ID:	19464 Klicke auf die Grafik für eine größere Ansicht

Name:	AsynchronMultilpexed_4X7_Seg_unten.jpg
Hits:	15
Größe:	42,3 KB
ID:	19465

    Der Anzeigeblock ist für Multiplex vorgesehen und war bisher auf Lochraster nur mit Vorwiderständen für die Segmente aufgebaut. Nun wurde auf 2 weiteren Platinen die Schaltung nach angehangenem Schaltplan hinzugefügt, die ein Offline multiplexen durch Speicherung in Schieberegistern ermöglichen.

    Die oberste Platine enthält den Memoryblock mit den vier Schieberegistern. Die darunter die Transistorzifferntreiber, den 4017er Dekadenzähler und den LUV04 sechsfach Inverter, Taktgenerator. Die unterste trägt den Anzeigeblock mit den Segment-LED Vorwiderständen.

    Die anzuzeigende Information wird über zwei SPI Adern, DATA und CLOCK, zur Anzeige übertragen - GND und VCC natürlich auch mit dem SPI Sender verbunden. Die 74HC595 speichern die 4 Byte solange bis sie von anderen Bytes überschrieben werden. Die Verschaltung mit HEF4017 und Taktgenerator bringen die gespeicherten Informationen im Multiplex zur Anzeige.

    Dadurch, daß das Ganze in HW realisiert wurde, wurden doch einige Verdrahtungsarbeiten fällig. Eigentlich wollte ich Höhe der beiden Zusatzplatinen auf die Höhe der Anzeige begrenzen. Das war mir jedoch nicht möglich. Damit ich wenigstens die angepeilte Fläche nicht überschritt, habe ich die vier Schiebergister im Huckepack auf die Platine gebracht und geriet doch noch in der Enge in Verdrahtungsnot. Einige Lötstellen sind nicht so schön, wie ich sie gerne gahabt hätte, egal - elektrisch einwandfrei ist besser als schöne geschmolzene Isolation bei Nachbesserungsversuchen.

    Bei der nächsten wird es besser ...


    Gruß
    Searcher
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Schaltplan_7_Seg.jpg  
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Die Anzeige war mir doch etwas duster und habe das Display wieder umgebaut. Neuer Schaltplan anbei.

    Damit die parallel geschalteten Ausgänge der 74HC595 nicht gleichzeitig eingeschaltet werden können, wird nur jedes zweite high an den Ausgängen des 4017 zur Durchschaltung genutzt. Nachteil vorher: die Segmente sind durch die gleichmäßige Taktung länger ausgeschaltet als es sein müßte, nur um ein sicheres Abschalten der Ausgänge vor Einschalten der nächsten Ausgänge zu gewärleisten.

    Über Kondensator C2 wird nun, sobald ein Zwischenschritt auftritt, der 4017 sofort mit einer kleinen Verzögerung weitergeschaltet und die nächsten Ziffernsegmente aktiviert.

    Damit ist die Ausschaltedauer gegenüber der Einschaltedauer erheblich verkürzt. Außerdem wurden die LED-Vorwiderstände auf 360 Ohm verringert und die Doppelpunkte in der Mitte der Anzeige auch noch angeschlossen. Pro Segment sind damit ca 5mA bei 5V VCC eingestellt. Der HEF4017B ist etwas schwach und seine Ausgangsspannung sinkt etwas, wenn die Transistoren viele Segmente treiben müssen. Wird bei Gelegenheit gegen 74HC4017 ausgetauscht obwohl optisch nicht wahrnehmbar.

    Ich glaub jetzt bin ich wirklich zufrieden und könnte mit den Doppelpunkten nun sogar die Zeit anzeigen lassen ...

    PS Entschuldigung für die schlechte Qualität des Schaltbildes. Ich experimentiere noch, wie ich aus LTspice vernünftige PNGs rausbekomme.

    Gruß
    Searcher
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Async_multiplex_7_Seg_V1.2.png  
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Weil es Spaß macht hab ich es nun weitergetrieben und ein UART Interface für das Asynchron gemultiplexte Display gemacht. Jetzt ist nur noch ein Draht (+GND) zur Datenausgabe notwendig und ein paar weitere Chips vergraben

    Code:
               .-----------------------------.        VCC
               |                             |         +
               |              |              |         |
              .-.            .-.             |         |
              | |20k         | |<------------o         |
              | |            | |3k           |         |
              '-' 1/4 TC4093 '-'            --- 1nF    |
               |     __       |     __      ---        |
               '----|  \      |  .-|  \      |         |            __ clock
                    |   )o----o--| |   )o----o---------)-----------|  \ out
                 .--|__/          -|__/      |         |           |   )o->
                 |       115200Hz            |         |         .-|__/
                 '-----.                     |         |   ___   |
                       |               .---o-)---------o--|___|--o
                       |               |   | |            100k   |
                       |               |   | |                   |    data
             .---------)---------------)---)-)-------------------)-------->
             |         |               |   | |                   |    out
             |         |               | .-)-)---.               |
             |         |               | | | |___|               |    GND
             |         |               | | | |CP1|Q9             |   .----
      UART   |         |               | | | | | | | |           |   |
      in (RX)|   __    |               o_o_o_o_o_o_o_o           |   |
      >------o--|  \   |              |  MR  HEF4017  |          |   |
     115200     |   )o-'              |1_ _ _ _ _ _ _ |          |   |
      8n1    .--|__/                   o o o o o o o o     BS170 |   |
      >-.    |                         | | | | | | | |         |-+   |
        |    |                             |Q0       |         |     |
        |    '-----------------------------o---------)-------->|-+   |
        |                                            |           |   |
        |                                            |           |   |
        |                                            |           |   |
       ===                                          ===         === ===
       GND                                          GND         GND GND
    (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
    Der Taktgenerator beginnt mit dem Startbit an zu arbeiten und erzeugt 9 Takte bevor er vom Johnson Counter 4017 und dem Stopbit wieder gestoppt wird. Das Ausgangsgatter für clock out läßt nur 8 high Flanken passend zu den 8 Datenbits passieren, die für das richtige Arbeiten der Schieberegister im Display wichtig sind.

    Über das 3k Poti muß der Taktgenerator auf die Baudrate vom RX abgestimmt werden. Ist praktisch, da es mein Tiny mit internem Oszillator und SW-UART mit der Genauigkeit da nicht so genau nimmt.

    Ohne ausführlich Tests und guter Einstellung klappte das sehr gut mit 115200 Baud.


    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei dem Aufwand wäre ein Tiny2313 wohl wirklich einfacher.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress