Forum: Mikrocontroller und Digitale Elektronik 7-Segment Designverifikation


von Max der AVR-Noob. (Gast)


Angehängte Dateien:

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.

von Floh (Gast)


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.
:-)

von Alexander S. (agentbsik)


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.

von msch (Gast)


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.

von Max der AVR-Noob. (Gast)


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! :)

von Floh (Gast)


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.
:-)

von Karl H. (kbuchegg)


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 -

von us73 (Gast)


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.

von Karl H. (kbuchegg)


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.

von Max der AVR-Noob. (Gast)


Angehängte Dateien:

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ß! :)

von gerd (Gast)


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!

von Jakob B. (teddynator)


Lesenswert?

Karl heinz Buchegger schrieb:
> Der Strom fliesst von + nach -

Tut er doch garnicht... Physikalisch jedenfalls nicht

von Peter R. (pnu)


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.

von Peter R. (pnu)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.