Raspberry Pi


48) Připojení jednojehličkové tiskárny BT-100 k Raspberry Pi

Při vyklízení půdy z bývalého Svazarmu, jsem objevil jednu velice starou jednojehličkovou  tiskárnu. 
Říkalo se jí "Splašený hřebík" -  její oficiální označení je BT-100.

Protože má velice jednoduché ovládání, zkusil jsem jí připojit k RasPi.

Nakonec se mi podařilo tiskárnu rozchodit, ale vzhledem k rychlosti, hlučnosti a kvalitě tisku je v dnešní době nepoužitelná.
Takže tento návod berte jen jako zajímavost, co všechno je možné přes RasPi ovládat. 


1) Popis tiskárny

Detailní popis tiskárny naleznete tady: http://www.root.cz/clanky/periferni-zarizeni-osmibitovych-pocitacu-vyrabena-v-cssr/#k05

Základem jsou dva obyčejné stejnosměrné motory.
Jeden se stará o pohyb vozíku s tiskovou hlavou. Druhý motor posouvá papír.
Pohyb obou motorů je přes drážkovaná kola snímán optočidly. 
Při každém pohybu motoru se z těchto čidel do počítače odesílají impulzy.

Další optočidlo se nachází na jednom z okrajů dráhy vozíku. Když k němu vozík dojede, paprsek se přeruší a počítač dostane signál, že se tisková hlava nachází ve výchozí pozici.

Tisk jednotlivých bodů se provádí jehličkou, která je ovládaná elektromagnetem. Tiskárna nemá žádnou barvící pásku, jak bylo obvyklé u později vyráběných jehličkových tiskáren. K tomu, aby dokázala jehlička zanechat na papíře černou tečku, muselo se s ní klepat přes kopírák, nebo přes speciální samokopírovací papír.

Schéma vnitřního zapojení je zde: http://falconsoft.czechian.net/bt100/images/SchemaBT-100.gif 

 


2) Interface 

Tiskárna odesílá do počítače signály s TTL napěťovými úrovněmi (5V). Přivedení těchto napětí přímo do RasPi by bylo zničující. Je tedy třeba tato napětí snížit. K tomu jsem použil obyčejné děliče napětí složené z odporů 1k a 1k8. Tím by se mělo výstupní napětí z tiskárny snížit na maximálně 3,3V. Na hodnotách odporů zas až tolik nezáleží. Dělící poměr nesmí být větší, než 2:3.
Fungovalo to, i když jsem měl oba odpory stejné - to byl poměr 1:2.

Ovládání motorů a jehličky se provádí přivedením "0" na ovládací vstup. Pro jistotu jsem ke spínání použil obyčejné NPN tranzistory (2N5551).

Trochu problém jsem měl s napájením. Tiskárna potřebuje docela silný zdroj 22V. Ale i ten jsem nakonec sehnal.

Vytvořil jsem si tedy takovýto "interfejs" mezi tiskárnu a RasPi:


3) Software

Program jsem zkusil napsat v Pythonu. Jak se ale ukázalo nejen tady, ale i v minulých pokusech, tento jazyk není vhodný na rychlé testování GPIO vstupů. 

Komentovaný program s ukázkovým příkladem použití je tady: bt100.py
K činnosti potřebuje ještě grafickou definici fontu: font2.txt (ten jsem si půjčil z článků o ovládání grafických displejů)
a ukázkový černobílý obrázek: obr480x400.bmp

Program umí tisknout obrázek, který je uložen v souboru - v černobílém rastrovém obrázku s šířkou 480 bodů (výška je libovolná).
Druhá možnost je tisk textu v textovém režimu.

Do programu by bylo možné přidat ještě nějakou "inteligenci", která by trochu urychlila tisk.
Například rychlé odřádkování v případě, že se na mikrořádce nenachází žádné body.
Také by bylo možné omezit posun vozíku jen na takovou vzdálenost, aby se po vytištění nejvzdálenějšího bodu od začátku dráhy vozík okamžitě vrátil - teď při tisku obrázku jezdí vozík přes celou dráhu (přes celých 480 mikrosloupců). 

 


4) Výsledek

Neočekával jsem od tiskárny žádné zázraky. Rychlost tisku ale byla opravdu velice malá.
Třeba soubor s tímto obrázkem o velikosti 480x400 bodů se tisknul asi 40 minut (to znamená jeden mikrořádek asi za 6 sekund):


 

Fotografie výsledného dokumentu:

Rozlišení vypadá takto:


Šachovnice v levém horním rohu je složená ze samostatných bodů.
Ostatní šachovnice se skládají ze čtverců 2x2, 3x3 a 4x4 body. 

 

Ani kvalita nebyla dobrá. Na výsledné fotografii vytisknutého obrázku je vidět, že pravý okraj není rovný. Je to způsobeno tím, že ovládací program občas nesprávně vyhodnotil přerušení světelného paprsku u optočidla, které sleduje posun vozíku.

Čím dále se vozík nachází od své nulové polohy (od levého okraje), tím těch chyb přibývá.
Asi by bylo lepší napsat ovladač v nějakém rychlejším jazyce (například "C"), který by dokázal spolehlivěji zjišťovat přerušování paprsku u čidla pohybu vozíku.


ukázka chybovosti na okraji papíru


 


5) Ukázkové video

Na videu je vidět vnitřek tiskárny s drážkovanými koly.
Pravé kolo se stará o posun hlavičky, levé je pro posun papíru.
Pohybující-se hlavička se chvílemi objevuje v horní části mezi koly.
Optický "doraz" vozíku je vpravo nahoře.

Pokud máte zapnutý zvuk, uslyšíte i typické bzučení jehly při tisku. 
To bzučení je ve skutečnosti o hodně hlasitější. Na záznamu ho foťák automaticky tlumil.
Při dojezdu hlavy na začátek dráhy je slyšet i drhnutí - to způsobují volné vodiče od tiskové hlavy, které se na kraji dráhy ohýbají a dotýkají se rotujícího drážkovaného kola. 

Také si můžete všimnout setrvačnosti kola při posunu papíru. Čidlo posunu papíru je nastaveno na 4 hlubší výřezy. Když některým z těchto čtyř výřezů prosvitne paprsek, program zastaví motor.
Jak je ale vidět, od okamžiku vyslání signálu pro zastavení motoru do okamžiku zastavení kola uběhne ještě tak dlouhá doba, že se kolo stihne pootočit ještě asi o 30°. Naštěstí jsou ty setrvačnosti pořád stejné, takže se papír posouvá pokaždé o stejnou vzdálenost.

 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 27.12.2013