Hallo, vorweg: Ich bin ein Schüler und beschäftige mich noch nicht sehr lange mit dem Thema Elektronik. Deshalb bitte ich, bei Beschreibungen so genau wie möglich zu sein und ggf. Quellen zum nachlesen anzufügen. Zum Projekt: Ich möchte eine Uhr bauen. Als Mikrocontroller kommt ein Atmega-328P-PU zum Einsatz. Als Anzeige habe ich jedoch keine 7-Segment-Anzeigen sondern selber gelötete LED-Matrizen (5x3x1, h x b x l). Diese Anzeigen sind so aufgebaut, dass ich immer nur die LEDs von der Vertikalen und der Horizontalen ansteuern kann (ähnlich wie bei einem LED-Cube, falls den jemand kennt). Um die Vertikale anzusteuern benutze ich ein Schieberegister, dem ich einfach jedes 5te mal ein HIGH an den Data-Pin lege, sodass jede Ebene nacheinander geschaltet wird. Die Horizontalen sind direkt am Mikrocontroller angeschlossen. Der 1Hz-Takt, der beim Frequenzteiler herauskommt, soll dann einen Interrupt auslösen. Die Interruptfunktion soll dann im µC eine Variable hochzählen. Diese Variable stellt quasi meine Uhr da. Zwischen den Interrupts müsste der Controller nur den Schieberegister und die 12 Pins für die 4 Matrizen an/aus schalten. Welche der 12 Pins geschaltet werden, muss dann wieder abhängig davon sein, welche Zahlen in den Zeit-Variablen stehen. Meine Frage ist jetzt, ob der Schaltplan, den ich gezeichnet habe ok ist, oder ob ich noch an manchen Stellen nachbessern muss. Ich würde mich freuen, wenn man mir dabei helfen könnte! Gruß, Freddy
AREF nicht an VCC, sondern höchstens an einen 0,1µF gegen Masse. Reset des Shiftregisters auf einen Pin führen, damit du definierte Zustände heribeiführen kannst - sind ja genug da. VCC direkt am MC mit 0,1µF abblocken, und das an allen VCC Pins (auch AVCC).Ein MC Ausgang liefert gutwillig nur etwa 15-20mA, ob dir das reicht, weiss ich nicht. Mit ein bisschen Rechnen und dem Beitrag über die genaue Sekunde kannst du dir den Sekundentimer sparen: https://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC Alternativ den MC mit dem internen RC Oszillator laufen lassen und einen Uhrenquarz an TOSC1 und TOSC2.
:
Bearbeitet durch User
Freddy L. schrieb: > Meine Frage ist jetzt, ob der Schaltplan, den ich gezeichnet habe ok > ist, Völlig überdimensioniert. Was willst du mit 2 Quarzen ? Beide dazu zu ungenau für eine Uhrzeit. Was willst du mit einem Frequenzteiler, wenn der ATmega32 sowieso nichts zu tun hat und wunderbar Frequenzen teilen kann, der hat sogar Timer dazu schon eingebaut. Was willst du mit einem Schieberegister das aus 3 Anschlüssen 5 Anschlüsse macht wenn du noch (mehr als) 2 Anschlüsse am uC übrig hast (z.B. PB4 und PB5) ? An welche Bausteine geht +12V als VDD ? (4521 steht daneben, also der Frequenzteiler, wieso willst du den mit 12V versorgen, und dann seine Ausgangssignal in den uC stopfen der mit 5V läuft ?) Wozu die 12 V ? Du hast also 4 x 5 x 3 = 60 LEDs, vermutlich normale 5mm Modelle mit 20mA und 2.1V oder 3.6V. Wie viele sollen davon zur gleichen Zeit leuchtend erscheinen ? Wenn das alles nach 12 x 5 Multiplex aussieht, dann bedenke, daß wenn eine LED nur 1/5 der Zeit an sein kann, sie dafür 5 mal mehr Strom benötigt um gleich hell zu erscheinen. Und wenn die LED normal mit 20mA leuchtet, dann braucht die 100mA, und so viel Strom kann der uC nicht liefern. Dafür bietet sich tatsächlich ein Schiebregister an, und zwar eines das gleich die LEDs mit Konstanstrom versorgt, damit man sich die Vorwiderstände sparen kann, z.B. CAT4016 (16 x 100mA). Damit besteht die Schaltung aus 2 ICs: Dem uC und dem LED-Treiber, und du musst 5 horizontale schalten auf denen 1.2A fliessen, dafür würde ich kleine P-Kanal MOSFETs nehmen wie IRLML5203. An den uC kommt eine 32768HZ Uhrenquartz und er wird auf low frequency oscillator geschaltet denn die Rechenleistung reicht auch dann locker. Da der uC bloss 5 MOSFETs und den CAT4016 mit 3 Leitungen berdienen muss, reicht auch ein uC wie ATmega88 im kleinen Gehäuse. Bei Uhren will man noch die Uhrzeit stellen, also sind immer noch ein paar Anschlüsse übrig für Tasten. Der Schaltplan sieht dann eher so aus:
1 | +-----+ |
2 | Quartz | VCC|--+--+--+--+--+-- +5V/1.2A direkt aus USB Netzteil |
3 | +--| | | | | | |S |
4 | | | |--(--(--(--(-|I IRLML5203 |
5 | 32kHz | |--(--(--(-|I | +--------------------------+ |
6 | | | |--(--(-|I | +--|A | |
7 | +--| |--(-|I | +-----|A 5 x 12 | |
8 | | |-|I | +--------|A LEDs | |
9 | +---| | | +-----------|A | |
10 | | | | +--------------|A K K K K K K K K K K K K | |
11 | Stunde | uC | +--------------------------+ |
12 | | | | | | | | | | | | | | | | |
13 | +---| | +-------------------------+ |
14 | | | |------------------|Sin CAT4016 | |
15 | Minute | |------------------|Clock | |
16 | | | |------------------|Latch | |
17 | +---| | +-------------------------+ |
18 | Taster | GND|-----+--680R---------+ Rset |
19 | +-----+ | |
Grundlagen hier: http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1
:
Bearbeitet durch User
Ich habe mal den Schaltplan angepasst. Zusätzlich habe ich einen Schaltplan für eine Matrize angefertigt. Die Hoizontalen werden dann zusammengeschaltet. Michael B. schrieb: > Was willst du mit 2 Quarzen Das eine Quarz ist als Taktgeber für den 1Hz-Takt gedacht. Das zweite 16MHz-Quarz wollte für den Atmega benutzen, da ich den mit der Arduino-API programmieren wollte. Um es nicht unnötig zu verkomplizieren, dachte ich, ich baue da auch einen 16MHz-Quarz dran. Michael B. schrieb: > An welche Bausteine geht +12V als VDD ? (4521 steht daneben, also der > Frequenzteiler, wieso willst du den mit 12V versorgen, und dann seine > Ausgangssignal in den uC stopfen der mit 5V läuft ?) Wozu die 12 V ? Fehler im Schaltplan, sollte jetzt behoben sein. Michael B. schrieb: > Was willst du mit einem Frequenzteiler, wenn der ATmega32 sowieso nichts > zu tun hat und wunderbar Frequenzen teilen kann, der hat sogar Timer > dazu schon eingebaut. Ich bin mir nicht sicher, wie viel der Atmega328 schafft. Ich habe ihn nicht für schnell genug eingeschätzt, als dass er beide Aufgaben (Schalten der Anzeige und Zählen der Frequenz) gleichzeitig schafft. Michael B. schrieb: > Wenn das alles nach 12 x 5 Multiplex aussieht, dann bedenke, daß wenn > eine LED nur 1/5 der Zeit an sein kann, sie dafür 5 mal mehr Strom > benötigt um gleich hell zu erscheinen. Und wenn die LED normal mit 20mA > leuchtet, dann braucht die 100mA, und so viel Strom kann der uC nicht > liefern. Dafür bietet sich tatsächlich ein Schiebregister an, und zwar > eines das gleich die LEDs mit Konstanstrom versorgt, damit man sich die > Vorwiderstände sparen kann, z.B. CAT4016 (16 x 100mA). Das mit der höheren Stromstärke wusste ich bisher noch nicht. Man könnte sicherlich den LED-Treiber einsetzen, jedoch würde sich das in meinem Fall nicht lohnen, da ich die Transistoren und Vorwiederstände in ausreichender Zahl bereits besitze. Damit sollte sich doch das Problem gelöst haben? Danke an alle, die mir bisher geholfen haben, ich schätze das sehr! Gruß, Freddy
:
Bearbeitet durch User
Freddy L. schrieb: > Ich bin mir nicht sicher, wie viel der Atmega328 schafft. Ich habe ihn > nicht für schnell genug eingeschätzt, als dass er beide Aufgaben > (Schalten der Anzeige und Zählen der Frequenz) gleichzeitig schafft. Das macht der kleine Kerl nebenbei und rechnet dir auch noch Primzahlen aus. Das ist überhaupt kein Problem. Wenn dein Programm auch nur einigermassen sinnvoll geschrieben ist, langweilt er sich. Der Timer könnte bspw. ein 10ms Interrupt produzieren, in der sowohl das Multiplex als auch das Zeit Getriebe bearbeitet wird. Freddy L. schrieb: > LED-Matrix.PNG Das stimmt aber was nicht. Die oberen Transistoren gehen mit ihren Kollektoren auf Plus und nicht auf GND, und die unteren sollten mit den Emittern auf GND und mit den Kollektoren an die LED. Du verlierst 2 * mal Uce auf dem Weg, was benutzt du für LED?
:
Bearbeitet durch User
Freddy L. schrieb: > Ich bin mir nicht sicher, wie viel der Atmega328 schafft. Ich habe ihn > nicht für schnell genug eingeschätzt, als dass er beide Aufgaben > (Schalten der Anzeige und Zählen der Frequenz) gleichzeitig schafft. Der wäre mit beiden zusammen nicht mal zu 0.1% ausgelastet, was willst du ihn in der übrigen Zeit tun lassen ? Nach wie vor die als Uhr untauglich ungenauen hochfrequenten Quartze. Freddy L. schrieb: > Zusätzlich habe ich einen Schaltplan für eine Matrize angefertigt. Oje, weitgehend falsch. Angenommen die 5 BC547 schalten als Emitterfolger, dann bitte von +5V und nicht von GND. Dann wären die 3 BC547 falschrum und rechts GND. Dann könnte man das 4 mal aufbauen, für jede Zieffer einzeln, macht 32 Tarnsistoren. Na, wer sonst nichts zu tun hat... Die 5 würden als 1:5 Multiplex laufen und die 3 müssten 20mA*5=100mA schalten, macht 300mA für Q1-Q5 (besser BC337 sonst meckert Wolfgang wieder). Die 300mA als Emitterfolger benötigen 3mA Basistrom, auch 4 davon lassen sich damit aus einem Arduino-Ausgang versorgen. An der Basis der LED Matrix vertikale Transistoren fehlt mir aber ein Basisvorwiderstand für ca. 10mA Basisstrom, also 470 Ohm.
Freddy, man muss auch noch feststellen, dass der AVR µC gar nicht laufen wird, denn er erhält keine Spannung, so dass auch ein Strom fließen könnte. Denke bitte an einen geschlossenen Stromkreis und was Kodensatoren für Bauteile sind.
Vielen, vielen Danke für den bisherigen Input euch allen! Michael B. schrieb: > Nach wie vor die als Uhr untauglich ungenauen hochfrequenten Quartze. Was sollte ich den stattdessen nehmen? Michael B. schrieb: > An der Basis der LED Matrix vertikale Transistoren fehlt mir aber ein > Basisvorwiderstand für ca. 10mA Basisstrom, also 470 Ohm. Ich habe die Transistoren umgedreht, jetzt sollten sie richtig herum verbaut sein. Den Widerstand habe ich auch hinzugefügt. Ist das ok so? Karl M. schrieb: > man muss auch noch feststellen, dass der AVR µC gar nicht laufen wird, > denn er erhält keine Spannung, so dass auch ein Strom fließen könnte. > > Denke bitte an einen geschlossenen Stromkreis und was Kodensatoren für > Bauteile sind. Ich weiß leider überhaupt nicht was du meinst. Könntest du das vielleicht weiter ausführen? Gruß, Freddy
Freddy L. schrieb: > Ich habe die Transistoren umgedreht, jetzt sollten sie richtig herum > verbaut sein. Den Widerstand habe ich auch hinzugefügt. Ist das ok so? LOL. Richtig ja, OK nein. Normalerweise ist GND unten und Vcc oben - liest sich leichter. Freddy L. schrieb: > Ich weiß leider überhaupt nicht was du meinst. Könntest du das > vielleicht weiter ausführen? Vcc direkt an AVR-Vcc und nicht ein Kondensator dazwischen. P.S. Und die 3 Transistoren rechts schalten nach wo ?
Marc V. schrieb: > Vcc direkt an AVR-Vcc und nicht ein Kondensator dazwischen. Danke! Marc V. schrieb: > Und die 3 Transistoren rechts schalten nach wo ? Ist irgendwie im Schaltplan verloren gegangen. Da kommen die 12V vom Netzteil dran. Die Basis der Transistoren sind mit dem µC verbunden, sodass, wenn die Pins vom µC geschaltet werden, die 12V vom Netzteil zu den LEDs fließen sollen. Bei den LEDs handelt es sich um folgendes Produkt. https://www.amazon.de/Eastlion-orange-wasserklar-Leuchtdioden-Dioden/dp/B00M1LYRB4/ref=pd_sim_201_4/253-6487678-1251207?_encoding=UTF8&psc=1&refRID=FJ2T1RKEA1HS7VEDBTDA Datenblatt habe ich leider nicht gefunden. Gruß, Freddy
Freddy L. schrieb: > Ist irgendwie im Schaltplan verloren gegangen. Da kommen die 12V vom > Netzteil dran. Die Basis der Transistoren sind mit dem µC verbunden, > sodass, wenn die Pins vom µC geschaltet werden, die 12V vom Netzteil zu > den LEDs fließen sollen. LOL. Dafür stehen die LEDs aber irgendwie verkehrt rum... P.S. Bild anbei.
:
Bearbeitet durch User
AVCC (Pin 20) entweder über eine Drossel an VCC oder direkt an VCC (ist hier egal, da du den Analogeingang sicherlich nicht verwendest).
Freddy L. schrieb: > Was sollte ich den stattdessen nehmen? Uhrenquarze, wurde doch schon gesagt. Freddy L. schrieb: > Ich habe die Transistoren umgedreht, Sowohl von mir als auch von Matthias S. wurde es andersrum beschrieben. Du meinst, das amcht keinen Unterschied ? Erst mal sind nun deine LEDs verkehrtrum, an denn hatten sich Matthias und ich orientiert. Dann sind nun die 5 Spaltentransistoren in Emitterschlatung mit Vorwiderstand. Dabei kann man aber nicht auf die Stromverstärkung des Emitterfolgers bauen mit ca. 100, sondern braucht 1/10 bis 1/20 des Kollektorstroms Sättigungsstrom damit der Spannungsabfall überhaupt kleiner wird. Da deine Spalten 300mA fliessen lassen also 15-30mA, also so um 220 Ohm statt 470 Ohm. Ausserdem braucht deine Schaltung 20 Widerstände während die andere nur 12 braucht (für 4 Stellen). Das wurde doch für die andersrum gebaute Schaltung haarklein vorgerechnet, warum baust du um und bist dann so faul deine Änderung nicht nachzurechnen ? Allgemeine Phobie vor Mathe ? Es sind Grundrechenartken und bloss das ohm'sche Gesatz, nichts schwieriges.
Entschuldigung, ich bin jetzt tatsächlich etwas verwirrt. Ich kann dir nicht ganz folgen. In meinem Kopf ist ein Transistor ein einfacher Schalter, der die Spannung, die am Emitter anliegt zum Kollektor "durchschaltet", wenn an der Basis ein Strom anliegt. Deshalb habe ich die Schaltung so aufgebaut, wie ich sie angefügt habe (das die LEDs falsch herum sind, lasse ich jetzt außen vor). Ich weiß jetzt nicht genau, was ihr machen wollt. Mir fehlen wirklich die Grundlagen, jedoch scheue ich mich überhaupt nicht vor Mathematik oder jeglicher Rechnerei. Ich habe bloß nicht verstanden, was genau du versuchst mir zu erklären. Michael B. schrieb: > Dann sind nun die 5 Spaltentransistoren in Emitterschlatung mit > Vorwiderstand. Dabei kann man aber nicht auf die Stromverstärkung des > Emitterfolgers bauen mit ca. 100, sondern braucht 1/10 bis 1/20 des > Kollektorstroms Sättigungsstrom damit der Spannungsabfall überhaupt > kleiner wird. Da deine Spalten 300mA fliessen lassen also 15-30mA, also > so um 220 Ohm statt 470 Ohm. Ausserdem braucht deine Schaltung 20 > Widerstände während die andere nur 12 braucht (für 4 Stellen). Diesen Teil verstehe ich nicht. Trotzdem danke für eure Bemühungen. Vielleicht kann ich ja wenigstens etwas hier mit raus nehmen.
Freddy L. schrieb: > Diesen Teil verstehe ich nicht. Schau dir doch mal die 'Multiplexschaltung mit Schieberegistern' im Artikel LED-Matrix an: https://www.mikrocontroller.net/articles/LED-Matrix So sollten die Transistoren verschaltet werden. Die Schieberegister musst du ja nicht benutzen. Mit orangen LED hast du genug Reserve, um trotz der 2 Transistoren, mit denen die LEDs in Reihe sind, genug Spannung zu haben. Rechne damit, das dir etwa 1V verloren geht, und berechne die Vorwiderstände auf so etwa 80-100mA für Pulsbetrieb. Teste das Multiplexen, bevor du die LEDs powerst, denn wenn die Matrix stillsteht, ist das für eine LED zu viel.
Freddy L. schrieb: > Da deine Spalten 300mA fliessen lassen also 15-30mA, also >> so um 220 Ohm statt 470 Ohm. Ausserdem braucht deine Schaltung 20 >> Widerstände während die andere nur 12 braucht (für 4 Stellen). > > Diesen Teil verstehe ich nicht. Es wurde einfach der ehemals 470 Ohm Widerstand neu berechnet, denn an der Stelle braucht man eben einen anderen Widerstandswert von 220 Ohm. (Sicher: Vermutlich fällt auch ein falscher nicht auf, so unterschiedlich sind die Werte nicht, aber man will ja eine richtig dimensionierte Schaltung die immer funktioniert und nicht bloss eine, die eventuell je nach Bauteilexemplar zufälligerweise funktioniert). Und die Anzahl der Widerstände wurde neu durchgezählt, man braucht für deine Schaltung 20 statt ehemals 12, also 8 mehr. Irgendwie fand ich das jetzt nicht zu schwer verständlich...
So aufgebröselt ist es dann doch recht einfach. Tut mir echt leid, mit Schaltplänen hab ich es noch nicht so. Ist aber auch die erste richtige, die ich selber entwerfe. Trotzdem danke ich euch nochmals für eure Bemühungen! Gruß, Freddy
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.