Benutzer-Werkzeuge

Webseiten-Werkzeuge


0x0017

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
0x0017 [2023/02/01 14:23] – [Software] torsten.roehl0x0017 [2023/02/01 14:36] (aktuell) – [Links] torsten.roehl
Zeile 20: Zeile 20:
 </figure> </figure>
 =====Hardware===== =====Hardware=====
-<figure> + 
-{{:messuhr01.jpg?300|}} +Einen Arduino Nano, einen Widerstand und ein Transistor reichen aus, um mit der Messuhr kommunizieren zu können. Das Kabel (hier Digimatic-Kabel mit RB6/Wannenstecker) ist allerdings auch noch notwendig.  
-<caption> //Für die Kommunikation werden vier LeitungenDATA, CLK, REQ und GND verwendetDa der RB6-Datenausgang fünf Leitungen hat, ist eine Leitung unbenutzt./+ 
-</caption> + 
-</figure>+^Anzahl^Hardware^ ^ 
 +|1|Arduino Nano (Klon) | | 
 +|1|4,7 k Widerstand | | 
 +|1|BC 548B Transistor | {{:bc548.png?300 |}}|  
 +|1|Digimatic-Kabel  |{{:digimatic_kabel.jpg?300|}}  
 +|1|Wannenstecker (10-polig) 2.54mm |{{:wannenstecker_03.png?300|}} |  
 + 
 +Grundsätzlich könnten alle Messgeräte mit dem Digimatic-Protokoll ausgelesen werden (auch andere Schnittstellen als RB6z.B. RB5, inbegriffen). Testen konnten wir natürlich nur mit dem uns zur Verfügung stehenden Messgerät(siehe folgende Tabelle). Der Wannenstecker ist nur notwendig, wenn das Digimatic-Kabel verwendet wirdEine Alternative ist im Abschnitt Downloads/Links aufgeführt (Adapter RB6 auf RB5). 
 =====Software===== =====Software=====
   * **Digimatic** Protokoll Das Digimatic-Protokoll muss gründlich verstanden sein, bevor man versucht, Daten vom Messgerät zu lesen. Insgesamt werden 13 Halfbytes (Nibble) gelesen und somit insgesamt 52 Bits bei jedem Lesevorgang empfangen.   * **Digimatic** Protokoll Das Digimatic-Protokoll muss gründlich verstanden sein, bevor man versucht, Daten vom Messgerät zu lesen. Insgesamt werden 13 Halfbytes (Nibble) gelesen und somit insgesamt 52 Bits bei jedem Lesevorgang empfangen.
Zeile 30: Zeile 37:
   * **Messsoftware** Eigentlich geht es ja darum, mit eigener Software die Daten der Messuhr (über den dazwischen geschalteten Arduino) zu lesen. Ein Code-Skelett, wie so eine Mess-Software aussehen kann, wird hier vorgestellt. Für LinuxCNC empfiehlt es sich, Python zu verwenden. Wir demonstrieren hier das Prinzip mit Java. Jede Programmierprache, die mit dem seriellen Port kommunizieren kann, ist natürlich erlaubt.   * **Messsoftware** Eigentlich geht es ja darum, mit eigener Software die Daten der Messuhr (über den dazwischen geschalteten Arduino) zu lesen. Ein Code-Skelett, wie so eine Mess-Software aussehen kann, wird hier vorgestellt. Für LinuxCNC empfiehlt es sich, Python zu verwenden. Wir demonstrieren hier das Prinzip mit Java. Jede Programmierprache, die mit dem seriellen Port kommunizieren kann, ist natürlich erlaubt.
 ======Details====== ======Details======
 +Zuerst geben wir den Schaltplan an, der nötig ist, um die Messuhr mit dem Arduino verbinden zu können. Für die Prototypentwicklung reicht ein Steckbrett. Ein kleiner Adapter, der die Messuhr mit dem Arduino verbindet, erleichtert allerdings den Aufbau erheblich. Für den dauerhaften Einsatz wurde die Elektronik in ein Elektronikgehäuse gelegt. Die wichtigsten Eigenschaften des Digimatic-Protokolls werden danach besprochen. Anschließend werden die kommentierten Quellcodes der beiden Programme mit zusätzlichen Erklärungen behandelt. 
 =====Hardware===== =====Hardware=====
 +AbsolutSystem Digital-Messuhr (12,7 mm Messbereich) und RB6-Datenausgang, Ablesung 0,001 mm. 
 +<figure>
 +{{:messuhr01.jpg?300|}}
 +<caption> //Für die Kommunikation werden vier Leitungen: DATA, CLK, REQ und GND verwendet. Da der RB6-Datenausgang fünf Leitungen hat, ist eine Leitung unbenutzt.//
 +</caption>
 +</figure>
 +
 +Die Tatsache das Datenleitung und Takt direkt vom Arduino als LOW/HIGH erkannt und somit verarbeitet werden können, erleichtert den Aufbau erheblich. Nur der Request (REQ - Pin 5) erfordert eine Nachbearbeitung.
 +
 +REQ ist ein digitaler Ausgangspin vom Arduino, er wird über dem Widerstand an die Basis des Transistors angeschlossen. Der Emitter des Transistors ist mit GND und der Kollektor mit PIN 5 des Wannensteckers verbunden.
 +
 +Wenn REQ vom Arduino LOW ist, dann sperrt der Transistor und am PIN 5 der Messuhr liegt ein HIGH an. Wenn REQ vom Arduino HIGH ist, öffnet der Transistor und PIN 5 des Wannensteckers wird auf GND gezogen (active LOW Prinzip). Dies ist dann das Signal, das Daten von der Messuhr gelesen werden sollen. Daten können also nur von der Messuhr gelesen werden, wenn zuvor PIN 5 der Messuhr auf GND gezogen wird. 
  
 ^ ^Digimatic PIN^Arduino Nano^Typ^Anmerkung^ ^ ^Digimatic PIN^Arduino Nano^Typ^Anmerkung^
Zeile 63: Zeile 83:
 </caption> </caption>
 </figure> </figure>
 +
 +
 +
 +Manuelle Herstellung der Elektronikausschnitte:
 +
 +  - Mit einem CAD Programm Schablonen anfertigen und anschließend so auf dem Adapter platzieren, dass die Bohrlöcher vorgekörnt werden können.
 +  - Bohrlöcher vorkörnen.
 +  - Mit einem kleinen Bohrer (ca. 1mm) in die Ecken für die Ausschnitte bohren. Die Bohrlöcher für die Schrauben sollten ebenfalls vorgekörnt werden.
 +  - Mit der Laubsäge das Material entfernen.
 +  - Schlüsselfeilen benutzen, um alles sauber in Form zu bringen.
 =====Software===== =====Software=====
 ====Digimatic-Protokoll==== ====Digimatic-Protokoll====
Zeile 479: Zeile 509:
 </code> </code>
 ======Download/Links====== ======Download/Links======
 +Die beiden wichtigsten Quellen sind eine Datei (PDF) über das Digimatic-Protokoll und eine Anleitung von Instructables, die das Auslesen von Mitutoyo-Messgeräten aufzeigt. Unsere Messuhr ist ähnlich aufgebaut, sodass dieser Artikel hilfreich ist. Allerdings enthält der dort verwendete Code einen Bug (kommt nur bei großen Messwerten in inch zum Tragen). Außerdem ist die Verwendung von Strings, selbst wenn man schon mit "Arduinos" programmiert, ungewöhnlich. Ohne Verwendung von Strings läuft der Code wesentlich performanter. 
 +
 ====Download==== ====Download====
 +  * {{ :digimatic_techmusings.pdf |Digimatic Protokoll (TechMusings) }}
 +  * {{ :messuhr.zip |Quellcode: Arduino und Java (mit JSSC) }}
 +
 ====Links==== ====Links====
  
 +Angaben zu den Messgeräten & Kabeln. 
 +  * Kabel Digimatic https://www.amazon.de/gp/product/B0006J415K/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1 (Mitutoyo mt905409 Anschluss Kabel (2 m) 905409)
 +  * Kabel Adapter https://www.shop.santool.de/de/zubehoer/anschlusskabel-digitale-messuhr.html?bruttonetto=with (Art.Nr.: MI-02027153 Anschlusskabel für digitale Messuhr)
 +  * Messuhr https://www.amazon.de/gp/product/B0747MG36S/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1 (CNC QUALITÄT Digital- Messuhr 12,7 mm Messbereich, Ablesung 0,001 mm )
 +
 + Java API für die serielle Schnittstelle: https://code.google.com/archive/p/java-simple-serial-connector/
  
 + Anleitung von Instructables https://www.instructables.com/id/Interfacing-a-Digital-Micrometer-to-a-Microcontrol/
0x0017.1675261404.txt.gz · Zuletzt geändert: 2023/02/01 14:23 von torsten.roehl