7 Segmente ansteuern

Hi Neuuser,

Nun ja ich habe die Zeichnung fertig eingegliedert, die Segmente sind natürlich nicht die 57 mm großen, da habe ich keine zu gefunden, ist ja auch egal, bitte schaut mal ob es so richtig ist, bin mir noch nicht sicher was die +12V an ULN 2803 an geht und die werte für die Vorwiderstände habe ich auch noch nicht.
zu deiner Zeichnung ...
Die Kathoden der Anzeigen BITTE an GND und nicht an -12V und wenn du
kleine Anzeigen mit einer LED pro Segment verwendest, dann reichen an
den ULN2803 auch +5V. Die +12V benötigst Du nur, wenn du die großen
Anzeigen verwendest. Weil ... Bei 4 LEDs pro Segment (4x2V = 8V) reichen
die +5V nicht zum leuchten aus. Also bei dir wirds wohl auch mit 5V gehen.

Ich schätze mal das die LEDs so bei 1,6..2V liegen. Also mal rechnen ...
5V - 1,6V = 3,4V Rest
3,4V / 0,005A = 680 Ohm (also 5mA für die Segmente)
Wenn es dir zu hell ist ...
bei 3,3kOhm sind es ungefähr 1mA durch die LEDs.
Probier es einfach mal aus. Die 1,6 sind die minimale Spannung bei roten LEDs.

Gruß
Dino
 
Nun ja ich habe die Zeichnung fertig eingegliedert, die Segmente sind natürlich nicht die 57 mm großen, da habe ich keine zu gefunden, ist ja auch egal,


Hi Dino!

Ich bin mir bei dem Satz von Neuuser zwar auch nicht ganz sicher, aber ich glaube das er nur die zeichnerische Darstellung gemeint hat. ;)

Oder? :hmmmm:

Gruß,
Cassio
 
Hi Dino,


Ich schätze mal das die LEDs so bei 1,6..2V liegen. Also mal rechnen ...
5V - 1,6V = 3,4V Rest
3,4V / 0,005A = 680 Ohm (also 5mA für die Segmente)
Wenn es dir zu hell ist ...
bei 3,3kOhm sind es ungefähr 1mA durch die LEDs.
Probier es einfach mal aus. Die 1,6 sind die minimale Spannung bei roten LEDs.
schön, daß ich auch mal etwas alleine rausgefunden habe. Messtechnisch hatte ich ja 1.7V/3.19mA bei 1K festgestellt. Ich teste gerade alle sechs 7-Segmente. An den Pins liegen 1.68 bis 1.70V an, bei einem Mittel von 3.21mA. Hell genug, aber darüber hatten wir ja schon diskutiert.

Ähem - Dino, der Atmel hat's doch nicht überlebt. Pins 11 - 13 sind tot.:eek:


Grüße und gute Nacht zusammen,

Michael
 
An den Pins liegen 1.68 bis 1.70V an, bei einem Mittel von 3.21mA.

Hi Grandpa!

Ich denke, ganz so kleinlich müssen wir bei den Werten mit den LEDs nicht sein. ;)

Eine Spannung von 1,68V bis 1,70V....
Nun ja... rechne einfach mit 1,7V und gut. :)

Ebenso ist es mit dem Strom..... die 0,01mA bei einem Gesamtstrom von 3,2mA fallen ja schon locker unter die Messtoleranzen. ;)

Frag sich am Ende noch, ob du dabei die Stromfehler- oder Spannungsfehlermessung durchgeführt hast. :hmmmm:

Nimm also die gemessenen (ebenso wie errechneten) Werte nicht zu genau!
Leg einfach das Verhältnis zu Grunde. Dann weißt du auch, mit wieviel Stellen du wirklich rechnen musst. :)


Grüße aus dem praktischen Leben,
Cassio
 
Ja doch, ja doch, ja doch. Ich wollt's doch nur mal gesagt haben. Bei der Anzeige 00.00.00 sind es max. 38 Led. Überschlägig 40 x 4 mA= 160mA. Und jeden Widerstand habe ich auch nicht in der Schublade. Da können schon mal 70Ohm dazwischenliegen. Ich nehm dann natürlich den Nächstgrösseren. Und Widerstände in Reihe oder paralell zusammenlöten gibt's nicht. Zufrieden?:rolleyes:
Hast es mitbekommen? Der erste Atmel ist abgeraucht. An dem Tag hat er noch geschaltet, heute waren 3 Pins tot:mad:. Das war der 82Ohm.

Jetzt aber gute Nacht,

Michael
 
Guten Morgen, Grandpa!

Ich habe deinen Beitrag mal hierher verschoben.....

Denke mal, dass du es auch hier einstellen wolltest und nicht bei Juro für die Wettervorhersage. ;)

Nun ja, um kurz vor 1 Uhr morgens kann man schon mal durcheinander kommen. :)



Ist natürlich ärgerlich, wenn dein Atmel nun ein paar Pins weniger hat. :(
Frag sich aber was evtl. im inneren noch in Mitleidenschaft gezogen wurde. :hmmmm:
Egal ob der Atmel nun Strom liefern musste (was er gar nicht gerne macht), oder zu GND durchgeschaltet hat. Der recht hohe Strom musste irgendwie durch den Controller und kann dabei auch noch mehr schaden angerichtet haben, als du bis jetzt bemerkt hast.
Da hilft nur Kennzeichnen des AVRs und ein paar funktionstüchtige Programme ausprobieren...... oder an die Seite legen und auf später verschieben. ;)

Gruß,
Cassio
 
Hallo Dino,
OK, die -12V als GND, Cassio hat schon recht, ich meinte nur die Zeichnung mit den kleinen Segmenten, ich möchte natürlich die großen verwenden, darum ja die guten ULN.:D
Bei den kleinen 11mm SC52-11 Segmenten über Multiplex, habe ich 220 Ohm verwendet und es ging scheinlich gut.

Gruß Neuuser
 
Hi Neuuser,

OK, die -12V als GND, Cassio hat schon recht, ich meinte nur die Zeichnung mit den kleinen Segmenten, ich möchte natürlich die großen verwenden, darum ja die guten ULN.:D
Bei den kleinen 11mm SC52-11 Segmenten über Multiplex, habe ich 220 Ohm verwendet und es ging scheinlich gut.
Die LEDs nie nach negativen Spannungen gegenüber GND arbeiten lassen. Das
gibt immer Probleme mit der Logik, Pegelanpassungen, Rückströme in LEDs
oder Treibern oder was auch immer. Also möglichst von GND aus in positive
Richtung arbeiten. Das spart ne menge Denkarbeit und Probleme.

Ohne Multiplex-Betrieb darfst Du maximal den "DC Forward Current"
erreichen. Bei Multiplex-Betrieb kannst Du da drüber hinaus bis zum
"Peak Forward Current" gehen wenn Du die Puls/Pausen-Zeiten
einhalten kannst. Wenn Dir dein Programm mal im Multiplexbetrieb
stehenbleibt und du die Peak-Ströme verwendest raucht es natürlich
gewaltig :D Ich würde also (wegen evtl Programmierfehler) auch bei
Multiplexbetrieb nicht über die DC-Werte rausgehen.

Mit den großen Anzeigen (4 LEDs / Segment) müßten das bei 220 Ohm
und 12V Versorgung grob über den Daumen ungefähr 18mA pro Segment
sein. Sollte passen.

Bei den kleinen Anzeigen SC52-11 (1 LED / Segment) waren das bei
220 Ohm und 12V Versorgung dann rechnerisch 45mA pro Segment.
Das war über dem DC-Wert aber noch im Rahmen des Peak-Wertes.
Sollte auch passen so lange der Multiplex arbeitet :D

Gruß
Dino
 
Hi Dino,
so, dann kann ich also 220 Ohm verwenden, dann werde ich mal eine Liste für Reichelt fertig machen.
Ach noch mal eine frage zu Eagle, wie kann ich das Board und Schaltplan wieder synchronisieren, wen er meckert das es nicht Konsistent ist?

Gruß Neuuser
 
Hallo Neuuser,
Ach noch mal eine frage zu Eagle, wie kann ich das Board und Schaltplan wieder synchronisieren, wen er meckert das es nicht Konsistent ist?

hierzu ein Auszug aus der Eagle-Hilfe:

Gruß,
Dirk

Platine und Schaltung konsistent machen

Um ein inkonsistentes Schaltungs-/Platinen-Paar konsistent zu machen, müssem Sie alle im ERC-Protokoll aufgeführten Inkonsistenzen manuell beseitigen. Das kann mit Hilfe folgender Editor-Befehle erreicht werden: NAME, VALUE, PINSWAP, REPLACE etc. Nach der Korrektur müssen Sie den ERC-Befehl nochmals verwenden, um die Dateien zu überprüfen und um die Forward&Back-Annotation aktivieren zu können.
 
Hi Cassio,

Denke mal, dass du es auch hier einstellen wolltest und nicht bei Juro für die Wettervorhersage. ;)

Nun ja, um kurz vor 1 Uhr morgens kann man schon mal durcheinander kommen. :)
Ja, ich sollte mich wirklich mal früher zur Ruhe legen...Den Atmel habe ich gleich zu meinem E-Schrott gelegt.


Vielleicht gibt es ja heute Abend noch ein kleines Programm von mir, könnte spät (früh) werden. Dann kannst Du mir ja zum dritten Mal eins auf die Mütz' geben:rolleyes:


Grüsse,

Michael
 
Hallo Dino,
mir ist da einiges durch den Kopf gegangen und bin daher etwas unsicher was die verdrahtung an geht, daher frage ich doch noch mal nach.
Ist das so richtig vom ULN2803 zur Segmentanzeige, SC23-12 die ist gemeinsame Kathode und geht daher ja auf GND, schaltet der ULN2803 auch dann +12 durch.
Ist wahrscheinlich eine saublöde frage,:eek: aber in deiner Zeichnung unter Bascom Kurs ist am ULN2803 da eine mit gemeinsamer Anode dran.

Gruß Neuuser
 
Hi Neuuser,

Hallo Dino,
mir ist da einiges durch den Kopf gegangen und bin daher etwas unsicher was die verdrahtung an geht, daher frage ich doch noch mal nach.
besser ist das. 4 Augen sehen mehr als 2 :D

Ist das so richtig vom ULN2803 zur Segmentanzeige, SC23-12 die ist gemeinsame Kathode und geht daher ja auf GND, schaltet der ULN2803 auch dann +12 durch.
Ist wahrscheinlich eine saublöde frage,:eek: aber in deiner Zeichnung unter Bascom Kurs ist am ULN2803 da eine mit gemeinsamer Anode dran.
Die Frage ist garnicht so saublöde sondern wichtig gewesen :D Geht dann natürlich
NICHT mit dem ULN2803 sondern mit dem UDN2981. Der schaltet dann nach +12V
für die geseinsame Kathode.

Irgendwie ist das wohl beim betrachten des Schaltplans durch die Lappen gegangen. :eek:

Da hat einer aufgepaßt :cool: :cool:

Gruß
Dino
 
Hi Dino,
ja das kam mir heute morgen beim aufwachen, :boring: das in deiner Zeichnung es anders war und deswegen habe ich noch schnell heute morgen nachgefragt, nun kann ich bestellen :vroam: dann Löten und dann geht es weiter mit fragen zum Programm ;)

Gruß Neuuser
 
7- Segmente mit einem Pin

Hallo Zusammen,

heute gibt's ein kleinens 7-Segment-Testprogramm-Set (im Anhang). Test insofern, um auch die Ansteuerung der Segmente kennenzulernen. Ich steuere zwei Kingbright SC 39-11 Rt, also mit gemeinsamer Kathode, über je ein Schieberegister 74HC595 an. Dazwischen jeweils acht R1K. Dadurch habe ich eine gleichmäßige Helligkeit bei 1.7V und 3.2mA pro Led. Zur Helligkeit gab's ja schon einen Thread.

Testaufbau
ATmega8 - Master, ATtiny13V - Slave. Beide sitzen in den Sockeln des Programierboards. Die Pins werden über Steckverbindungen herausgeführt zum Breadboard, auf dem die Segmente und Schieberegister gesteckt sind (Fotos) und zwei Taster am ATmega8. Die Kommunikation zwischen beiden µC wird über "Open comc.5..." am 8er und "SERIN..." am 13er realisiert. 4800 baud, reicht völlig aus, da die Abstände später zwischen 3 und 15 Sekunden liegen.Cassio teilte gerade mit, daß "Open PORT.x" auch funktioniert. Probier ich gleich aus.

Aufgrund des Chaos und der Steckerei bau ich jetzt zuerst einmal eine Erweiterung für mein PB mit 7ern, LCD, Tastern und Led's.


Zum Programmablauf:

- ATmega8
  • Takt 8MHz
  • Die Bitfolgen für die Ziffern werden über "Lookup" aus Data- Zeilen geholt
  • Es werden permanent die Zahlen 0 - 5 paarweise über die 7er angezeigt
  • Tastendruck 1 - das rechte Segment zählt von 0 - 5
  • Tastendruck 2 - das linke Segment zählt von 5 - 0
  • Keine Taste gedrückt - wieder endlos paarweise
  • Zur Kontrolle läuft die Ausgabe in einem Terminalfenster mit
- ATtiny13V
  • Takt 9.6MHz (max. nach Fuses, "stufenlos" 0 - 10MHz funktioniert)
  • Zur Kennung der richtigen Taste wird vom 8er der Tastencode (0,1 oder 2) voweggeschickt, der im Tiny zuerst eingelesen wird
  • Danach wird in "Select case" das Segment ausgewählt und die Zeichenfolge läuft ab. Bei 1 oder zwei wird jeweils ein Segment ausgeblendet
Damit ist der Tiny auch schon vollgepackt. Ginge alles noch besser, aber nicht mit diesem Atmel. 99% Speicherauslastung (1K) und 0Bytes SRam (64Bytes). Deswegen auch nur sechs Ziffern und nicht zehn. Da brauch ich jetzt die ATtiny25/45/85. Die haben die gleiche Pinbelegung; müssen ja auch in den Programmiersockel passen.

Tja, an dieser Stelle muss ich mich mal selbst korrigieren. Die RCK- Leitung wird natürlich gebraucht. Meine "Erkenntnis" des bewußten Abends konnte ich nicht mehr nachvollziehen. Es werden zwar Ziffern angezeigt, aber nicht gehalten. Ich schieb's mal auf die Müdigkeit um Mitternacht.
Beim Schreiben des Codes ist mir aber etwas anderes, unschönes, aufgefallen. Ich wollte Ursprünglich mit "Serout" am Atmega8 ausgeben. Doch leider wird der Pin auf knapp 1.8V gezogen, also keine Anzeige. Mit "Open comc.5..." oder Portc.5=1 ist alles i.O., 5V am Pin. Hat Jemand eine Idee, bevor ich MCS dazu befrage?

Im weiteren Verlauf mußte ich feststellen, das viele, "normale" Algorithmen unter Bascom nicht funktionieren, er kann es einfach nicht. Z. Bs. "For i= 1+j to 2+k" oder die Mehrfachzuweisung von SI (Datenleitung)=PINC.x in einer Select..Case- Auscheidung wird abgewiesen.
Nun gut, ich will da zukünftig nicht mehr drüber jammern, das "eingebrannte" GfA- Basic hab ich ja schon weitestgehend abgelegt. In Bascom wird eben (fast) alles zeilenweise abgearbeitet, wie in Assembler (He Dino, ich seh' Dein Grinsen ;)). Ist halt für µC gemacht und dafür hervorragend.

Wozu nun dieser "Test"? der Hintergrund ist ja die Rennbahnsteuerung. Für jeden Slot soll es einen Tiny geben, der 2x6 7-Segmente ansteuert (schnellste Sektorzeit, aktuelle Rundenzeit), 3x1 für die gefahrenen Runden, usw. ansteuert. Und so wie es aussieht, wird das hervorragend funktionieren.
Sach ich doch, nur een Pin anne mega8...


Grüsse,

Michael
 

Anhänge

  • 7er Aufbau.JPG
    7er Aufbau.JPG
    113,4 KB · Aufrufe: 32
  • 7er Beschaltung.JPG
    7er Beschaltung.JPG
    86,1 KB · Aufrufe: 28
  • Duo.JPG
    Duo.JPG
    74,2 KB · Aufrufe: 25
  • Mastertest_mega8.BAS
    5 KB · Aufrufe: 10
  • Slavetest_tiny13v.BAS
    3,4 KB · Aufrufe: 10
Hi Michael,

In Bascom wird eben (fast) alles zeilenweise abgearbeitet, wie in Assembler (He Dino, ich seh' Dein Grinsen ;)). Ist halt für µC gemacht und dafür hervorragend.
Wo ich noch mal Bock drauf hätte wären selbstmodifizierende Programme. Das hab ich
mal auf nem Sinclair ZXSpectrum48 gemacht ;-) Geht aber wegen der Architektur auf dem
Mega leider nicht da der Programmspeicher und Datenspeicher getrennt ist.
Anwendungsfall: Im Betrieb veränderliche Interrupt-Vektoren (das fällt mir sofort ein) oder
Programmteile, die von einem Master an die Slaves verteilt wird (je nach Aufgabe).
Schade das man den Flash nicht extern über schnelles SRAM erweitern kann. Das
wär die Lösung :D Aber bei solchen Aufgaben würde BASCOM glaube ich dann wohl
kotzen ;)

Aber schön was zusammengestrickt ... Es wird ein Schuh draus :D

Gruß
Dino
 
Hi Dino,

Schade das man den Flash nicht extern über schnelles SRAM erweitern kann. Das
wär die Lösung :D Aber bei solchen Aufgaben würde BASCOM glaube ich dann wohl
kotzen ;)
Da bist(wärst) Du mit Assembler wohl klar im Vorteil.:)
Aber schön was zusammengestrickt ... Es wird ein Schuh draus :D
Ja, zusammengestrickt ist schon richtig. War ja erst der Anfang, um das alles zu begreifen. Heute bestell ich mir schnell die ATtiny85 mit 512/512/8k Speicher, dann brauch ich nicht mehr zu "packen". Das "waitms" passte schon nicht mehr in den 13er. Die Serin-Routine frisst zwar den halben Speicher (ca. 500bytes), aber immerhin hat's überhaupt funktioniert.

Jetzt kann ich in Ruhe auf diesem "Test" aufbauen und mir ein System für die Steuerung überlegen. Programm-Auslagerung schafft freie Pins am Atmega8/16 für LCD's, GLCD's usw. Kurze Erinnerung: Je einen Pin pro Slot. Ist doch schon mal ein Fortschritt.


Grüsse,

Michael
 
Hallo Zusammen,

rechtzeitig vor Ostern hat Reichelt die ATtiny85 geliefert. Ich habe soeben den Test erfolgreich durchgeführt, die "Kleinen" funktionieren genau nach Vorstellung.
Ich habe beiden das gleiche Programm gebrannt, nur die Abfrage der Kennung (1 oder 2) ist unterschiedlich. Das funktioniert also folgendermassen:

Über zwei Taster am Atmega8 simuliere ich je einen Slot. Je nach dem, welcher Taster gedrückt wird, spult der entsprechende Tiny sein Program ab - über nur eine Leitung vom 8er.:D Das erste Byte des Datenpakets beinhaltet also den Slot 1 oder 2.

Damit sind also jede Menge Pins am 8er/16er frei. Beim Entwickeln der Idee kam mir der Gedanke, auch die LCD-Ansteuerung ähnlich auszulagern, z.B. an einen ATtiny24; der hat 14 Beinchen. Warum soll der "Master" auch alle Aufgaben alleine erledigen? So können also sehr schön Programmteile verteilt werden. Da die 85er bis 20MHz beschleunigt werden können, werde ich ihnen wahrscheinlich das Berechnen der Runden-/ Sektorzeiten überlassen. Der 8er soll die ganzen Schaltvorgänge der Reedkontakte auswerten und hätte dann genug Kapazitäten, um die Spritmenge zu berechnen und die Pitstops zu steuern (Weiche schalten, langsam fahren, tanken, etc) - damit einem Slotcar nicht in der letzten Runde kurz vorm Ziel die Fahrspannung abgeschaltet wird...:rolleyes:

Schon wieder Off-Topic, ich weiss. Nur noch soviel: Mit den 85ern funktioniert plötzlich "Open com...", kein Problem mit der SW-UART. Und der massige Speicher - 512/512/8K macht auch keine Probleme mehr. Damit sind die ATtiny13 nur noch zum Betreiben der Startampel zu gebrauchen...;)

Im Anhang die aktuelle Test-Version der Slaves. Die Kommentare erkären grob, was passieren soll. Beginnend mit diesem "Grundgerüst", entwickle ich jetzt nach und nach die Steuerung.


Grüsse,

Michael
 

Anhänge

  • Slot_2_tiny85.BAS
    5,6 KB · Aufrufe: 10


CodeBox BASCOM
open "comb.1:19200,8,n,1" for input as #1
inputbin #1 , buf(1) , 15 ' Datenpaket vom Master: 2x5, 1x3, 2x1 Units=15Bytes


Auch das wie erwartet, mega8 und tiny85 schnell bei 8MHz...:D


Gute Nacht,

Michael
 
Hallo Grandpa,
so nun bin ich mal wieder nach 14 Tagen zurück ;).
Michael, kann ich ich die Ausgänge auf SCK, MOSI, MISO verschieben, weil ich eventuell die Ausgänge B1 und B2 für PWM benutzen will.
Weil ich noch ein LCD zu den 7 Segmente benutze, ist nicht viel Auswahl an Pins.

Ich mache diese Woche meine Platine mit den Treiberbausteinen für die 57mm LED fertig und wollte dann erst die Soft da für testen.

Wozu hast du den Tiny noch mit rein genommen ? vor kurzem habe ich in der Hartware Spalte dies soft von deiner Ansteuerung geholt, die war nur für ein Mega8.

Gruß Neuuser
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)