www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik 7 Segment Multiplex, Sicherheit, watchdog??


Autor: Fralla (Gast)
Datum:

Ich steuere mit einem AVR 8 Stück 7-Segmentanzeigen im Multiplexbetrieb.
In einem frücheren Projekt wurde eine 7-Segmentanzeige durch einen
Fehler in der Software zerstört (multiplex hat ausgesetzt). Ein anderes
mal hat das multplixen nach mehreren tagen ausgesetzt, weiß nicht warum.
War nicht weiter schlimm->Anzeige getauscht. Jetzt verwende ich aber
teure, große 7-Segment und ich möchte sie nicht durch solche Fehler
zerstören.

Hardwaremäßig, hab ich die Treibertransistoren mit Pulldowns versehen,
damit nichts ungewollte aussteuert.

Jetzt würde ich gerne wissen, welche Software Maßnahmen ich setzten kann
um diese zu verhindern. Watchdog verwednen??, oder gibts andere Tricks?.

MFG
Autor: Helmut Lenzen (helmi1)
Datum:

Die wirklich sicher Loesung ist das Hardwaremaessig zu machen.
Mit einem deiner Leitungen die die Stellen ansteuert triggerst du ein
retiggerbares Monoflop und wenn das durch einen Fehler nicht mehr
getriggert wird schaltest du Hardwaremaessig die Treiber ab.

Gruss Helmi
Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Der Watchdog ist - richtig konfiguriert - auch sicher (genug). In der
Init zählt man die per Watchdog aufgelaufenen RESET-Vorgänge per
RESET-Flags, bei mehrfachem Auslösen schaltet man die Anzeige ab und
legt den Controller schlafen. Nur in der zyklisch laufenden Ausgabe darf
dann das "wdr" ausgeführt werden. Die Dauer des Watchdogtimers sollte so
gering wie möglich eingestellt werden.
Autor: Falk Brunner (falk)
Datum:

Autor: Peter Dannegger (peda)
Datum:

Travel Rec. wrote:
> Der Watchdog ist - richtig konfiguriert - auch sicher (genug).

Und genau das wird in der Entwicklungsphase nicht zutreffen!

Entweder er wird deaktiviert oder an der falschen Stelle getriggert.

Du wirst ja eh irgendwelche Treiberschaltungen verwenden, da wird für
einen zusätzlichen 74HC123 bestimmt genügend Platz sein. Der muß nicht
programmiert werden und funktioniert immer.


Peter
Autor: Fralla (Gast)
Datum:

Also in der Entwicklungsphase werde ich Segment-Vorwiderstände auswählen
die keinen Schaden anrichten.

Grundsätzlich werde die HW-Lösung mit dem Monoflop verwednen. Und da der
AVR einen Watchdog hat werde ich diesen zusätzlich verwenden. Kann das
irgwendwelche nachteile mit sich bringen.

Wie ich die Treiber Hardwäremäßig abschalte, ist mir klar.
Aber mit welchem Signal soll das Monoflop getriggert werden? Brauch ich
dann eine eigene Leitung vom µC zum retriggern? Oder geht das mit den
enable Signalen für die Leistungstreiber?

Es gibt den HCT4538 und HCT123, welcher wäre zu empfehlen?
MFG
Autor: Chris D. (m8nix)
Datum:

>Hardwaremäßig, hab ich die Treibertransistoren mit Pulldowns versehen,
>damit nichts ungewollte aussteuert.

Ich würd die Invertieren. Zumindest die ROW-Transistoren

Gruss Chris
Autor: Helmut Lenzen (helmi1)
Datum:

>Aber mit welchem Signal soll das Monoflop getriggert werden? Brauch ich
>dann eine eigene Leitung vom µC zum retriggern?

Nein


>Oder geht das mit den
>enable Signalen für die Leistungstreiber?

Ja

>Es gibt den HCT4538 und HCT123, welcher wäre zu empfehlen?

Für diesen Zweck gehen beide.
Autor: Chris D. (m8nix)
Datum:

>Brauch ich dann eine eigene Leitung vom µC zum retriggern? Oder geht das >mit den
enable Signalen für die Leistungstreiber?

Hier würd ich jeweils eine Diode von jeder Row-Line zum Triggereingang
des HCT123 legen. Den Triggereingang dann mit einem Pullup/down (je nach
Logik) beaufschlagen.

Gruss Chris
Autor: Fralla (Gast)
Datum:

>Ich würd die Invertieren. Zumindest die ROW-Transistoren

Wie ist das denn gemeint?

Hier würd ich jeweils eine Diode von jeder Row-Line zum Triggereingang
des HCT123 legen. Den Triggereingang dann mit einem Pullup/down (je nach
Logik) beaufschlagen.

Row-Line? Wie ist das gemeint, ich verwende 7 Segment anzeigen. Es
handelt sich um Common-Anode Typen. Die Anoden werden von pnp
Transistoren durchgeschaltet, für die Segmente, verwende ich einen
ULN2803(npn).
Was wird jetzt über dioden mit dem Monoflop verbunden?

MFG
Autor: Fralla (Gast)
Datum:

Was ist jetzt mit Row, bei einer 7-Segmentanzeige gemeint?

MFG
Autor: Falk Brunner (falk)
Datum:

@ Fralla (Gast)

>Was ist jetzt mit Row, bei einer 7-Segmentanzeige gemeint?

Das sind eine Common Anoden. Durch die Dioden + Pull-Widerstand erreicht
man eine ODER-Verknüpfung. Wenn nicht alle paar ms die Anode
weitergeschaltet wird schlägt des Monoflop zu und schaltet ab.

MFg
Falk
Autor: Chris D. (m8nix)
Datum:
Angehängte Dateien:

Sorry, das row und column ist mir von den Matrix-Displays
hängengeblieben.
Mit Row-Line meine ich Ports die dir die gemeinsamen Anoden der
Segmentanzeigen schalten.

Wenn du PNP-Transistoren zum schalten der gemeinsamen Anoden verwendest,
würd ich dort die Pulldown-Widerstände am Prot weglassen, da beim Reset
sonst alle Transistoren kurz durchsteuern.

Das Monoflop wird in jeder Umschaltpause der Segmente zurückgesetzt.
Werden durch einen Fehler ein oder mehrere Segmentanzeigen dauerhaft
angesteuert wird der Ausgang Q Low.

Gruss Chris
Autor: holm (Gast)
Datum:

Eine clevere Variante ist, in die Basisleitungen der Treibertransistoren
für die Anoden einfach Elkos einzubauen, die werden dann nur
aufgesteuert
Wechselspannung anliegt, d.h. der Multiplexbetreib läuft.

War mal so im LLC1 gelöst glaube ich...

Gruß,

Holm
Autor: Vorname Nachname (logout-name)
Datum:

Das ist die Low-cost Lösung. Wenn man die Anzeigen aber am Limit
betreibt, dann wird diese Methode dazu führen, dass wenn nicht weiter
geschaltet wird, der Strom doch ausserhalb der Spezifikation liegt, oder
aber, wenn der C kleiner gewählt wird, der Transistor nicht in der
ganzen (Leit-)Phase voll durchschaltet. Wenn man HW-mässig so einen
Schutz einbaut, dann bitte richtig. Da ist die Monofloplösung das
"schönste" Mittel.
Autor: Joachim R. (bastelbaer)
Datum:

Hallo, hast du schon mal überlegt einen max7721 einzusetzen. Der ist
genau für den Zweck entwickelt worden, ist über SPI zu programmieren und
hat die ganze Schutzgeschichte in Hardware gegossen.

Kostet zwar ein paar Euros (7,55 bei Reichelt), erspart aber Code und
Stress.

Eine Helligkeitsregelung ist auch schon integriert und über Software
steuerbar. Und wenns sein muss kannst du auch jedes Segment einzeln
anteuern.

Ich habe ebenfalls schon mal eine "Grossbild"-Siebensegmentanzeige und
eine 8x8-LED-Matrix damit gebastelt und war sehr zufrieden damit.
Autor: Matthias Lipinsky (lippy)
Datum:

>einen max7721 einzusetzen

Meinst du den MAX7219?

Den 7721 kann ich nicht finden...
Autor: Fralla (Gast)
Datum:

@Chris: Danke für die Schaltung, die du gepostet hast, dass hilft mir
viel weiter. Ich habe Pullups, nicht Pulldowns.

Nur jetzt ist mir nicht mehr klar wie ich vom HCT123 aus abschalte. wie
gesagt, an den Kathoden arbeitet ein ULN2803(npn) und an den Anoden ein
pnp-Transistor (BC636).

MFG
Autor: Falk Brunner (falk)
Datum:

@ Fralla (Gast)

>Nur jetzt ist mir nicht mehr klar wie ich vom HCT123 aus abschalte.

Du brauchst einen Hauptschalter, einen grossen MOSFET in GND oder VCC,
der alles abschalten kann. der wird vom 123er gesteuert. Ich würde hier
der Einfachheit einen Logic Level N-Kanal MOSFET empfehlen, der GND
schaltet.


Mosfet-Übersicht

MFg
Falk
Autor: Helmut Lenzen (helmi1)
Datum:

Wenn du die BC636 nicht direkt von deinem Prozessor treibst sondern über
einen 3 zu 8 Decoder (74hc138) steuerst so kannst du mit dem Enable
Eingang das Display abschalten und du kannst auch noch Prozessorpins
sparen

Gruss Helmi
Autor: Helmut Lenzen (helmi1)
Datum:
Angehängte Dateien:

Hier der Schaltplan
Autor: Fralla (Gast)
Datum:

@Helmut: Danke für deine Schaltung.
Und ja, ich verwende bereits einen 3 zu 8 decoder, hab einen HC238
eingesetzt, der hat die Ausgänge nicht invertiert. Dieser treibt NPN
Transistoren (zwecks invertierung, aber auch Stromverstärkung) und diese
die BC636(PNP). Das hab ich bereits versucht und funktioniert.

Jedoch hab ich ganz auf die enable eingänge des HC238 vergessen.

Also ich verbinde die Ausgänge des HC238 über dioden+pullup mit dem
Monoflop. Und den Ausgang des Monoflop mit dem enable des HC238. Hört
das Multiplexen auf, schaltet das Monoflop, sozusagen den decoder aus,
und kein Transistor wird durchgesteuert.
Hab ich das so richtig verstanden?

MFG
Autor: Wolf (Gast)
Datum:

Ja, bevor die Monoflop-Zeit abgelaufen ist, wird neu gestartet.
Autor: Chris D. (m8nix)
Datum:

@helmi1
Jetzt wo ich's seh helmi.... würd ich's genau soooo machen ;-)
Ich schwöar :D
Ein super Forum ist das hier - Egal welche Ideen man hat, es gibt immer
einen der löst das Problem noch eleganter und rationeller. Find ich
klasse.

PS: Aber an den weissen Hintergrund im Eagle Schaltplaneditor werd ich
mich wohl nie gewöhnen :D

Gruss Chriss
Autor: Chris D. (m8nix)
Datum:

>Also ich verbinde die Ausgänge des HC238 über dioden+pullup mit dem
>Monoflop. Und den Ausgang des Monoflop mit dem enable des HC238. Hört
>das Multiplexen auf, schaltet das Monoflop, sozusagen den decoder aus,
>und kein Transistor wird durchgesteuert.
>Hab ich das so richtig verstanden?

Jup
Kannst du so machen. Ich denke helmi's Vorschlag geht davon aus, das
wenn sich der Logikpegel am Eingang A0 des Decoders ändert, man davon
ausgehen kann das der Multiplexer "läuft". Wenn du aber ganz auf Nummer
sicher gehen willst (Der Decoder könnte ja auch seinen Geist aufgeben)
machs über Dioden nach dem Decoder. Einfacher ist auf alle Fälle helmis
Vorschlag :-)

Gruss Chriss
Autor: Chris D. (m8nix)
Datum:

Nachtrag: (Decoderdiodenschutz)
Da dein Decoder aber nicht invertiert müsstest du die Dioden nach dem
HC238 dann "umdrehen", den Pullup in einen Pulldown verwandeln, das
ganze anstatt an den Eingangs "B" auf Eingang "A" des Monoflops legen
und den freien Eingang "B" danach auf Vcc legen... hoffe das stimmt? ...
schon bissi spät ;-)

Gruss Chris
Autor: Chris D. (m8nix)
Datum:

Oh Oh....
ich hab Mist verzapft.... Wenn dann kannst du nur vor dem Decoder die
Signale abgreifen... Sonst würde er sich ja selbst abschalten -
vermutlich niemals anschalten. Da aber durch die drei Leitungen (2^3)
bereits alle 8 Segmente angesteuert werden gibt es auch keine Pause
zwischen einem "Segmentwechsel" wesshalb die Diodenmethode hier auch
nicht funktionieren kann.... Ergo ist helmis Schaltung hierzu die einzig
wahre.

Gute Nacht :-)
Autor: Helmut Lenzen (helmi1)
Datum:

Schoen das ihr die halbe Nacht ueber meinen Vorschlag dikutiert habt.
Wie schon richtig erkannt wurde kann man den HC123 nicht von den
Dekoderausgaengen triggern lassen.
1. kaemme die Sache nicht in Schwung es sei denn man triggert den HC123
uebe seinen anderen Eingang ein erstes mal.
2. Da so gesehen keine Umschaltpause exestiert wuerden wenn man die
Dekoderausgaenge zusammenfast keine Triggerimpulse entstehen

Ich triggere den HC123 ueber die niederwertigste Leitung. Diese Leitung
wird bei jedem 2. Element gepulst. Die MF-Zeit muss also ein bisschen
laenger als diese Zeit sein. Beim ausfall dieser Impulse wird das
betreffende Element also bei richtiger Dimensionierung des MF etwas mehr
als die doppelte Zeit einmalig bestromt. Das duerfte es im allgemeinen
aushalten.

@Chris D. (m8nix)

Wenn ich daran denke werde ich es fuer dich demnaechst schwarz machen.
Autor: Gast (Gast)
Datum:

>In einem früheren Projekt wurde eine 7-Segmentanzeige durch einen
>Fehler in der Software zerstört (multiplex hat ausgesetzt). Ein anderes
>mal hat das Multiplexen nach mehreren Tagen ausgesetzt, weiß nicht warum.

Bringe Deine Software in Ordnung, dann brauchst Du keine speziellen
Klimmzüge zu machen. Selber jahrelang Multiplexer gewesen und nie
stehengeblieben :-)
Da auch Monoflops ein Eigenleben entwickeln können, setzte ich sie seit
Jahrzehnten nicht mehr ein. Wenn die Hardware angepaßt werden sollte,
dann würde ich hochohmige Basiswiderstände verwenden und zu diesen
parallel Kondensatoren schalten (ggf. +Diode+Reihenwiderstand), die für
einige Millisekunden einen höheren Basisstrom liefern und die
Treibertransistoren voll durchsteuern. Bleibt das Multiplexen aus, fießt
nur noch ein geringer Strom durch die LEDs.
Autor: Joachim R. (bastelbaer)
Datum:

@lippy
Der 7219 und der 7221 sind fast gleich. Der Unterschied ist der, dass
der 7221 SPI, QSPI, MICROWIRE Serial Interface hat, der 7219 nur ein
serielles. Und die Bestellnummer bei Reichelt ist die MAX 7221 CNG
Autor: loetkolben (Gast)
Datum:

Oder nimm einfach in der Erprobungsphase höhere Vorwiderstände für die
LEDs, dann kann bei einem Stehenbleiben des Multiplexers nichts
durchschmoren.

Zusätzlich würde ich für Verwendung des Watchdog plädieren, der wie
schon vorgeschlagen. Wenn man vorher sich mit ein paar einfachen
Projekten mit dem Watchdog aus Softwareseite vertraut macht, sollte der
in den Griff zu kriegen sein.
Autor: Josef (Gast)
Datum:

Würde die Lösung mit dem MAX7219 bevorzugen. Haben damit schon gute
Erfolge
erzielt. Die Vorteile liegen klar auf der Hand: Keine Vorwiderstände,
keine Transistoren, kein Abstürzen, gute Helligkeit (einstellbar),
weniger Software- Aufwand, Kaskadierbarkeit, gute Störfestigkeit.

Der höhere Anschaffungspreis macht sich schnell bezahlt, wenn man die
Kosten
für Vorwiderstände, Transiststoren, gr.Layout, Bestückungszeit, mehr
Software
und schlussendlich unzufriedene Kunden (zB. mangelnde Helligkeit ab 5
Stellen im MC-Mux-Betrieb - Re-Design notwendig ) abzieht.



Schöne Grüße Josef
Autor: Fralla (Gast)
Datum:

Also ich werd den HC123 mit der niederwertigsten Stelle des HC238
verbinden, wie in der Schaltung von Helmut. Dass das Segment einmalig
doppelt solange bestrom wird, kann es verkraften, ganz am limit wird es
ohnehin nicht betrieben.

Die Lösung mit dem MAX7219 werd ich mir für andere Projekte ansehen.

Jetzt hab ich eine weitere Frage (möchte kein extra topic eröffen). Es
geht ums dimmen. Einzele LEDs,(RGB) hab ich schon mit tabelle gedimmt
(mit Hardware PWM).

Wie dimme ich bei meiner jetztigen Hardware-Konfiguration die LEDs am
besten?
Ich hab mir folgendes überlegt.
Mit dem Overflow Interupt werden die Anoden weitergeschaltet. Un mit dem
Compare Interupt wird die Aktuelle Anode vorzeitig abgeschaltet. Gibts
bessere vorschläge? (ohne MAX7219)

MFG
Autor: Matthias Lipinsky (lippy)
Datum:

>Gibts bessere vorschläge? (ohne MAX7219)

Über die Enable-Leitung des 74xx138. (Pin6)
Den einfach mit einem Hardware-PWM Ausgang (OCR) verbinden und mit hoher
Frequenz laufen lassen
PS: Ich würde allerdings zur Kollektorschaltung raten.
Autor: Marko (Gast)
Datum:

Ja, daran hab ich auch schon gedacht, jedoch brauch ich dann wieder
einen Pin mehr.
Was hat die von mir genannte Lösung für einen Nachteil? Kann nählich nur
schwer einen Pin entbehren...
Autor: Matthias Lipinsky (lippy)
Datum:

>Mit dem Overflow Interupt werden die Anoden weitergeschaltet. Un mit dem
>Compare Interupt wird die Aktuelle Anode vorzeitig abgeschaltet.

Rechne doch mal paar Zeiten aus.
Und dann schätze mal ab, was das für Softwareaufwand (und Spaghetticode)
nach sicht ziehen könnte...

Und dann vergleiche das mal mit einem Pin und OCRx=...
Autor: Helmut Lenzen (helmi1)
Datum:

+5V
              |
             R1        +--------
Eingang       |        |       |
------C1------+--------+ B    Q+---- zum 138
   |                   |       |
   |                   |       |
   +--C2------+--------+ A     |
              |        |       |
              R2       +--------
              |         74HC123
             GND

Du kannst das Monoflop das dir das Display Schuetzt auch nich fuer die
Helligkeit einzustellen brauchen.

R1,C1,R2,C2 bilden impulse die das MF bei der negativen und der
positiven Flanke triggern. Da der Eingang ja bei jedem Display wechseln
ihren Pegel wechselt wird das MF jedesmal getriggert. Die Zeit des
Monoflops bestimmt nun die Helligkeit. Du must die Zeit nur ueber ein
Poti einstellbar machen.

So hast du 2 Probleme mit einem MF geloest. Hardware watchdog fuers
Display und Helligkeits einstellung.

Gruss Helmi
Autor: Joachim R. (bastelbaer)
Datum:

Fralla wrote:
> Gibts bessere vorschläge? (ohne MAX7219)
MAX7221 :-)
Autor: Marko (Gast)
Datum:

> Gibts bessere vorschläge? (ohne MAX7219)
>MAX7221 :-)
und ohne MAX7221 ;-)


>Rechne doch mal paar Zeiten aus.
>Und dann schätze mal ab, was das für Softwareaufwand (und Spaghetticode)
>nach sicht ziehen könnte...

Um die Anoden weiterzuschalten muss ich doch sowieso in eine ISR. In der
Compare-ISR würden die Pins für die Segmente, (oder Anodenauswahl)
einfach nur auf null gesetzt werden.  Kannst du mir mal erklären wieso
der Softwareaufwand dann so hoch wird.

Wenn ja, dann entbehre ich einen Pin und machs mit Hardware PWM und dem
zeiten enable des monoflops.

Danke für den Vorschlag mit dem Poti, jedoch kann ich das so nicht
Verwenden. Ich bekomm die Helligkeitswerte via UASRT rein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net