Forum: Mikrocontroller und Digitale Elektronik Druckauftrag (Centronics) abfangen


von Martin G. (martin_g32)


Lesenswert?

Hallo,
ich möchte Druckaufträge (Centronics), mit einem Mikrocontroller 
abfangen und die übertragenen ASCII Zeichen an einen Rasperry PI 
weitergeben.
Die Aufgabe des Mikrocontrollers wäre es also, einen Drucker an den 
entsprechenden Strobe,ACK,Busy, usw. Leitungen zu simulieren.

Im Zuge dieses kleinen Projekts möchte ich fragen, ob jemand von euch 
schon einmal so etwas ähnliches gemacht hat?
Habe mit der SuFu nur Projekte in die umgekehrte Richtung gefunden.

Gruß

von Karl H. (kbuchegg)


Lesenswert?

Na gut.
Das ist jetzt aber auch nicht gerade Raketentechnik.

Du hast 8 Portpins, das sind die 8 Datenleitungen.
Und wenn an einem 9.ten (/STROBE) eine Flanke von High nach Low erfolgt, 
dann holst du dir von den 8 Portpins das nächste Zeichen. Damit das 
Gerät weiß, dass du die die 8 Bit geholt hast, ziehst du einen 10-ten 
Pin (/ACK) einmalig von High auf Low und wieder zurück.

Mit den restlichen Steuerleitungen musst du noch ein bischen was machen, 
die sind aber recht selbsterklärend. Aber abgesehen davon, wars das 
schon: Auf einen Übergang High-Low am Strobe warten, die 8 Bit holen und 
der Gegenstelle mit einem Puls an ACK bestätigen, dass sie das nächste 
Byte rausgeben darf. Mehr ist das nicht.
Wenn du mehr als 1/2 Stunde investiert um nach Code dafür zu suchen, 
hast du es in der Zeit längst selbst geschrieben.

von Martin G. (martin_g32)


Lesenswert?

Erstmal vielen Dank für die schnelle Antwort.
Ich glaube ich habe aber mittlerweile eine Lösung ohne Mikrocontroller 
und somit ohne "große" Hardwareentwicklung gefunden:
Statt dem Rasperry Pi könnte ich den Kleinrechner BeagleBone Black 
verwenden. Dieser hat meinen Recherchen nach 69 GPIO Pins mit denen ich 
das direkt machen könnte (jedoch mit einer Maximalspannung von 3,3 
Volt).
Jetzt stelle ich mir die Frage ob ich einen einfachen Spannungsteiler 
(für die Eingänge) und einen Transistor als Schalter (für die Ausgänge) 
verwenden kann?
Weiters stellt sich mir die Frage ob ich die 62 Ohm Impedanz der 
CENTRONICS Kabel berücksichtigen muss oder nicht?

Danke

Gruß Martin

von Harry L. (mysth)


Lesenswert?

Wenn es nur darum geht, die Druckjobs abzufangen, würde ich mir den 
Aufwand sparen, und die Ausgabe auf einen Netzwerkdrucker umleiten.
Das kannst du auf dem Raspberry Pi dann direkt auswerten.

Harry

von JoergL (Gast)


Lesenswert?

Martin G. schrieb:
> ...Weiters stellt sich mir die Frage ob ich die 62 Ohm Impedanz der
> CENTRONICS Kabel berücksichtigen muss oder nicht?

Ein Centronics Kabel hat eine Impedanz?
Ernsthaft? "Gabs das damals schon?"
Spaß beiseite, bei soviel Datenleitungen und sowenig Masseleitungen und 
nicht definiertem Kabelaufbau bzw Adernlage im Kabel kann von einer 
Impedanz wohl kaum die Rede sein.
Und wenn ich mir die paar 10 KByte/sec bei normalem SPP Betrieb ansehe, 
kann ich nur müde lächeln.
Die zu lösenden Probleme sind bei diesem Projekt woanderst.

von Harry L. (mysth)


Lesenswert?

JoergL schrieb:
> Die zu lösenden Probleme sind bei diesem Projekt woanderst.

Genau!
Z.B. im Entfernen/Interpretieren der Drucksteuerzeichen.
Das eigentliche Abfangen der Daten ist Kindergarten im Vergleich dazu.

Harry

von K. J. (Gast)


Lesenswert?

Hm warum nimmste keinen Seriellen Drucker und direkt an den PI ?

so sparst dir den µC

von Reinhard Kern (Gast)


Lesenswert?

Harry L. schrieb:
> würde ich mir den
> Aufwand sparen, und die Ausgabe auf einen Netzwerkdrucker umleiten.

Wozu das denn - einfach Drucken in eine Datei. Vorausgesetzt natürlich, 
die Druckdaten kommen von einem PC, aber das weiss ja mal wieder keiner.

Gruss Reinhard

von Martin G. (martin_g32)


Lesenswert?

Harry L. schrieb:
> Wenn es nur darum geht, die Druckjobs abzufangen, würde ich mir den
> Aufwand sparen, und die Ausgabe auf einen Netzwerkdrucker umleiten.
> Das kannst du auf dem Raspberry Pi dann direkt auswerten.
>
> Harry

Genau darum geht es, jedoch habe ich keine Netzwerkkarte zur 
Verfügung...

von Karl H. (kbuchegg)


Lesenswert?

Jetzt mal Butter bei die Fische.

Wer generiert die Druckdaten? Und warum sollen die auf den Pi?
Centronics ist heutzutage ja schon reichlich exotisch.

Mit einem kleinen AVR wäre das prinzipiell kein Problem. Allerdings, 
wenn der Pi über nicht genügend Portleitungen verfügt (was ich nicht 
weiß), könnte man ja auch mal in die Richtung eines Schieberegisters als 
Eingangsstufe für den Pi nachdenken. Auf die Art würde man sich einen 
'Vor-Rechner' für den Pi sparen. Denn irgendwie müssen die Daten dann ja 
auch vom AVR zum Pi kommen.

von Martin G. (martin_g32)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Jetzt mal Butter bei die Fische.
>
> Wer generiert die Druckdaten? Und warum sollen die auf den Pi?
> Centronics ist heutzutage ja schon reichlich exotisch.

Also die Druckdaten (übrigens reiner Text) werden von einem DOS 
Industrie PC generiert. Die Daten sollen auf den PI konvertiert werden. 
Um Sie anschließend im Netz verfügbar zu machen.
Natürlich könnte das alles auch der DOS PC machen, jedoch darf dieser 
nicht ans Netz gehängt werden (bez. der Sicherheit). Also ist die 
unidirektionale parallele Verbindung eine Ideale Schnittstelle dafür.

Zumindest ist das meine Meinung...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Martin G. schrieb:
> Also ist die unidirektionale parallele Verbindung eine Ideale
> Schnittstelle dafü

Kommt drauf an was man so als Ideal bezeichnet... Ein RS232 benötigt 
eine TX und eine GND Leitung, und du kannst sogar direkt per USB an das 
Zielsystem mit passendem Adapter...

von Reinhard Kern (Gast)


Lesenswert?

Läubi .. schrieb:
> Kommt drauf an was man so als Ideal bezeichnet... Ein RS232 benötigt
> eine TX und eine GND Leitung

und mit einem DOS-Befehl kann man die Daten von LPTx auf COMx umleiten.

Gruss Reinhard

von Peter II (Gast)


Lesenswert?

Reinhard Kern schrieb:
> und mit einem DOS-Befehl kann man die Daten von LPTx auf COMx umleiten.

hilft aber nichts wenn die Software direkt den Port anspricht.

von PittyJ (Gast)


Lesenswert?

Für den Konverter braucht man 9 GPIO Inputs und einen Output. Alles 5 
Volt.
Das ist IMHO das größere Problem.

Ein simpler Arduino (20 Euro) hat genug IO dafür und arbeitet noch mit 5 
Volt. Da bräuchte man nicht viel löten, sondern nur etwas SW schreiben.
Die Ausgabe erfolgt dann über USB (oder virtuelle Com-Leitung) an einen 
Rechner, der auch die Stromversorgung dafür übernimmt.

Wäre also 1 zu 1 verlöten, ohne Zusatzschaltung, und ca 1 Tag SW 
schreiben.

von Marc (gierig) Benutzerseite


Lesenswert?

Martin G. schrieb:
> Statt dem Rasperry Pi könnte ich den Kleinrechner BeagleBone Black
> verwenden. Dieser hat meinen Recherchen nach 69 GPIO Pins mit denen ich
> das direkt machen könnte (jedoch mit einer Maximalspannung von 3,3
> Volt).

Der PI hat so 20 GPIO direkt zu benutzung, reicht also aus.

Dazu dann was hier von:

http://www.mikrocontroller.net/articles/Pegelwandler

oder fetgig sowas hier

http://www.exp-tech.de/Shields/4-channel-I2C-safe-Bi-directional-Logic-Level-Converter---BSS138.html

Rest ist Software...

von Frank K. (fchk)


Lesenswert?

Martin G. schrieb:
> Karl Heinz Buchegger schrieb:
>> Jetzt mal Butter bei die Fische.
>>
>> Wer generiert die Druckdaten? Und warum sollen die auf den Pi?
>> Centronics ist heutzutage ja schon reichlich exotisch.
>
> Also die Druckdaten (übrigens reiner Text) werden von einem DOS
> Industrie PC generiert. Die Daten sollen auf den PI konvertiert werden.
> Um Sie anschließend im Netz verfügbar zu machen.
> Natürlich könnte das alles auch der DOS PC machen, jedoch darf dieser
> nicht ans Netz gehängt werden (bez. der Sicherheit). Also ist die
> unidirektionale parallele Verbindung eine Ideale Schnittstelle dafür.

http://www.wut.de/e-28000-ww-dade-000.php?pf=80

Das kommt Deinen Arbytegeber billiger als Deine Arbeitszeit, die Du für 
die Hardwarefrickelei aufwendest.

fchk

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
Noch kein Account? Hier anmelden.