mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten für Drucker abfangen


Autor: Elias B. (bouni)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi @ all,

Ich hab vor mit einer kleinen Schaltung einen Drucker zu simulieren.

Die Schaltung soll einem Messstem das die Druckerdaten zu einem Uralten 
HP Thinkjet 2225C sendet (Parallel) die Daten ab nehmen und seriell an 
einen PC senden, der wiederum der Schaltung ein ACK Signal sendet 
nachdem er die Daten (8Bit) in ein File geschrieben hat. der µC in der 
schaltung soll dann die ACK BUSY und STROBE Leitungen der Parelellen 
Schnitstelle entsprechend schalten.

Meine Frage ist nun ob mein Schema grundsätzlich richtig ist.

Was für einen µC empfehlt ihr mir, was für einen Pegelwandler etc.

Vielen Dank im Voraus.

Elias

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Schieberegister brauchst Du nicht unbedingt. Du kannst doch die 
Daten parallel über einen Port in den MC einlesen und seriell wieder 
herausschieben.

MfG paul

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Die Schaltung soll einem Messstem das die Druckerdaten zu einem Uralten
>HP Thinkjet 2225C sendet (Parallel) die Daten ab nehmen und seriell an

hatten wird das thema nicht gerade?

>einen PC senden, der wiederum der Schaltung ein ACK Signal sendet
>nachdem er die Daten (8Bit) in ein File geschrieben hat. der µC in der
>schaltung soll dann die ACK BUSY und STROBE Leitungen der Parelellen
>Schnitstelle entsprechend schalten.

Deinen PC nach JEDEM Zeichen ein ACK senden zu lassen ist Unsinn, das 
wird langsam wie Sau. RS232 in "echt" nimmt man heute nicht mehr, eher 
einen virtuellen COM-Port über USB. Dann kannst du sogar 3 Mbaud fahren.

>Meine Frage ist nun ob mein Schema grundsätzlich richtig ist.

Fast. Das Schieberegister ist völlig deplatziert. Ein kleiner uC (AVR 
tiny2313 oder so) reich völlig. der muss nur ein Byte parallel einlesen, 
in seinen UART schreiben und ACK zum Drucker senden. Der PC empfängt 
alles und schriebt es in eine Datei. Dazu braucht man kein grosse 
Handshake, USB ist schnell genug.

>Was für einen µC empfehlt ihr mir, was für einen Pegelwandler etc.

AVR, tiny2313 oder mega8. FTDI 232 RL

MfG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erst mal für die Antworten,

Ja Ich hab schon mal n Thread gestartet aber da het keiner mehr 
zurückgeschrieben :)

Nicht desto Trotz:

"virtuellen COM-Port über USB" An was dachtest du da, an einen COM auf 
USB Adapter ??

Kann ich den Mit der PC Software bzw. Hyper Terminal ansprechen wie 
einen normalen Com Port ??

Hab mal den Editierten entwurf beigefügt.

http://bouni.owee.de/stuff/Schema2.jpg

Gruß und Danke für Alles :)


Elias

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oops :)

Habs grad geblickt mit dem Pegelwandler.

Also keinen Com - USB Adapter sondern den IC "FTDI 232 RL" und da dran 
direkt ein USB Kabel und auf dem PC den Virtuell USB Treiber :)


http://bouni.owee.de/stuff/Schema3.jpg

Gruß Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Hab mal den Editierten entwurf beigefügt.

Es fehlt noch dein STROBE vom Druckerport. Und der MAX232 ist ein 
FTDI232 RL ;-)

MfG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:)

Ist er im Schema3 Schon, aber hast recht der Strobe fehlt :)

Mfg Elias

Autor: Elias B. (bouni)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich komm mit dem Datenblatt nicht ganz zu streich,

PIN 20 VCC   -> Versorgungs spannung +5V vom USB !?
PIN 21 GND   -> Masse für die Versorgungs spannung vom USB

PIN 4 VCCIO  ->   ist das die spannung mit der die Signale an den UART 
des ATTIny gehen ??
PIN 7 GND    -> GND vom VCCIO

PIN 1 RXD -> zum UART
PIN 5 TXD -> zum UART

Brauch ich sonst noch was ??



Gruß Bouni

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>PIN 20 VCC   -> Versorgungs spannung +5V vom USB !?

Ja, siehe Figure 18 Seite 29

>PIN 21 GND   -> Masse für die Versorgungs spannung vom USB

>PIN 4 VCCIO  ->   ist das die spannung mit der die Signale an den UART
>des ATTIny gehen ??

Ja.

>PIN 1 RXD -> zum UART
>PIN 5 TXD -> zum UART

Nö.

MFG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Nö.

:)

Sondern ??


Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Nö.

>:)

>Sondern ??

Arrrrr! Falsch zitiert. Eher so.

>Brauch ich sonst noch was ??

Nö.

MfG
Falk

Autor: Elias B. (bouni)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also wars schon richtig ??

Hab mal die Bus Powerd Zeichnung angehängt.

Was ist dieser Ferite Bead ?? ein ringkern zm entstören nehm ich an.

Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Also wars schon richtig ??

Ja.

MfG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,

Die Kondensatoren in dem letzten Bild, sind das normale Elkos ??
Gibt es da ne Faustregel bei der Auswahl der Kondensatoren welche man 
wofür nimmt?
Also Keramik, Tantal, Elko, Folien usw. ??


nun zum Attiny:

Ich hab gelesen das extern getaktet werden sollte wenn eine UART 
verbindung gemacht werden soll.

Hängt die spätere BAUD Rate vom Quarz Takt ab ??

Was für Kondensatoren nehm ich für den Quarz ??


Mfg Bouni

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Elias B. (bouni)

>Die Kondensatoren in dem letzten Bild, sind das normale Elkos ??

Nein. Die 100nF sind Keramik, der 4,7u kann ein Elko oder Tantal sein.

>Gibt es da ne Faustregel bei der Auswahl der Kondensatoren welche man
>wofür nimmt?
>Also Keramik, Tantal, Elko, Folien usw. ??

Ja. Die kleinen unter 1uF Keramik, darüber Tantal. Grösser als 200uF 
gibt es meist nur Elkos.

>Ich hab gelesen das extern getaktet werden sollte wenn eine UART
>verbindung gemacht werden soll.

Im Prinzip ja.

>Hängt die spätere BAUD Rate vom Quarz Takt ab ??

Und ob!

>Was für Kondensatoren nehm ich für den Quarz ??

Gar keine. Der FTDI kann einen 6 MHz Takt ausgeben, damit kannst du 
deinen AVR takten. Du musst ja keine Standardbaudraten nutzen. Bei 6 MHz 
erreichst du bis zu 750kBaud.

MfG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal einen Schaltplan in Target gemacht,

http://bouni.owee.de/stuff/Schema5.jpg

Ist das so ok ??

Die beschaltung vor dem FTDI hab ich aus dem Datenblatt und mal so 
interpretiert.

Was soll dieser "Ferrite Bead sein" ??

Welchen von den CBUS ich nehm für die 6Mhz ist egal oder ??

Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>http://bouni.owee.de/stuff/Schema5.jpg

>Ist das so ok ??

Fast.Schaltpläne sollten als PNG gespeichert werden. Warum, siehe 
Bildformate, das aber nur nebenbei.

>Die beschaltung vor dem FTDI hab ich aus dem Datenblatt und mal so
>interpretiert.

Du musst aber RXD und TXD kreuzen. RXD vom FTDI geht an TXD vom AVR.
Man sollte noch dem AVR 100nF spendieren.

>Was soll dieser "Ferrite Bead sein" ??

Eine kleine Ferritperle, quasi eine Induktivität, die aber besonders 
verlustbehalftet ist, um die HF-Energie zu schlucken.

>Welchen von den CBUS ich nehm für die 6Mhz ist egal oder ??

AFAIK ja.

Mfg
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Danke Danke,

An dieser Stelle meinen besten Dank FALK,

ohne dich wär das Projekt schon gestorben ^^

Wo kommt der 100nF ran ?? VCC ??

Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Elias B. (bouni)

>Wo kommt der 100nF ran ?? VCC ??

Ja, Vcc/GND.

MFg
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergiss den ISP-Stecker für den AVR nicht.

MfG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi @ all,


Ist das so eine Ferritperle ??

http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=B512;...

Reichelt: 06H-75

Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Ist das so eine Ferritperle ??
>http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=B512;...

Im Prinzip ja, aber die ist hier viel zu gross. Eher sowas.

http://www.reichelt.de/?;ACTION=3;ARTICLE=9006;
http://www.reichelt.de/?;ACTION=3;ARTICLE=18195;

MfG
Falk

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder eine "echte" Ferrit-Perle, heissen bei Reichelt "Dämpfungsperlen", 
zu finden unter Passiv->Spulen->Ringkerne->Dämpfungsperlen.

Sind aber recht teuer dafür, dass es nur ein eck Ferrit mit nem Loch 
drinnen ist...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre es nicht einfacher wenn der PC die Daten gleich parallel 
entgegennimmt? ECP/EPP-Druckerports gibt es ja schon ewig.

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür brauchste doch nich mal nen µC. FT2232 im Bitbang-Mode asynchron 
reicht doch für die Aufgabe schon. Daten einlesen/ausgeben per D2XX von 
FTDI...

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Muss ich den dem Rechner nicht nach allen 8Bit die ich parallel bekomme
ein Ack Signal in definierter länge geben ??

Ich orientier mich grad an dem Bild:


http://www.goblack.de/desy/digitalt/par-schnittste...


Mfg Bouni

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und, kannste doch machen. Der FT2232 hat 2 Ports. Einen kannste als 
Datenport verwenden, den anderen für deine Steuersignale...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Rupplyn (Gast)

>Und, kannste doch machen. Der FT2232 hat 2 Ports. Einen kannste als
>Datenport verwenden, den anderen für deine Steuersignale...

Im Prinzip ja, ABER

- mit AVR "vor Ort" wird das Ganze WESENLTICH schneller
- man braucht keinerlei spezielle Software, einfach nur die Daten mit 
einem beliebigen Terminalprogramm vom virtuellen COM-Port mitschneiden 
und fertig.

Der Tiny kostet 1,30 Euro, das ist es allemal wert.

MfG
Falk

Autor: Bouni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi:)

Muss ich denn nun nach jedem Byte auf dem Datenport ein Ack senden oder 
reicht es wenn ich den Ack Ausgang nach dem ersten Strobe auf dauer HIGH 
setze ??

Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Bouni (Gast)

>Muss ich denn nun nach jedem Byte auf dem Datenport ein Ack senden oder

Ja klar.

>reicht es wenn ich den Ack Ausgang nach dem ersten Strobe auf dauer HIGH
>setze ??

Nein.

Siehe

http://www.beyondlogic.org/spp/parallel.htm

MfG
Falk

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

setze statt ACK Busy, alle mir bekannten Geräte kommen damit klar und 
das Timing ist sicherer. Es gab 2 Versionen, wann ACK kommen durfte, die 
nicht 100% kompatibel sind.

Mit der Folge Daten vom "PC" mit Strobe einlesen, dann sofort Busy 
setzen.
Wenn man die nächsten Daten haben will, Busy zurück und auf Strobe 
warten.

Gruß aus Berlin
Michael

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Michael U. (amiga)

>setze statt ACK Busy, alle mir bekannten Geräte kommen damit klar und
>das Timing ist sicherer. Es gab 2 Versionen, wann ACK kommen durfte, die
>nicht 100% kompatibel sind.

Hmm,ist wohl auch so im Link beschrieben. Aber wer ist denn so doof 
solchem Murks zusammenzubasteln? Da ist das EEP Handshake tausendmal 
solider!

Aber der AVR @12MHz wirds schon richten ;-)

MFG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten erstmal,

Ich versteh das jetzt so:

1. Ich bekomme 8Bit auf dem Parellel Port und direkt danach das strobe 
Signal vom PC.

2. Ich setze sofort Busy auf High.

3. Ich verarbeite die 8 Bit.

4. Ich setzte busy wieder auf Low und warte auf die nächsten 8Bit.

Hab ich das jetzt so richtig verstanden ?

Mfg aus dem sonnigen Baden

Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Hab ich das jetzt so richtig verstanden ?

Fast.

Auf Strobe=1 warten
Busy auf 1 setzen
Daten lesen und an den UART ausgeben
Busy auf 0 setzen

MfG
Falk


MFG
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,

jetzt blick sogar ich es :)

Ich denk das ich mir nachher noch das Material bestelle und euch 
demnächst wieder mit Fragen löchere :)


Mfg Elias

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sicherheitshalber den ACK auch noch bedienen.
Kostet dir nichts und 'sicher ist sicher'.

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok :)

Ich hoff ich pack das.

Wie sieht es denn mit den Zeiten aus,
in diesem Bild:
http://www.goblack.de/desy/digitalt/par-schnittste...

sind min und max Zeiten angegeben, wie kritisch ist die genaue 
einhaltung ??


Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>sind min und max Zeiten angegeben, wie kritisch ist die genaue
>einhaltung ??

Wenn dein AVR mit 12 MHz läuft ist ds alles kein Thema. Der macht dann 
12 Takte/Befehle pro us.

Mfg
Falk

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok

Ich seh das ganze schon vor meinem geistigen Auge laufen ^^

Mfg Elias

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab gerade in meinen alten Sourcen geschaut: die kommenden Daten habe 
ich im IRQ INT1 geholt, dort hing Strobe vom Rechner dran.

Die vom Rechner "gedruckten" Daten wurden RAW auf eine MC-Card 
geschrieben und später vom AVR auf einen echten Drucker geschickt.

Busy wird in main zurückgesetzt, wenn es weitergehen durfte, alle 256 
Byte wurde auf die MC geschrieben, nach 2 solcher Blöcke der nächste 
Sektor adressiert.

Clock ist 8MHz.

Die IRQ bedient ACK:

;*********************************************************************
;  STB-IRQ
;  Holt Byte vom Par-Port nach PAR_BYTE
;*********************************************************************
irq_par_read:
        push    TEMP_A                      ; Temp retten
        in      TEMP_A,SREG                 ; Status-Register retten
        push    TEMP_A
        in      PAR_BYTE,PAR_D_PIN          ; Daten holen
        sbi     PAR_C_PORT,PAR_BUSY         ; auf nicht bereit setzen

irq_par_read_0:
        sbis    PAR_C_PIN,PAR_STB           ; auf Ende von Strobe warten
        rjmp    irq_par_read_0
        cbi     PAR_C_PORT,PAR_ACK          ; ACK senden
        sbr     FLAGS,(1<<F_PAR_BYTE)
        nop
        nop
        nop
        sbi     PAR_C_PORT,PAR_ACK

        pop     TEMP_A
        out     SREG,TEMP_A
        pop     TEMP_A

        reti

Gruß aus Berlin
Michael

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für den Code,

Ich wollte eigentlich in C programmieren, aber ist schon mal nicht 
schlecht um das Prinzip zu verstehen!!!

Mfg Elias

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Elias B. (bouni)

>Ich wollte eigentlich in C programmieren,

Mach das einfach, das Programm ist so einfach, das kann auch der 
C-Compiler nicht versauen.

> aber ist schon mal nicht
>schlecht um das Prinzip zu verstehen!!!

Aber Strobe würde ich nicht per ISR auswerten, sondern per Polling. Ist 
schneller und hier vollkommen auseichend.

MFg
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist denn der Stand bei dem Projekt?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zur Zeit macht eine Firma für ihre Druck-Konverter viel Reklame:
http://www.ipcas.de/produkte/hardware.html
da kann man anscheinend z.B. auch von Centronics auf USB-Stick drucken

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Mein Thread zum Thema Laser Layout ist ein Teil Hiervon, damit will ich 
das Layout machen.

Die Teile Hierfür hab ich sch seit ein paar Tagen/ Wochen :)

Läuft also und ist nicht Tot!!!!


Mfg Bouni

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christoph Kessler (Firma db1uq) (christoph_kessler)

>Zur Zeit macht eine Firma für ihre Druck-Konverter viel Reklame:
>http://www.ipcas.de/produkte/hardware.html
>da kann man anscheinend z.B. auch von Centronics auf USB-Stick drucken

Sieht ja recht schick aus. Dürfte aber nicht für paar Mark Fuffzig über 
den Ladentisch gehen. Bei dem Leistungsumfang und Industriequalität 
würde ich mal schätzen 300 Euro++
Ausserdem, kaufen kann doch jeder ;-)

MfG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.