Anleitung Technisches Experimente |
LBlocks: Programmieren ohne Tastatur
Technisches Handbuch Version 3 / Rev. A (c) 2012-2013 Jörg Wolfram 1 AllgemeinesDie Programme unterliegen der GPL (GNU General Public Licence) Version 3 oder höher, jede Nutzung der Software/Informationen nonkonform zur GPL oder ausserhalb des Geltungsbereiches der GPL ist untersagt!Die Veröffentlichung dieses Projekts erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, auch ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Alle im Text genannten Marken sind Eigentum des entsprechenden Inhabers. 2 InstallationDas Programm ist monolithisch aufgebaut, das heisst es besteht nur aus einer einzigen Datei. Damit ist eine Installation im eigentlichen Sinne nicht unbedingt nötig, es reicht aus, das Programm ausführbar zu machen und zu starten. Aus diesem Grund habe ich auch auf die Erstellung von Paketen verzichtet.Das Programm benötigt Schreibrechte im home-Verzeichnis des Benutzers, dort wird beim ersten Start ein Ordner mit Namen lblocks angelegt. In diesem befindet sich auch das Projektverzeichnis zum Laden und Speichern von Projekten und ein Verzeichnis mit den nötigen Scripten. 3 AnforderungenDas Programm ist unter und für Linux entwickelt worden, auch unter anderen freien Betriebssystemen (BSD) sollte es recht einfach sein, das Programm zum Laufen zu bringen. Generell ist ein grafische Grundsystem (X11) sowie die libpng notwendig, als Toolkit wird ein modifiziertes GTK 1.2 (ist statisch im Programm eingebunden) verwendet. Binaries stehen zur Zeit für x86 (PC-32Bit) und ARM (Raspberry PI) zur Verfügung. Die ARM-Variante wurde allerdings nur in einem Emulator getestet.Un das Programm in den Controller schreiben und von dort lesen zu können, ist eine Programmer-Software notwendig. Per Default werden bei der Installation avrdude und als Programmer der usbasp eingerichtet. Das Script readscript_xx.sh liest den Flash-Speicher des Controllers in die Datei "lblocks_read.hex" ein und das Script progscript_xx.sh schreibt den Inhalt der Datei "lblocks.hex" in den Speicher des Controllers. 4 SourcecodeDas Projekt ist unter der GPL V3 lizensiert, was die Verfügbarkeit des Sourcecodes einschließt. Dieser kann in einem separaten Archiv heruntergeladen werden. Der gesamte Compiliervorgang wird durch Scripte gesteuert, Makefiles habe ich nicht benutzt. Neben dem C-Compiler (GCC) sind noch AVRA für die Übersetzung des AVR-Quellcodes und ein Perl-Interpreter notwendig. Ebenso sind die gepatchten Dateien für GTK1.2 mit enthalten.5 KonzeptKernstück des LBlocks-Controllers ist ein ATMega8 oder ATMega88. Der ATMega88 ist aber zur Zeit noch nicht getestet. Für die Stromversorgung kommen sinnvollerweise Akkus in Betracht, ein Beispiel sind 4 NiMH-Zellen in Reihe, die eine Nominalspannung von 4,8V liefern. Der Controller wird über eine Siebglied mit Drossel versrgt versorgt, während die Servos direkt am Akku hängen. Dadurch sollen Rückwirkungen von den Motoren auf den Rest der Schaltung weitgehend vermieden werden.Eine andere Variante die ich selbst benutze, ist ein alter LiIon- oder LiPo-Akku mit einem Step-Up Schaltregler um auf 5V zu kommen. Hier sind aber zusätzliche Maßnahmen gegen Kurzschlüsse zu ergreifen und es braucht ein spezielles Ladegerät. Auf dem Board existiert dazu noch eine zweistellige Siebensegmentanzeige, eine LED und zwei Taster. Ebenso ist ein Minilautsprecher vorgesehen. Für externe Peripherie gibt es 6 universelle Ein- / Ausgänge und 2 Servo-Impulsausgänge. Für die Siebensegmentanzeigen lassen sich sowohl welche mit gemeinsamer Anode als auch mit gemeinsamer Kathode verwenden, die Beschaltung wird durch das Programm automatisch erkannt. 6 Der ControllerDie Beschaltung des Controllers beschränkt sich auf das notwendige Minimum:7 LeiterplattenlayoutDas Leiterlattenlayout hängt stark von den verwendeten Bauelementen ab, insbesondere von den Siebensegmentanzeigen. Ich verwende z.B. noch VQE-Anzeigen aus DDR-Restbeständen. Aus diesem Grund und auch wegen der anderen Spannungsversorgung habe ich auf die Veröffentlichung eines Layouts verzichtet.8 Die Verbindung zur AussenweltAls Verbinder haben sich 2- oder 3-polige Steckerleisten im 2,54mm Rastermaß auf der Leiterplatte bewährt. Das Gegenstück sind dann kurze Abschnitte von Wire-Wrap Buchsenleisten. Das ganze Konzept ist so ausgelegt dass weder der Controller noch die Peripherie bei einer Verpolung Schaden nehmen können, eine farbliche Markierung bei verpolbaren Stecksystemen ist aber auf jeden Fall sinnvoll. Denn z.B. die LEDs und Servos funktionieren natürlich nur bei der richtigen Polung.Als Grundausstattung für die Experimente wird Folgendes benötigt:
8.1 Mechanischer AufbauIch habe für den Aufbau LEGO-Steine benutzt, da unser Sohn genug davon hat und sich die Bausteine so auch recht einfach in "Gesamtkunstwerke" einfügen lassen. Die Auswahl der Bauelemente erfolgte hauptsächlich nach Bastelkisteninhalt und sind eher als Anregung zu verstehen. Als Verbindungsleitung habe ich dünne abgeschirmte Adern von alten Audiokabeln benutzt, die Buchsen angelötet und mit Schrumpfschlauch gesichert. Alle Steine sind nach Möglichkeit so bearbeitet worden dass die normale Steckfunktion noch gegeben ist. Zum Verbinden und Arretieren habe ich Sekundenkleber benutzt, nach eigener Erfahrung sollte dieser möglichst dickflüssig sein. Als "Zugentlastung" eignet sich auch etwas Heißkleber an passender Stelle (z.B. in den Mittelrohren der Bausteine).8.2 Lampen (LEDs)Bei den LEDs wurden nach Verfügbarkeit 5mm bedrahtete LEDs und PLCC4-LEDs mit Linse benutzt. Die Steine sind wieder vom Format 4x4. Die Zuleitung geht (wenn möglich) von hinten duch das Mittelrohr und wird dort im Anschluss mit etwas Heißkleber fixiert. Bei den SMD-LED wurde nur ein Loch für die Linse in den Baustein gebohrt, bei den bedrahteten LED musste ein Teil des Mittelrohrs entfernt werden, damit die LED von innen durch das gebohrte Loch gesteckt werden kann. Die Abbildung zeigt eine rote PLCC-LED, eingebaut in einen roten Baustein. Bei LED mit transparentem Gehäuse ist es sinnvoll, dass LED-Farbe und Bausteinfarbe korrespondieren, bei eingefärbten LED-Gehäusen können auch einfarbige Bausteine (schwarz, grau, weiß) zum Einsatz kommen. 8.3 TasterFür die verwendeten Taster wurden wieder zwei 4x4 Steine aufeiandergeklebt und danach das Loch für den Taster gebohrt. 8.4 FotowiderstandDazu habe ich 2 4x4 Steine zusammengeklebt und danach mit einem Rollenfräser das Loch für den Fotowiderstand eingebracht. Zum Schluss noch ein Loch in der Rückseite für das Kabel. Nach dem Anlöten und Testen wurde der Fotowiderstand mit Sekundenkleber im "Gehäuse" fixiert. Um die Empfindlichkeit zu erhöhen, kann noch ein Widerstand parallel geschaltet werden, da erst Widerstandswerte < 4,7KOhm überhaupt vom Controller erkannt werden. 8.5 ReedkontakteDie Reedkontakt liegen mittig in 2x4 Steinen. Abhängig von den verwendeten Magneten kann es auch sinnvoll sein, die Röhrchen möglichst an der Seite der Steine zu platzieren. Damit sich die Schalter und Magnete später leichter justieren lassen, sind noch jeweils eine LED + 10KOhm Vorwiderstand parallel zum Reedkontakt geschaltet. Bei offenen Kontakt leuchtet die LED, durch die Dimensionierung wird der Schalter aber trotzdem als offen erkannt. Als Magnete wurden kleine quaderförmige, relativ starke Magnete seitlich in Bausteine geklebt. Wenn man die Ausrichtung so wählt dass diese sich anziehen kann man sie auch noch für andere Experimente verwenden. 8.6 ServosAls Servos / Getriebemotoren wurden Modelcraft-Servos von Conrad verwendet. Um sie als Getriebemotoren verwenden zu können, müssen sie umgebaut werden:
9 Changelog29.10.2013 Version 3.16
created with latex2web.pl v0.63 © 2006-2013 Joerg Wolfram |