Forum: Mikrocontroller und Digitale Elektronik Binäruhr-Schaltung nicht professionell?


von Bastler (Gast)


Lesenswert?

Hallo Elektronikfreunde,

ich habe diesen Thread auf der Suche nach der Schaltung einer Binäruhr 
gefunden: Beitrag "Binäruhr als Semesterprojekt"

Diese Schaltung wurde aber als unprofessionell gebrandmarkt von einigen 
die sich gut mit der Materie auskennen. Für mich als interessierten 
Hobbyelektroniker kann ich allerdings nichts ausmachen, was die Qualität 
der Schaltung mindern würde..

Kann mir jemand auf die Sprünge helfen?

Viele Grüße
Bastler

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Das Problem ist, dass die Software im Controller meist keine 100%ige 
Zeit hat. Der Quarz hat eine Toleranz, die Software braucht ihre Zeit, 
die Shift Register brauchen sie, der Programmierer hat keine Ahnung, ...

Da gibt es sicher noch mehr Gründe, als die hier...

von ... .. (docean) Benutzerseite


Lesenswert?


von Bastler (Gast)


Lesenswert?

Ja, ich habe mir den Thread sehr wohl durchgelesen, aber viele Antworten 
sind so gestaltet (1 Grund, *etc...*) und um dieses etc geht es mir 
;-)

Habe übrigens die Website gefunden: 
http://www.jb-electronics.de/html/elektronik/digital/d_binaeruhr.htm

Warum hat der Programmierer keine Ahnung? So wie ich das beurteilen kann 
(ich kann nicht so gut C) schickt er doch die Werte der Reihe nach an 
die Register, das sollte doch OK sein? Und er nimmt ein 4.194304MHz 
Quarz, damit kommt er doch wegen 2^22 ganz gut an die 1Hz ran, oder?

Grüße
Bastler

von Karl H. (kbuchegg)


Lesenswert?

Bastler schrieb:

> Diese Schaltung wurde aber als unprofessionell gebrandmarkt

Die Kritik richtete sich gegen mehrere Punkte

* zum einen wie der Schaltplan gezeichnet wurde
  Da sind so ziemlich alle Fehler drinnen, die man beim
  Schaltplanzeichnen machen kann.
  Der Prominenteste davon:
    Bei Leitungen, die sich überkreuzen, ist nicht klar
    ob das jetzt ein zufälliges Überkreuzen ist und nichts
    weiter zu bedeuten hat, oder ob da ein Verbindungspunkt
    fehlt, der andeutet, dass sich hier tatsächlich 4 Leitungen
    treffen.

* Wozu sollen die Schieberegister gut sein?
  Sein µC hat genügend Pins um alles (LED, Taster) direkt anschliessen
  zu können. Kein Mensch braucht diese Schieberegister

* Aber wenn schon Schieberegister, dann hängt man die nicht so an.
  Hat man mehrere Schieberegister, dann kaskadiert man die. Das jeweils
  nächste SR hängt am vorhergehenden drann, so dass sich ein virtuelles
  SR mit (in diesem Fall) 16 Bit ergibt. Ein weiteres SR an die Kette
  drann, ergibt ein SR mit 24 Bit, etc. Und das alles, ohne dass sich
  am Prozessoranschluss irgendetwas ändern würde. Egal wieviele Bit
  dieses virtuelle n*8 Bit SR aufweist, es wird immer noch mit nur
  3 Leitungen am µC angeschlossen

* Eine der Grundregeln beim Bau von Digitalschaltungen:
  Jedes IC kriegt einen 100n Abblockkondensator.
  Ich kann in der Schaltung keinen einzigen erkennen.


Dazu kam dann natürlich noch die Attitüde des Fragestellers.
Wenn Lieschen Müller so etwas abliefert, bzw. sich so anstellt wie der 
Fragesteller, dann mag das OK sein. Aber von einem Hochschulabsolventen 
(noch dazu ET, wenns wenigstens Informatik wäre) erwarte ich mehr.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Warum hat der Programmierer keine Ahnung?
Hab ich nie behauptet, ein möglicher Grund
So wie ich das beurteilen kann

>Und er nimmt ein 4.194304MHz Quarz, damit kommt er doch wegen 2^22 ganz gut >an 
die 1Hz ran, oder?
Du hast es erfasst, ich kenne mich mit PICs nicht aus und kann man 
schnell einen Maschinenzyklus ausrechnen, aber wenn die MZs nicht 100%ig 
gerade in einer Sekunde aufgehen, geht die Uhr immer falsch.
Bei einem 8051 z.B. mit 16Mhz wäre ein MZ genau 1µS lang, bei 11.0592 
wären es 1.085µS. Bei 16Mhz wäre also eine genaue Uhr möglich, bei 
11.0592 wahrscheinlich nicht mehr.

von Falk B. (falk)


Lesenswert?

@  Bastler (Gast)

>Warum hat der Programmierer keine Ahnung?

Das Programm ist so lala, kann man als einfache Lösung gelten lassen. 
Auch wenn bei der Variable SekundeUm ein volatile in der Definition 
fehlt, siehe Interrupt. Dass es doch funktioniert liegt wohl am 
gutmütigen C-Compiler für den PIC ;-)

> So wie ich das beurteilen kann
>(ich kann nicht so gut C) schickt er doch die Werte der Reihe nach an
>die Register, das sollte doch OK sein?

Im Prinzip ja, praktisch schaltet man die aber beide in Reihe.

> Und er nimmt ein 4.194304MHz
>Quarz, damit kommt er doch wegen 2^22 ganz gut an die 1Hz ran, oder?

Das passt schon.

Aber die schlimmste Macke ist der fehlende 100nF Keramikkondensator am 
PIC!

MfG
Falk

von Bastler (Gast)


Lesenswert?

Hallo, danke für die Erklärungen. Das mit dem volatile wusste ich gar 
nicht, danke für die Erklärung Falk.

Gut, Abblockkondensatoren müssen da noch hin, das sehe ich ein. Aber die 
Schaltungen dieser Seite sind immer sehr auf das wesentliche 
konzentriert, da ist nirgends ein 100nF Abblocker auf den Schaltplänen, 
aber ein Kommentar a la "hab ich nicht gezeichnet, weil es den 
Schaltplan überfüllt, müsste aber theoretisch hin" wäre wünschenswert.

Was könnte man im Code verbessern?

Gruß
Bastler

von Falk B. (falk)


Lesenswert?

@  Bastler (Gast)

>aber ein Kommentar a la "hab ich nicht gezeichnet, weil es den
>Schaltplan überfüllt, müsste aber theoretisch hin" wäre wünschenswert.

Nein, er wäre schlicht Unsinn. Wo ist das Problem, in diesem "komplexen" 
Schaltplan einen Abblockkondensator einzuzeichnen?

>Was könnte man im Code verbessern?

Das Stellen der Uhrzeit ist ziemlich brachial. Das kann man sauber mit 
einer entprellten Tastenabfrage machen, der Timer läuft ja schon. Siehe 
Entprellung.

MFG
Falk

von Bastler (Gast)


Lesenswert?

Also gut, ich habe mir den Code nochmal gut durchgelesen, und auch das 
Tutorial zur Entprellung hier auf microcontroller.net, aber im 
Wesentlichen macht er ja das gleiche.

Darf ich also zusammenfassen, dass diese Schaltung für einen 
Hobbyelektroniker ganz OK ist (wenn man die Abblockkondensatoren und die 
kleineren Formfehler im Schaltplan vernachlässigt)? Ich wäre glaube ich 
schon zufrieden, wenn ich so viel Ahnung hätte wie derjenige der diese 
Schaltung und den Code entworfen hat.

von Falk B. (falk)


Lesenswert?

@  Bastler (Gast)

>Tutorial zur Entprellung hier auf microcontroller.net, aber im
>Wesentlichen macht er ja das gleiche.

Keineswegs.

>Darf ich also zusammenfassen, dass diese Schaltung für einen
>Hobbyelektroniker ganz OK ist (wenn man die Abblockkondensatoren und die
>kleineren Formfehler im Schaltplan vernachlässigt)?

Wenn man den Abblockkondensator ergänzt ist sie OK.

MfG
Falk

von Ulrich (Gast)


Lesenswert?

In der Schaltung sind genug Fehle drin um was zu lernen.
Der Abblockkondensator ist nicht nur ein "Nice to have", sondern der 
erste Schritt damit man eine Chance hat eine EMV Prüfung zu bestehen. 
Ein Minimum an Funkentstörung sollte auch für Bastler sein.

Das positive an der Schaltun ist, sie geht.

Professionell würde man die LEDs direkt vom µC treiben und einen 
langsameren Quarz nehmen (32 kHz).

von Bastler (Gast)


Lesenswert?

Also die LEDs direkt vom uC treiben ginge, das stimmt, aber dann könnte 
man sie nicht dimmen, was man ja über den ENABLE-Eingang der Register 
tun könnte. Man sollte die Reg's nur in Serie schalten.

Das 4.194304MHz Quarz ist aber eigentlich ganz nützlich, da es eine 
relativ genaue 1Hz-Basis liefert, die 32.????kHz-Uhrenquarze müssten 
allerdings auch gehen, das stimmt.

Gruß
Bastler

von Lupin (Gast)


Lesenswert?

Das Dimmen würde auch in software gehen. Man könnte zB den common der 
LEDs über einen Transistor der mit PWM angesteuert wird dimmen. Bei 
32,768kHz muss man aber zusehen das die PWM flott läuft (also am besten 
ne 4 bit PWM oder so).

von Peter D. (peda)


Lesenswert?

Man darf das alles nicht so verbissen sehen. Es ist eben ein Projekt von 
einem Anfänger und dafür ist es o.k.
Meine Hauptkritik wäre, daß das Programm nicht kommentiert ist.
Aber immerhin ist es in C geschrieben, man könnte es also leicht auf 
einen AVR, z.B. ATtiny24 umändern. Mit etwas Trickserei ist auch ein 
ATtiny10 möglich.
Die 220R Widerstände könnte man auch weglassen, die Hochvolt-CMOS haben 
etwa 1k Ausgangswiderstand bei 5V.

Ich hab früher auch mal TTL-Schaltungen aufgebaut ohne einen einzigen 
Kondensator außer dem 4700µF im Netzteil. Und das Netzteil hatte 
nichtmal nen Spannungsregler. Die Schaltung hat funktioniert, 
Radioempfang war in der Nähe natürlich nicht mehr möglich.


Peter

von Bastler (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Die 220R Widerstände könnte man auch weglassen, die Hochvolt-CMOS haben
> etwa 1k Ausgangswiderstand bei 5V.

Das stand auch im anderen Thread meine ich. Woher erkennt mensch das im 
Datenblatt? Muss ich das aus irgendeinem Diagramm ablesen? Bin da noch 
nicht so fit.

Gruß
Bastler

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.