3-Achs Positionsanzeige für digitale Messschieber PDF Drucken E-Mail
Geschrieben von: Malte   
Sonntag, den 18. August 2013 um 09:21 Uhr

Das im Folgenden dargestellte Projekt ist noch nicht abgeschlossen, es finden noch Änderungen und Erweiterungen statt!

Hintergrund | Für mechanische Arbeiten steht mir die gut ausgestattete Werkstatt meines Vaters zur Verfügung. Seit längerem haben wir dort eine kleine Wabeco F1200 Fräsmaschine im Einsatz - ein wirklich gutes Werkzeug. Die Maschine ist in allen drei Achsen mit günstigen Anbaumessschiebern ausgestattet. Um die Positionswerte gut ablesen zu können, sind diese mit einem ebenfalls von Wabeco vertriebenen Anzeigesystem verbunden. Obwohl wir mittlerweile bereits das dritte Anzeigegerät an der Maschine haben, hat leider noch keines ordentlich funktioniert. Entweder fielen ganze Anzeigen aus, Werte sprangen oder froren zeitweise ein. Das muss kein systematisches Problem mit den Anzeigen sein, vielleicht hatten wir bisher einfach Pech. Trotzdem hatte meine Geduld in dieser Sache jetzt ein Ende und ich habe mich mal daran gemacht, so ein Auslesesystem selber zu bauen.

 

Verbindung zum Messschieber | Die neusten Modelle der Wabeco Messschieber (das sind die, die wir akutell an der Maschine haben) benutzen eine Mini-B USB Buchse als Datenausgang. Hä? Ja, eine USB Buchse, dass das daran anliegende Signal allerdings ansonsten irgendwas mit USB zu tun hat, kann ich nicht erkennen (auch wenn auf der Wabeco Seite behauptet wird, die Messschieber seien mit einer USB Schnittstelle ausgestattet). In enigen Foren habe ich aufgeschnappt, dass dieses Interface als "RB5" bezeichnet wird, habe das aber bisher nicht weiter recherchiert. Es ist zwar für meinen Geschmack ein ziemlich dreckiger Hack, eine dediziertes Steckersystem für ein anderes Signal zu verwenden (wie wäre es denn mal mit Schuko-Steckern an Lautsprecherkabeln?), immerhin sind diese Stecker mechanisch etwas solider als die der Vorgängerversion der Messschieber. Adapterkabel von "USB" nach RJ10- ("Western-") Steckern lagen dem Wabeco Ablesegerät bei, diese verwende ich hier. Die Belegung der Kabel zeigt die folgende Abbildung.

 

Serielles Protokoll | Die Messschieber geben eine synchrones serielles Signal aus, d. h. mittels eines Clocksignals wird angezeigt, wann das Datensignal gültige Bits trägt. Die Daten werden vom  Messschieber als zirka 9 ms dauernde Pakete übertragen, die etwa alle 117 ms, also mit ~8.5 Hz ausgegeben werden, wie das folgende Oszillogramm zeigt.

oszi_messschieber

spacer

Sieht man sich so ein Datenpaket näher an, erkennt man, dass es aus 24 Bit besteht. Die high-Phase des Clock-Signals (Ch 1, gelb) liegt immer innerhalb der high- oder low-Phase des Data-Signals (Ch 2, türkis). Ist das Clock-Signal high, ist also der Zustand des Data-Signals auszuwerten um das entsprechende Datenbit zu ermitteln. Bei dem folgenden Bild stand der Messschieber in 0.00 mm Stellung, die offensichtlich dadurch codiert ist, dass alle Datenbits eine Null tragen.

oszi_messschieber

spacer

Um das verwendete Datenformat zu erkennen, stellt man den Messschieber auf verschiedene Positionen und sieht sich die resultierende Bitfolge im Daten-Signal an. Für die Position 0.02 mm z. B. ist das erste Bit der Daten low das zweite high, alle weiteren Bits low (siehe folgendes Bild). Das entspricht der binären Darstellung von 2, wenn man das erste Datenbit als LSB (Least Significant Bit) interpretiert. Weitere Testpositionen bestätigen, dass die Position in Vielfachen von einem hunderstel Millimeter mit LSB 0 binär codiert ist.

oszi_messschieber

spacer

Nun fragt sich, wie das Vorzeichen in den Daten repräsentiert ist. Positioniert man den Messschieber auf -0.02 mm, sendet er ein Datenpakt wie im nächsten Bild dargestellt. Wie bei der 0.02 mm Position bleibt das zweite Bit high, dazu ist das 21. Bit high, alle anderen Bits sind low. Das 21. Bit scheint also nach 20 Betrags-Datenbits ein Vorzeichenbit zu sein. Ist es high, trägt der Wert ein negatives Vorzeichen, ansonsten ist er positiv. Die Daten sind also nicht im Einer- oder Zweierkomplement codiert - was in diesem Falle durchaus bequem ist: man kann auf der Anzeige den Betrag darstellen und ergänzt dann grafisch je nach Zustand des 21. Bits das Vorzeichen (siehe Software). Damit ist das Wesentliche des Datenformates auch schon entschlüsselt.

oszi_messschieber

spacer

Da das metrische System Teufelswerk ist, können die Messschieber Positionen auch in der Einheit Inch (Zoll) ausgeben. Ein Datenpaket für eine -1" Position sieht wie im folgenden Bild aus. Das 24. Bit zeigt die Einheit an (low -> Millimeter, high -> Inch). Die Betragsdaten nehmen für die -1" Position einen Wert von 0000_1011_1110_0000_0000 an, was dezimal 2000 bedeutet. In der Inch-Einstellung werden die Positionswerte also in Einheiten von 0.0005 Inch (= 0.0127 mm) ausgegeben.

oszi_messschieber

spacer

Schaltet man den Messschieber in dieser Position zurück in die Millimeterdarstellung - was natürlich -2.54 mm bedeutet -, lauten die Betragsbits 0011_0111_1001_0000_0000, was einem Dezimalwert von 2540 entspricht (und insofern nochmal ein Beispiel für die Richtigkeit der o.g. Coderingsannahme ist). Das Vorzeichenbit (Bit 21) ist gesetzt, der Wert ist also negativ, das Einheiten-Bit (Bit 24) ist wieder 0 und zeigt somit Ausgabewerte in (hundertstel) Millimetern an.

oszi_messschieber

spacer

 

Fasst man das Ganze nun nochmal graphisch zusammen, ergibt sich folgendes Bild. D0 entspricht "Bit 1" im Text, D23 "Bit 24".

spacer

spacer

 

 

bildspacerElektronik | Man muss zunächst dafür sorgen, dass die 1.6-V-Logik Messschiebersignale, die an den RJ-10-Buchsen K1-K3 anliegen, in 5 V Logik für den Mikrocontroller umgesetzt werden. Ich mache das hier mit Wald-und-Wiesen Komparatoren: drei LM393 (IC1-IC3). In den ICs befinden sich jeweils zwei Komparatoren. Jedes Messschieber-Signal ist mit dem nichtinvertierenden Eingang eines Komparators verbunden. An den invertierenden Eingängen der Komparatoren liegt eine Spannung von ca. 0.65 V, die mittels Spannungsteilern (R1/R2, R3/R4 bzw. R5/R6) aus der Versorgungsspannung erzeugt wird. Der LM393 besitzt einen Open-Collector-Ausgang, der nach Masse durchgeschaltet ist, wenn am invertierenden Eingang eine größere Spannung als am nichtinvertierenden Eingang anliegt. Wenn also weniger als 0.65 V vom Messschieber kommt, ist der Ausgang auf 0 V (low Pegel). Liegt eine Spannung >0.65 V an, ist der Kollektor offen und der externe Pull-up Widerstand (R9-R14) zieht den Ausgang nach 5 V (high Pegel). Auf diese Weise wird die Anpassung der Logikpegel berwerkstelligt.

Um die Anzeige zu Nullen, muss Pin 1, das (neben Clock, Data und Masse) vierte verbliebene Siganlkabel vom Messschieber  (Pin 1 von K1-K3), kurzzeitig auf Masse gezogen werden. Dieses passiert in der Schaltung über die Taster S1-S3.

Als Controller kommt ein Atmel AVR mega168 (IC4) zum Einsatz, der mit internem 8 MHz Takt läuft. Der Controller wird per ISP über K6 programmiert. Die (nach 5 V umgesetzten) Clock Signale der drei Messschieber sind mit dem INT0- (PD2), INT1- (PD3) bzw. PCINT11- (PC3) Eingang des AVRs verbunden. Dadurch können die Signale einfach per externen Interrupts ausgewertet werden (siehe Software). Die Data Signale sind an PC0, PC1 bzw. PC2 angeschlossen.

Zur Anzeige der Positionsdaten wird ein monochromes 128x64 Pixel Grafik Display mit einem KS108 kompatiblen LCD Controller verwendet. Die Daten- und Steuerleitungen des LCDs sind direkt mit dem AVR verbunden. Über den Trimmer R8 wird der Kontrast des LCDs eingestellt.

Die Schaltung wird an K5 mit einer stabilisierten 5 V Gleichspannung versorgt. Der IRLML6402 dient als Verpolungsschutz, ein Überspannungsschutz ist nicht vorhanden.

mess_schematic

(Der Schaltplan wird nach dem Klick an die Fenstergröße angepasst dargestellt. Wenn die Auflösung dadurch zu schlecht ist, hilft das Öffnen im neuen Tab oder das Speichern des Bildes)

spacer

Software | Die zeitunkritischen Teile der Firmware, also insbesondere die Darstellung der Positionswerte auf dem LCD, wurden in Bascom geschrieben, die Interrupt Service Routinen (ISRs), die das Einlesen der seriellen Signale bewerkstelligen, wurden in Assembler implementiert.

Eine Flanke auf den Clock-Signalen löst jeweils einen externen Interrupt (INT0, INT1 bzw. PCINT1) aus, sodass die entsprechende ISR angesprungen wird. Die Siganalauswertung in der jeweiligen ISR basiert darauf, dass bei jeder positiven Flanke des Clock-Signals der Zustand des zugehörigen Datensignals in eine Variable (Val1, Val2 bzw. Val3) übernommen wird. In welches Bit dieser Variablen geschrieben wird, zeigt eine Bitmaske (Val1_msk, Val2_msk bzw. Val3_msk) an, die mit jeder Clock um ein Bit in Richtung MSB geschoben wird. Nachdem die Maske um 24 Stellen geschoben wurde, wird sie zurückgesetzt und außerdem über ein Flag (new_Val) für das Hauptprogramm angezeigt, dass ein neues Datum zur Anzeige bereit steht. Mittels eines Timers wird jeweils sichergestellt, dass der Einlesevorgang resetet wird, wenn innerhalb der Übertragung eines Paketes mehr als 2.048 ms zwischen zwei Clocksignalen vergeht. Trifft länger als 122.88 ms kein Datenpakt ein, wird auf dem Display ein Übertragungfehler signalisiert. Derselbe Fehler wird angezeigt, wenn an dem Messschieber auf Inch-Einheiten umgeschaltet wurde.

Weil die meisten fertigen Fonts für monochrome Displays zu klein und zu hässlich sind, habe ich mir selbst einen Font gemacht. Die einzelnen Zahlensymbole wurden in einem Grafikprogramm "gepixelt" und dann mit dem  Bascom "Grafic Converter" ins BGF-Format konvertiert. Die Symbole können somit einfach mir "Showpic" an die gewünschte Stelle auf dem Display gebracht werden.

Quellcode Bascom: Ansicht (html)alle Projektfiles (ZIP)

 

Platine und Gehäuse | Ich habe eine kleine Platine für das Projekt layoutet, dadurch wird der Aufbau insgesamt ein wenig kompakter und eleganter. Außerdem hat das Ganze noch ein ordentliches Alu-Gehäuse bekommen, sodass das Gerät robust verpackt neben der Fräsmaschine montiert werden kann.

bildspacerbild

spacer

bildspacerbild

spacer

bildspacerbild

spacer

 

Ausblick | Natürlch könnte man ohne Probleme noch eine RS232- oder USB-Ausgabe integrieren, weil das in meinem Fall aber nicht weiter nützlich ist, habe ich darauf verzichtet - außerdem bin ich mit dem Controller schon recht knapp mit den noch freien Pins. Vielleicht könnte man entsprechendes Mal bei einer erweiterten Version einbauen.

Zuletzt aktualisiert am Dienstag, den 03. Februar 2015 um 11:43 Uhr
 

Kommentare  

 
#35 Andreas 2016-07-10 10:38
zitiere Christian:
Hi,
GREAT work, do you sell PCB's for these, or are you wiling to share the PCB files?
I have looked at your Bascom code, I need to change the code, since I ned this for a lathe, I need to devide the Y by 2 to get the radius. but there is so much ASM code, that I can find the place where i should devide the Y axis?
Best regards,
Christian

http://www.yuriystoys.com/p/android-dro.html
 
 
#34 igi 2015-12-24 14:11
Could you share PCB design too? I just redraw it to Eagle but I'm not sure about correct position of C1 - C3 I'm guessing their position is critical to input connectors.
 
 
#33 barnes 2015-11-25 19:26
Super , die teile könntest du gut verkaufen und den wabeco mist alt aussehen lassen. noch besser wenn ein kanal optional eine wertverdoppelun g hätte für drehmaschinen.
 
 
#32 tom 2015-09-01 22:45
Można prosić o wzór PCB?
You can ask for PCB design?
 
 
#31 Hans-Ulrich Böhmer 2015-08-21 20:37
das könnte mir sehr gut gefallen, beim eventuellen Nachbau bin ich sicher auf etwas Hilfe angewiesen, mfg
 
 
#30 Dieter S 2015-01-16 22:56
Hallo, find ich klasse. Gibts das Teil auch zu kaufen?
 
 
#29 Christian 2015-01-06 13:32
Hi,
GREAT work, do you sell PCB's for these, or are you wiling to share the PCB files?
I have looked at your Bascom code, I need to change the code, since I ned this for a lathe, I need to devide the Y by 2 to get the radius. but there is so much ASM code, that I can find the place where i should devide the Y axis?
Best regards,
Christian
 
 
#28 2014-11-30 14:08
Hallo Zusammen,
habe diesen beitrag gelesen und finde es super klasse!!!
da ich das gleiche vorhatte mit dem Selbstbau, aber diese Schioeblehrenan zeige:

http://www.elv.de/Schieblehrenanzeige-SLA-1/x.aspx/cid_726/detail_32802

Sollte Interesse bestehen, ich habe alle nötigen Daten wie Schaltpläne, Bestückungsplan usw.
Schreib mir eine email:


Viel Spaß beim BAUEN ;-)
 
 
#27 2014-05-15 10:51
zitiere Jürgen Künneth:
Hallo,
ich habe Probleme die Bilddateien mit der Endung *.bgf zu öffnen. Mit welchem Programm ist dies möglich. "Googeln" hat nix gebracht. Vielen Dank, Gruß Jürgen



Sorry, Denkfehler. Man sollte erst lesen dann handeln. Hat sich erledigt, Danke
 
 
#26 2014-05-15 06:39
Hallo,
ich habe Probleme die Bilddateien mit der Endung *.bgf zu öffnen. Mit welchem Programm ist dies möglich. "Googeln" hat nix gebracht. Vielen Dank, Gruß Jürgen
 
 

Suche

Benutzer

Wir haben 13 Gäste online

unterstützt von

batronix logo

spacer

rotacaster logo

spacer

spacer

spacer

Meine Tweets

Extern

youtube logo twitter logo email logo

spacer

spacer

spacer

Reklame