Bitte um Hilfestellung Folgendes würde gerne einen 24-poligen Centronic Ausgang auf einen Seriellen PC Dateneingan bringen. Das Gerät ist ein Feinprüfmessgerät "Millitron 1234" siehe den Dateianhang.(letzte Seite) Frage ist das möglich?? Ich hoffe sehr auf eure Hilfe
:
Verschoben durch Admin
Das ist zwar ein spezielles Format, aber mit den Angaben auf der letzten Seite lässt sich viel anstellen. Das gute Teil (0,02µm Auflösung sind schon speziell!) liefert die benötigten Daten quasi auf dem Silbertablett. Du musst nur die BCD-Codierten Stellen einlesen, 0x30 (Offset für Ziffern im ASCII-Code) dazuaddieren und verschicken. Wenn man einen Controller mit 4 8-Bit Ports verwendet, dann braucht man sich über externe Beschaltung kaum Gedanken zu machen. Einzig die beiden Signale an Pin 7 und 8 muss man ausmessen und anpassen, weil da was von einem anderen Logikpegel steht. Wann da eine Kommastelle geschaltet wird, muss man testen. Falls sich die Messwerte oft ändern (zeigt das eines der übrigen Signale an??) und dabei Fehlübertragungen stattfinden, sollte man die Ports erst zwischenspeichern. Für einen 8051-Controller könnte man z.B. einfach folgendes machen:
1 | void main(void) |
2 | { unsigned char einer, zehner, hunderter, tausender; |
3 | bit vorzeichen; |
4 | init_seriell_9600baud(); |
5 | while(1) |
6 | { einer = (P1 & 0x0F) + 0x30; // Einerstellen an P1.0 - P1.3 |
7 | zehner = ((P1 & 0xF0) >> 4) + 0x30; // Zehner an P1.4 - P1.7 |
8 | hunderter = (P2 & 0x0F) + 0x30; // Hunderter an P2.0-P2.3 |
9 | tausender = P2_4==0 ? 0x30 : 0x31; // nur 0 oder 1 |
10 | vorzeichen = P2_5; // Vorzeichen-Eingang |
11 | // die Pins 7 und 8 eventuell noch verarbeiten
|
12 | |
13 | if (vorzeichen == 1) putchar('+'); |
14 | else putchar('-'); |
15 | putchar(tausender); |
16 | putchar(hunderter); |
17 | putchar(zehner); |
18 | putchar(einer); |
19 | }
|
20 | }
|
Franz K. schrieb: > Folgendes würde gerne einen 24-poligen Centronic Ausgang auf einen > Seriellen PC Dateneingan bringen. Mit Centronics hat das Interface garnichts zu tun, es ist viel einfacher, da die Daten einfach parallel anliegen. Man muss sie nur einlesen und seriell weitersenden, zweckmässigerweise mit einem µController. Dafür kommt jeder in Frage der genug Eingänge hat, angefangen mit einem 20poligen PIC. Die Frage ist nur zu welchem Zeitpunkt: vermuten kann man, dass mit dem Taster eine Messung gestartet wird (wozu ist er sonst da?) und "Messbereitschaft" anzeigt, dass der Wert gültig ist. Wie das genau geht sollte man mit einem Oszilloskop vorher testen. Gruss Reinhard
Herzlichen Dank für die Antworten Nun zur Realisieung: Kann ich das über die Mikrocontroller-Plattform Arduino machen? So eine Art kleiner zwischenübersetzer um die Daten in den Rechner zu bekommen und sie z.B. über Excel zu verarbeiten. Einen kleinen "prellfreien Taster" einmal Drücken und die Daten werden übernommen. Oder einen andere Lösung ?? Herzlichen Dank fürs Nachdenken
Franz K. schrieb: > Einen kleinen "prellfreien Taster" einmal Drücken und die Daten werden > übernommen. Wenn du weisst, wann der Messwert gültig ist, reicht das. Das funktioniert dann eben nur bedient und nicht automatisch, ist dafür einfach. Gruss Reinhard
Franz K. schrieb: > Nun zur Realisieung: > Kann ich das über die Mikrocontroller-Plattform Arduino machen? Wenn das Board genügend Anschlüsse hat. Also nicht die kleinen Minis und das Uno hat auch nur 14 digitale I/Os. Da könnte man eventuell die 6 analogen Eingänge nutzen. Das kleine Mikro hat 20 digitale I/Os, das würde auch (leicht) gehen. Achte darauf, dass genügend Pins für die parallele Übertragung vorhanden sind und dass der Controller mit 5V läuft (oder zumindest 5V-Tolerante Eingägne hat). Bei zu wenigen Anschlüssen könnte man mit I2C-Bus oder Schieberegistern zwar wieder was machen, aber lieber 5€ mehr für die Hardware, dafür ist dann alles schon drin.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.