Pimp-My-Kicker a.k.a. Wham-O-Meter

4. Hardware

Um auf möglichst vielen Tischen montierbar zu sein, wurde die Hardware modular konzipiert. Sie besteht damit aus drei Teilen, natürlich der Steuerung mit Display, den Lichtschrankensendern und den passenden Detektoren auf jeweils eigenen Platinen. Bitte beachtet die Lizenz aus der Einleitung, wenn ihr die folgenden Dateien verwenden möchtet. Hier erhaltet ihr ein ZIP-File mit den entsprechenden EAGLE Dateien des Projektes Wham-O-Meter.

4.1 Lichtschrankensender

Wenden wir uns dem Sender zu. Sie bestehen aus handelsüblichen Infrarot-Sendedioden für Fernbedienungen. Infrarotes Licht sollte verhindern, dass wir während des Spiels abgelenkt werden. Außerdem sprechen die meisten verfügbaren Fototransistoren am Besten bei 800nm bis 1000nm Wellenlänge an, eben genau im infraroten Bereich.

Ich habe mich aus vier Gründen für den Typ SFH4550 von OSRAM entschieden, leider ist eine mit knapp 60 Cent nicht billig:

  • Sie ist beim Reichelt zu bekommen.
  • Sie verträgt 100mA Dauerstrom bei entsprechender Kühlung, den wir aber nicht ausreizen.
  • Sie besitzt nur einen relativ kleinen Öffnungswinkel von 6° (Hauptkeule).
  • Sie hat eine Wellenlänge von 850nm, das paßt sehr gut bei unserem Fototransistor.

Ansonsten ist dieses Teil einfach zu beschreiben. Je zwei LEDs werden mit einem 82 Ohm Widerstand in Bauform 1206 wegen der Wärmeentwicklung betrieben. Laut Datenblatt liegt die Vorwärtsspannung bei einem eingeprägten Strom von 100mA bei 1,5V. Durch Messungen habe ich herausgefunden, dass ungefähr 20% des Stroms (~18% Intensität) ausreichen, um einen sicheren Durchlassbetrieb des Fototransistors zu gewährleisten, sprich, genug Ladungsträger dort herauszulösen, damit er gegen den Pull-Up des Mikrocontrollers ankommt und die Meßleitung sicher auf GND zieht.

Wir können damit den Widerstand berechnen:

  • U=I \cdot R \Rightarrow R= \frac{U}{I}=\frac{3{,}3\text{V}-1{,}5\text{V}}{0{,}02\text{A}} = 90\text{Ohm}

Der nächste passende Widerstandswert ist 82 Ohm. Nachdem wir wegen der 24 freien Interrupt-Kanäle an der MCU auch 24 Lichtschranken ansteuern möchten, ergibt sich für die LEDs ein Gesamtstromfluß von:

  • I_{\text{ges}} = 24 \cdot \frac{1{,}8\text{V}}{82\text{Ohm}} \simeq 0{,}527\text{A}

Als möglicher Ausblick könnte hier noch die Verwendung von Laserdioden gelten. Diese erzeugen einen extrem gebündelten Strahl, das Beleuchten von einem Fototransistor durch mehrere LEDs wäre der Vergangenheit angehörig. Auch könnte man die Bewegungsunschärfe, wenn der Ball „volley“ in 2-3cm über den Fototransistoren hinwegfliegt, so stark reduzieren.

Im Kosmos-Kasten für Elektronik gab es einmal Laserdioden, mit denen Experimente zur digitalen Nachrichtenübertragung möglich waren, man konnte einen Lichtwellenleiter (LWL) direkt dort einklipsen. Sie hatten eine Ausgangsleistung von weniger als 0,1 mW und waren nicht so empfindlich wie heutige Laserdioden. Leider finde ich die nicht mehr, wahrscheinlich werden sie nicht mehr produziert.

Kurz noch zum Produzieren der Platine: Sollte gut im Eigenbau machbar sein, die Bohrlöcher müssen mit 0,9 gebohrt werden. Für die Kabelverbindung habe ich Platinensteckverbinder genommen, 2-polig (Reichelt „PS 25/2G WS“); die bestehen aus einem verpolungssicheren Stecker und 20cm Kabel sowie dem Pendant für die andere Seite in Buchsenform. Insgesamt ist die Platine für Torbreiten von 17-20cm ausgelegt, wenn das Ziel-Tor eine andere Breite hat, müßte man diese Platine neu routen.

Das Layout erlaubt, wie hier abgebildet, zwei verschiedene Montageformen. Im Kickertisch müßte man vorher ausmessen, wie die Platine am besten befestigt werden kann, und die LEDs entsprechend  einlöten. Ich habe mich für die erste Variante entschieden, dafür ist es am besten, die LEDs jeweils einzeln bis zum Anschlag durchzustecken und dann festzulöten. Da sie relativ eben sind am Boden, liegen sie schön plan auf der Platine auf und können so gut ausgerichtet werden.

4.2 Lichtschrankenempfänger

Bei den Empfängern (BPW40) gibt’s nicht viel zu schreiben. Die Größe  der Platine ist gleich der der LED-Sender, damit sollte eine LED immer relativ genau auf einen Fototransistor leuchten. Zur Montage siehe oben, den Stecker, mit dem die 24 Lichtschranken mit dem Controller verbunden werden, habe ich absichtlich nicht als SMD-Teil bestückt, um die mechanische Belastbarkeit zu erhöhen. Zum leichteren Bohren habe ich die Pads rechteckig gestaltet.

Wie wir später sehen werden, muss dann aus der Platte des Tischkickers etwas Material herausgenommen werden, damit der Stecker da paßt. Auch diese Platine erlaubt vertikale Montage, je nachdem, wie der Kicker ausschaut.

4.3 Anmerkungen zu Montage und Torbeschaffenheit

Wichtig bei der Montage der Lichtschranken ist, dass der Ball erst hinter diesen abgebremst wird. Wir haben bei unserem Kicker das Problem, dass Bälle sporadisch viel zu langsam angezeigt werden. Die Skizzen hier links verdeutlichen das Problem: Der Ball wird durch die schräge Holzplatte, sofern er zu hoch eintrifft, noch im Strahlengang abgebremst und fällt dann erst in den Auswurf. Die geringe Zeit reicht aus, um die Geschwindigkeit als viel zu niedrig erscheinen zu lassen.

Fällt der Ball dagegen tiefer ein wie im zweiten Bild gezeigt, so wird er tatsächlich erst hinter der Lichtschranke abgebremst, die Messung stimmt.

4.4 Steuerung und Anzeige

Kommen wir zur Steuerung des Systems. Ihre Aufgaben umfassen:

  • Erfassung und Messung der Bälle
  • Anzeige von Spieldaten auf einem Display
  • Verarbeitung von Benutzereingaben mittels Knöpfen

4.4.1 Bschreibung der Hardware

Der Kernpunkt liegt im Design der Lichtschranken-Messung; das System sollte so genau wie möglich sein, ein Pollen von Port-Pins kam für mich damit nicht infrage. Der einzige Mega-AVR in noch selbst lötbaren (TQFP44 oder TQFP64) Gehäusen mit entsprechend vielen externen Interrupts ist der ATmega644. Es stellt sich nun die Frage, ob dieser auch ein LCD und Knöpfe bedienen kann.

Erfahrung aus anderen Projekten hatte gezeigt, dass die Behandlung eines Grafik-LCDs mit drei bis vier Schriftsätzen und Bildern etwa 20K Code und 1K RAM in Anspruch nimmt; der Rest konnte für eigene Programmlogik verwendet werden. Das sollte für uns reichen.

Damit besteht die Hardware aus eigentlich wenigen Teilen:

  • Stromversorgung 3,3V über Linearregler, 1A
  • MCU ATmega644
  • Vollgrafik-LCD Electronic Assembly DOGM132-5, 132×32 Pixel S/W
  • etwas „Gemüse“ zur Glättung von Spannungen, Quarz für die MCU
  • drei Kurzhubtaster
  • Steckverbindung 10-polig zur Vernetzung von 2 Anzeigeni
  • Steckverbindung 34-polig zur Verbindung der Fototransistoren
  • ISP-Steckverbinder 6-polig

UPDATE: Ein Copy & Paste-Fehler hat sich im Schaltplan eingeschlichen. Natürlich muß R3 (der UART PullUp-Widerstand) größer als 82 popelige Ohm sein. Lötet für den 10kOhm ein, er muss auch nur einmal bestückt werden; zweimal schadet aber nicht.

UPDATE2: Vergessen zu erwähnen habe ich außerdem, dass das JTAG-Interface per Fuse (im High-Register) deaktiviert werden muß! Es funktionieren sonst vier Lichtschranken nicht.

Ein wenig seltsam mag die Diode bei den Tastern anmuten. Leider war kein Port-Pin mehr frei, der mittlere Knopf wird daher duch gleichzeitiges Drücken der beiden anderen simuliert. Wir erinnern uns: mit 2 Bit kann ich vier Zustände beschreiben. Damit die beiden äußeren Taster dennoch unabhängig sind voneinander, müssen sie mit den Dioden isoliert werden.

4.4.2 Anschluß der Lichtschranken

Über ein Flachbandkabel werden die 24 Lichtschranken an die Controller-Platine verbunden. Die Fototransistoren sind einerseits (Emitter) mit Masse verbunden und liegen mit dem anderen Beinchen (Kollektor) direkt am jeweiligen Port-Pin. Intern besitzt jeder Port-Pin einen Pullup-Widerstand von 30-60kOhm (Atmel Datenblatt); leitet der Fototransistor nicht, so liegt die jeweilige Leitung auf +Vcc.

Durch das Licht aus den IR-LEDs werden Ladungsträger aus dem PN-Übergang gelöst, der elektrische Widerstand sinkt, der Fototransistor leitet und wirkt wie ein Kurzschluß. Dadurch fällt das Potential auf GND ab.

Die Funktionsweise ist nun sehr einfach beschrieben: Im Ruhezustand sind die Lichtschranken nicht unterbrochen und alle 24 Pegel liegen auf GND. Trifft ein Ball ein, so wird eine gewisse Anzahl an Transistoren sperren und damit das Potential bei diesen Leitungen von GND auf +Vcc anheben. Der Mikrocontroller kann das als Interrupt auswerten.

4.4.3 Beschaltung des grafischen LCDs

Ein paar kurze Erläuterungen für das DOGM-LCD. Es wird seriell über SPI mit Daten versorgt und kennt zwei Arten von Daten: Bitmuster für die Darstellung auf dem Display und mehrbytige Kommandos. Nachdem SPI keine Unterscheidung trifft, muss bei diesem Display ein Pin die Aufgabe übernehmen. Liegt auf A0 eine 1 an, so schreibt das Display das ankommende Byte an die momentane Spalte („Column“) in der aktuellen Zeile („Page“) und erhöht den Spaltenzähler. Liegt eine 0 an, so wird das Byte als Teil eines Kommandos interpretiert.

Das Datenblatt schreibt 1uF-Kondensatoren vor, 100nF funktionieren auch, sind billiger und lassen sich besser löten.

Der Hardware-Reset ist unbedingt erforderlich! Auch nach dem Anlegen der Versorgung liegt der Controller offenbar in einem unkontrollierten Zustand. Wer keinen Pin der MCU opfern möchte, muss sich eines externen Resets mittels RC-Glied oder Resetschaltkreis behelfen. Ich halte von beidem nicht viel, weil die Synchronisation mit der MCU dadurch abhanden kommt.

Kontrast wird über Software eingestellt, es ist kein Potentiometer oder ähnlich erforderlich.

4.4.4 Anmerkungen zu Herstellung und Löten

Die Herstellung der Platine ist nicht mehr ganz trivial; es passen 4 Platinen recht knapp auf eine Europakarte drauf, bei mir gehen trotz Ätzgerät mit Blubberbad von vier Platinen eine oder zwei schief, besonders zwischen den Beinchen der MCU bleibt öfters was hängen.

Gebohrt werden müssen die Löcher mit 0,9mm, auch hier wollte ich wegen der Belastbarkeit keine SMD-Steckverbinder benutzen.

Löten der MCU am besten mit Lötpaste, eine Wurst über alle vier Seiten, Chip drauf und mit dem Kolben zügig über die Leiterbahnen fahren. Wer noch bleihaltige Paste hat, darf sich freuen: Damit zieht sich der Chip selbst etwas auf die Leiterbahnen hin. Ansonsten schadet es natürlich nicht, vorher so gut es geht, auszurichten.

Eine Besonderheit liegt bei der kurzen Drahtbrücke oben: Die muss tatsächlich als Brücke unter die Platine montiert werden, weil unter dem Display kein Platz ist. Ich hab die Leiterbahn einfach nirgendwo anders mehr durchbekommen. Läßt man maschinell bei Olimex fertigen, passen übrigens zwischen zwei DOGM-Pads drei dünne Leiterbahnen durch, für eine Einerstückzahl hatte sich das aber nicht rentiert.

4.5 Gehäuse

Stellt sich noch die Frage nach der Befestigung. Hier gefällt mir eine Lösung aus dem Mediacenter-PC-Bereich sehr gut, es wird das Display hinter ein gebogenes Plastik montiert. Wir müssen nur drei Löcher bohren, und siehe da, funktioniert einwandfrei. Das Display wird mittels doppelseitigem Klebeband befestigt.

Bei eBay gibt es diese Plastik-Schilder im 10er Packen, nehmt am besten die A7-Größe. Ich hab A6 und es ist etwas zu groß, leider. Möglich wäre auch eine Befestigung mittels 4 Schrauben, auf der Platine sind entsprechende Löcher vorgesehen.

Um den Rand oben abzuschneiden, nehmt am Besten wieder den Proxxon und spannt ihn wie abgebildet in den Bohrständer ein; dann müßt ihr nur noch das L-förmige Teil entlang der Führung unten schieben (langsam!) und erhaltet einen sauberen Schnitt. Stellt den Bohrer auf maximale Drehzahl; das ist zwar laut, aber die Gefahr der Vibrationen sinkt und damit das Risiko des Scheibenbruchs.

Das fertige Schild sollte wie oben links abgebildet aussehen. Eine Bohrschablone könnt ihr euch herstellen, wenn ihr die Platinenmaske einfach ausdruckt.

8 Kommentare zu “Pimp-My-Kicker a.k.a. Wham-O-Meter”

1.   Kommentar von doc
Erstellt am 26. August 2010 um 17:17 Uhr.

Sieht ziemlich cool aus. Kann’s kaum erwarten, mal daran zu spielen!

2.   Kommentar von Waldemar
Erstellt am 17. April 2013 um 22:15 Uhr.

Hi , ich habe mal dein Wham-O-Meter nachgebaut (Einseitig) nur für die Anzeige der Geschwindigkeiten! COOL das Teil. DANKE dir dafür 😉 Ich bin auch ein Kickerfanatiker und E-Techniker u. ich muss sagen das Teil funktioniert recht gut, obwohl Bälle die weiter unten an den Photoempfängern vorbeirauschen langsamer angezeigt werden als weiter oben (Streuung der IR-LED ist Schuld). Hab noch paar Komentare:

bzgl. deiner Ball-Durchmesser-Kalibrierungsfunktion:
-> die läuft zwar, macht aber nix !!!

-> hab die Kalibrierung per hand vorgenommmen. Einfach den
Balldurchmesser eingeben, funktioniert aufgrund der IR-Streuung
nicht korrekt! Ich ließ den Ball öfters durch die Lichtschranke von
ner Höhe h fallen und hab die Geschwindigkeit nach v=sqr(2gh) bestimmt
und verglichen mit der Anzeige. Der wahre Durchmesser ist bei meinem
Ball 35mm u. damit die Aneige stimmt muß ich bei mir D = 27mm eingeben.

bzgl. Die Top-Ten-Liste:
-> Die Top-Ten-Liste sollte vorher schon mit Werten gefüllt werden,
( vielleicht ab 25 Km/h ), da das ständige Eintippen der Rekorde
am Anfang doch schon ziemlich nervt 😉

Nun denn weiter so ! Gruss aus Berlin

3.   Kommentar von McSeven
Erstellt am 17. April 2013 um 22:31 Uhr.

Grüße, freut mich ja sehr, dann wärst Du schon der dritte, der’s erforlgreich nachgebaut hat. Wenn du hast, schick gerne Fotos, bau ich dann hier auf die Webseite.

Re 1) Ok, das kann sein. Ist wohl eher eine Spielerei, wobei es bei mir funktionierte…

Re 2) Ah richtig, es kommt wirklich auf die IR-Strahlen drauf an. Wir hatten dann noch Strohhalme drübergestülpt, um die Streuung zu verbessern. Du könntest auch mal schauen, ob die LEDs richtig auf die Transistoren ausgerichtet sind…

Re 3) Gute Idee, dazu wäre einfach im EEPROM-Initial-Wert (bei dem Array) statt 10x “ “ ein passender Wert einzutragen, z.B. 10x „CPU“ mit eben 25,00km/h. Das kannst sogar selbst machen und dann flashen.

„Nur einseitig???“ Spaß machts doch erst mit zwei LCDs =) Cheers

4.   Kommentar von Waldemar
Erstellt am 14. August 2014 um 19:19 Uhr.

Hallo Christoph,
ich habe mal wieder Zeit gefunden und habe mein Kicker um eine zweite Anzeige erweitert. Mein Bruder will jetzt auch einen Wham-O-Meter 😉 Deshalb hab ich hier wieder reingeschaut und mich gewundert, dass du so schnell geantwortet hast auf mein Kommentar von letztem mal 😉 Da bin ich etwas langsamer ;(
Das mit den Initialwerten im EEPROM hatte ich natürlich auch so gemacht. Auch deine Idee mit den Strohhalmen hatte ich in etwas massiverer Form siehe Bilder) LG Waldemar

5.   Kommentar von Ole
Erstellt am 08. Januar 2015 um 09:48 Uhr.

Hey, größten Respektfür das, was ihr geleistet habt. Ich bin total neidisch darauf und würde es gerne nachbauen. Leider bin ich ein absoluter Anänger und stehe mit der Fertigung der Platinen vor einem Problem. Könnt ihr mir da vielleicht eine Anleitung zur Fertigung geben, die für absolute dummies ist?
Liebe Grüße!

6.   Kommentar von McSeven
Erstellt am 08. Januar 2015 um 09:56 Uhr.

Grüße, Danke erst einmal. Also, dann würde ich Dir den PCB-Pool empfehlen, der macht super Platinen. Sich das selbst beizubringen für so ein großes Projekt ist vielleicht etwas viel. Ansonsten existieren im Internet dutzende Anleitungen, eine Suchmaschine Deiner Wahl hilft Dir unter dem Stichwort „Platinen ätzen“ weiter. Cheers, Christoph

7.   Kommentar von Ole
Erstellt am 08. Januar 2015 um 15:15 Uhr.

Ui, habe mir gerade dazu Videos angeguckt und sehe, dass das sehr schwierig werden wird… Eine weitere Sache: ich möchte dieses Projekt mit einem Arduino verwirklichen, der hat aber keine 24 Ports. wie habt ihr das Portproblem gelöst ?
LG

8.   Kommentar von McSeven
Erstellt am 08. Januar 2015 um 22:55 Uhr.

Grüße, hm, also wie ich soll ich das schonend verpacken… Eventuell ist so eine komplexe Sache für den Einstieg in die Mikrocontroller-Welt etwas viel. Mit dem Arduino-Ökosystem kenne ich mich nicht so gut aus, kann Dir also nicht garantieren, daß die Firmware, die aus den Sketches erstellt wird, auch wirklich schnell genug für das genaue Zeitmessen ist. Zu Deiner Frage: Der Mega644 hat die entsprechende Anzahl an GPIO-Pins mit Pin-Change-Interrupts, deswegen hatten wir damals kein Problem 🙂

Einen Kommentar hinterlassen