Forum: Mikrocontroller und Digitale Elektronik Seminarprojekt Binäruhr, passenden µC gesucht


von Tom M. (maierx)


Lesenswert?

Hallo,
ich bin Schüler der 11. Klasse und muss im Seminarfach 
"Informatik-Physik" eine Seminararbeit schreiben. Mir kam die Idee eine 
Binäruhr zu bauen, schlug dies auch meinem Lehrer vor, welcher meinte, 
dass dies ein gutes Thema sei. Nun habe ich mich mit der Binäruhr 
intensiver beschäftigt und wurde durch die ganzen Informationen zum Bau 
ziemlich überrumpelt. Vorkenntnisse zur Elektronik besitze ich nur 
wenige.
[...]
MfG maierx (x


EDIT: Stand 16.04.2014
Den Schaltplan habe ich im groben Verstanden, das Wissen über 
Mikrokontroler ist ebenso gewachsen. Derzeit bin ich auf der Suche nach 
einem einsteigerfreundlichem, leistungsfähigen und halbwegs preiswerten 
Kontroler + Programmer. Programmierkenntnisse besitze ich mit Java, 
würde mich aber auch in eine neue Sprache reinfuchsen.

: Bearbeitet durch User
von dolf (Gast)


Lesenswert?

Tom M. schrieb:
> habe ich kein Programm für den µC gefunden, selber
> eins schreiben wäre mMn zu heavy, da ich lediglich Java
> Kenntnissebesitze und von µC sowieso kaum Ahnung habe.

und dann schlägst du deinem lehrer so ein projekt vor?
nun ja etwas größenwahn in ehren aber das hier?

von Tom M. (maierx)


Lesenswert?

dolf schrieb:
> Tom M. schrieb:
>> habe ich kein Programm für den µC gefunden, selber
>> eins schreiben wäre mMn zu heavy, da ich lediglich Java
>> Kenntnissebesitze und von µC sowieso kaum Ahnung habe.
>
> und dann schlägst du deinem lehrer so ein projekt vor?
> nun ja etwas größenwahn in ehren aber das hier?

Die Arbeit soll Elektronik und ggf Informatik (Programmieren) 
beinhalten, er meinte das Thema sei angemessen, daher leb ich momentan 
noch im Glauben, dass mich die ganzen neuen Informationen nur 
überrumpeln und es de facto doch machbar ist.

von Wilhelm F. (Gast)


Lesenswert?

Für mich als heute Ingenieur wäre eine Binäruhr kein Thema.

Aber in der 11, was macht ihr denn da?

Meine Erfahrung ist, daß man sich da nicht gerade das schwerste und 
abgefahrenste aussuchen muß, und dafür auch eine gute Note bekommt. So 
weit es der Schulklasse entspricht. Sich übernehmen, geht oft nach 
hinten los.

von Andi (Gast)


Lesenswert?

Wo bist du? Vielleicht kann dir jemand etwas Nachhilfe geben,
dass du aus den ganzen Informationen die nötigen extrahieren kannst
und dein Projekt erfolgreich absolvieren kannst?

von A. F. (elagil)


Lesenswert?

Tom M. schrieb:
> und es de facto doch machbar ist.

Das ist sicher machbar, auch gut ohne Mikrocontroller, zum Beispiel mit 
einfachen Binär-Zählerbausteinen.

Tom M. schrieb:
> da ich lediglich Java Kenntnisse besitze

Das ist doch schon etwas. Der Umgang mit Variablen, Methoden, etc. ist 
dann ja bekannt. Größere Unterschiede gibt es ja vor allem in der Syntax 
und dem Fehlern vieler komfortabler eingebauten Methoden. Für dieses 
Projekt ist so etwas schwerer verständliches wie Zeiger und 
Speicherverwaltung nicht nötig, du könntest also mal versuchen, ein 
kleines C-Programm zum Einstieg zu schreiben.

Am besten baust du einen einfachen Binärzähler in Software auf, der eine 
Variable von 0 bis 59 hochzählt, eine andere von 0 bis 12.

Vielleicht sowas (Pseudocode mit Rätsel):
1
Minuten = 0
2
Stunden = 0
3
4
Do every min{
5
Minuten erhöhen
6
7
Wenn Minuten == ??? { // Stunden hochzählen, wenn ?
8
  Minuten = ???
9
10
  Wenn Stunden < ???:
11
    Stunden erhöhen
12
  sonst:
13
    Stunden = ???
14
}
15
} End

von dolf (Gast)


Lesenswert?

wenn du dich mit und oder nicht auskennst dann kann man das auch mit 
einigen cmos ic´s der 4000er serie erledigen.
die sind zwar alt und lahm aber für sowas gut geeignet.
du brauchst nen 1hz takt und vier oder sechs bcd zähler mit 8421 
ausgängen.
die zähler muss man mit ner passenden zählweitenbegrenzung beschalten.
99.99.99 uhr z.b. wäre ja etwas unpassend
dazu noch led treiber und gut.
du kannst an die zählerausgänge natürlich auch noch nen bcd zu 7 segment 
dekoder anklemmen.
dann hast dazu noch die normale anzeige.

von Tom M. (maierx)


Lesenswert?

Momentan sollen wir das Thema unserer Arbeit ausformulieren.
Wo wir grad sind.. Spontan würd ich sagen ganz am Anfang. ^^ Der 
Physikunterricht bis zur 10. Klasse war um 's sanft auszudrücken sehr 
"schwach", haben zur Elektronik kaum was gelernt, geschweige denn über 
elektrische Schaltkreise. Im Seminarfach haben wir uns zuvor mit dem 
astabilen Multivibrator beschäftigt.

Adrian Figueroa schrieb:
> Das ist sicher machbar, auch gut ohne Mikrocontroller, zum Beispiel mit
> einfachen Binär-Zählerbausteinen.
Ohne µC? Worauf speicher ich dann das untenstehende Programm?

Ich fühl mich grad ziemlich unwohl, da ich vom Fachlichem echt nichts 
versteh. v-v

von A. F. (elagil)


Lesenswert?

> Ohne µC? Worauf speicher ich dann das untenstehende Programm?

Gar nicht :D Das "Programm" ist für einen Mikrocontroller gedacht, die 
andere Lösung wurde von dolf beschrieben.

> Ich fühl mich grad ziemlich unwohl, da ich vom Fachlichem echt nichts
> versteh.

Das kommt mit der Zeit von selbst!

von A. F. (elagil)


Lesenswert?

Tom M. schrieb:
> Im Seminarfach haben wir uns zuvor mit dem
> astabilen Multivibrator beschäftigt.

Aus dem kann man ja, wenn man sehr wenig Anspruch an die Genauigkeit und 
Stabilität der Uhr hat, seinen Takt gewinnen.

von Tim  . (cpldcpu)


Lesenswert?

Hast Du Dir schon einmal Arduino angeschaut? Wenn Du Java programmieren 
kannst, bekommt Du auch Arduino hin. Für die Binäruhr musst Du dann nur 
noch ein paar LEDs an die Ausgänge anschließen.

Lass sich nicht von den ganzen Diskussion ums warum beirren.

von Wilhelm F. (Gast)


Lesenswert?

Tom M. schrieb:

> Im Seminarfach haben wir uns zuvor mit dem
> astabilen Multivibrator beschäftigt.

Das ist doch schon ein netter Anfang. Ein Taktgenerator mit digitalem 
Signal.

Worauf soll es denn hinaus laufen? Eine Aufgabe, die PC und Programme 
braucht, oder auch nicht?

Sonst hätte ich mal einen simplen Reaktionstester mit zwei 
CMOS-4000-Bausteinen. Ein Multivibrator macht da Takte mit 30ms, und ein 
Zähler zählt die. Anzeige mit 10 LEDs. Bausteinbedarf nur ein 4060 
Ripple Counter und 4017 Dekadenschalter. Die Reaktionszeit wird dann in 
30ms-Schritten am LED-Band angezeigt. Stromversorgung ist unkritisch, 
nur ein 9V-Block. Mann, was konnte ich mit so simplen Dingen schon 
Menschen erfreuen und begeistern. Ich mußte das Gerät damals schon mal 
für ein Wochenende an einen Gymnasialpauker verleihen, der damit mit 
seinem Sohnemann um die beste Reaktionszeit wetteiferte. Der Pauker 
hatte auch keine Ahnung, was in dem Kästchen war. Ich war der einzige 
Elektroniker und Bastler in einer Schulklasse, der mal an der VHS die 
Sekundarstufe (mittlere Reife) nach holte.

Das Ding programmierte ich 20 Jahre später auf einen µC, und zeigte 
anstatt nur mit 10 LEDs die Millisekunden auf einem LCD an. Es 
verblüffte und fesselte die Menschen immer noch genau so. Ein 25 Jahre 
altes Board mit 8051. Es könnte auch fast 40 Jahre alt sein und mit dem 
8080, egal. Die sind erschrocken über ihre Reaktionszeit, und versuchen 
es am Gerät mehrmals, besser zu werden, weil sie ihre eigene schlechte 
Reaktion nicht so recht glauben, wenn da 320ms auf dem Display steht, 
und man nicht mehr darunter kommt!

Mit 2-3 Personen wird das immer noch amüsanter.

Erstaunlich, wo die Leutchen doch eher PC-Monitore und schöne Bildchen 
gewohnt sind.

von Tom M. (maierx)


Lesenswert?

ZUnächst ersteinmal danke für die zahlreichen Antwortenn.

Tim    schrieb:
> Hast Du Dir schon einmal Arduino angeschaut? Wenn Du Java programmieren
> kannst, bekommt Du auch Arduino hin. Für die Binäruhr musst Du dann nur
> noch ein paar LEDs an die Ausgänge anschließen.
Habe mir grad ein paar YT-Videos angesehn, schon toll das Ding :D Ich 
denke aber, dass mein Lehrer davon nicht begeistert sein wird, da dann 
das "Schaltkreis-realissieren-und-Bauelente-auf-Platinen-löten" 
wegfallen würde.
Das mit dem Ripple Counter ist auch recht interessant,aber selbiges 
Problem wie oben...

Ist es einfach, mit Java-Kenntnissen ASM bzw C (sind die doch beiden 
"haupt µC Sprachen", oder?) zu erlernen?

von Wilhelm F. (Gast)


Lesenswert?

Tom M. schrieb:

> Ist es einfach, mit Java-Kenntnissen ASM bzw C (sind die doch beiden
> "haupt µC Sprachen", oder?) zu erlernen?

Schade, daß es das PICkit1 mit dem 12F675 nicht mehr gibt. Aber MPLAB 
kann man sich bei Microchip gratis und unregistriert da von der Homepage 
laden, da ist ein Simulator mit drin.

Also man kann damit schon eine Software simulieren, wenn man den µC noch 
gar nicht besitzt.

Den PIC Assembler mögen manche nicht, aber man kann sich damit auch 
anfreunden, wenn man es möchte.

von Tim  . (cpldcpu)


Lesenswert?

Tom M. schrieb:
> Habe mir grad ein paar YT-Videos angesehn, schon toll das Ding :D Ich
> denke aber, dass mein Lehrer davon nicht begeistert sein wird, da dann
> das "Schaltkreis-realissieren-und-Bauelente-auf-Platinen-löten"
> wegfallen würde.

Das kann man immer noch hinterher machen. Den Microcontroller auf dem 
Arduino gibt es auch als einzelnen Chip.

: Bearbeitet durch User
von Sebastian R. (sepp1985)


Lesenswert?

Welchen Controller willst du denn verwenden?
Ich würde, wenn es möglich wäre die LED's jeweils auf nen Byte Ausgang 
verteilen. Meine damit die LED's für die 59 Sek auf ein Byte. Und nicht 
wie oben im Schaltplan auf zwei verteilt. Kannst so dann später deine 8 
Bit Variable direkt auf den Port schreiben.

MfG
Sebastian

von Tom M. (maierx)


Lesenswert?

Klausuren geschrieben und endlich Zeit gefunden, mich wieder mit dem 
Binäruhr Projekt zu beschäftigen. An dieser Stelle nochmal ein Danke an 
die zahlreichen Antworten!

Der Jetztige Stand der Dinge ist, dasa ich den Schaltplan überwiegend 
verstehe.
Zum Programm selbst: Ganz salop gesagt muss ich ein Programm entwerfen, 
welches zu jedem ankommenden Takt die Sekunden um eine Sekunde erweitert 
und die jeweilige Sekundenzahl dann in binärschreibweise auf LEDs 
ausgebe.

Als nächstes habe ich vor, mich an einem Mikrokontroller zu wagen. Am 
besten wär's natürlich, wenn der Mirkokontroller, mit dem ich 
"rumexperimentieren" will, ebenso der Mikrokontroller ist, auf dem 
später das Programm zur Binäruhr läuft. Wie im ersten Post schon 
angedeutet, besitze ich lediglich Kenntnissse vom Programmieren mit 
Java, könnte mich aber auch in eine neue Sprache reinfuchsen.
(Kurze Nebenfrage zur Versicherung meiner Denkweise: ich schreibe ein 
Programm am PC, "schiebe" dies via Programmer(?) auf den 
Mikronkontroller, bau Takt, Spannung und Dioden an und es sollte laufen)

Welcher Mikrokontroller wäre für mich geeignet bzw auf was muss ich beim 
Suchen achten?

von Max H. (hartl192)


Lesenswert?

Tom M. schrieb:
> Welcher Mikrokontroller wäre für mich geeignet bzw auf was muss ich beim
> Suchen achten?
Ich würde einen PIC18 mit genügend IOs empfehlen, dazu das PIKkit3 als 
Programmer und Debugger.
Wenn dir 25 IOs reichen würde ich den PIC18F25k22 verwenden.

Die Entwicklungsumgebung MPLAB X IDE und der XC8 C-Compiler sind 
kostenlos.

PICs haben nur wenige und unkritischen Stolperfallen für Anfänger, ich
habe z.B. noch nie gehört, dass sich jemand seinen PIC verfused hat.

Für den Einstieg hat mir dieses Tutorial gut geholfen:
http://pic-projekte.de/wordpress/?p=133#comments
Für ASM und generell zu PIC findet man hier viel:
http://www.sprut.de/

Tom M. schrieb:
> (Kurze Nebenfrage zur Versicherung meiner Denkweise: ich schreibe ein
> Programm am PC, "schiebe" dies via Programmer(?) auf den
> Mikronkontroller, bau Takt, Spannung und Dioden an und es sollte laufen)
Wenn die LEDs einen Vorwiderstand haben und das Progamm richtig ist, 
dann ja. Die Hardware macht man eigentlich vor der Software.

Tom M. schrieb:
> Ganz salop gesagt muss ich ein Programm entwerfen,
> welches zu jedem ankommenden Takt die Sekunden um eine Sekunde erweitert
> und die jeweilige Sekundenzahl dann in binärschreibweise auf LEDs
> ausgebe.
Ich würde das 1 Hz Signal mit einem Interrupt auswerten und in der 
Interrupt Service Routine (ISR)  die Sekunden, und eventuell auch 
Minuten und Stunden erhöhen und ausgeben.

: Bearbeitet durch User
von oldmax (Gast)


Lesenswert?

Hi
Wenn du schon ein wenig programmierem kannst, dann weißt du, wie eine 
Aufgabe analysiert und umgesetzt wird. Ist bei Controllern nicht anders. 
Es gibt hier Tutorials mit ASM und C ( wobei ich C immemr noch nicht 
wirklich verstehe) die für einen Anfänger eine große Hilfe 
sind.Zusätzlichkönnt ich dir im AVR-Praxis -Forum den Beitrag "keine 
Angst vor Assembler" in der FAQ Rubrik empfehlen. Dort dürftest du alles 
finden, um dein Projekt mit einem ATMega umzusetzen.
Nun weiß ich nicht, welches Equipment dir zur Verfügung steht. Wenn du 
noch nichts hast, dann mein Rat: Nimm die Atmel Evaluationsplatine von 
Pollin als Bausatz. Da lernst du löten und du hast gleich die Platine 
für dein Projekt. LED und Widerstände bzw. alles was du brauchst gibt's 
dort auch. Zusaätzlich zum Board würd ich einen USB-ISP Programmer 
empfehlen. Die vorhandene seerielle Schnittstelle zum Programmieren der 
Controller ist nicht grad das gelbe vom Ei und wenn du keine echte RS232 
am PC hast, ein Geduldsspiel. Mit einem MKII geht es richtig flott. Eine 
ISP Stiftleistte ist auf dem Board und das ergänzt sich ganz gut.
Übrigends, das Projekt ist nicht so gewaltig, das du es nicht schaffen 
kannst. Geh das mal ruhig an und setz nur die Schritte etwas kleiner.
Gruß oldmax

von c-hater (Gast)


Lesenswert?

oldmax schrieb:

> Zusaätzlich zum Board würd ich einen USB-ISP Programmer
> empfehlen. Die vorhandene seerielle Schnittstelle zum Programmieren der
> Controller ist nicht grad das gelbe vom Ei und wenn du keine echte RS232
> am PC hast, ein Geduldsspiel.

Sie genügt, um einen AVR als Programmer zu flashen. Selbst wenn das also 
ein paar Stunden dauert, man muß es ja nur einmal tun.

Und es ist ja auch nicht so, daß man während des Programmiervorgangs 
daneben sitzen und eine Kurbel drehen muß oder sowas. Das kann der 
Computer ganz alleine über Nacht tun. Und am nächsten Morgen hat man 
dann einen USB-Programmer.

Trotzdem sollte Pollin langsam mal eine V3 des Boards auflegen, welches 
einen entsprechend vorprogrammierten Programmer bereits von Hause aus 
enthält. Das würde die Attraktivität des Boards für Einsteiger deutlich 
erhöhen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Max H. schrieb:
> Ich würde einen PIC18 mit genügend IOs empfehlen
Ich würde nach neuesten Erkenntnissen (1 Woche alt) einen Arduino 
empfehlen. Mein Sohn (Klasse 10) hat das Ding allein und ohne 
Vorkenntnisse in einer halben Stunde installiert, eine LED zum Blinken 
gebracht und einen Taster eingelesen. Das größte "Problem" dabei war der 
Treiber für den FTDI-Chip.

Das funktioniert mit einer "traditionellen" Toolchain niemals.

Ich würde ihm jetzt zutrauen, diese Binäruhr (das sind ja auch nur ein 
paar LEDs an ein paar Portpins plus zwei Taster zum Stellen der Uhr) mit 
ein paar Tips und Stichworten in 2 Tagen Vollzeit fertig zu machen.

Auch das funktioniert mit einer "traditionellen" Toolchain sicher nicht 
so einfach. Denn bis sich da ein Anfänger in die Toolchain, die 
Timerintitialisierung und die Interruptstruktur "seines" uCs 
eingearbeitet hat, das dauert garantiert länger. Da ist der 
weichgespülte Wrapper der Arduino Bibliothek gerade richtig zum 
Anfangen. Und später kann man ja immer noch auf eine richtige "Toolchain 
für Männer" umsteigen.

Tom M. schrieb:
> Mir kam die Idee eine Binäruhr zu bauen, schlug dies auch meinem Lehrer
> vor, welcher meinte, dass dies ein gutes Thema sei.
> Nun habe ich mich mit der Binäruhr intensiver beschäftigt...
Diese Reihenfolge ist falsch! Hoffentlich lernst du daraus, dann hättest 
du aus dieser Semesterarbeit schon mal was gelernt...

: Bearbeitet durch Moderator
von MaWIN2 (Gast)


Lesenswert?

> Mir kam die Idee eine Binäruhr zu bauen, schlug dies auch meinem Lehrer
> vor, welcher meinte, dass dies ein gutes Thema sei.
> Nun habe ich mich mit der Binäruhr intensiver beschäftigt...
Diese Reihenfolge ist falsch! Hoffentlich lernst du daraus, dann hättest
du aus dieser Semesterarbeit schon mal was gelernt...

... ist aber leider der übliche Ansatz der BWL-Marketings ;-)

von Daniel A. (daniel-a)


Lesenswert?

Wegen dem Pseudocode von oben, mehrere Zähler find ich übertrieben. Ich 
habe noch nie was mit uCs gemacht, aber dass stelle ich mir einfach vor. 
Man nehme einen atmega, low drop leds, vorwiederstände, eine batterie, 
einen Programmer und C. Dan schreibt man sowas (der timer, der time 
incrementiert fehlt noch):
1
unsigned time;
2
3
int main(){
4
5
  time = 0; // 0 sekunden bei start
6
7
  DDRA = 0xff; // Ausgänge setzen ( Alle 8 )
8
  DDRB = 0xff; // Ausgänge setzen ( Alle 8 )
9
  DDRC = 0x01; // Ausgänge setzen ( 1 bit )
10
11
  while(true){
12
13
    time %= 60*60*24; // Damit timer nicht zu gross wird
14
15
    unsigned char
16
      s = time%60,  // Sekunden
17
      m = (time/60)%60, //Minuten
18
      h = (time/60/60)%24; // Stunden
19
20
    // Ausgänge setzen
21
    PORTA = s | ( m<<6 );  // 6 bit Sekunde + 2 bit minuten = 8bit
22
    PORTB = ( m >> 2 ) | ( h << 4 ); // 4 bit Minuten + 4 bit Stunden
23
    PORTC = ( h >> 4 ); // 1 bit Stunden
24
  }
25
}

von spess53 (Gast)


Lesenswert?

Hi

>Wegen dem Pseudocode von oben, mehrere Zähler find ich übertrieben. Ich
>habe noch nie was mit uCs gemacht ...

Merkt man. Die mehreren Zähler sind wesentlich ressourcensparender als 
dein Konstrukt.

MfG Spess

von Max H. (hartl192)


Lesenswert?

Miller schrieb:
> Ich würde nach neuesten Erkenntnissen (1 Woche alt) einen Arduino
> empfehlen.
Tom M. schrieb:
> Ich
> denke aber, dass mein Lehrer davon nicht begeistert sein wird

Daniel A. schrieb:
> low drop leds
Was sind das für LEDs? Ich kenne nur Low Drop Spannungsregler. Sind das 
LEDs an denen In betrieb nur 1/2 Volt abfällt?

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tom M. schrieb:
> (Kurze Nebenfrage zur Versicherung meiner Denkweise: ich schreibe ein
> Programm am PC, "schiebe" dies via Programmer(?) auf den
> Mikronkontroller, bau Takt, Spannung und Dioden an und es sollte laufen)
Eigentlich schon.
Frage: Was meinst du, warum verdienen andere Menschen sich täglich ihr 
Brot mit solch einer einfach zu beschreibenden Arbeit?
Antwort: Weil es wesentlich komplexer ist und der Teufel im Detail 
sitzt.

Und jetzt mal ein paar ganz wichtige Fragen, die ehrliche Antworten 
brauchen:
Welche Erfahrung hast du schon mit Elektronik? Wie sicher ist dein 
Umgang mit Lötkolben und Seitenschneider? Welche Schaltungen hast du 
bisher aufgebaut?

> Miller schrieb:
>> Ich würde nach neuesten Erkenntnissen (1 Woche alt) einen Arduino
>> empfehlen.
> Tom M. schrieb:
>> Ich denke aber, dass mein Lehrer davon nicht begeistert sein wird
Ich denke, du solltest ihn erst mal fragen. Am besten VORHER ein 
plausibles Konzept ausarbeiten und evtl. eine kleine "Porterweiterung 
mit Schieberegister" SELBER bauen UND programmieren...

Daniel A. schrieb:
> vorwiederstände
Was ist das?

von Peter II (Gast)


Lesenswert?

spess53 schrieb:
> Merkt man. Die mehreren Zähler sind wesentlich ressourcensparender als
> dein Konstrukt.

und, ist die Uhr damit schneller?

von spess53 (Gast)


Lesenswert?

Hi

>und, ist die Uhr damit schneller?

Nö. Aber der erzeugte Code ist um einiges kleiner.

MfG Spess

von ArthurDent (Gast)


Lesenswert?

Hallo *,

ich glaube ich wuerde mir von jemandem, der sich damit auskennt ein 
EvalBoard an meinem PC in Betrieb nehmen lassen (AVR, PIC, ARM, oder was 
auch immer).

Wenn dann Toolchain und Programmierung steht und im Idealfall ein 
Beispielprogramm zum Uebersetzen und Programmieren zur Verfuegung steht, 
bauchst du dieses nur anzupassen. Eine Uhr ist wie oben gezeigt relativ 
trivial.

Ach ja, falls Deine Anzeige nicht aus direkt von den Ports treibbaren 
LEDs besteht, musst Du noch ein paar Treiber an das EvalBoard anhaekeln.

Unter diesen Voraussetzungen scheint mir eine binaere Uhr auch fuer 
einen Schueler in endlicher Zeit machbar.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

spess53 schrieb:
>> und, ist die Uhr damit schneller?
> Nö. Aber der erzeugte Code ist um einiges kleiner.
Und schneller. Dann bleibt mehr Zeit, um auf die nächste Sekunde zu 
warten. Oder was anderes zu tun...

von Karl H. (kbuchegg)


Lesenswert?

Lothar Miller schrieb:
> spess53 schrieb:
>>> und, ist die Uhr damit schneller?
>> Nö. Aber der erzeugte Code ist um einiges kleiner.
> Und schneller. Dann bleibt mehr Zeit, um auf die nächste Sekunde zu
> warten. Oder was anderes zu tun...


... zum Beispiel sich um die Programmierung zu kümmern :-)
Im Ernst: Ich denke, gerade für einen Neuling, ist eine Uhr mit 3 
Variablen Stunde, Minute, Sekunde leichter zu durchschauen (und auch zu 
debuggen), als eine time Variable. Das Weiterschalten von Sekunden zu 
Minuten durchschaut jeder sofort auf Anhieb, der als 6 jähriger gelernt 
hat, wie eine Analoguhr funktioniert.

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Der Schaltplan könnte so aussehen.
ICSP ist der Anschluss für den Programmer (PICkit) und eine 6 Polige 
Stiftleiste wie diese: 
https://secure.reichelt.de/Stiftleisten/MPE-087-1-006/3/index.html?ACTION=3;ARTICLE=119883;SEARCH=MPE%20087-1-006
Über die Tasten könnte man die Uhr einstellen. Man könnte z.B. mit einer 
Taste die Minuten um eins erhöhen, mit der anderen Taste die Stunden.

Tom M. schrieb:
> zu jedem ankommenden Takt
Woher kommt dieser Takt eigentlich?

von Karl H. (kbuchegg)


Lesenswert?

> Eine Uhr ist wie oben gezeigt relativ trivial.

Wenn man weiß, wies geht, ist alles trivial.
Sogar eine Uhr, die nach 2 Monaten immer noch auf 3 Sekunden genau geht. 
Oder eine Blinddarmoperation.

von Karl H. (kbuchegg)


Lesenswert?

Max H. schrieb:

> Tom M. schrieb:
>> zu jedem ankommenden Takt
> Woher kommt dieser Takt eigentlich?


Können wir uns darauf einigen, dass ein externer Takt aus einem 
astabilen Multivibrator keine gute Idee für eine Uhr ist, die wenigstens 
die lausigsten Ansprüche an Genauigkeit erfüllen soll und es statt 
dessen viel einfacher und sinnvoller ist, einen Quarz an den µC 
anzuschliessen?

von Max H. (hartl192)


Lesenswert?

Karl Heinz schrieb:
> Können wir uns darauf einigen, dass ein externer Takt aus einem
> astabilen Multivibrator keine gute Idee für eine Uhr ist, die wenigstens
> die lausigsten Ansprüche an Genauigkeit erfüllen soll und es statt
> dessen viel einfacher und sinnvoller ist, einen Quarz an den µC
> anzuschliessen?
Ja!
Aber wenn ich es nicht überlesen habe, dann hat der TO noch nichts 
geschrieben, woher das 1Hz Signal kommt.

: Bearbeitet durch User
von Erich (Gast)


Lesenswert?

Hallo Leute,

hier ist die Uhr bereits fertig:

http://www.instructables.com/id/LED-Binary-Clock/

Gruss

von ArturDent (Gast)


Lesenswert?

Karl Heinz schrieb:
>> Eine Uhr ist wie oben gezeigt relativ trivial.
>
> Wenn man weiß, wies geht, ist alles trivial.
> Sogar eine Uhr, die nach 2 Monaten immer noch auf 3 Sekunden genau geht.
> Oder eine Blinddarmoperation.

In einem Schulprojekt nehme ich an, dass es relativ gleichgueltig ist, 
wie genau diese Uhr ist. Ausserdem koennte ja der TO erst einmal die 
Hardware zusammenstellen und eine 1. Version basteln.

So Sachen wie Genauigkeit, perfekte Programmierung, Schlaefenstecker 
oder Gedankeninterface lassen sich auch spaeter noch leicht hinzufuegen.

von Daniel A. (daniel-a)


Lesenswert?

Max H. schrieb:
> Daniel A. schrieb:
>> low drop leds
> Was sind das für LEDs?

Sorry, ich meinte low current leds...

Karl Heinz schrieb:
> Im Ernst: Ich denke, gerade für einen Neuling, ist eine Uhr mit 3
> Variablen Stunde, Minute, Sekunde leichter zu durchschauen

Ja, stimmt, aber die umrechnung könte trozdem nützlich werden.


Lothar Miller schrieb:
> spess53 schrieb:
>>> und, ist die Uhr damit schneller?
>> Nö. Aber der erzeugte Code ist um einiges kleiner.
> Und schneller. Dann bleibt mehr Zeit, um auf die nächste Sekunde zu
> warten. Oder was anderes zu tun...

Das Modulo und division so langsam sind wusste ich zu dem Zeitpunkt noch 
nicht, ich bin mir intel x64 gewohnt :). Mit meinem vorschlag währe 
jedoch die ISR kleiner, und wenn man time noch auf veränderung prüft 
fällt die geschwindigkeit nichtmehr ins gewicht, oder?

von oldmax (Gast)


Lesenswert?

Hi
ich möchte auch noch mal zur Schule gehen... Ich mein, früher musste ich 
wirklich noch alles richtig abschreiben, nix C&P
Das ist ja hier auch nicht gefragt, Aber, wenn die Uhr nicht genau gehen 
soll, dann hat ein ATmega immer noch einen internen Takt, also würde das 
zur Präsentation ja erst mal reichen. Von den IO her müsste es auch 
reichen. Auch von der Belastung bei 10 bis 15 mA für die LED dürfte es 
auch ohne Treiber gehen. 3 Taster zum Zeit einstellen sind 20 IO. Der 
Atmega8 hat 23 IO. Einer geht für Reset weg und zwei weitere weden bei 
Verwendung eines Quarzes gebraucht. Also reicht er aus. Sowas solltet 
ihr dem TO mitteilen, denn er ist ein unwissender, aber interessierter 
Schüler.
Die Diskussion nach genauem Takt ist da noch zu früh. Und ob er 20 oder 
100 Variablen benutzt ist auch völlig wurscht.
Also, lass dir nix einreden, von wegen zu kompliziert für einen SChüler. 
Man wächst mit der Aufgabe.
Gruß oldmax

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Sry, in meinem Schaltplan von oben war ein Fehler :-(
In Anhang der richtige.

Zusätzlich im Anhang eine minimal Version einer Firmware, die 
Funktionieren sollte. Geschrieben in C für den XC8 Compiler für den 
PIC18F25k22

P.S. Ich weiß, Entprellen mit Delay ist nicht optimal, aber in diesem 
Fall ist es eine einfache und funktionierende Lösung. Der µC hat je Zeit 
genug um mal 10ms lange nur zu entprellen.

: Bearbeitet durch User
von Sabine W. (sabine_w)


Lesenswert?

Nen AVR liesse sich auch in Java programmieren, mit der NanoVM.
http://www.mikrocontroller.net/articles/NanoVM

von Karl H. (kbuchegg)


Lesenswert?

Daniel A. schrieb:

> jedoch die ISR kleiner,

ist ziemlich irrelevant.
Ein
1
volatile uint8_t sekunde, minute, stunde;
2
3
ISR( ... )
4
{
5
  sekunde++;
6
  if( sekunde == 60 )
7
  {
8
    sekunde = 0;
9
    minute++;
10
11
    if( minute == 60 )
12
    {
13
      minute = 0;
14
      stunde++;
15
16
      if( stunde == 24 )
17
        stunde = 0;
18
    }
19
  }
20
}

sieht nur auf dem Papier langatmig aus. Da das alles 8 Bit Operationen 
sind, sind das auf CPU Ebene keine Handvoll Operationen.

> und wenn man time noch auf veränderung prüft fällt
> die geschwindigkeit nichtmehr ins gewicht, oder?

Dafür musst du im Gegenzug zur Ausgabe die time erst wieder in die 
Komponenten zerlegen.
Hat halt alles sein für und wider.

: Bearbeitet durch User
von Dirk K. (dekoepi)


Angehängte Dateien:

Lesenswert?

Lustig, habe als Fingerübung und zum besseren Verständnis/Lernen grade 
eine Uhr auf Arduino Pro Mini-Basis gebastelt. Also 
4-Stellen-7-Segment-LED ansteuern, dann erst "interne Eieruhr", seit 
gestern dann mit DS1302 als "richtige" Uhr (Bitbang des Protokolls bauen 
... ).

Das Eieruhr-Modell basiert auf dem internen Timer, der einfach nur jede 
ms den Zeitzähler hochzählt; bei 4 Stellen dann Rücksetzen nach 3599 (=1 
Stunde). Die Umrechnung in Dezimal und Anzeige würde wegfallen, kann man 
dann direkt auf die LED-Leisten ausgeben.

Löten wäre dann noch für die LEDs nötig. Ich habe beispielsweise bei dem 
7-Segment ein kleines Huckepack-Platinchen gebastelt, das einmal die 
Pins a-g und den Dezimalpunkt ordentlich sortiert und die gemeinsame 
Kathode jeweils mit 330 Ohm Vorwiderstand versehen. Ging einiges an 
Kupferlackdraht bei drauf. Aber soll ja binär sein, also schon eine 
Leiste mit LEDs basteln.

Im Anhang mal das ganze Programm. Es ist fürchterlich ineffizient, aber 
läuft. Die Interrupts sollte man nicht so machen, vor allem lange 
Funktionsaufrufe gehören da nicht rein - hier klappt das zufälligerweise 
jedoch.

Falls du mit einer RTC (einem Uhrenchip) arbeiten willst, passt der Code 
soweit schon recht gut. Die Umrechnung in "curtime" am Ende und die 
Anzeige in der ISR (Interrupt-Routine) musst du umbasteln.

Vielleicht hilft das ja auch weiter, um einen Überblick an weiteren 
Möglichkeiten zu bekommen.

Als "Eieruhr" nur mit internem Timer des ATmega328 sieht das so aus:
https://www.youtube.com/watch?v=kHkaq8GFvZ8

Mit dem ausgelesenen RTC DS1302 so:
https://www.youtube.com/watch?v=qeXI6cmGSB8

Im Anhang auch ein Foto der Lötübung.

von Tom M. (maierx)


Lesenswert?

Max H. schrieb:
> Woher kommt dieser Takt eigentlich?
Würde spontan sagen, dass ich dazu einen Quearz mit 1 Hz Frequenz nutzen 
werde.

> Und jetzt mal ein paar ganz wichtige Fragen, die ehrliche Antworten
> brauchen:
> Welche Erfahrung hast du schon mit Elektronik? Wie sicher ist dein
> Umgang mit Lötkolben und Seitenschneider? Welche Schaltungen hast du
> bisher aufgebaut?

Wie schon angedeutet, habe ich kaum Erfahrungen mit praktischer 
(Mikro)Elektronik. Als Einleitung in's Seminarfach baute ich mit 2 
Kollegen  einen astabilen Multivibrator, welcher letztendlich auch 
funktionierte (!). Dies war sogleich meine erste, ernstzunehmende 
Erfahrung mit dem Lötkolben und dem Seitenschneider. 'Mussten unseren 
Schaltkreis auch oftmals umlöten. Schaltkreise haben wir im 
Phsyikunterricht schon mehrmals "zusammengesteckt", jedoch habe ich 
trotz Interesse kaum etwas dabei gelernt, da unser Physiklehrer nicht 
unbedingt der Beste war..

Aus dem was ihr in meiner Abwesenheit geschrieben habt, habe ich 
entnommen, dass PIC's (+PICkit), der ATmega und auch der Arduino für 
meine Zwecke geeignet wäre.

An diesem Punkt schonmal Danke an die vielen Antworten! Aufgrund der 
vielen Fachbegriffe musste ich oft im Netz über deren Bedeutung 
nachlesen, was mein Verständnis für diesen Themanbereich immens 
erweitert hat!

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Tom M. schrieb:
> Würde spontan sagen, dass ich dazu einen Quearz mit 1 Hz Frequenz nutzen
> werde.
Wenn du mit "Quearz" Quarz meinst, dann gibt es so etwas nicht. Die 1Hz 
Taktquelle ist also noch gar nicht vorhanden?
Dann würde ich einen Uhrenquarz (2^15Hz = 32.678Hz) an den Oszillator 
des µCs hängen. Das würde dann so wie im Anhang aussehen. Der Code 
müsste dann aber anders aussehen…

von Tom M. (maierx)


Lesenswert?

Hallo
ich bin derzeit immer noch auf der Suche nach einem passendem µC für 
meine Binäruhr und seh bei den ganze PICs & Co einfach nicht durch. Ich 
habe keine Lust ewig lange µC-Listen mit Betracht auf Vor- und 
Nachteilen, von denen ich keine Ahnung habe, durchzuforsten, daher bin 
ich wieder Faul und frage in die Runde, was Ihr mir empfehlen könnt. 
Kurzfassung sowie Kriterien:

- ich benötige einen Mikrokontroller sowie + Programmer.
- µC sollte wiederbeschreibbar/korrigierbar sein (?)
- Programmiersprache ist egal, da ich noch kein Programm habe (hab 
kleine Kenntnisse von Java, hab aber kein Problem mit einer anderen 
Sprache)
(- einsteigerfreudlich)
- halbwegs preisgünstig

zusätzlich würde ich mich über
- einen konkreten (seriösen) Kauflink
- Software zum Beschreiben des µC
- Binäruhrprogramm
freuen


MfG

von Max H. (hartl192)


Lesenswert?

Tom M. schrieb:
> - ich benötige einen Mikrokontroller sowie + Programmer.
> - µC sollte wiederbeschreibbar/korrigierbar sein (?)
> - Programmiersprache ist egal, da ich noch kein Programm habe (hab
> kleine Kenntnisse von Java, hab aber kein Problem mit einer anderen
> Sprache)
> (- einsteigerfreudlich)
> - halbwegs preisgünstig
Der PIC18F25k22 + PICkit3 ist für dein Projekt geeignet sein, 
Programmiersprache C oder PIC-ASM. Möglicher Schaltplan:
https://www.mikrocontroller.net/attachment/preview/214613/page_snapshots/001.png

Mögliche Bezugsquellen:
- microchipDIRECT
- Reichelt
- TME
 -Conrad

> - Software zum Beschreiben des µC
MPLAB X IDE + XC8 Compiler

: Bearbeitet durch User
von Eumel (Gast)


Lesenswert?

MSP430 Launchpad bestellen, glücklich werden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tom M. schrieb:
> - ich benötige einen Mikrokontroller sowie + Programmer.
> - µC sollte wiederbeschreibbar/korrigierbar sein (?)
> - Programmiersprache ist egal, da ich noch kein Programm habe (hab
> kleine Kenntnisse von Java, hab aber kein Problem mit einer anderen
> Sprache)
> (- einsteigerfreudlich) - halbwegs preisgünstig
Probiers mit einem Arduino...
Aber verwende nicht die Funktion delay(). Sondern machs gleich richtig 
mir millis()...

von Dirk K. (dekoepi)


Lesenswert?

Och, für eine Uhr?

ATtiny13 - klein und billig. Mit AVR-GCC und Eclipse (grad gesehen, 
gibt's hier sogar eine Anleitung: 
http://www.mikrocontroller.net/articles/AVR_Eclipse ) hervorragend zu 
programmieren. Dazu einen USBasp für wenig Geld. Für mehr Ausgänge dann 
vielleicht ein paar 10-Cent-Bausteine Marke 74HC595, mit 3 Pins 
anzusteuern. Bleiben Sogar noch 2 für I2C mit RTC-IC übrig.
Mit nur einem Timer sogar etwas sportlich und ein wenig Gedanken nötig, 
wie man die Zeit vom RTC-IC abholt und die Ausgabe dann regelt - 
_delay_ms() und so etwas fällt damit ja aus.

10 ATtiny13 DIP-8: http://www.ebay.de/itm/161001100561 - 4,40 Eur
10 74HC959: http://www.ebay.de/itm/300665865738 - 1,48 Eur
DS3231 I2C RTC: http://www.ebay.de/itm/400503978923 - 1,44 Eur (schön 
präzises Ding laut Werbe-Datenblatt. Meines dürfte auch bald ankommen.)
USBASP: http://www.ebay.de/itm/261495070781 - 2,29 Eur

Dazu vielleicht noch ein paar Pfostenleisten und Lochraster-Platinchen, 
um sich Adapter zu basteln. Da ist man sehr billig und angemessen dabei.

Der Lern-Umgehungs-Wünsche bezüglich fertigen Programms ignoriere ich an 
dieser Stelle mal.

: Bearbeitet durch User
von Dominik R. (vision)


Lesenswert?

Ich würde auch MSP430 Launchpad oder Arduino empfehlen. Beides hat Vor- 
und Nachteile.

Das Launchpad bringt gleich den Uhrenquarz mit (was sicherlich nicht 
ausschlaggebend ist) und lässt sich auch ganz einfach als eigenständiger 
Programmer verwenden. Um den MSP430 dann ohne Launchpad als eigene 
Schaltung zum laufen zu bringen, braucht es nur einen Kondensator 
zwischen VCC und GND und einen Pullup-Widerstand an Reset.
Leider reichen die Portpins nicht für die Uhr und du müsstest auf 
Schieberegister ausweichen.

Der Arduino kann über den Bootloader programmiert werden, und wenn du 
ein Modell mit DIP-Version des uC nimmst, kannst du den auch in eine 
eigene Schaltung einbauen. Wenn du dir allerdings den Bootloader 
zerschießt oder dich durch setzen der falschen Fuses aussperrst, kommst 
du ohne separaten (HV-) Programmer nicht mehr weiter.

Die IDE ist für beide kostenlos und Programmier-Beispiele gibt es für 
beide auch zuhauf im Netz.

von Peter D. (peda)


Lesenswert?

Tom M. schrieb:
> - ich benötige einen Mikrokontroller sowie + Programmer.

Z.B. AT89C51RB2

http://www.csd-electronics.de/200/cgi-bin/shop.dll?SESSIONID=0859534265007824&AnbieterID=2

Programmer braucht man nicht, nur einen MAX202 zum Anschluß an die 
RS-232 des PC oder des USB-RS232 Wandlers.
Schaltplan:
Beitrag "8051 Entwicklungsboard"

Tom M. schrieb:
> - Programmiersprache ist egal

Assembler oder C:

http://www.wickenhaeuser.de/

Tom M. schrieb:
> - Software zum Beschreiben des µC

Atmel Flip:
http://www.atmel.com/tools/flip.aspx

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.