Die Anzeigen für diese Vorsignale wollen wir auf unserer Schauanlage wieder aktivieren. Hier werden die ersten Schritte vorgestellt.
Archiv für den Autor: Matthias
Verblüffend einfache Konstruktion einer Notbremse
Die Notbremse in einem alten Werkstattwagen. Wenn man den Notbremshebel zieht, wird einfach ein Deckel geöffnet, der die Druckluftleitung entlüftet und den Zug somit anhält.
Festspannungsnetzteil aus einem PC Netzteil
Für viele Bastelprojekte benötigt man mehrere Spannungen, z.B. 3,3 Volt oder 5 Volt für den Microcontroller und 12 Volt für den Analogteil. Ich habe zwar ein einstellbares Netzteil, das ist in diesem Rahmen aber nicht immer notwendig. Zudem ist es recht schwer und nicht besonders mobil.
Deshalb habe ich mir aus einem alten PC ein Netzteil besorgt und dieses in ein kleines Gehäuse eingebaut. Nun habe ich einfachen Zugriff auf 3,3 Volt, 5 Volt und 12 Volt.
Noch ein Hinweis für Einsteiger: ein PC Netzteil hat üblicherweise eine sehr hohe Leistung. Bei einem Kurzschluss schaltet es sich zwar automatisch ab. Wenn der Strom aber unterhalb der erlaubten Grenze bleibt, kann es passieren, dass dauerhaft sehr viel Leistung in der defekten Schaltung frei wird. Im schlimmsten Fall kann das zu einem Brand führen.
BME280 Temperatursensor am Raspberry Pi
Ich habe einen BME280 Temperatur-, Luftfeuchte- und Luftdrucksensor an den Raspberry Pi angebunden und in ein Servlet gepackt. Ziel ist es, diese Daten übers Internet verfügbar zu machen, ohne von einem externen Cloud Anbieter abhängig zu sein.
DHT22 Temperatursensor am Raspberry Pi
Am Wochenende wollte ich einen Temperatursensor über Pi4J vom Raspberry Pi aus auslesen. Das hat letztendlich auch geklappt, war aber wesentlich aufwändiger als gedacht.
Stuttgart 21: Tag der offenen Baustelle
Am letzten Wochenende war „Tag der offenen Baustelle“ am Stuttgarter Hauptbahnhof. Ich war nur zufällig dort vorbeigekommen, habe aber trotzdem ein paar Bilder machen können.
Blinky mit dem Raspberry Pi und Java
Ich wollte mal testen, wie brauchbar die Java Virtual Machine auf der ARM Architektur läuft. Hierzu habe ich mir einen Rasperry Pi 3 bestellt und Netbeans installiert. Die Entwicklungsumgebung läuft dort mit akzeptabler Geschwindigkeit. Ein paar erste Tests zeigen, wie schnell man auf die Port-Pins zugreifen kann.
20 Jahre Computermuseum der Universität Stuttgart
Zum 20. Jahrestag des Computermuseums der Universität Stuttgart hat das Informatik Forum Stuttgart (infos) zu einem Festkolloquium eingeladen. Der Leiter des Computermuseums, Klemens Krause, hat in einer Live Präsentation einen 50er Jahre Röhrencomputer LGP-30 vorgestellt. Er besteht aus 113 Röhren und 700 Germanium-Dioden und besitzt einen Trommelspeicher von 4096 Worten à 31 Bit. Der Ton der Aufnahme ist leider nicht besonders gut, da ich nur ein Smartphone zur Verfügung hatte.
Ein kleines JavaScript Spielprogramm
In der letzten Woche habe ich durch Zufall ein JavaScript Spielprogramm gefunden. Die Spielidee ist einfach: es gibt ein Array von verschieden farbigen Kacheln. Der Anwender kann diese paarweise auswählen – was dazu führt, dass die beiden Kacheln vertauscht werden. Dabei können aber nur direkt benachbarte Kacheln getauscht werden. Wenn es mehr als 3 zusammenhängende gleichfarbige Kacheln in einer Zeile oder Spalte gibt, war der Spielzug gültig und es werden einem Punkte dafür gut geschrieben.
Das Original war mit einer recht kurzen Zeitschranke versehen. Ich wollte aber wissen, ob das Spiel zwingend irgendwann zum Ende kommt, weil es keine weiteren Kombinationen mehr gibt, die durch einen einfachen Austausch zu erreichen wären. Mein erster Versuch dazu war, dass ich im Browser versucht habe, den Timer stillzulegen. Das Programm hat sich aber gegen Veränderungen gewehrt, deshalb habe ich mich entschlossen, es gleich nachzuprogrammieren.
Meine Version hat keine Zeitbeschränkung und zudem auch eine Hilfefunktion. Wenn man an einem Punkt nicht weiter weiß, kann man sich über eine Tipp Funktion eine Möglichkeit markieren lassen – falls es noch eine gibt. Ich habe noch nicht beobachtet, dass die Tipp-Funktion eine Möglichkeit übersehen hat. Schon nach kurzer Zeit hat sich gezeigt, dass es im Allgemeinen ein Ende gibt. Manchmal schon nach 200 Spielzügen. Ich habe aber auch schon 1500 Spielzüge überstanden, ohne dass ein Ende absehbar war. Ich gehe aber davon aus, dass sich jedes Spiel irgendwann in einer Situation befindet, in dem es keine weiteren gültigen Spielzüge mehr gibt.
Das Spiel ist komplett in html / CSS / JavaScript programmiert. Es gibt noch nicht mal eine Image Datei. Es wird auch kein Framework, wie z.B. JQuery, verwendet. Ich wollte auch mal ausprobieren, wie gut man zu Fuß mit Animationen zurecht kommt. Das eine oder andere könnte man mit CSS Animationen noch besser machen. Für mich war der aktuelle Stand aber gut genug.
Die Animationen, wie z.B. das Verschieben der Kacheln sowie ein- und ausblenden des Hilfe-Dialogs werden über Timer-Callback Funktionen durchgeführt. Das Skript ist relativ kurz und hat deshalb nur drei Klassen: das Spiel-Objekt, das Gitternetz im Spiel und ein Kachel-Objekt. Insgesamt etwa 100 Zeilen CSS für die Formatierung und 600 Zeilen JavaScript für die Spielausführung.
Ultraschall Sensor
Ich wollte schon seit längerer Zeit mal etwas mit einem Ultraschall Sensor machen. Also habe ich mir bei Reichelt kurzerhand ein Sender – Empfänger Paar gekauft und mal an meinen Signalgenerator sowie Oszilloskop angeschlossen.
Meine naive Annahmen, dass ein Ultraschallempfänger so eine Art Mikrofon für hohe Frequenzen und ein Sender ein Lautsprecher für hohe Frequenzen sei, hat sich aber schnell zerschlagen. Naiv deshalb, weil ein Blick in das Datenblatt zeigt, dass beide Komponenten relativ Schmalbandig um die 44 kHz arbeiten. Das deutet darauf hin, dass hier stark mit Resonanzeffekten gearbeitet wird.
Am Sender reicht schon ein Burst mit nur einer Periode aus, um am Empfänger ein breites Signal zu erzeugen.
Da ich nicht weiß, wo innerhalb des Gehäuses der Sender bzw. der Empfänger liegt, habe ich bei der Distanzmessung eine Unsicherheit von etwa 5 mm. Da ich auf der Empfängerseite keinen klaren Startpunkt habe, ist es auch schwierig, die Laufzeit exakt zu bestimmen. Am Genausten wäre es vermutlich, wenn man die Hüllkurve ermittelt und dann das Maximum sucht. Allerdings vermute ich, dass hier dann eine Änderung der „Lautstärke“ zu erheblichen Messfehlern führt.
Da das Empfangssignal im Ruhezustand erstaunlich stabil ist, verwende ich den ersten sichtbaren Ausschlag als Messpunkt. Bei Abständen von (ca.) 25, 20, 15, 10 und 5 cm komme ich auf Zeitunterschiede von jeweils ca. 150 Mikrosekunden. Das würde eine Schallgeschwindigkeit von 330 m/s ergeben. Die Abweichung zur echten Schallgeschwindigkeit liegt bei dieser einfachen Ablesemethode im erwarteten Rahmen.
Ich werde in den nächsten Tagen wohl eine Umstellung auf einen Microcontroller machen. Dann ist der Ablesezeitpunkt weniger willkürlich. Zudem kann kann man bei Laufzeiten im einstelligen Millisekundenbereich durchaus 100 Messungen pro Sekunde durchführen und einen Mittelwert bilden. Mal sehen, ob ich dann genauere Daten bekomme.