Knitty: Unterschied zwischen den Versionen
Krisha (Diskussion | Beiträge) K (→Protokoll) |
|||
Zeile 71: | Zeile 71: | ||
== Protokoll == | == Protokoll == | ||
− | Zum Übertragen unserer Daten, sowie zum | + | Zum Übertragen unserer Daten, sowie zum Setzen der Cursorpostionen sowie Debug verwenden wir ein kleines Protokoll. Wir verwenden hier bewusst lesbare Zeichen, damit wir auch von Hand einfach Befehle absetzen sowie lesen können. Jeder Befehl endet mit einem "Newline". |
Ein Befehl ist wie folgt aufgebaut: | Ein Befehl ist wie folgt aufgebaut: | ||
X:PAYLOAD\n | X:PAYLOAD\n | ||
Zeile 94: | Zeile 94: | ||
|} | |} | ||
Das Protokoll wird durch eine [http://en.wikipedia.org/wiki/Finite-state_machine State-Machine] geparsed. Das Protokoll enthält keine Prüfsummen, da wir uns hier auf die serielle Übertragung verlassen. | Das Protokoll wird durch eine [http://en.wikipedia.org/wiki/Finite-state_machine State-Machine] geparsed. Das Protokoll enthält keine Prüfsummen, da wir uns hier auf die serielle Übertragung verlassen. | ||
+ | |||
== Ergebnisse == | == Ergebnisse == | ||
<gallery> | <gallery> | ||
Datei:Knitty face kl.jpg | Datei:Knitty face kl.jpg | ||
</gallery> | </gallery> |
Version vom 5. April 2014, 18:50 Uhr
Knitty Status: stable | |
---|---|
Beschreibung | Auf die Maschen, fertig los! |
Autor: | ptflea, schinken |
PayPal |
Knitty
Stricken! Eigene Mützen, Pullover, Schals! Wenn da nicht die leidige Handarbeit im Wege wäre. Zum Glück kann stricken auch automatisiert werden.
Host-Software
Anschluss
Die Strickmaschine enthält eine Anschlussplatine mit simpler Elektronik. Untergebracht sind hier ein Transistor und ein Komparator. Der Transistor schaltet die Elektromagneten, welche wiederum die Stricknadeln heben. Der Komparator ist an den beiden Lichtschranken angeschlossen. Des weiteren ist ein großer Ferritkern zum Entstören verbaut. Die Platine ist an der rechten Seite der Maschine unter einer Plastikhaube aufgesteckt.
Signal | Farbe | Beschreibung |
---|---|---|
CSENSE | Gelb | Lichtschranke #1 |
CREF | Weiss | Lichtschranke #2 |
IFDR | Grün | Cursor mit Schlitten verbunden |
SEL | Blau | Muster |
GND | Schwarz | Masse |
+15V | Rot | Dauerplus |
Lichtschranke
Für die Pins CREF und CSENSE bekommen wir jeweils einen Pinchange sobald sich der Cursor bewegt, auch wenn der Schlitten nicht verbunden ist. Die Pulse werden über zwei Lichtschranken und einer Schlitzscheibe erzeugt. Auf der eingebauten Platine wird das Signal der Lichtschranke über einen Komperator zu einem TTL-Signal gewandelt und liegt dann am DIN-Stecker an. Unser Interrupt am Arduino reagiert auf CSENSE (Interrupt 0) und liesst zu beginn den Wert von CREF aus. Mit einem Vergleich der beiden Werte lässt sich die Richtung in der sich der Cursor bewegt feststellen.
CSENSE | CREF | Richtung |
---|---|---|
HIGH | HIGH | Links -> Rechts |
LOW | HIGH | Rechts -> Links |
Bei Experimenten mit einer Erdung des Schlittens sind die originalen LEDs zerstört worden. Diese wurden kurzerhand mit SMD-LEDs der Farbe Rot ersetzt. Der existierende Vorwiderstand konnte hier weiterverwendet werden. Die Leuchtdioden sind hier in Reihe geschalten. Als Resultat leuchtet jetzt die Lichtschranke deutlich heller - die Funktion ist dadurch weder beeinträchtigt noch verbessert worden.
Ansteuerung
Zum Ansteuern der Maschine wird ein Arduino Uno verwendet. Die Signale CSENSE und CREF der Lichtschranke, sowie IFDR benötigen einen PullUp-Widerstand. Hier haben wir 10 Kilo-Ohm Widerstände verwendet, welche auch im original Computer verbaut sind. Die Drähte CSENSE und IFDR sind mit dem Interrupt 0 und 1, SEL mit Pin 9 und CREF mit Pin 4 unseres Arduinos verbunden. Wir Planen ein eigenes Shield für den Arduino zu entwickeln, welche PullUp-Widerstände, wie auch die DIN-Buchse und die Spannungsversorung enthält. Dadurch entfällt die Freiluftverdrahtung.
Protokoll
Zum Übertragen unserer Daten, sowie zum Setzen der Cursorpostionen sowie Debug verwenden wir ein kleines Protokoll. Wir verwenden hier bewusst lesbare Zeichen, damit wir auch von Hand einfach Befehle absetzen sowie lesen können. Jeder Befehl endet mit einem "Newline". Ein Befehl ist wie folgt aufgebaut:
X:PAYLOAD\n
Aktuell sind folgende Befehle verfügbar:
Befehl | Beschreibung | Beispiel |
---|---|---|
P | Set pattern | P:1010101001010101010111 |
E | Pattern end | E:1 |
C | Cursor setzen | C:-14 |
I | IFDR verbunden | I:1 |
R | Response | R:OK |
D | Direction | D:LTR oder D:RTL |
V | Debug | V:Test123 |
Das Protokoll wird durch eine State-Machine geparsed. Das Protokoll enthält keine Prüfsummen, da wir uns hier auf die serielle Übertragung verlassen.