Vieni renka markutes, kiti sprendžia kryžiažodžius. O man kartais patinka pajungti kokį nesąmoningą prietaisą ir sužinoti kaip jis veikia. Šį kartą radau Citizen CX-123II kalkuliatorių. Toks kalkuliatorius moka spausdinti skaičiukus ant popieriaus juostos. O kaip gi tokio “printerio” neprijungus prie kokio nors mikrokontrolerio.
Guglinimas nieko nedavė- nei service manual, nei printerio “kūnelio” (M-71T, Epson) aprašymo. Printeris tai visiškas primityvas- sukasi ratukas su skaičių ir keleto simbolių matricom, ir kartais, laikas nuo laiko prispaudžiamas prie popieriaus. Printeris turi trys ratukus su simboliais, du kartojasi. Ir turi dvi spalvas. Tačiau veikimo principas visiškai nesuprantamas, nes beveik viską atlieka mechanika. Tik žinom printerio pinoutą. Viso aštuonios kojos: ratuko posukio indikacija, bendras enkoderio laidas, ratuko “nulio” indeksas, kitas posūkio indikatorius, motoro minusas, motoro pliusas, sankabos solenoido pliusas, sankabos solenoido minusas.
Atrodo paprasta- sukam ratuką per reikiamą impulsų kiekį ir siunčiam spausdinimo signalą. Deja ne, nes signalo ilgis ir fazė lemią, kad ne tik spausdinam simbolį, bet ir pereinam į eilutės pradžią ir dar kažkaip pasirenkam spalvą. Netgi prijungus loginį analizatorių nieko nesupratom.
Taigis, tai buvo kogero ilgiausias galvosūkis ir jis dar iki galo neišpildytas.
Hardwarė visiškai paprasta- du mosfetai kurie junginėja 5V prie motoro ir sankabos, ir trys laidai iš enkoderio. Visas enkoderis mechaninis, taigis signalai nelabai sveiki ir pilni parazitinių suveikimų (kontaktų “kibirkščiavimas”). Variklis tiesiai nuo 5V sukasi per greitai- reikia reguliuoti apsukas. Pats mechanizmas turi viduje spyruoklę- ko pasekoje visi dantračiai sukasi kiek lėčiau, kai prispausdinam daugiau stulpelių. Žodžiu viskas veikia netolygiai- negalima naudotis procesoriuko tikslioms pauzėm. Originalus kalkuliatorius naudoja visą procesoriaus galią kai spausdina- net išsijungia LCD ekranas. Aš panaudojau žymiai stipresnį procesorių ir net trys pertraukimus per kojas. Paleidi motorą, pradeda suktis dantračiai ir jau galima pagal impulsus iš enkoderio kažką daryti.
Ilgai pavargus pradėjo spausdinti kažką panašaus, bet kartais darydavo nesąmones. Pasirodo, mechanikoje yra išimtys- negalima spausdinti skaičiukų iš eilės (1234) – mechanika nespėja. Tačiau kas antrą galima. Šiaip, ne taip pavyko padaryti naujos eilutės suveikimą, tačiau dar vistiek pirmam stulpelyje iškala parazitinį simbolį. Ir visiškai nesupratau, kaip keičiasi spalvos.
Motoro greitį pareguliavau naudodamas PWM, originaliam kalkuliatoriuje buvo rezistorius. Jei tik sužinočiau spalvos keitimą ir pirmojo (ar paskutiniojio, nes printeris “žydiškas”, spausdino iš kitos pusės) simbolio spausdinimą, liktu tik niekai- USB printerio interfeisas ir gal net printerio draiveriai. Aišku sunkiausia dalis- korpusas. Užtat gautusi visiškai nereikalingas, crazy devaisas- USB skaičiukinis printeris. O kodėl gi ne? Gi yra skaičiukinė klavietūra.
Pratesimas / Continued.
Labutis, Levai, “ramaškės” tipo spausdinimo galvutės turi indeksinį signalą ir plaktukėlio solenoidą. Tas solenoidas pritraukia plaktukėlį ir paleidžia jį ties reikiama raide ir atšoka. Atleidimo momentas paskaičiuojamas pagal “ramaškės” sukimosi greitį nuo indeksinio signalo. Tad, gavęs šį signalą, paleidi taimerį ir seki, kol suveiks pirmas komparatorius ir paduodi srovę į solenoidą, o sekantis komparatorius, tą srovę turi nutraukti. Kad nebūtų “užlipimo”, saviindukcijos EVJ turi būti gesinamas ne diodu, o stabilitronu (+tranzistorius), nes kitaip atšokimas užtrunka ir plaka visai ne per tą raidę.
Dar gavau SMS komentarą:
Dar pridėsiu, kad pradedant spausdinti reikia sulaukti apsukų stabilizavimosi ir įvertinti, kad plaktukėlis irgi įtakoja apsukas.
O dabar mano pačio komentaras:
Tai nėra paprastas “ramunėlės” ar daugiabūgnis printeris. Čia nuo “sankabos” įjungimo momento (priklausomai nuo “greičių dėžės” dantračių padėties), tas pats solenoidas spausdina raidę, pakeičia poziciją, pakeičia spausdinimo spalvą, daro CR ir gal net atskirai LF veiksmus. Tai priklauso nuo jungimo momento ir jungimo laiko. Visa sistema dirba mechaniškai- visą darbą atlieką tas pats motoriukas ir jo apsukos kinta nuo apkrovos. Printeris veikia ir sukant motorą labai lėtai- ranka. Dėl to yra net trys signalai iš enkoderio- vienas ratuko “nulis”, kitas- ratuko pasisukimas, o trečias – spausdinimo veleno sukimosi jutiklis, kuris sukasi kai kada sinchroniškai su raidžių velenu, o kartais raidės nebesisuka, bet motoras suka “karietėlės” padėtį ar patį popierių. Tai grynai mechaninis sprendimas. Palyginkit EN1 ir EN4 signalus- jie kartais sustoja. Tuo tarpu motoras tebesisuka pastoviai (MOTOR PWM signalas).
Taip, “tavasis” variantas nėra “paprasta ramaškė”, todėl teks pasižaisti daugiau, bet čia gauni enkoderio signalą, todėl nereikia laukti apsukų stabilizacijos ir simbolio apsiskaičiiavimas gal net paprastesnis. Tikra “ramaškė” irgi negali spausdinti arti nuo paskutinio simbolio ęsančių, nes galvutė sukasi pastoviai, o plaktukėlio ciklas nėra nanosekundinis. Labai seniai yra tekę remontuoti ne vieną “Optima” mašinėlę, tai jų veikimo principą ir minėjau.
Geras, mano uošviai vis dar naudoja šitą aparatą, tik modelis berods kitoks 🙂