Forum: Mikrocontroller und Digitale Elektronik Stoppuhr programmieren


von Mj 2. (mj23)


Lesenswert?

Hallo,

bin neu hier nur mal zur info.

Also ich möchte eine sensorgesteuerte Stoppuhr programmieren die auch 
Wasserdicht ist für den Schwimmverein.

Habe leider bisher noch keine Programmierungserfahrung aber mit 
Elektronik kenn ich mich einigermaßen aus.
Zuerst meine Frage: Was für ein Entwicklerboard ist geeignet für meine 
Bedürfnisse und es sollte unter 100 Euro sein!!!

Perfekt wäre natürlich wenn der Start/Stopp geber Wasserdicht wäre und 
ich die Impulse per funk übertragen könnte.

#aber zur Not wäre ich auch mit einer kabelgebundenen Lösung zufrieden.

Die Impulse Start Stopp ist kein Problem ich hab Induktive/Optische 
Sensoren/Ultraschall zur verfügung bzw. kann ich die besorgen oder 
selber bauen.

Möchte nur mal wissen mit was man(n) am besten anfängt.Das ich die 
Programmierung dann selber lernen muss ist mir klar.

Vielen Dank im vorraus,

michael

von Falk B. (falk)


Lesenswert?

@ Michael "j" (mj23)

>Also ich möchte eine sensorgesteuerte Stoppuhr programmieren die auch
>Wasserdicht ist für den Schwimmverein.

AVR-Tutorial: Uhr

>Zuerst meine Frage: Was für ein Entwicklerboard ist geeignet für meine
>Bedürfnisse und es sollte unter 100 Euro sein!!!

STK500.

>Perfekt wäre natürlich wenn der Start/Stopp geber Wasserdicht wäre und
>ich die Impulse per funk übertragen könnte.

Überwasser kein Thema. Unter Wasser sehr aufwändig.

MfG
Falk

von Mj 2. (mj23)


Lesenswert?

Danke schon mal für den stk500 die Empfehlung hat ich von einem früheren 
Arbeitskollegen auch schon bekommen.Hab ja die Branche gewechselt. Den 
werd ich mir dann wohl mal holen und mich weiter einlesen.

Was für eine Programmiersprache hat der denn?Ist der gut zu erlernen?

Mit der Wasserfestigkeit das sehe ich nicht so als Problem eher die 
Übertragung.Hab ein Sensor nach IP68 der müsste für diese Geschichte 
geeignet sein.

Gruss

MJ

von Mj 2. (mj23)


Lesenswert?

Und danke für den link  great :-)

von Falk B. (falk)


Lesenswert?

@  Michael "j" (mj23)

>Was für eine Programmiersprache hat der denn?

Wass du willst. C, Assembler, BASIC. Siehe AVR.

>Ist der gut zu erlernen?

Denk schon.

>Mit der Wasserfestigkeit das sehe ich nicht so als Problem eher die
>Übertragung.Hab ein Sensor nach IP68 der müsste für diese Geschichte
>geeignet sein.

Was soll das denn werden? Für welche Sportart?

MfG
Falk

von Mj 2. (mj23)


Lesenswert?

Ein Zeitmesser damit man selber tranieren kann und nicht immer einen 
2ten Mann dazu braucht zum Schwimmen.

von Untertaucher (Gast)


Lesenswert?

Also wenn ich das richtig kapiert habe geht's um Rundenzeiten.
Ist eine Runde zwei Bahnen, oder eine ?
Wenn zwei ist das einfachste, wenn Du einen Magneten z.B. an Deiner 
Kappe befestigst, dann an der Bande (oder wie heißt der Rand des Beckens 
?) einen REED-Kontakt und den via Kabel zum trocken liegenden Gerät.
Je nachdem wieviele Runden Du speichern willst ist eventuell noch ein 
externes EEPROM sinnvoll.
So sparst Du Dir in jedem Falle schonmal ein wasserdichtes Gehäuse.
Wenn's bei jeder geschwommenen Bahn zählen soll, entweder eine 
IR-Fernbedienung an der anderen Seite mit REED anbringen und dann an der 
Stoppuhr erkennen, oder selbst sowas basteln.

von Falk B. (falk)


Lesenswert?

@ Michael "j" (mj23)

>Ein Zeitmesser damit man selber tranieren kann und nicht immer einen
>2ten Mann dazu braucht zum Schwimmen.

???
Was spricht gegen eine einfache, wasserdichte Armbanduhr?

MfG
Falk

von tastendrücker (Gast)


Lesenswert?

Falk Brunner wrote:
>Was spricht gegen eine einfache, wasserdichte Armbanduhr?

Dass man sie fertig kaufen kann...   ;-)

von Bernhard (Gast)


Lesenswert?

Ich bin zwar jetzt kein Schwimmer,aber ich könnte mir folgende zwei 
Gründe vorstellen:

.) Eine Armbanduhr stört beim Schwimmen
.) Die gewonnenen Werte nach einer Trainingssession kann man eventuell 
aufbereiten oder analysieren.

Das wären meine Vermutungen.

Bernhard

von Mj 2. (mj23)


Lesenswert?

Bei Schwimmen stört ne Uhr nicht so aber ist nicht so genau bis man die 
taste wieder gefunden hat zum stopp drücken.

Und der eigentliche Gedanke liegt darin das es von der öffentlichkeit 
also dem Badegast benutzt werden kann und sollte.

von Ulrich (Gast)


Lesenswert?

Als Alternatives Board wäre auch der ATmel Butterfly interressant, da 
hat man schon ein LCD Dispaly mit darn, und es ist recht günstig.

von Rene (Gast)


Lesenswert?

Ich finde zum einstieg reicht das Board von Pollin....

Wenn nach einiger Zeit die Erfahrungen groß genug sind kann man sich 
nach was anderem Umschauen....

Bin mit den Board immer recht gut gefahren.

Bye Rene

von Mj 2. (mj23)


Lesenswert?

Dieses hier? ATMEL Evaluations-Board Version 2.0 - Bausatz
Das hört sich gut an.

Was meint ihr soll ich mit Assembler anfangen oder gleich C.

Die meinungen darüber gehen ja ziemlich weit auseinander.

von Falk B. (falk)


Lesenswert?

Ich empfehle C.

MFG
Falk

von Kai F. (kai-) Benutzerseite


Lesenswert?

>> Die meinungen darüber gehen ja ziemlich weit auseinander.

und das wird in diesem Thread nicht anders sein. Da (wie mir bestimmt 
95% aller Leute zustimmen) für deine Anwendung C locker ausreicht und es 
einfacher zu lernen ist, kann ich es dir nur empfehlen :P

von yalu (Gast)


Lesenswert?


von Henni_D (Gast)


Angehängte Dateien:

Lesenswert?

Nabend :) !
Also bei mir gehts auch um eine Stoppuhr. Und ich will auch nicht kommen 
mit "Hilfe, wie konfigurier ich den Timer?" und so.
Ich habe im Anhang einen Quellcode angehängt. Der ist noch nicht fertig 
und ich weiß, daß er wohl auch etwas umständlich sein mag. Ich 
programmiere aber noch nicht sooo lange in C.
Zählen tut die Anzeige, um die es gaht auch schon korrekt, nur an den 
genauen Zeiten muß ich noch drehen.
JETZT aber zu meinem Problem (für das ich nicht extra nen neues Thema 
aufmachen wollte): die Anzeigen "ghosten" z.T. sehr stark. Wie, wenn man 
multiplext, beim Umschalten der Adresse aber vergisst den Datenbus leer 
zu machen, versteht ihr?
Könnt ihr vielleicht einmal über den Code gucken und evtl melden, woran 
das mit dem "ge-ghoste" liegen könnte?

Danke und bis später!
Henni_D

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Knackpunkt ist vermutlich (da du den Schaltplan nicht angegeben hast) 
diese Stelle:
1
  while(1)
2
  {
3
4
    for(a=0; a<=5; a++)
5
      { 
6
        // Stromzufuhr an ein Display 0..5 EIN
7
        PORTA = adresse[a];
8
        
9
        // Stromabfuhr an Segmente 1..7 des Display 0..5 auswählen
10
        PORTD = anzwert[zeiger[a]];
11
12
        // Stromzufuhr alle Displays 0..5 AUS
13
        PORTA = 0xFF;
14
      }
15
  }

Sinnvoll wäre das Umgekehrte:
1
  while(1)
2
  {
3
4
    for(a=0; a<=5; a++)
5
      { 
6
        // Stromzufuhr alle Displays 0..5 AUS
7
        PORTA = 0xFF;
8
9
        // Stromabfuhr an Segmente 1..7 des Display 0..5 auswählen
10
        PORTD = anzwert[zeiger[a]];
11
12
        // Stromzufuhr an ein Display 0..5 EIN
13
        PORTA = adresse[a];      
14
      }
15
  }

von Henni_D (Gast)


Lesenswert?

Hey, cool, die Antwort kam ja superschnell!

Deinen Vorschlag habe ich umgesetzt. Aber es brachte leider nichts. Wär 
auch zu einfach gewesen ;).

Die Schaltung ist eigentlich einfach: an PORTA hängen sechs 
PNP-Transistoren, die also bei logisch-0 5V durchsteuern und die dann 
über die jeweiligen LED-Elemente nach PORTD abfließen (mit 
Vorwiderstand). Ich denke mal das Multipleexn selbst brauch ich nicht zu 
erklären oder? Hab mir auch über die Schaltung gedanken gemacht. Aber 
sooo derbe kapazitive Kopplung kann da gar nicht drin sein.

Habs auch schon probiert einfach beider Ports aus zu machen (0xFF) aber 
das brachte auch nichts. Komisch...

Henni_D

von Henni_D (Gast)


Lesenswert?

Ah, ich seh grad ist ist ziehmlich genau diese Schaltung :)
http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige

von Peter D. (peda)


Lesenswert?

Henni_D wrote:
> Ah, ich seh grad ist ist ziehmlich genau diese Schaltung :)


Ja, diese Schaltung geistert, da Emitterschaltung.

Du gibst außerdem den Digits keine Zeit zum leuchten.
Du brauchst unbedingt nen Timerinterrupt, damit die LEDs ne zeitlang 
leuchten können und um die Pause zum Entladen der Transistoren zu haben 
(100..400Hz * Digitzahl ist optimal).


Peter

von Thilo M. (Gast)


Lesenswert?

Um mal auf die Hardware für's Schwimmbad zurückzukommen:

ein Rafi-Notaustaster (Wasserdicht) auf einen Vakuum-Glasheber (diese 
Saugnapf-Teile) montiert, mitsamt der wasserdichten Elektronik am Ende/ 
Anfang der Bahn 'festgesaugt', ist vom Schwimmer selbst per Anschlag 
leicht zu bedienen. Ein zweiter Taster auf dem Startblock könnte zum 
Starten ausreichen.
Ich denke nicht, dass der Bademeister was dagegen hat, wenn du mit ihm 
redest.

von Henni_D (Gast)


Lesenswert?

Ok, dann nurnoch eine kleine Sache in eigener... ähm... Sache. Dann lass 
ich euch hier in Ruhe Bademeistern ;)

@Peter:
Daß die LEDs kaum Zeit haben zum leuchten weiß ich. Sie sind auch noch 
nicht ganz so hell. Aber der Code ist auch noch (lange) nicht fertig. 
Trotzdem danke für den Hinweis.
Kannst du mir denn vielleicht nochmal folgendess näher erläutern oder 
entsprechende Links schicken?

1. WARUM ist das in Emitterschaltung so mit dem Entladen der 
Transistoren?
2. Würde es helfen, wenn ich die Schaltung für npn-Transistoren umbaue 
und dann nicht-invertierte Werte nehme? Und dann lieber emitter- oder 
Kollektorschaltung?
3. Wie kommst du auf die Formel?
4. Liegt im AVR-Studio nen Fehler vor? Bei mir werden für manche 
Timer0-Register nicht alle Bits wie im Datenblatt angezeigt o_O ...

Danke nochmal an Peter und Stefan für die Antworten,
Henni_D

oh, ich seh grad, daß ich keine Basis-Widerstände hab :) ...

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.