Binär-Uhr hoffentlich finale Schaltung

Gast #2538100
Lesenswert?

Hi,

für ein Schulprojekt wurde mir aufgetragen eine Binäruhr mit schnick 
schnack zu entwickeln. Nun habe ich zig Stunden investiert mich 
eingelesen und versucht nach bestem Wissen die angehängte Schaltung zu 
entwickeln.

Nach meinem Befinden ist die Schaltung so i.O. aber es wäre mir lieber 
wenn sie sich ein Profi nochmal kurz ansieht. Klar erwarte ich keine 
komplette Schaltungsanalyse sondern erhoffe mir das ein geschulter Blick 
etwaige Schwachpunkte oder offensichtliche Fehlplanungen bemerkt. Da ich 
unter enormen Zeitdruck stehe möchte ich es vermeiden dann beim Testen 
hunderte Fehler zu suchen und neue teile nach zubestellen.

Es sollten alle Bauteile die ich brauche drin sein, wenn etwas im 
Schaltplan fehlt dann fehlt es wirklich und es wäre super mich kurz 
drauf hinzuweißen.

Die Stromversorgen der Shiftregister habe ich daneben gezeichnet weil 
ich kein Symbol mit Vcc und GND gefunden habe.

Umfang:

Anzeige der Uhrzeit binär und digital.
Anzeige des Datums digital und römisch.
LED Matrix mit 7 Multiplex Zeilen.
RTC per I2C.
Auslesen der Umgebungshelligkeit mit LDR.
Auslesen des Batterieladezustandes.
Anschlüsse für JTAG und ISP.
Entprellte Taster.

Ich würde mich wirklich super freuen wenn ich von euch Feedback bekomme. 
Und bitte nicht den Eindruck haben ich wäre faul. Ich habe wirklich 
Unmengen an Zeit investiert und möchte einfach sicher gehn nicht noch 
mehr Zeit mit Fehlersuche und Ausbessern von Fehlplanungen zu vergeuden.

vielen dank schonmal im vorraus!
Angehängte Dateien:
#2538135
Lesenswert?

*) die NPN im Plus-Zweig sind in Emitter-Folger Betrieb, ich würde auf 
PNP-Typen wechseln und Ansteuerung invertieren.

*) Tastenentprellung würde ich in SW machen und den ganzen HW-Kram 
stanzen

*) schaltbare Spannungsteiler für BAT und LDR sind Geschmacksache, aus 
dem Bauch würde ich sie weglassen

*) für die Versorgungsanschlüße: im Werkzeugkasten "invoke" und dann 
aufs Bauteil klicken

Viel Erfolg,
Grüße leo
Gast #2538181
Lesenswert?

Danke für die schnellen Antworten

Klaus K. schrieb:
> *) die NPN im Plus-Zweig sind in Emitter-Folger Betrieb, ich würde auf
> PNP-Typen wechseln und Ansteuerung invertieren.

Was ist denn daran besser? Hat es etwas mit der Belastung zu tun? Ich 
kenne mich leider mit pnp nicht gut aus, dann müsste ich die basis auf 
high ziehen und mit dem register auf ground schalten? oder mit negativer 
spannung arbeiten?

Klaus K. schrieb:
> *) Tastenentprellung würde ich in SW machen und den ganzen HW-Kram
> stanzen

Das hatte ich zuerst auch so geplant aber da ich die shiftregister 
seriell durchbeschreibe möchte ich mir keine zusätzlichen Wartezeiten 
aufhalsen wenn ich per software entprelle. die beschreibung aller 36 
bits dauert ja auch seine zeit. Und das mindestens 30mal pro sekunde... 
ich möchte den uC eben auch nicht immer mit de vollen 16Mhz laufen 
lassen sodas sich das Problem noch verschärfen würde oder? Die Bauteile 
kosten nicht die Welt und so hab ich das Problem Softwareseitig gar 
nicht erst.

Klaus K. schrieb:
> *) schaltbare Spannungsteiler für BAT und LDR sind Geschmacksache, aus
> dem Bauch würde ich sie weglassen

Damit möchte ich den Stromfluss unterbinden wenn ich nicht messe. Ich 
möchte nur 1-2 pro sekunde messen und den rest der zeit würde ja je nach 
Widerstand ein Strom fließen. Die Wiederstände im LDR Pfad habe ich 
eigentlich optimal berechnet sodass ich einen breiten spannungsbereich 
habe und so stell ich mir eine erhöhung der einzelnen widerstände damit 
weniger strom fließt schwierig vor.

Klaus K. schrieb:
> *) für die Versorgungsanschlüße: im Werkzeugkasten "invoke" und dann
> aufs Bauteil klicken

Danke :-) Sieht zwar hässlich aus weil kein Platz im Bauteil ist aber 
erfüllt seinen Zweck ;-)

Sonst keine groben Mängel festgestellt? Fehlende Kondensatoren, Pull-up, 
Pull-down Widerstände oder sonstiges?
Gast #2538423
Lesenswert?

Und wieso wurde das Thema in die Kategorie Platinen verschoben? Es geht 
nicht um eine Platine sondern um mögliche Fragen zur Schaltung bzw. den 
bauteilen --> also uC und Elektronik. Der Thread passt hier glaube ich 
nicht ganz ins Thema.
#2538457
Lesenswert?

Oliver Ka schrieb:
> Das hatte ich zuerst auch so geplant aber da ich die shiftregister
> seriell durchbeschreibe möchte ich mir keine zusätzlichen Wartezeiten
> aufhalsen wenn ich per software entprelle.

Diese Wartezeit macht überhaupt nichts aus, da entprellen softwaremäßig 
(fast) nichts kostet:

1 Takt fürs einlesen ohne Entprellen oder 12 Takte mit entprellen bei 
30Hz Refresh @1Mhz:

 30µs  <> 360µs
0,003% <> 0,036%


Es ist übrigens egal ob der avr mit 16Mhz oder 1Mhz läuft, den Strom 
verbrauchen die Leds.
Gast #2538587
Lesenswert?

Samuel K. schrieb:
> 1 Takt fürs einlesen ohne Entprellen oder 12 Takte mit entprellen bei
> 30Hz Refresh @1Mhz:

Ein Taster prellt doch typischerweise ca 20-30ms. Wie komme ich da mit 
12 Takten hin? Oder werde ich früher oder später auf solche kniffe beim 
Programmieren kommen, dass ich das entprellen im Hintergrund laufen 
lassen kann?
#2538594
Lesenswert?

Oliver Ka schrieb:
> Oder werde ich früher oder später auf solche kniffe beim
> Programmieren kommen, dass ich das entprellen im Hintergrund laufen
> lassen kann?

Entprellen macht man zyklisch. Die Taste wird zyklisch abgefragt. Wenn 
sie 4 mal hintereinander gedrückt war gilt das als gedrückt. Im Forum 
gibts es genügend Codes zur Entprellung und so ziemlich alle arbeiten 
nach diesem System.
Gast #2538702
Lesenswert?

Samuel K. schrieb:
> Entprellen macht man zyklisch. Die Taste wird zyklisch abgefragt. Wenn
> sie 4 mal hintereinander gedrückt war gilt das als gedrückt. Im Forum
> gibts es genügend Codes zur Entprellung und so ziemlich alle arbeiten
> nach diesem System.

OK cool, danke das werd ich mir dann mal anschauen!
Gast #2538733
Lesenswert?

... was für die Bipolartransistoren gilt, gilt natürlich auch für die 
MOS-FETs: Entweder die beiden N-Kanal-Typen (BSS123) zwischen 
Spannungsteiler und Masse einbauen, oder auf P-Kanal-Typen (z. B. BSS84) 
umsteigen.
Außerdem genügt auch ein einziger FET; die Spannungsteiler sind ja eh 
parallel geschaltet.
Gast #2539272
Lesenswert?

Danke für eure Antworten bisher!

Ich habe den Schaltplan jetzt insoweit verändert, dass ich die npn im 
pluszweig durch pnp, und die npn gegen ground durch npn darlington 
getauscht habe.

Den n Mosfet habe ich zwischen spg-teiler und ground geschaltet.

Invoke habe ich noch nicht eingefügt kommt aber noch.

So wie der Schaltplan jetzt ist würde ichs dann wohl umsetzen und alle 
Teile bestellen heute abend. Noch irgendwelche Fehler oder 
Unstimmigkeiten zu sehen?

Sonst bedanke ich mich schonmal bei euch für eure Hilfe :)
Angehängte Dateien:
#2539298
Lesenswert?

Eine Unschönheit ist mir noch aufgefallen. Du hast jetzt statt der 
beiden MOSFETs bei der Messung der Helligkeit und der Batteriespannung 
nur noch einen MOSFET in der GND-Leitung (Q66), um Strom zu sparen. Wenn 
Du den MOSFET hochohmig machst (also abschaltest), fließt immer noch ein 
Strom von den Batterien über R126 in den Portpin PA6 und dort über die 
Schutzdioden nach VCC. Abgesehen davon, dass es unschön ist, eine höhere 
Spannung als VCC an den Portpin zu geben (obwohl voraussichtlich nichts 
kaputt gehen wird), hast Du das eigentliche Ziel, nämlich die Batterien 
nicht zusätzlich zu belasten, verfehlt.

Ich würde auf die Abschalterei ganz verzichten. R126 und R127 würde ich 
um den Faktor 10 größer machen (also 330 kOhm und 470 kOhm), dann fließt 
sowieso schon ein geringerer Strom. Der immer wieder erwähnte maximale 
Quellwiderstand von 10 kOhm bezieht sich auf wechselnde 
Eingangsspannungen, bei statischen Spannungen (Batterie) kann der 
Quellwiderstand ruhig höher sein. Auch beim LDR-Zweig würde ich auf die 
Abschaltung verzichten. Was da an Strömen fließt, ist nämlich 
vernachlässigbar gegenüber dem, was durch die Anzeige-LEDs fließen wird.
Moderator (Firma: Titel) Persönliche Seite #2539303
Lesenswert?

In Schaltplänen sind im Gegensatz zu Layouts schräge Verbindungen 
verpönt.

Es fahren keine Signale QUER durch andere Bauteile durch (R113).

Punkte zeigen eine Leitende Verbindung an (Quarz).

Dein LDO wird ganz hübsche DICKE BACKEN bekommen, wenn mal alle LEDs 
einer Zeile und z.B. noch die von den Minuten an sind. Das wären dann 
immerhin 42*20mA = 840mA und damit 840mA*2,5V = 2,1 Watt zu verheizen. 
Und zudem: 840mA aus einem 250mA LDO mit 500mA Peak... :-o
Gast #2540132
Lesenswert?

Edi R. schrieb:
> Wenn
> Du den MOSFET hochohmig machst (also abschaltest), fließt immer noch ein
> Strom von den Batterien über R126 in den Portpin PA6 und dort über die
> Schutzdioden nach VCC. Abgesehen davon, dass es unschön ist, eine höhere
> Spannung als VCC an den Portpin zu geben (obwohl voraussichtlich nichts
> kaputt gehen wird), hast Du das eigentliche Ziel, nämlich die Batterien
> nicht zusätzlich zu belasten, verfehlt.

Da hast du Recht, Danke.

Edi R. schrieb:
> Der immer wieder erwähnte maximale
> Quellwiderstand von 10 kOhm bezieht sich auf wechselnde
> Eingangsspannungen, bei statischen Spannungen (Batterie) kann der
> Quellwiderstand ruhig höher sein.

Quellwiderstand wäre in dem fall R126? Also der Widerstand der an High 
hängt?

Lothar Miller schrieb:
> In Schaltplänen sind im Gegensatz zu Layouts schräge Verbindungen
> verpönt.

OK, ist angekommen werd ich ändern ;-)

Lothar Miller schrieb:
> Dein LDO wird ganz hübsche DICKE BACKEN bekommen, wenn mal alle LEDs
> einer Zeile und z.B. noch die von den Minuten an sind. Das wären dann
> immerhin 42*20mA = 840mA und damit 840mA*2,5V = 2,1 Watt zu verheizen.
> Und zudem: 840mA aus einem 250mA LDO mit 500mA Peak... :-o

der Low-Drop-regler? also die Led Matrix wird auf ein minimum beschränkt 
sein solange nur die Batterie den Strom liefert. Sobald das Netzteil 
eingesteckt ist, bekommt das der uC mit und ändert die Anzeige 
dementsprechend.

Michael H. schrieb:
> Es wäre wesentlich weniger Aufwand und Umstand, das
> Zeilen-Schieberegister auch zu den anderen Registern zu hängen.

Wie meinst du das dran hängen? Nach dem letzten für die Spalten das 
Zeilenregister über den seriellen output anzuschließen? Was bringt mir 
das für Vorteile in der Programmierung?

Michael H. schrieb:
> Oder: anstatt den seriellen Input per Software zusammenzubasteln, nimm
> lieber gleich ein 74HC237.

Was macht der denn besser/anders? Mit den 74HC595 geht es aber doch auch 
einigermaßen gut oder nicht? jetzt nochmal alles umzumodeln reicht mir 
die zeit nicht wenn es nicht unbedingt sein muss. aber für zukünftige 
projekte wärs nett wenn du mir in ein, zwei sätzen die Funktion des 
bauteils sagen könntest :-)
#2540156
Lesenswert?

Oliver Ka schrieb:
> Michael H. schrieb:
>> Es wäre wesentlich weniger Aufwand und Umstand, das
>> Zeilen-Schieberegister auch zu den anderen Registern zu hängen.
>
> Wie meinst du das dran hängen? Nach dem letzten für die Spalten das
> Zeilenregister über den seriellen output anzuschließen? Was bringt mir
> das für Vorteile in der Programmierung?
Genau das meine ich. Vorteil ist, dass du dich nicht um die Datenausgabe 
an das Zeilen-Register kümmern müsst. So, wie es jetzt angeschlossen 
ist, musst du die Pins ja per Hand setzen, um eine serielle Ausgabe zu 
machen.

> Michael H. schrieb:
>> Oder: anstatt den seriellen Input per Software zusammenzubasteln, nimm
>> lieber gleich ein 74HC237.
>
> Was macht der denn besser/anders? Mit den 74HC595 geht es aber doch auch
> einigermaßen gut oder nicht? jetzt nochmal alles umzumodeln reicht mir
Es funktioniert sicher. Aber du stellst dir mit der Anbindung von diesem 
Schieberegister ein Bein.
Ich habe vermutet, dass du instinktiv die Spalten unabhängig von den 
Zeilen haben willst. Das ist Geschmackssache und macht dann keinen 
Unterschied.
Nur könnte man diese Lösung wesentlich geschickter mit einem 74HC273 
umsetzen.

> die zeit nicht wenn es nicht unbedingt sein muss. aber für zukünftige
> projekte wärs nett wenn du mir in ein, zwei sätzen die Funktion des
> bauteils sagen könntest :-)
Das '273 ist ein 3-zu-8 BCD-Dekoder. Nachdem du beim Multiplex eh nur 
eine Zeile gleichzeitig anschalten kannst, kannst du die 7 Zeilen im 
BCD-Format angeben.
Prinzipielle Wahrheitstabelle zu dem IC:
Adress-Leitungen A, B und C. Ausgangsleitungen D0..D7
 C  B  A  |  D0  D1  D2  D3  D4  D5  D6  D7
----------+--------------------------------
 0  0  0  |  1   0   0   0   0   0   0   0
 0  0  1  |  0   1   0   0   0   0   0   0
 0  1  0  |  0   0   1   0   0   0   0   0
 0  1  1  |  0   0   0   1   0   0   0   0
 1  0  0  |  0   0   0   0   1   0   0   0
 1  0  1  |  0   0   0   0   0   1   0   0
 1  1  0  |  0   0   0   0   0   0   1   0
 1  1  1  |  0   0   0   0   0   0   0   1
A, B und C sind die Leitungen aus deinem Mikrocontroller, D0..D7 gehen 
an die Zeilen-Transistoren.
Gast #2540177
Lesenswert?

Michael H. schrieb:
> Es funktioniert sicher. Aber du stellst dir mit der Anbindung von diesem
> Schieberegister ein Bein.
> Ich habe vermutet, dass du instinktiv die Spalten unabhängig von den
> Zeilen haben willst. Das ist Geschmackssache und macht dann keinen
> Unterschied.
> Nur könnte man diese Lösung wesentlich geschickter mit einem 74HC273
> umsetzen.

du Sprichst einmal von einem 74HC273 und einmal von einem 74HC237. Hast 
du dich verschrieben oder meinst du zwei verschiedene Bauteile? Das mit 
dem BCD konverter klingt interessant, so könnte ich mir das serielle 
ansteuern des 595 sparen...
#2540198
Lesenswert?

Oliver Ka schrieb:
> du Sprichst einmal von einem 74HC273 und einmal von einem 74HC237. Hast
> du dich verschrieben oder meinst du zwei verschiedene Bauteile? Das mit
Ich habe mich nur vertippt! Entschuldige bitte.
> dem BCD konverter klingt interessant, so könnte ich mir das serielle
> ansteuern des 595 sparen...
Meinst du nur IC4? Genau das wär mein Punkt =)

Was mir noch auffällt: ein Pullup für die RCK-Leitung der 
Spalten-Register könnte nicht schaden, damit beim Programmieren nicht 
ungewollte Zustände auftreten und vielleicht Transistoren und andere 
Bauteile Schaden nehmen.
#2540304
Lesenswert?

Oliver Ka schrieb:
> jetzt nochmal alles umzumodeln reicht mir
> die zeit nicht
Man kann sowas übrigens auch simulieren. Proteus Isis ist ein Tools, das 
auch Atmega-Controller simulieren kann.
Es gibt eine Demo-Version, die den vollen Funktionsumfang mitbringt, mit 
der man allerdings nicht speichern kann... Also eigentlich nur 
praktisch, wenn dein Rechner Standby kann.
http://www.labcenter.com/products/vsm_overview.cfm
Du kannst darin fast deine ganze Schaltung inklusive Schieberegister, 
Transistoren, Leds und Analogquellen nachbauen und schon mal anfangen, 
Software zu schreibn.

Beispiele auf die Schnelle:
http://www.youtube.com/watch?v=2HDEDMiN1WI
http://www.youtube.com/watch?v=teZ99GONwx8
Gast #2540346
Lesenswert?

Samuel K. schrieb:
> Wäre dann nicht eher ein Schieberegister ohne Latch geeignet (74HC164)?

Anstelle von was? Den Spalten-Registern oder des Zeilen-Registers? Mit 
latch meinst du die Übernahme der Werte im seriellen "Pfad" in die 
Parallelen Ausgänge? Was hätte ich denn für einen Vorteil davon?

Michael H. schrieb:
> Ich habe mich nur vertippt! Entschuldige bitte.

Hab mich nur gewundert :-) also du meintest den 74HC237 nehme ich an.

Michael H. schrieb:
> Meinst du nur IC4? Genau das wär mein Punkt =)

Ja genau. Kann ich das register denn ohne weiteres durch den 74HC237 
ersetzen oder muss ich etwas grundlegendes beachten. Ich würde jetzt die 
Basis R der Darlingtons neu berechnen und das müsste es ja gewesen sein.

Ich bräuchte eigentlich nicht mal die 3 Steuerleitungen anschließen 
sondern Latch und Data1 enable jeweils gegen Ground und data2 auf high 
ziehen. da ich nur 7 ausgänge benötige, kann ich über den Wert "111" 
(Ausgang8 high) ja alle restilchen Ausgänge Auf Low schalten.

Michael H. schrieb:
> Was mir noch auffällt: ein Pullup für die RCK-Leitung der
> Spalten-Register könnte nicht schaden, damit beim Programmieren nicht
> ungewollte Zustände auftreten und vielleicht Transistoren und andere
> Bauteile Schaden nehmen.

Klingt logisch, der reagiert ja auf ein low-high Signal.

Wäre ein Pull-down an SCK auch sinnvoll? Dort muss ja ein High-Signal 
anstehen damit der anstehende Wert ins Serielle Register übernommen 
wird. Wäre ein Wert von 100k in beiden Fällen sinnvoll um das Niveau 
zuverlässig zu halten? Ich geh mal davon aus das ich die Pull-Ups an SCL 
auch ohne Probleme von 20k auf 100k anheben könnte.

Wie groß sollte ich denn die pull-ups und downs dimensionieren? Da fehlt 
mir ehrlich gesagt ein wenig der Durchblick :S

Je kleiner der Widerstand desto schneller kann ich den Bus betreiben 
habe ich Recht?
Gast #2540351
Lesenswert?

Das Programm gefällt mir von der Beschreibung her, das hätte ich mal 
früher gebraucht...jetzt brauch ich nicht mehr anfangen zu testen das 
dauert zu lange :D aber auf jedenfall super für zukünftige Projekte, 
Danke!
#2540374
Lesenswert?

Ich meinte das Ersetzen des 237 durch den 164:

Beim 237 möchte man durch die drei Steuerleitungen nacheinander die 
Spalten ansteuern. Das gleiche lässt sich einfacher mit einem 
Schieberegister erledigen.

Man verbindet den 8. Ausgang des SR mit dem Eingang (evtl. über einen 
Widerstand), so dass eine herausgeschobene 1 wieder eine 1 hinein 
schiebt.

Am Anfang schiebt man genau eine 1 rein, danach kann man diese durch das 
Clocksignal rotieren.

Ohne latch damit die geschobene 1 sofort übernommen wird.

Oliver Ka schrieb:
> Wäre ein Pull-down an SCK auch sinnvoll?

Nein, es ist egal ob Daten ins SR geschoben werden, solange sie nicht 
übernommen werden (latch, das der 164 nicht hat). Deswegen muss RCK auf 
Vcc bleiben. Das eigentliche Problem ist, dass RCK beim Programmieren 
floaten kann und damit das SR Daten übernehmen kann. Bei SCK hätte dies 
kein Effekt, da diese Leitung vom Programmer gesteuert wird -> dein 
Pulldown wäre wirkungslos.

Dimensionierung der Pullups ist relativ frei. Zwischen 10k-100k.
#2540411
Lesenswert?

Oliver Ka schrieb:
> Edi R. schrieb:
>> Der immer wieder erwähnte maximale
>> Quellwiderstand von 10 kOhm bezieht sich auf wechselnde
>> Eingangsspannungen, bei statischen Spannungen (Batterie) kann der
>> Quellwiderstand ruhig höher sein.
>
> Quellwiderstand wäre in dem fall R126? Also der Widerstand der an High
> hängt?

Nein, der Quellwiderstand ist das, was der ADC sieht, nämlich eine 
Parallelschaltung von R126 und R127, also 33 kOhm || 47 kOhm = 19,4 
kOhm.
Gast #2540435
Lesenswert?

Samuel K. schrieb:
> Am Anfang schiebt man genau eine 1 rein, danach kann man diese durch das
> Clocksignal rotieren.

OK das klingt ziemlich komfortabel aber woher weiß ich dann sicher 
welcher Ausgang gerade high ist? Gut ich könnte es mir natürlich merken 
aber beim 237 habe ich immer einen definierten Wert den ich angeben 
kann. Zur ansteuerung brauche ich auch drei Leitungen. Mmmh ich bin 
unentschlossen...

Samuel K. schrieb:
> Nein, es ist egal ob Daten ins SR geschoben werden, solange sie nicht
> übernommen werden (latch, das der 164 nicht hat). Deswegen muss RCK auf
> Vcc bleiben. Das eigentliche Problem ist, dass RCK beim Programmieren
> floaten kann und damit das SR Daten übernehmen kann. Bei SCK hätte dies
> kein Effekt, da diese Leitung vom Programmer gesteuert wird -> dein
> Pulldown wäre wirkungslos.

Also du meinst der uC stellt mit RCK was an was nicht sein soll, nämlich 
unbekannte werte in die Ausgänge zu schreiben, ok.
#2540524
Lesenswert?

Oliver Ka schrieb:
> also du meintest den 74HC237 nehme ich an.
ja.

Oliver Ka schrieb:
> Mit latch meinst du die Übernahme der Werte im seriellen "Pfad" in die
> Parallelen Ausgänge?
genau.

> Was hätte ich denn für einen Vorteil davon?
Das hab ich auch nicht verstanden.
Generell seh ich keinen Sinn in dem, was Samuel K. hier vorhat...

Oliver Ka schrieb:
> Wäre ein Pull-down an SCK auch sinnvoll? Dort muss ja ein High-Signal
Nein. Die Leitung darf ruhig zappeln. Und das macht sie ja auch, weil 
das eine Signalleitung vom Programmer ist.
An den Ausgängen der Register kommt solange nichts vom Eingang an, wie 
RCK high ist. Dazu ist das gut.

> Wie groß sollte ich denn die pull-ups und downs dimensionieren? Da fehlt
> mir ehrlich gesagt ein wenig der Durchblick :S
100k. Punkt. =)

> Je kleiner der Widerstand desto schneller kann ich den Bus betreiben
> habe ich Recht?
Ja, bei I2C. Siehe Datenblatt.
Die Geschwindigkeit hängt hier deswegen vom Widerstand ab, weil beim 
I2C-Bus nur nach Masse geschaltet wird. Beim Übergang Masse->Vcc müssen 
dann durch die Pullups parasitäre Kapazitäten in den ICs geladen werden. 
Du hast also ein RC-Glied. Wenn ein Bit also nicht wesentlich länger 
dauert als das Laden der Kapazitäten, hast du keine sauberen Bits mehr.
Hier ein Bild vom Übergang.
http://2.bp.blogspot.com/-P63wNKkrpcI/TgJbaBQHDgI/AAAAAAAAAE0/st_TZYD4DGw/s1600/I2C.jpg
Hier (oberes Signal) siehst einen Grenzwertigen Aufbau.
http://static.rcgroups.net/forums/attachments/2/8/4/8/5/8/a3603975-70-I2C%2010k%20pull-up.jpg



Samuel K. schrieb:
> Wäre dann nicht eher ein Schieberegister ohne Latch geeignet
???
definitiv nicht.
Samuel K. schrieb:
> Man verbindet den 8. Ausgang des SR mit dem Eingang (evtl. über einen
> Widerstand), so dass eine herausgeschobene 1 wieder eine 1 hinein
> schiebt.
???
Zeilenweiser Multiplex wäre bei dem Aufbau wesentlich sinnvoller!
Gast #2540530
Lesenswert?

Samuel K. schrieb:
> Man könnte natürlich auch die Verbindung zwischen Ausgang 8 und Eingang
> weglassen und nach jedem Durchlauf die neue 1 per µC setzen. Nach 8 mal
> Schieben ist das SR dann geleert.

Das wäre natürlich auch möglich.

Ich habe jetzt mal den Schaltplan erweitert um die beiden möglichkeiten 
ohen sie anzuschließen, vermutlich ein fauxpas ;-)

Ausserdem geändert:

- Batteriepfad R um faktor 10 erhöht und Mosfet entfernt.
- Kondensator bei ISP 6-Pol stecker eingefügt (richtig?).
- LED zur Batt-Status Anzeige eingefügt.
- Pull-Ups und Pull-downs auf 47k erhöht.
- Widerstände zur Netzteilerkennung auf 40k und 200k verdoppelt.
- Pull-Down bei den Shift-Registern eingefügt (Anschluss "G").
- Spannungsversorgung der Register per Invoke eingefügt.
- 74HC164 und 74HC237 eingefügt, Pull-Up und down aber keine Daten und 
Steuerleitungen an uC.

Ich hoffe ich komme der endgültigen Schaltung dadurch einen Schritt 
näher.
Angehängte Dateien:
#2540578
Lesenswert?

Oliver Ka schrieb:
> dann hau ichs doch
> einfach ganz aus dem Schaltplan raus oder nicht?
Ja.

Grade noch gesehn: der Reset-Pin am JTAG-Anschluss ist vermutlich nicht 
mit irgendwas sonst verbunden.

Generell ist es keine gute Idee, einfach Power-Pins zu nehmen und sie 
umzubennen. Zum einen, weil auch beim Kopieren schon der Name verloren 
geht, zum anderen, weil sie die Pin-Klasse Power haben und im ERC zu 
Verwirrungen führen.

Sicherer ist hier ein Port aus der lib frames oder einfach nur ein Label 
(Werkzeug label).
#2540615
Lesenswert?

Michael H. schrieb:
> Das hab ich auch nicht verstanden.
> Generell seh ich keinen Sinn in dem, was Samuel K. hier vorhat...

Ok, dann nochmal ausführlich:

Michael H. schrieb:
> Samuel K. schrieb:
>> Wäre dann nicht eher ein Schieberegister ohne Latch geeignet
> ???
> definitiv nicht.

Das bezog sich auf deinen Vorschlag den 74HC237 zu nehmen. NICHT auf den 
Zeilentreiber.

Die Idee des 237 ist es die Zeilen mit möglichst wenig Pins anzusteuern, 
da immer nur eine aktiv ist, geht das mit 3bits. Das geht aber auch mit 
nur 2 Pins: Mit einem Schieberegister ohne Latch, das eine 1 durch die 8 
Ausgänge schiebt (natürlich getrennt angesteuert, ohne SPI; da man nur 
ein Clocksignal braucht um zu schieben.
Gast #2540631
Lesenswert?

Samuel K. schrieb:
> Das bezog sich auf deinen Vorschlag den 74HC237 zu nehmen. NICHT auf den
> Zeilentreiber.

Aber der 237 soll der zeilentreiber sein?!

Samuel K. schrieb:
> Die Idee des 237 ist es die Zeilen mit möglichst wenig Pins anzusteuern,
> da immer nur eine aktiv ist, geht das mit 3bits. Das geht aber auch mit
> nur 2 Pins: Mit einem Schieberegister ohne Latch, das eine 1 durch die 8
> Ausgänge schiebt (natürlich getrennt angesteuert, ohne SPI; da man nur
> ein Clocksignal braucht um zu schieben.

Da brauch ich aber auch drei. serielles signal fuer die erste eins, 
clock fuer den takt und clear um die 1 evtl mal wieder zu löschen falls 
notwendig.
Gast #2540664
Lesenswert?

So danke euch für all die vielen Tipps und Hilfen, ich hoffe diese 
Version ist ohne nennenswerte Makel und ich kann ans Bestellen gehen. 
Oder doch noch etwas auszusetzen?

Wie ich die Zeilen jetzt letztendlich ansteuere entscheide ich dann 
später, ich bestelle beide ICs.
Angehängte Dateien:
Gast #2540687
Lesenswert?

Samuel K. schrieb:
> Die Transistoren für die 6 Leds, brauchst du die wirklich? Der Avr kann
> 40mA pro Pin und maximal 100mA pro Port treiben.

Ich habs so ausgelegt das alle gleichzeitig an sein können. Auch wenns 
von der Logik her natürlich keine 63 Minuten gibt. Aber wenn 6 leuchten 
sinds am Port 6x20mA und somit über den 100mA.
Moderator (Firma: Titel) Persönliche Seite #2541381
Lesenswert?

Edi R. schrieb:
> Den C10 darfst Du nicht bestücken, sonst funktioniert ISP nicht.
Er ist nicht unbedingt schön und nötig, stört aber nicht, weil schon 
viele diesen Fehler gemacht haben und die Programmer jetzt damit rechnen 
und den Reset entsprechend lang anlegen. Früher (tm) war das so, dass 
evtl. der Programmer nicht lange genug gewartet hat, der Kondensator 
nicht entladen war, und dann schon mit dem SPI-Takt herumgewackelt 
wurde.
Denn mit einem solchen Programmer muß ja der programmierende Controller 
erst mal mit dem PB4 den Kondensator entladen: 
http://www.atmel.com/Images/doc0943.pdf


Schön an diesem Kondesator ist aber, dass auf dessen Pads evtl. auch mal 
ein anderes Bauteil gelötet werden könnte...  ;-)
#2542178
Lesenswert?

Ok, wenn die Programmer inzwischen mit einem C am Reset umgehen können, 
nehme ich die Aussage zurück. Ich würde (und werde) trotzdem auf den C 
verzichten:

- Im Gegensatz zu früheren Mikrocontrollern ist am Reset-Pin kein 
Reset-Impuls beim Power-Up erforderlich; die AVRs haben alle eine 
interne Resetschaltung (Power-On-Reset)
- Auch gegen Störungen ist hier kein Kondensator erforderlich. Wenn der 
Reset-Pin nicht eine Mindestzeit lang kontinuierlich auf Low gehalten 
wird, wird kein Reset ausgelöst
- DebugWire geht sicher nicht mit einer kapazitiven Belastung

@Michael H.: "Blödsinn" ist für mich keine ausreichende Argumentation.
Moderator (Firma: Titel) Persönliche Seite #2542346
Lesenswert?

Edi R. schrieb:
> Ich würde (und werde) trotzdem auf den C verzichten:
> - Auch gegen Störungen ist hier kein Kondensator erforderlich.
Ich mache ihn aus genau diesem Grund (wieder) rein (wenn auch nur in 
der 10nF Variante). Aber auf keinen Fall darf der Pin einfach offen 
gelassen und auf den internen Pullup vertraut werden.
Wenn ein Reset-Pin benötigt wird (wegen ISP) kommen zwei Bauteile da 
dran: ein zusätzlicher Pullup mit 4k7 und der 10nF Kondensator. Eine 
zuverlässige Funktion ist mir diese 2 Cent wert...  ;-)
#2542586
Lesenswert?

Edi R. schrieb:
> - Im Gegensatz zu früheren Mikrocontrollern ist am Reset-Pin kein
> Reset-Impuls beim Power-Up erforderlich; die AVRs haben alle eine
> interne Resetschaltung (Power-On-Reset)
aus einem typ 60k pullup und parasitären kapazitäten.
wenn der reset über ein paar cm leiterbahn als antenne verfügt, wünsche 
ich dir viel spaß in gegenwart von pwm-signalen, schaltnetzteilen, 
usw...

> - Auch gegen Störungen ist hier kein Kondensator erforderlich. Wenn der
> Reset-Pin nicht eine Mindestzeit lang kontinuierlich auf Low gehalten
das war iirc EINE mikrosekunde.

> wird, wird kein Reset ausgelöst
> - DebugWire geht sicher nicht mit einer kapazitiven Belastung
da hat die reset-leitung ja auch eine völlig andere funktion.
#2543273
Lesenswert?

Lothar Miller schrieb:
> Aber auf keinen Fall darf der Pin einfach offen
> gelassen und auf den internen Pullup vertraut werden.

Der Kondensator am Reset-Pin ist offensichtlich ein schönes Thema, um 
darüber zu diskutieren, aber in diesem Punkt bin ich völlig Deiner 
Meinung. Ein externer Pullup am Reseteingang muss sein.

Michael H. schrieb:
> Edi R. schrieb:
>> - Im Gegensatz zu früheren Mikrocontrollern ist am Reset-Pin kein
>> Reset-Impuls beim Power-Up erforderlich; die AVRs haben alle eine
>> interne Resetschaltung (Power-On-Reset)
> aus einem typ 60k pullup und parasitären kapazitäten.

Nein, völlig anders. Siehe Datenblatt des ATmega32, Seite 36, "Power-On 
Reset":

>A Power-on Reset (POR) pulse is generated by an On-chip detection
>circuit. The detection level is defined in Table 15. The POR is activated
>whenever VCC is below the detection level. The POR circuit can be used to
>trigger the Start-up Reset, as well as to detect a failure in supply
>voltage.
>
>A Power-on Reset (POR) circuit ensures that the device is reset from
>Power-on. Reaching the Power-on Reset threshold voltage invokes the delay
>counter, which determines how long the device is kept in RESET after VCC
>rise. The RESET signal is activated again, without any delay, when VCC
>decreases below the detection level.

Aus dem Abschnitt "Reset Sources" geht hervor, dass der Power-On Reset 
und der Reset-Eingang nichts miteinander zu tun haben (natürlich außer 
dass sie alle einen Reset auslösen):

>The ATmega32 has five sources of reset:
>• Power-on Reset. The MCU is reset when the supply voltage is below the
>Power-on Reset threshold (VPOT).
>• External Reset. The MCU is reset when a low level is present on the
>RESET pin for longer than the minimum pulse length.
>...
(es folgen noch Watchdog Reset, Brown-Out Reset und JTAG AVR Reset.)

Nota bene ist es ja auch möglich, die Resetfunktion des Resetpins 
abzuschalten, und trotzdem werden saubere Power-On-Resets durchgeführt.

Michael H. schrieb:
>> - Auch gegen Störungen ist hier kein Kondensator erforderlich. Wenn der
>> Reset-Pin nicht eine Mindestzeit lang kontinuierlich auf Low gehalten
> das war iirc EINE mikrosekunde.

Jein, 1,5 µs, aber Du hast recht, sehr viel ist das nicht. Aber wenn ich 
eine Schaltung für stark gestörte Umgebung mache, müssen sowieso noch 
andere Maßnahmen getroffen werden. Mit dem Reset-Eingang habe ich 
jedenfalls noch keine bösen Überraschungen erlebt (mit Ausnahme beim 
fehlenden externen Pullup).

Michael H. schrieb:
> Edi R. schrieb:
>> @Michael H.: "Blödsinn" ist für mich keine ausreichende Argumentation.
> dann zeig mir einen programmer, der die 100nF nicht schnell genug leeren
> kann.

Das Argument stammt aber nicht von Dir, sondern von Lothar Miller. Aber 
ich habe im Beitrag "Re: Binär-Uhr hoffentlich finale Schaltung" ja schon 
eingelenkt.
Gast #2552318
Lesenswert?

Hallo,

wollte mal nachfragen, ob die Schaltung letztendlich auch wie gewünscht 
funktioniert hat und ob die Chance besteht, dass du den absolut finalen 
Schaltplan hier nochmal reinstellen könntest.
Bin selbst auf der Suche nach ner geeigneten Schaltung für mich und 
deine klingt sehr interessant.

Da ich noch ganz am Anfang meiner Ausbildung bin, kenne ich mich mit der 
Programmierung überhaupt noch nicht aus. Könntest du daher die fertigen 
Code-Listen vielleicht mit posten ?

Wäre super.

Vielen, vielen Dank schonmal
Gast #2588033
Lesenswert?

So ich habe die Schaltung nun aufgebaut und schon teile programiert. die 
binäre ausgabe funktioniert.

Die Matrix will aber nicht leuchten. Die Shiftregister werden 
beschrieben, die spannung an den ausgängen stimmt. das problem sind die 
517 transistoren die einfach nicht durchschalten wollen. 5V am ausgang 
der BIN-BCD wandlers auf 13k widerstände an die basis der 517er. 
Spannung CE 2,7V, BE 0,7V. Widerstand abgezwackt und strom gemessen --> 
0mA. aber das mag vllt am multimeter liegen, ist ein günstiges. Ich 
verstehe nicht wo das problem liegt. Laut datenblatt liegt die CEsat bei 
1V max. die BEsat 1,5Vtyp 2V max.

schaltet der transitor nicht komplett durch? bleibt für die LEDs nicht 
genug spannung? theoretisch müsste es doch reichen. rechnerisch beträgt 
der basis strom 3,8mA. Ich bin echt verzweifelt...
#2588049
Lesenswert?

Oliver Ka schrieb:
> 13k widerstände an die basis
...
> rechnerisch beträgt
> der basis strom 3,8mA
Bei stolzen 50V Spannung. =)

Wie sieht denn dein endgültiger Schaltplan aus? Ist das binaer_uhr4.png?

Oliver Ka schrieb:
> BE 0,7V.
Passt nicht zu einem Darlingon-Transistor wie dem BC517. Hier müsstest 
du Werte um die 1,3V ablesen. Ist der vielleicht verkehrtrum eingelötet? 
Am besten mit dem Datenblatt des Herstellers abgleichen. Der Hersteller 
ist am Logo auf dem Transistor selbst zu erkennen.
Gast #2588072
Lesenswert?

Michael H. schrieb:
> Bei stolzen 50V Spannung. =)

stimmt, es wären 0,3mA. sollte aber reichen oder? ich habe statt 2x7 517 
jetzt 3x7 517 eingebaut. sonst ist die matrix identisch.

Und ich idiot habe die transistoren tatsächlich falsch herum 
eingelötet... Ich hab gedacht die Sicht im DB ist von oben, dabei ist 
sie von unten :/. So was dummes. Danke für deine Hilfe ich werde jetzt 
probeweiße eine reihe umlöten und mich dann nochmal melden.
Gast #2621516
Lesenswert?

Route_66 schrieb:
> Hallo!
> Kannst Du den Grund nennen, weshalb die Transistoren für die Stunden-
> und Minuten-LEDs doppelt sind?
> Q43 mit Q58, Q51 mit Q59, Q52 mit Q60, ...Q56 mit Q62

Nein kann ich nicht, das ist mir auch aufgefallen allerdings waren sie 
da schon verlötet ;-)

Michael H. schrieb:
> Gratuliere!
> Gibts denn Bilder von der Uhr selbst?

Ja gibt es, es gibt eigentlich auch eine website auf der man das Projekt 
anschaun kann aber die ist derzeit nicht verfügbar. Ich poste mal ein 
zwei bilder der Uhr dazu.
Angehängte Dateien:
Gast #2621679
Lesenswert?

Michael H. schrieb:
> Respekt. Sieht nach einer Heidenarbeit aus!
> Nach dem Bild mit der Elektronik hätte ich wirklich keine so ansehnliche
> Front erwartet =)

Danke :-)

Michael H. schrieb:
> Wie habt ihr denn die satinierte Front gemacht?
> Sind die Zahlen nur auf dem Photo retuschiert oder sind die wirklich auf
> der Front?

Also es war ja eine Einzelarbeit. Wollte zuerst eine plexi nehmen aber 
beim Rahmen war schon eine Glasplatte dabei die ich mit 7 oder 8 Lagen 
milchiger Folie beklebt habe.
Gast #2643779
Lesenswert?

Wenn interesse besteht kann ich den Quell-Code hochladen. Sollte ich das 
in diesem Thread oder in der Codesammlung tun? Immerhin ist es ja ein 
sehr spezielles Programm und kein allgemeiner Code.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren