Grafická jednotka XY 4131, XY 4140, XY 4150

Laboratorní přístroje Praha

Obsah

Úvod

Pokud se Vám do ruky dostala grafická jednotka XY 41xx (nebo i jiný typ) a nevíte si rady jak jí zprovoznit na svém počítači, tak právě pro Vás je tato stránka určená. Najdete zde způsob propojení jednotky s PC, nebo Raspberry PI. Také zde najdete ovládací program napsaný v jazyce C, který Vám umožní kreslit vektorovou grafiku.

Jestliže umíte pájet a znáte základy jazyka C, tak pro Vás zřejmě nebude velký problém zprovoznit jednotku pro jiný počítač s jiným rozhraním. V těchto případech uvítám jakoukoliv zpětnou vazbu.

Grafická jednotka

Charakteristické vlastnosti grefické jednotky XY 41xx jsou: pohony os krokovými motorky, rozlišení 0,1 mm/krok, formát papíru A4 a rychlost kreslení čáry 100 mm/s.

Všechny úkony při kreslení a výpisu řídí vnitřní procesor mikropočítače dle programu. Způsob programování je založen na použití mnemotechnického kódu, doplněného o případné parametry. Je tedy pro uživatele "přátelským". Sada povelů dovoluje vynášení vektorů, bodů, kružnic a kruhových oblouků, vykreslení okénka, výpis řetězců znaků libovolné velikosti v libovolném směru a s libovolnám sklonem při respektování českých a slovenských diakritických znamének, volbou typu čáry, kopii obrazovky, změnu měřítka kresby a další užitečné funkce.

Původní dokumentace

Záznamová pera

Spolu s jednotkou byly dodávány 2 typy záznamových per. Kuličkové (propiska) a s plastickým hrotem (mikrofixa). Nevím, zda dosud tyto pera někdo vyrábí, nicméně je možné do původního obalu pera instalovat plastický hrot a náplň z nové mikrofixy.

Druhou možností je použití trubičkových per CENTROGRAF plněných tuší různých barev. Podrobnosti naleznete v původní technické dokumentaci v kapitole "Příslušenství a náhradní díly".

Známé problémy a jejich řešení

Řešil jsem problém s nefunkčním ovládáním pera, kdy elektromagnet nepokládal pero. Příčinou byl utržený drátek v konektoru propojujícím základní desku s mechanikou posuvů. Drátky jsou poměrně tenké a tak je snadné je utrhnout v místě letování. Pokud tedy řešíte podobný problém doporučuji začít kontrolou těchto vodičů.

Propojovací kabel

Zapojení konektorů plotru

Popis pinů: Signál: Poznámka:
1 PEN zvednutí, položení pera
2 STEP jeden krok motorku
3 X/Y volba osy - horizontální, nebo vertikální posun
4 ± volba směru pohybu - krok vpřed, vzad
5 READY signál od XY plotteru - připravený pro práci
6 GND Zem (signálová)

Propojení PC s plotrem přes paralelní port


            PC-printer port       XY4131        XY4140        XY4150
                4 ------------------ 1 ----------- 1 ----------- 1
                5 ------------------ 2 ----------- 2 ----------- 2
                3 ------------------ 3 ----------- 3 ----------- 3
                2 ------------------ 4 ----------- 4 ----------- 4
                18------------------ 6 ----------- 6 ----------- 6
        

Propojení Raspberry PI s plotrem přes GPIO

GPIO rozhraní Raspberry PI pracuje s napětím 3,3V, zatímco grafická jednotka s napětím 5V. Pokud byste tedy propojili Raspberry s jednotkou napřímo, tak byste Raspberry zničili. Propojení provedeme pomocí tranzistorového rozhraní zapojeného dle následujícího schematu.





Ovládací program

Společně s grafickou jednotkou byl dodávaný ovládací program napsaný v assembleru, který se zavedl do paměti počítače a umožňoval pomocí příkazů kresilt vektorovou grafiku a psát text. Na tehdejší dobu byl tento ovládací program velmi kvalitní co se poskytovaných funkcí týče.

Cílem tohoto projektu je rekonstrukce ovládacího programu a jeho implementace v jazyce C, krerý je snadno portovatelný na různé operační systémy a různé počítače. Existuje i překladač pro 8-bitové procesory SDCC - Small Device C Compiler.

Stažení programu PlotterController a jeho sestavení

Pro sestavení programu budete potřebovat překladač jazyka c a utilitu make. V případě Linuxu provedete instalaci překladače a utility make například takto:


            apt-get install gcc
            apt-get install make
        

V případě Windows doporučuji použít MinGW.

V prostředí DOSu je možné projekt zkompilovat v Turbo C 2.01 (které je volně ke stažení).

Zdrojový kód programu je ke stažení zde:

PlotterController_20151112.zip
PlotterController pro Turbo C
Mercurial repozitář

Projekt rozbalte do adresáře PlotterController a program sestavte následujícím způsobem:


            cd PlotterController
            make
        

Výsledkem je spustitelný soubor plotter_controller. Po jeho spuštění se objeví menu s demo příklady.

Povolení přístupu na paralelní port

V prostředí Linuxu zkontrolujte, že máte práva pro čtení a zápis do /dev/parport0. Nepoužívejte /dev/lp0 (ten umožňuje pouze zápis a ne čtení).

V prostředí MS Windows je potřba povolit přímý přístup na paralelní port. To provedete utilitou UserPort (postupujte dle přiloženého návodu).

Příklad použití

PlotterController je knihovna funkcí pro práci s grafickou jednotkou. Příklad použití je zde:


            #include <stdio.h>
            #include "printer.h"
            #include "graph.h"
            #include "text.h"


            int main(int argc, char **argv) {

                PRINTER *prn;
                if ((prn = pr_create_printer(PARPORT, "/dev/parport0")) == NULL) {
                    fprintf(stderr, "Error: Cannot access port\n");
                    return -1;
                }

                pr_init(prn);                   /* Inicializace jednotky */
                POSITION paper = pr_get_max_position(prn);

                xy_vr(prn, paper.x, 0);         /* Vykresí čáru na pozici (vector relative) */
                xy_vr(prn, 0,paper.y);
                xy_vr(prn, -paper.x,0);
                xy_vr(prn, 0,-paper.y);
                xy_vr(prn, paper.x,paper.y);
                xy_mr(prn, 0,-paper.y);         /* Přesune se na pozici (move relative) */
                xy_vr(prn, -paper.x,paper.y);

                xy_set_font_size(8);            /* Nastaví velikost písma */
                xy_set_text_angle(M_PI_2);      /* Nastaví orientaci textu */
                xy_ma(prn, paper.x - 100, 100); /* Přesune se na pozici (move absolute) */
                xy_vs(prn, 7);                  /* Nastaví rychlost 7 (velocity set) */
                xy_write(prn, "Hello World!");  /* Vypíše text */

                xy_hm(prn);                     /* Zaparkuje pero (home) */

                pr_close_printer(prn);
                return 0;
            }
        

Kompletní výčet funkcí naleznete v souborech graph.h, text.h a hpgl.h. Další příklady použití jsou v souboru main.c.
Pokud byste připojili nějaký další plotter (například Alfi), rád uvítám Vaší zpětnou vazbu.

Externí linky

Kontakt

Uvítám jakoukoliv zpětnou vazbu na mailové adrese jaroslav.beran@gmail.com

(c) 24.1.2014 Jaroslav Beran