www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 7-Segment Designverifikation


Autor: Max der AVR-Noob. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr netten µController-Freaks :)

Steige gerade Hobbymäßig in die Mikrokontrollerprogrammierung ein und 
würde gerne wissen, ob mein Schaltbild Sinn macht.

Tun soll es folgendes:
Button wird gedrückt
Atmega kriegt einen Interrupt
Wert der LED-Anzeige steigt um +1.

Das ist auch schon alles.

Softwaremäßig kein Problem, aber ich bin nicht sooo der 
Elektrotechniker.
Deswegen würde ich gerne wissen, ob mein Schaltplan Sinn macht!
Leider hab ich die Bauteile hier nicht rumfahren, ums auszuprobieren, 
und bevor ich Zeug bei Reichelt (gibts eigentlich einen anderen, 
besseren/billigeren Versand? Wäre auch hilfreich!) bestell und was 
vergess, frag ich lieber euch, obs so klappt oder ob was fehlt.

Außerdem bin ich mir unsicher über die Anordnung der Transistoren (ich 
will die LED-Anzeige multiplexen, das macht man doch so, oder?), kommt 
das so hin?

Tut mir Leid, dass der Schaltplan so unaufgeräumt ist, ist mein erstes 
Projekt mit EagleCAD.

TL;DR:
Kann der AtMega auf diese Weise im Multiplexverfahren die 
7-Segmentanzeige per Multiplexing ansteuern?

Grüße
Max.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max der AVR-Noob. schrieb im Beitrag #1868038:
> Außerdem bin ich mir unsicher über die Anordnung der Transistoren (ich
> will die LED-Anzeige multiplexen, das macht man doch so, oder?), kommt
> das so hin?

Du solltest halt LED-Anzeigen mit gemeinsamer Kathode nehmen, dann 
funktioniert das so bis auf die fehlenden Vorwiderstände bei den 
Segmenten.

Und außerdem würde sich der uC über Abblockkondensatoren freuen, 
ISP-Stecker fehlt und der Resetwiderstand auch.
:-)

Autor: Alexander Sewergin (agentbsik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast keine Widerstände für die 7Segment LED´s verbaut. Weiterhin 
fehlt ein Pulldown Widerstand für den Taster. Oder du aktivierst den 
internen Pullup Widerstand vom ATmega und ziehst mit dem Schalter nach 
Masse.
Die Reset-Beschaltung fehlt auch.
Kann mich dem Vorredner nur anschließen. Common cathode(CC) ist wichtig.

Autor: msch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Leitung von PortC zu den Segmenten ist natürlich in der Form 
unsinnig,
guck dir mal die BUS-Funktion von Eagle an, ist zwar bei 
Lochrasterprojekten relativ egal, aber falls du irgendwann mal eine 
richtige Platine routen und fertigen (lassen) willst, wird das so 
nichts.
Die Basiswiderstände an den Transistoren sehen kurzgeschlossen aus, hier 
gilt das gleiche wie oben.
Mit dem Schalter vielleicht lieber gegen GND anstatt VCC schalten, dann 
kannst du den internen Pullup nutzen.

Den Rest haben meine Vorredner ja schon geschrieben.

Autor: Max der AVR-Noob. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort, das ging ja fix!

Gemeinsame Kathode? Ich dachte die Anode wäre der Minuspol und hab sie 
deswegen mit dem GND verbunden.
Ich dachte, wenn ich die Basis meines Transistors auf High schalte, 
steuert er durch und verbindet dadurch den Minuspol der LED mit dem 
Pluspol am Port C.
Hab ich das generell falsch verstanden?

Pulldown-Widerstand sagt mir etwas, aber leider nicht viel.
Was war noch einmal der Sinn? Wie wird der nochmal geschaltet?
(MS-Paint-Skizze würd schon reichen, danke!)

Widerstände an den Segmenten leuchtet ein. Nochmal das Datenblatt 
studieren, und dann etwas aussuchen.

Danke soweit schonmal! :)

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max der AVR-Noob. schrieb im Beitrag #1868073:
> Gemeinsame Kathode? Ich dachte die Anode wäre der Minuspol und hab sie
> deswegen mit dem GND verbunden.

Kathode ist Minus, hab grad nochmal nachgeschaut :-)

> Ich dachte, wenn ich die Basis meines Transistors auf High schalte,
> steuert er durch und verbindet dadurch den Minuspol der LED mit dem
> Pluspol am Port C.
> Hab ich das generell falsch verstanden?

Das passt schon von der Idee her.
In deinem Schaltplan sind nur ein paar Zeichnungsfehler drin, z.b. sind 
beide Enden der Widerstände miteinander verbunden.

> Pulldown-Widerstand sagt mir etwas, aber leider nicht viel.
> Was war noch einmal der Sinn? Wie wird der nochmal geschaltet?
> (MS-Paint-Skizze würd schon reichen, danke!)

Pulldown ist ein Widerstand zur Masse hin.
Brauchst du aber nicht, du schaltest am Besten den Taster zwischen Pin 
und Masse.
:-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max der AVR-Noob. schrieb im Beitrag #1868073:

> Gemeinsame Kathode? Ich dachte die Anode wäre der Minuspol und hab sie
> deswegen mit dem GND verbunden.

Ich merk mir das so:

Der Strom fliesst von + nach -
Im Alphabet kommt A vor K. Also kommt der Strom, auf seinem Weg von + 
nach - zuerst beim A vorbei und erst dann beim K.

A muss an +, K muss an -

Autor: us73 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was sind das für Transistoren ?

Ich bin nicht so unendlich erfahren, aber mir scheinen 100k doch ein 
wenig gross, um damit einen Transistor (NPN) als Schalter (=in der 
Sättigung) zu betreiben. Ich hätte da eher grössenmässig 1k oder 1k5 
erwartet.

Ich würde sagen, fasse alle Anregungen zusammen, ändere deinen 
Schaltplan danach um zeige ihn nochmal.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Taster sollte man auch umdrehen.
Der sollte nicht den µC-Pin mit Vcc verbinden sondern mit GND.

Im Schaltbild sieht man eigentlich sogar sehr gut, warum das so ist:

So wie der Taster jetzt eingezeichnet ist, endet die Leitung vom µC zum 
Taster im Nichts. Da ist nichts, was einen gesicherten Pegel auf dieser 
Leitung sicher stellen würde. Erst wenn man den Taster drückt, hat die 
Leitung einen aufgezwungenen Pegel.

Nun, die Situation ändert sich zwar jetzt noch nicht grundsätzlich, wenn 
man den Taster nach GND schalten lässt, aber: Im AVR sind zuschaltbare 
Pullupwiderstand eingebaut, die die Leitung mit Vcc verbinden können. 
Ist der Taster nicht gedrückt, dann sorgen diese Widerstände dafür, dass 
die Leitung von Vcc einen Pegel aufgezwungen bekommt, nämlich Vcc oder 
High oder 1; wie immer man das dann auch nennen will. Drückt man den 
Taster, so stellt der Taster dann eine Verbindung mit GND her und die 
Leitung hat GND oder Low oder 0.
Aber zu keinem einzigen Zeitpunkt hängt die Leitung einfach nur in der 
Luft und hat keinen definierten Pegel.

Autor: Max der AVR-Noob. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sooo, hab das Schaltbild jetzt mal überarbeitet.

- Die LED's haben jetzt eine Common Cathode.
Allerdings weiß ich nicht genau, wie ich die Größe der Vorwiderstände 
auswählen soll. Ich weiß, dass die Spezifikation 2,5 Volt bei 20mA 
vorsieht, allerdings weiß ich nicht genau, wieviele mA mein AtMega 
"rauspumpt".
Wie berechne ich so etwas?
Und ist es ein Unterschied, wenn die LED's gemultiplext werden?

- Widerstände sind durch 1k Ohm ersetzt worden & nicht mehr 
kurzgeschlossen, aber auch hier die Frage: Warum? Wie berechne ich den 
Wert?

- Der Schalter zieht jetzt gegen Masse. Muss die "Aus"-Position noch 
einmal zusätzlich verdrahtet werden? Oder erledigt sich das durch den 
internen Pullup Widerstand? (Hab darüber nachgelesen, wenn ich es 
richtig verstanden habe, brauch ich kein Kabel mehr, oder?)

- Resetschaltung ist noch nicht realisiert, muss mich erst schlau 
machen, was der Pin tut und wie er das tut, was er tun soll ;)

Ich häng das veränderte Schaltbild mal an!

Danke danke danke für eure Hilfe, so macht das ja richtig Spaß! :)

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Blockkondensator Fehlt (Schalte einen 1µF Kondensator zwischen Vcc 
und Ground)

Resetbeschaltung: Am RST Pin kommt ein 1k-Widerstand zu plus, und ein 
1µF Kondensator an Ground.
Der Controller macht einen Reset bei Low-Pegel. Durch den Kondensator 
wird sichergestellt, dass er beim Einschalten direkt einen Reset 
durchführt, und wenn er geladen ist und das Programm läuft, dann dient 
er zur Stabilisierung der Spannung, damit keine ungewollten Resets 
auftauchen.


Widerstand für deinen Transistor berechnest du so:

Schau ins Datenblatt, da gibt es eine Kennlinie, die den Kollektorstrom 
in Abhängigkeit des Basisstroms angibt. Jetzt musst du wissen, was deine 
Last braucht. Angenommen, diese braucht 100mA, dann liest du dir den 
Wert ab, der durch die Basis fließen muss. (z.b. 10mA)
Die übliche Durchschaltspannung bei so "normalen" BC3xx Npn transistoren 
ist so um die 0,7V. Das bedeutet, auf der Strecke Basis-Emmiter fallen 
0,7 V ab. Bei deinem "High-Pegel" von 5V bedeutet das, an deinem 
Widerstand fallen 4,3V ab, du brauchst 10mA.
Damit hast du U=4,3V , I=0,1A macht einen Vorwiderstand nach (U=R*I) von 
430 Ohm.

Viel Erfolg!

Autor: Jakob B. (teddynator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Der Strom fliesst von + nach -

Tut er doch garnicht... Physikalisch jedenfalls nicht

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
R4, R5, R8 sind nicht nötig.
Vor die Anschlüsse von a,b,c,d,e,f,DP müssen die Begrenzerwiderstände, 
also 8 Stück, geschaltet sein. Alle Segmente a liegen am ersten 
Begrenzerwiderstand, alle Segmente DP am letzten Begrenzerwiderstand.

Wenn  ein Segment leuchten soll muss folgendes sein:
Der Ausgangspin des atmega für ein Segment schaltet auf hi, und liefert 
5 V.
Der Ausgangspin für eine Stelle schaltet auf hi und macht den Transistor 
leitend, sodass an seinem Kollektor die Spannung auf Null sinkt.

Dann befindet sich hintereinander im Stromweg:

Begrenzungswiderstand R,  LED des Segmentes (z.B a), Transistor für die 
betreffende Stelle.

Die LED braucht etwa 1,6 V (je nach Farbe) für den Widerstand bleibt der 
Rest, (3,4V) wenn  man den Transistor und den Ausgang des atmega als 
idealen Schalter ansieht.

Mit mehr als 10 mA sollte man den Pin des atmega nicht belasten, also 
muss R 3,4V /10mA sein. Das sind gerundete 330 Ohm.

Weniger Widerstand überlastet den atmega, mehr macht die Anzeige 
dunkler.

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Basiswiderstände berechnet man so :

Wenn  alle 8 Segmente leuchten (worst case) müssen 80 mA über den 
Transsitor geleitet werden.
Nimmt man für den Ts ein Stromverstärkung von 50 an, ist dafür ein 
Basisstrom von 1,6 mA nötig.
o,6V fallen als UBE weg, also sind am Rb 4,4 V Spannung, 1,6 mA müssen 
fließen.

R muss mindestens 4,4 V / 1,6 mA  sein. Das sind gerundet 2 k7.

kleinere Werte als 2k7 dürfen sein, nur darf der atmega nicht überlastet 
werden. 1k sollte man nicht unterschreiten.
größere Werte als 2k7 lassen die betreffende Stelle dunkler werden, weil 
der Ts nicht richtig aufmacht.

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.