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.
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. :-)
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.
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.
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! :)
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. :-)
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 -
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.
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.
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ß! :)
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!
Karl heinz Buchegger schrieb: > Der Strom fliesst von + nach - Tut er doch garnicht... Physikalisch jedenfalls nicht
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.