Datum:
Hallo Leute, ich habe bei Pollin das o.g. Teil erstanden, eigentlich weil ich nur das Wickelmotörchen nutzen wollte. Jetzt sehe ich aber, dass dort eine Reihe Zahlenrädchen drin sind, die anscheinend von dem gemeinsamen Motor mit angetrieben und vermutlich durch kleine Elektromagneten angekoppelt werden. Also kein Thermodruck, sondern richtig mechanisch. Vielleicht werde ich einmal spaßeshalber versuchen, das Ding anzusteuern. Hat jemand davon eine Ahnung und kann mir ein paar Tips geben? Bei Pollin gibts ein Bild unter Bestellnummer 721 254.
Datum:
Angehängte Dateien:Ja, das ist ein normaler elektromechanischer Rechenmaschinendrucker. Für jede Spalte, die er drucken kann, hat er ein Typenrad mit allen Ziffern und einigen Symbolen darauf, das zum Drucken in die richtige Position kommen muß. Dazu sitzen die Typenräder alle lose auf einer gemeinsamen Achse, die sich knapp eine Umdrehung weit dreht, bevor das Papier angedrückt wird. Normalerweise kommt dabei das "Leerzeichen" nach vorne, es wird also nichts gedruckt, und der ganze Zauber dreht sich wieder zurück, während das Papier eine Zeile Vorschub bekommt. Zu jedem Typenrad gehört aber auch ein Elektromagnet, der einen kleinen Haken betätigt, der das Rad anhalten kann. Je nachdem, wann der Magnet anzieht, wird das Typenrad in einer anderen Position aufgehalten und bringt dann die entsprechende Ziffer zu Papier. Bei diesem Modell ist das Farbband durch eine farbgetränkte Schaumstoffrolle ersetzt, die die Typenräder einfärbt. Der Nachteil dabei ist, daß man nur einfarbig drucken kann (normalerweise drucken Rechenmaschinen negative Zahlen rot statt schwarz); der Vorteil ist wahrscheinlich, daß der Farbträger mit weniger mechanischem Geschick und geringerem Sauereirisiko auszuwechseln geht. Unter einer Abdeckung an der Seite sind Schleifkontakte und Schalter, die den steuernden Prozessor über den Zustand der Mechanik informieren, damit er im richtigen Moment die Magnete ansteuern kann. Der Motor zieht bei 5V knapp 250mA, aber das ist mit einem trägen Multimeter gemessen, man sollte also kurzzeitig mit dem doppelten rechnen, denn die Last schwankt stark, wie man merkt, wenn man mal einen Zyklus von Hand durchdreht (eines der Zahnräder hat einen Pfeil für die richtige Drehrichtung aufgedruckt). Mit Motorantrieb macht das Ding ungefähr zwei Zyklen (Zeilen) pro Sekunde. Auf dem Bild (wenn das mit dem Dateianhang klappt) ist der darstellbare "Zeichensatz" zu sehen (die Nullen in Zeile "3" sind Absicht, zum Spaltenzählen).
Datum:
Angehängte Dateien:Hi Leute, Ich hab' bei dem Preis auch nicht widerstehen können und so'n Druckwerk geordert. ;-) Im Anhang mal ein paar Bildchen zur Pinbelegung und dem Timing der Sensorik (Signale R,S,T wie im Schaltplansymbol). Die "WH"-Pins sind die Typenrad-(Wheel-)Magnete. Das mit dem Index (Pin "S") haut noch nicht ganz hin: Wenn ich von Hand drehe, wird der betätigt. Läuft der Motor, dann ist er immer offen. Allerdings werden die Magnete noch nicht angesteuert - vielleicht macht das dann noch einen Unterschied.
Datum:
Hey, genial. Ich hatte auch vor, solche Bilder zu machen, aber bei mir sind manche Projekte ziemlich langfristiger Natur. Ich habe das Teil seitdem leider noch nicht wieder angefasst.
Datum:
...bei mir sieht's zeitlich auch etwas knapp aus. Vielleicht hat ja "Nosnibor" noch ein paar Tipps zur Ansteuerung?
Datum:
Ich bilde mir ein, daß die Ansteuerung kein Problem sein sollte, kann das aber (noch) nicht durch praktische Erfahrungen belegen (muß erst noch 'ne Handvoll ULN2803 und Zubehör bestellen). Dem Anschluß S habe ich mal eben ein Lämpchen verpaßt, und das leuchtet bei meinem Exemplar bei jedem Zyklus einmal auf, auch bei Motorantrieb. Wäre auch unpraktisch, wenn nicht: schließlich soll der Prozessor daran erkennen, wann eine Zeile fertig gedruckt ist, damit er den Motor so ausschaltet, daß die Mechanik in Ruhelage ist und nicht noch das Papier festklemmt oder so. T würde ich als Trigger nehmen, um die Magnete einzuschalten, R zum Ausschalten. Vielleicht muß man sie auch eine bestimmte Zeit lang einschalten, das käme auf einen Versuch an. Interessant ist jedenfalls, daß Kontaktprellen keine Probleme bereiten kann: der Prozessor wartet ja immer nur auf genau ein Sensorsignal gleichzeitig und immer nur darauf, daß der Kontakt zum ersten Mal schließt. Die Timing-Diagramme finde ich genial: die beantworten einige Fragen, die beim Schreiben der Steuersoftware plötzlich auftauchen werden, nachdem zuerst alles klar schien.
Datum:
Angehängte Dateien:So, bei mir funktionierts. Schaltplan kann ich mangels entsprechender Software nicht liefern, aber das ist sowieso ein improvisiertes Gewurstel. Für die Ansteuerung der Magnete bieten sich drei ULN2003A an, das sind dann 18 Treiber für die Magnete + 3 parallel für den Motor. Da ich hier ein NET-IO herumliegen hatte, habe ich das als Prozessorplattform genommen (also AVR Mega32 bei 16MHz), mit der Folge, daß nicht mehr so viele Portpins frei waren, also 2x'595 als 16-bit-Port dazu. Die Einzelheiten zur Pinbelegung stehen im Quelltext. Ebenfalls im Quelltext stehen zwei Beispielfunktionen: demo_diagonal() druckt den ganzen "Zeichensatz", aber spaltenweise versetzt. demo_quadratzahlen() druckt eine Tabelle der Quadrate vierstelliger Zahlen, schließlich ist es ein *Rechenmaschinen*druckwerk, da muß man auch mal etwas rechnen. Ich habe es aber leider nicht durchgehalten, alles in Dezimalarithmetik zu machen. Und natürlich wäre zum Erstellen von Tabellen die Differenzenmethode angemessen (Babbage läßt grüßen)... Zu tun bleibt noch eine Menge, bevor das (außer als Selbstzweck) zu gebrauchen ist: - auf Interruptnutzung umstellen, damit die CPU noch etwas anderes nebenher tun kann (z.B. Daten empfangen). - eine sinnvolle Datenquelle finden (also z.B. UART oder SPI, wenn das Ding nur Drucker spielen soll. Oder Tastatur&Display, wenn eine Rechenmaschine gewünscht ist) - einen kleineren Prozessor auswählen (soviel Speicher ist ja nicht nötig) und entweder die Schieberegister oder das große Gehäuse einsparen - Quelltext besser lesbar machen. Ich muß noch viel lernen, was die Gepflogenheiten und standard-libs bei C für AVR angeht.
Datum:
Angehängte Dateien:@Nosnibor: Danke für die Vorlage - hoffentlich komme ich bald mal dazu, das auszuprobieren. A propos kleinerer Prozessor: Ich habe im Anhang einfach mal ein paar Bauteile auf ein leeres Blatt geworfen und wollte - bevor ich die Strippen ziehe - mal in die Runde der Interessierten fragen: Wäre die Bauteilauswahl für euch ok (ich denke ihr wollt dann ggf. auch eine Platine? ;-) ) Hättet ihr was gegen SMD? Als Eingang würde ich RS232 (alternativ auch direkt die UART-Pins) und SPI auf Stecker führen. Eine Stromversorgung mit einem kleinen Switcher für 9-24VDC sähe ich auch noch vor. Kommentare?
Datum:
2xULN2803 gibt nur 16 Ausgänge. Da fehlt dann mindestens noch etwas für den Motor --und für die zwei Typenräder mit den Symbolen, wenn man die auch nutzen will. 3xULN2003 trifft es da meiner Meinung nach besser. Ich muß aber zugeben, daß ich die Ansteuerung des Motors nicht nachgerechnet habe. Das Fehlen von Rauchzeichen bisher ist ja noch kein Beweis für korrektes Schaltungsdesign. Beim Schieberegister stört mich noch, daß ich so viele Pins zur Ansteuerung benutze. Entweder /OE oder RCK sollte man einsparen können. Allerdings weiß ich noch nicht, wie man dann sicherstellt, daß die Ausgänge alle tot bleiben, solange noch keine Software im AVR läuft. Bei den Sensoren würde ich den Common-Anschluß auf einen Interrupteingang legen (anstatt direkt auf Masse, wie ich das zuerst gestöpselt habe). Dann kann die Software sich aussuchen, ob sie den Common auf Masse legt und die Sensoren per Polling abfragen will, oder den Sensoranschluß, auf den sie wartet, auf Masse legt und sich einen Interrupt geben läßt, wenn der Kontakt schließt. Bei der Spannungsversorgung wäre es wichtig zu wissen, ob man AVR und die ganzen induktiven Lasten (Motor&Magnete) an dieselbe 5V-Quelle hängen darf oder wie weit man das entkoppeln muß. Möglicherweise tun es für die Mechanik auch ungeregelte 6V, mit denen man dann nebenbei noch einen Regler für die Versorgung der Logik speist. AVR und Schieberegister sollten ja auch mit weniger als 5V auskommen können, oder?
Datum:
Stefan Wimmer schrieb: > Ich habe im Anhang einfach mal ein paar Bauteile auf ein leeres Blatt > geworfen und wollte - bevor ich die Strippen ziehe - mal in die Runde > der Interessierten fragen: Wäre die Bauteilauswahl für euch ok (ich > denke ihr wollt dann ggf. auch eine Platine? ;-) ) Hättet ihr was gegen > SMD? Wenn Du TI TPIC6A595 oder 596 nimmst, hast Du Schieberegister und Leistungstreiber in einem. Mit Ausnahme des anderen Pinouts und der höheren Ausgangsleistung (bis zu 50V und bis zu 350mA pro Ausgang) kannst Du die Teile wie 74HC595 benutzen. Die Schieberegister würde ich ans SPI anschließen, das macht das Raustakten schneller und einfacher. Damit ISP-Programmierung auch noch geht, würde ich die Leitungen zum Schieberegister über ein 74HC125 führen, bei dem die Gate-Eingänge auf /RESET gelegt sind, so daß der ISP freie Fahrt hat, wenn er den RESET herunterzieht. /SRCLR der TPICs auch an /RESET, das sorgt dafür, dass nach einem Reset alle Ausgänge aus sind. Als Prozessor hätte ich vielleicht einen AVR Atmega32U4 genommen. Da wäre dann vielleicht noch ein USB Printing Support mit drin ... obwohl bei DEM Druckwerk vielleicht nicht so interessant wie bei Pollin 721 345. Zumindest würde ich den Mega8 nicht mehr einsetzen, sondern nur noch den Nachfolger Mega88PA, der ist pinkompatibel und hat eine Reihe an Verbesserungen. Da kann man dann auch den UART als zweiten SPI betreiben, wenn man ein SPI-Interface will. fchk
Datum:
Angehängte Dateien:So, ich hab meine Gedanken in der Mittagspause eben mal schnell zusammengepinselt. @Nosnibor: >Allerdings weiß ich noch nicht, wie man dann sicherstellt, daß die >Ausgänge alle tot bleiben, solange noch keine Software im AVR läuft. Ich habe /G von den TPICs auf einen Portpin gepackt und mit einem Pullup versehen. Nach einem Reset sind ja alle Portpins auf Input geschaltet, d.h. der Pullup zieht die Leitung hoch, und die Ausgangstreiber bleiben aus. Wenn der AVR dann läuft, werden die Portpins entsprechend programmiert, und wenn alles erledigt ist, zieht man /G auf Low, und dann gehts los. /RCLR ist auf /RESET des Controllers gelegt, d.h. nach einem Hardware-Reset sind die Register leer. Ich würde die aber in Software nochmal löschen wollen; das hat dann beim Debuggen Vorteile. fchk
Datum:
Nosnibor schrieb: > 2xULN2803 gibt nur 16 Ausgänge Jepp, ich war ja auch noch nicht fertig... ;-) > Bei der Spannungsversorgung wäre es wichtig zu wissen, ob man AVR und die ganzen induktiven Lasten (Motor&Magnete) an dieselbe 5V-Quelle hängen darf oder wie weit man das entkoppeln muß. Ich würde sie über einen kleinen LDO entkoppeln. Der AVR etc. "frisst" ja nicht viel, so dass ein LP2950 o.ä. reichen würde. Das bringt dann genug "ripple rejection" (umd die 80dB bis 1kHz). Die Spannung für das Druckwerk würde ich so auf 5,8V einstellen, das ist dann quasi die Kompensation zur Vce des Treibers. Frank K. schrieb: > Wenn Du TI TPIC6A595 oder 596 nimmst.. Ich kenne die, wollte mit Hinsicht auf Erhältlichkeit und der "großen" Stückzahl bei "Standardkram" bleiben > Die Schieberegister würde ich ans SPI anschließen ... ...würde ich nicht, denn ich wollte SPI (falls ich doch einen der herumliegenden M8-er nehmen sollte) als alternativen Eingang vorsehen. Den '125er kannst Du übrigens durch einen 1K Längswiderstand in der MISO-Leitung ersetzen, solange die Schieberegister beim Programmieren via High am G-Eingang ruhiggestellt werden. Das bisschen Bitbang-Schieben macht der AVR doch mit Links. > Zumindest würde ich den Mega8 nicht mehr einsetzen... Da die Neuen pinkompatibel sind, nehme ich immer noch das M8-Symbol aus der Library. Vor dem Ziehen der Stückliste würde der schon noch auf was moderneres umgelabelt. :-) Und von wegen "viele Pins" und "Mega32U4": Der Mega8 sollte doch reichen was Pinzahl und Speicher angeht. Er hat in dem Projektchen ja nichts weiter zu tun als auf Eingaben hin das Druckwerk zu betätigen. Vielleicht noch ein bisschen Handshake, damit die Buffer nicht überlaufen. USB wäre IMHO wirklich etwas über's Ziel hinaus... Danke für die Beiträge.
Datum:
Die Spannungsversorgung macht noch Schwierigkeiten. Wenn ich ein leichter kontrollierbares Testmuster als ausgerechnet die Quadratzahlentabelle drucke, fallen mir gelegentlich Druckfehler auf, die sich alle damit erklären lassen, daß ein Magnet nicht schnell genug anzieht: "-" statt ".", "." statt "9", "1" statt "0" etc.. Mit höherer Versorgungsspannung (6V) werden die Fehler nicht weniger (aber der Drucker läuft deutlich schneller). Bei reduzierter Versorgungsspannung (4V) sieht es schon besser aus, am besten aber, wenn der Motor mit 4V und die Magnete weiterhin mit 5V betrieben werden. Allerdings läuft der Motor bei 4V deutlich langsamer und hat ziemliche Mühe, das Papier anzudrücken. Da wäre eine Geschwindigkeitsregelung hilfreich: eine Schaltung, die dem Motor mehr Spannung gibt, wenn er mehr Strom zieht. Ein Cassettenrecorder braucht dafür zwei Transistoren und allerlei Passivkram; hier sollte das doch der Prozessor per PWM erledigen können, oder?
Datum:
Das Phänomen hatte ich auch. Bei mir hat es geholfen, die Magnete beim T-Puls einzuschalten, aber nicht beim R-Puls wieder auszuschalten, sondern einfach beim nächsten T-Puls umzuschalten. Bei mir sieht das dann so aus: static void prt_printline(void) { unsigned char mask[3]; unsigned char cpos,wpos; // Drucken prt_motor_on(); for (wpos=0;wpos<NUMOFWPOS;wpos++) { // Bitmaske erstellen mask[0]=mask[1]=mask[2]=0; for (cpos=0;cpos<NUMOFCOLS;cpos++) { if (line[cpos]==wpos) mask[mag_to_msk[cpos]]|=BIT(mag_to_bit[cpos]); } prt_waitfor(BIT_T,300); prt_set_mags(mask[0],mask[1],mask[2]); prt_waitfor(BIT_R,150); } prt_rel_mags(); prt_waitfor(BIT_S,1000); prt_motor_off(); // nach Gebrauch Zeilenpuffer löschen curcol=0; for(cpos=0;cpos<NUMOFCOLS;cpos++) line[cpos]=255; } fchk
Datum:
Danke, damit läuft es wesentlich zuverlässiger. Es war ja auch eigentlich eine völlig unbegründete Annahme, daß man beim R-Impuls schon abschalten soll, aber von alleine wäre ich davon wohl nicht abgerückt. Der Trend zu mehr Druckfehlern bei höherer Spannung ist immer noch erkennbar, aber jetzt bekomme ich fehlerfreie Ausdrucke, ohne den Motor abzuwürgen. Bei der Gelegenheit (Labornetzgerät) habe ich mal nach der Stromaufnahme gesehen: bei 5V zieht der Motor kurzzeitig über 1,2A (Strombegrenzungs-LED blitzt bei jeder Zeile kurz auf). Man kann die Strombegrenzung aber bis unter 400mA drehen, bevor der Drucker stehenbleibt.
Datum:
Hallo! hab mir auch grad so ein Druckelement bestellt... Haben sich mittlerweile noch neue Erkenntnisse ergeben? Der letzte Post ist ja doch schon ne ganze Weile her... Dann muss ich das Rad nicht komplett neu erfinden^^ lg termi
Datum:
Nichts neues von meiner Seite. Der gute Vorsatz, die Software bei Gelegenheit auf Interruptbetrieb umzustellen, ist zwar noch vorhanden, verstaubt aber in der Ecke (genau wie der Versuchsaufbau).
Datum:
Hallo, Ich hab mir auch mal so ein Teil bestellt. Heute habe ich mal bei Epson electronic wegen Datenblättern angefragt. Bin mal gespannt, ob was zurückkommt. Ich möchte probieren, das Druckelement unter Bascom anzusteuern. Gruß Marco
Datum:
M@rco schrieb: > Hallo, > > Ich hab mir auch mal so ein Teil bestellt. Heute habe ich mal bei Epson > electronic wegen Datenblättern angefragt. Bin mal gespannt, ob was > zurückkommt. > > Ich möchte probieren, das Druckelement unter Bascom anzusteuern. > > Gruß Marco Hallo Marco, ich habe auch so ein Teil hier liegen. Hast Du schon von Epson eine Antwort? Ich programmiere auch in Bascom. Wir könnten ja mal Code teilen. MfG Tom
Datum:
Hallo Tom, leider hat meine Anfrage bei Epson nichts gebracht. Ich wurde von einer Abteilung zur anderen verwiesen, aber keiner konnte (oder wollte) mir helfen. Ich denke ich werde in nächster Zeit einfach mal selbst ausprobieren. LG Marco