Reaktionszeit messen

Begonnen von picass, 28.09.2024, 15:33:53 CEST

Vorheriges Thema - Nächstes Thema

picass

Wärme einen lang gehegten Wunsch auf, die Reaktionszeit messen zu können. Unseren Altvorderen vloki hatte ich früher mal angefragt, ob er nicht...., und es hieß, das könnte ggf. eine Projektarbeit für seine Studenten werden. Seitdem herrscht Ruhe in diesem Busch und ich blieb in der Regel hängen beim Bemühen, mit technisch einfachen Mitteln eine zuverlässige Zufallszahl zu erzeugen. Da gabs vom Rauschen einer Z-Diode bis hin zu wissenschaftlichen Methoden mit wüsten Formeln alles, aber nix Einfaches.
Und dann kam mir vor Tagen eine Idee..... und gucke da, beim erneuten Schnüffeln im Inet zeigte sich, dass andere die auch schon gehabt hatten und dass sie wohl gut wäre. Weil seit einiger Zeit in meinem Fundus sich das Layout für eine dreistellige 7-seg-LED-Anzeige befindet, kann das nun angegangen werden.
Fürs Erstellen der Hardware muss nur noch eine solche Platine bestückt werden. Die notwendigen Zeitmessungen erfolgen ebenfalls sehr einfach: da die LED-Anzeigen halt ordentlich Strom fressen, ist eh' Netzbetrieb sinnvoll und da kann man dann gleich ein wunderbares 100 Hz-Signal abgreifen, dass per Optokoppler übertragen wird. Die Software ist in Arbeit, das Meiste schon fertig, es stehen ,,nur" noch die Testarbeiten aus.

Die Zufallszahl? Allen einfacheren technischen Verfahren liegt eine quasi ,,zuverlässige Unzuverlässigkeit" über die gleichmäßige Verteilung der Werte über den gewünschten Bereich zu Grunde. Einige  µCs haben einen Z-Generator implementiert, unsere Grund-PICs aber nicht. Wenn die Maschinen-Welt da nichts bereit hält, könnte man sich an einem Objekt, besser Subjekt bedienen, welches im Ruf steht, eben kein Roboter mit dauernd gleichem, berechenbaren Verhalten zu sein: homo sapiens !
Der himself mit seinem subjektiven Verhalten wird gettz ausgewertet und das ist wirklich einfach. Kaum ist der Apparat eingeschaltet, läuft ein Zähler in einer Dauer-Schleife. Dieser Z muss weder rasend schnell noch überhaupt schnell sein. Einhundert mal pro Sekunde ist 'ne ziemliche Hausnummer. Da hackt der Probant ohne sein Wissen irgendwo mitten oder am Anfang oder sonstwo rein und wird bereits für eine Messung verwurstet, von der er nichts weiß, die aber für den Zufall reicht. Wobei: hier einen wissenschaftlichen Maßstab an eine 150-prozentige Genauigkeit der Verteilung anzulegen, würde für eine Semesterarbeit 'ne feine Sache sein, aber der Sache hier wäre das nicht angemessen. Zudem habe ich noch ein zweites Verfahren in der Hinterhand.

Die Sache wird auch dadurch einfach, dass mit nur 8-Bit ausreichend Rechen-bzw. Bewegungsspielraum zur Verfügung steht. 100 Hz mit 8 Bit zählen, bedeutet die Chance für eine Reaktion innerhalb von 2,55 Sekunden. Das reicht vorne und hinten und wer dass nicht packt, fällt beim Test durch. Zu Recht! Wohlan denn...., wird ein paar Tage dauern, aber dann....
Grüße, picass

vloki

MPLABX  XC8  KiCAD

picass

Ja, an diesen Fred erinnere ich mich auch. Hatte da allerdings gar nicht mehr nachgeschaut. In diesem ersten Anlauf zur praktischen Umsetzung nutze ich keinen Timer, sondern "nur" die 100 Hz-Netzfrequenz und das auch nur an zwei Positionen. Wenn das Projekt fertig ist, stelle ich den Code hier ein. Heute gerade eben ist die verpiccte Hardware fertig und sondert auch schon erste Signale aus. Wie ihr an den in den Himmel gereckten Drähten meines "Programmier-Sockels" sehen könnt, wartet er sehnlichst auf sein Programm.
Aber fein, Volker, dass du hin und wieder hier mal rein schaust.
Grüße, picass
reagier.jpg
Like Like x 1 View List

picass

Is klar...., ;) die Hardware kommmt first !
Das Innenleben lümmelt sich in einem "Gehäuse", welches vormals als Untersatz zur Kühlung von oben drauf gestelltem Notebook diente. Die Kreisöffnung verschaffte dem ehemals dort befindlichen Lüfter...., na was schon ? : ...Luft.

Von oben sieht das schon etwas übersichtlicher raus. Der kleine rote Knopf links ist für die Bereitschaftsanzeige und - Obacht: geheim - für die Generierung der Zufallszahl zuständig, der fette Grüne rechts dürfte selbsterklärend sein, ebenso die fette rote Anzeigen-Kuppel rechts.
Grüße, picass
reaktion2.JPGreaktion3.JPG

picass

#4
PLATSCH !......Igitt, diese ekligen Spritzer !
Er ist erschlagen, der RIESEN-Floh !

Seit gerade hat die Reaktions-Schaltung ihre Arbeit aufgenommen: drückt man die grüne Bereitschaftstaste, wird nach Ablauf der im Hintergrund erzeugten Zufallszahl die große, rote LED-Lampe angezündet und die Messung der Zeit startet. Nach Drücken der fetten, grünen Stopp-Taste wird diese Zeit nach kürzester Berechnung auch angezeigt. Klappt wunderbar.
JETZT! Vorher war das 'ne wüste Schinderei und über die benötigte Zeit rede ich nicht, das verdränge ich.

Der Riesen-Floh war die nicht korrekte Port-Initialisierung, genauer gesagt, für die Abfrage der Tastendrücke musste beim entsprechenden Port das ANSEL-Register auf Null gesetzt werden, um den digitalen Input zu gewährleisten. Is klar, nach dem Igitt-Manöver waren noch zwei weitere "Anpassungen" notwendig, aber nach dem TOTSCHLAG war der Weg frei.
Nun könnten noch Modifikationen möglich sein wie z.B. die Zufallszeit noch etwas auszuweiten. Oder es könnten die Ergebnisse von etwa 8 Mess-Durchläufen gesammelt und danach der ermittelte Mittelwert auf die Anzeige geschoben werden.

Aber jetzt erst mal bin ich - nein, nicht erfreut, dafür war die Schinderei zu groß - erleichtert, dass dat Ding endlich funktioniert! Auf den Sieg werde ich mir heute Abend was gönnen, z.B. ein Glas Rotwein zum Käseknäcke. Oder so.
Grüße vom höchst Erleichterten picass

picass

Hab' meinen Spass mit der Schaltung!
Die erziehlten Reaktionswerte trösten über das Ungemach der Erstellung hinweg. Es hat sich gelohnt, für die Stopptaste etwas Geld auf den Tisch zu legen und was Gutes zu installieren. Die Taste lässt sich zuverlässig und vor allem fix drücken und sie hat einen klaren Druckpunkt.
Heute wurde die Messzeit - also die Wartezeit zwischen Start und Aufleuchten der roten Lampe - variiert: erst gibts eine Sec Vorlauf, dann kommt die durch Zufall erzeugte Zeit mal zwei. Das ergibt eine gute Bandbreite. Eventuell noch mal drei, da kann man nun spielen. Morgen kommt - hoffentlich - das Aufaddieren einiger Messwerte und die Mittelwertbildung. Aber erst mal Spass haben mit dem Testgerät. O:-)
Grüße, picass

picass

#6
Das "morgen" war dann doch übermorgen, aber lass' ma. >:D Aber 'nu haben fertig!

Die Mittelwertbildung ist eingefügt und das läuft dann so: während acht Reaktionsmessungen wird der aktuelle Wert auf addiert. Nach diesen Achten wird die Summe durch 8 geteilt und auf einfache Weise - shift right - der Mittelwert gebildet, welcher dann am Schluss zur Anzeige gelangt.

Is klar, das anschwellende Prog bedurfte einer Säuberung, und auch die Hardware beschwerte sich, weil die Verkablung für mechanische Belastung nicht gedacht war. Zwecks der vielen Umprogrammierungen  zog der Adpapter klammheimlich ein Kabel los, welches am µC-Bein'chen angelötet war und daraufhin meckerte der PICkit3-Programmer. Na ja, Geburtswehen halt.

So wie die Schaltung ist, kann sie bleiben. Sie ist gut und funktioniert ebenso. Die erste Mittelwert wirft 0,22 Sekunden Reaktionszeit aus. Bietet jemand mehr? Also weniger? >:D
Grüße, picass

picass

#7
Oben schrieb ich:"...die Hardware kommt first!" Entsprechend nun als Anhang das Programm, geschrieben in der "mittleren" Version des MPASM, also MPASM X v 5.20 und das für den PIC18F13K22. Gerade noch getestet: es funktioniert.

Die Erzeugung des Zufalls - dieses Prob hatte mich ja lange gehindert, weil es als doch kompliziert erschien - ist nach meinem Geschmack bestens gelöst und das mit einfachsten Mitteln. Is klar, wir werden hier keine wissenschaftlich untermauerten Statistiken drüber stülpen, wozu auch. Nach momentaner Einstellung gibt es vorab eine feste Sekunde Wartezeit und dann folgt die durch Zufall generierte variable Phase, die im Moment zwischen null und 5 Sekunden liegt. Das langt bestens, um auf dem falschen Fuß erwischt zu werden. Wem das nicht langen sollte, der kann durch einfaches Verändern einer "2" durch Vergrößern dieser Zahl die bange Wartezeit verlängern.

Die Hardware beschreibe ich an dieser Stelle erst mal nicht weiter, das war bereits oben passiert. Eine extra Platine mit sämtlichen Bauteilen hatte ich nicht verwendet, sondern eine fertige Schaltung für diese 3x7-seg-Anzeige benutzt. Für die  100-Hz-Signal-Erzeugung und das Entprellen der beiden Tasten hatte ich einen LM311 und ein IC CD4014 mit Schmitt-Triggern auf Lochrasterplatte gebaut. Falls doch jemand Bedarf an Hardware-Infos haben sollte, bitte hier melden.
In der Zip-Datei befindet sich der komplette MPLAB X - Ordner für dieses Projekt und in diesem Ordner noch zusätzlich eine Textdatei mit dem Prog.
Grüße, picass
reaktion12.X.zip

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Similar topics (1)

Begonnen von Peter