Knitty: Unterschied zwischen den Versionen

K
Zeile 23: Zeile 23:
  
 
Nach etlichen Versuchen und analysieren haben wir es geschafft. Die Strickmaschine gehorcht uns aufs Byte!
 
Nach etlichen Versuchen und analysieren haben wir es geschafft. Die Strickmaschine gehorcht uns aufs Byte!
 +
 +
Der Code ist Open Source und findet sich auf [https://github.com/knitty GitHub]
  
 
== Anschluss ==
 
== Anschluss ==
Zeile 109: Zeile 111:
 
|}
 
|}
 
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.
 +
 +
== Firmware ==
 +
 +
Der Ardunio Code findet sich auf [https://github.com/knitty/firmware Github/firmware]
 +
  
 
== Host-Software ==
 
== Host-Software ==
 
[[Datei:Knitty screenshot kl.jpg|thumb|180px|left|Host Software]]
 
[[Datei:Knitty screenshot kl.jpg|thumb|180px|left|Host Software]]
  
 +
 +
Der Processing Code findet sich auf [https://github.com/knitty/firmware Github/gui]
 
{{clear}}
 
{{clear}}
  

Version vom 24. April 2014, 15:04 Uhr

Crystal Clear action run.png
Knitty

Status: stable

Cat superba 624.jpg
Beschreibung Auf die Maschen, fertig los!
Autor: ptflea, schinken
PayPal Spenden für Knitty

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. Strickmaschinen waren schon früh in der Lage nach vorgegeben Muster zu stricken, z.B. mit Lochkarten, also den frühen Computern nicht unähnlich.

Wir haben uns entschieden eine 'modernere' Maschine die schon elektrisch arbeitet zuzulegen. Gelandet ist dann eine Singer/Superba 624.

Sie ist für ihre Zeit sehr fortschrittlich, jedoch lässt die Grösse des programmierbaren Muster sehr zu wünschen übrig, ganze 24*60 Pixel, bei einer Breite von 180 Nadeln!

Wir wollten die volle Breite mit unbegrenzter Höhe und haben uns ans Reverse Engineering gemacht.

Die Steuereinheit wird mit einem 6-poligen DIN Stecker mit der Strickmaschine verbunden. Hier haben wir angesetzt und die Kommunikation zuerst mit einem Oszilloskop und später mit einem Datalogger belauscht.

Nach etlichen Versuchen und analysieren haben wir es geschafft. Die Strickmaschine gehorcht uns aufs Byte!

Der Code ist Open Source und findet sich auf GitHub

Anschluss

Anschlussplatine

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

Left to Right
Right to Left

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. Die beiden Lichtschranken sitzen leicht versetzt und triggern kurz hintereinander.

Die Richtung lässt sich bestimmen, je nachdem welche Lichtschranke zuerst anschlägt. Nach einer Analyse der Dataloggerdaten sind wir auf eine einfache Lösung gekommen, es müssen nur die beiden Werte verglichen werden. Sind beide HIGH geht es nach Rechts, bei LOW/HIGH in die andere Richtung.

CSENSE CREF Richtung
HIGH HIGH Links -> Rechts
LOW HIGH Rechts -> Links
Neue LEDs

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

Testaufbau
Beispielschaltung

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 haben ein eigenes Shield für den Arduino entwickelt, 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.

Firmware

Der Ardunio Code findet sich auf Github/firmware


Host-Software

Host Software


Der Processing Code findet sich auf Github/gui

Ergebnisse