Počitadlo k obráběcímu stroji

15.04.2005

UPDATE 10/2005: Romanovi Pokornému se tahle strandička moc líbila a vrhli jste se na zdokonalení. Aktuální verze řídí motor posuvu materiálu, odpadávací šoupátko, dávkuje olej na nože, měří teplotu obrobku a upravuje sílu na nože. Místo PICe je zde použit Atmel MEGA-8, čili taktéž 8-bit, ale firmware je už v C, protože jsem s ASM nechtěl ztratit polovinu života :-)

UPDATE 3/2007: Tak jsme konečně dobastlili i control-panel ze 486-ky notesu a propojení 6-ti soustruhů do sítě (RS-485) a následně do PC v kanceláři. Moc se mi to líbilo koukat na monitor a sledovat, jak lidičky makaj :-) Každopádně to všechno přišlo asi na 30000,-Kč, což jsou drobné oproti nějaké profi automatizaci. Nicméně funguje to, celkem efektivně :-)


Tohle je první verze - opravdu jen to prvotní primitivní počitadlo:

Tak mi jednou spolužák po ránu (okolo půl 12-té) napsal na ICQ:

Kavon: Ahoj
Kavon: Mam dotaz
Walda: povidej
Kavon: Potrebujem u sefa vypnout masinu po xtém počtu kusů
Kavon: Slo by na co veco vymyslet
Kavon: Nejakeho svaba size="2">
Walda: A jaky mas vstup a co je vystup?
Kavon: Jako vstup by byla hodnota ze spinace size="2">
Walda: A vystup?
Kavon: Vzdycky kdyz by ten stroj dojel na urcite misto byl by tam spinac a ten by sepnul a tim by se to odecetlo ze zadane hodnoty
Kavon: Vystup elektricky signal ktery rele vypnul
Kavon: Proste by se masine prerusilo napajeni
Walda: Ok, to neni problem udelat..

K čemu to tedy je?

V podstatě jde o to, že existuje nějaká zámečnická dílna, kde mají nějaký starý poloautomatický soustruh, kde se z jedné strany vloží materiál a z druhé strany vypadávají obrobky do té doby, než dojde materiál. Pak tento stroj jede naprázdno, což je plýtvání elektrickou energií. Než si tohoto stavu všimne nějaký zaměstnanec, který musí doplňovat materiál, výroba stojí a stroj žere a žere :-) Ve stroji je vačková hřídel, která ovládá jednotlivé nože obrábějící vstupní materál. Tedy principielně jednoduchý systém, kde platí, že jedna otáčka této vačkové hřídele se rovná jednomu obrobku. Čili snímání počtu obrobků je vlastně měření počtu otáček vačkové hřídele. Navrhované zařízení by pak mělo tyto otáčky vyhodnocovat a na základě předem nastaveného počtu obrobků, které je možné ze vstupního materiálu vyrobit, stroj vypnout. Ještě je nutné podotknout, že zmíněná vačková hřídel se točí docela pomalu.

Jak snímat otáčky vačkové hřídele?

Jsou v podstatě dvě možnosti. Kontaktní a bezkontaktní. Bezkontatkní možnost by přicházela v úvahu pouze při použití hallovy sondy, protože přerušování optického paprsku by bylo v prostředí dílny spolehlivé snad jen do prvního zapnutí soustruhu. Bohužel se mi však nepodařilo žádnou hallovu sondu v rozumné ceně sehnat a tak jsme to vyřešili přidáním další vačky, která bude spínat mikrospínač.

Elektronika

Vlastní elektronika je poměrně primitivní. Nejvíce prostoru zabírá bižuterie jako například obvody napájecího zdroje, filtrace apod. Srdcem celkého zapojení je ovšem jediný integrovaný obvod PIC16F628. Jedné se o 8-bitový jednočip s integrovaným krystalem o kmitočtu 4MHz, takže pro jeho funkci stačí jen připojit napájení napětí a napsat příslušný program. Jako zobrazovací část celého zařízení slouží 3 segmisegmentovky se společnou anodou a pracující v multiplexním režimu. Při hledání vhodného typu segmisegmentovky jsem čistou náhodou objevil v brněnském GESu kromě standartních dvojčísic i trojčíslice a čtyřčíslice, což me příjemně potěšilo, protože mi poté odpadla práce s pájením číslovek tak, aby byly rovně. Nicméně další výhodou zvoleného typu byl fakt, že daná číslovka má již interně spojené katody jednotlivých segmentů, čili není nutné se zabývat šílenou tahanicí, která vzníká na jednostranném plošném spoji v případě, že má každá číslicovka katody vyvedeny zvášť. Multiplexní režim pracuje tak, že PIC nastaví na log 1 na pinu, který ovládá tranzistor spínající kladné napětí na anodu příslušné číslicovky a poté na portu A uzemní (nastaví log. 0) ty katody, které mají svítit. Následně jednočip sepne další číslicovku (tu předešlou samozřejmě vypne), nastaví jinou kombinaci log. 0 na portu A a tímto způsobem vytváří obraz všech tří současně svítících číslicovek, ač to tedy není pravda, protože v čase t svítí pouze a jenom jedna. Lidské oko má ale určitou setrvačnost a tak vidí svítit všechny tři.
K ovládání počitadla slouží 3 tlačítka. PIC obsahuje interní pull-up odpory a není tedy nutné je přidávat externě. Na vstupních pinech je tedy jednička ať se děje, co se děje, tedy až do doby, kdy dojde ke stisku nějakého tlačítka nebo sepnutí mikrospínače vačkou a následného sepnutí tranzistoru v optočlenu. Výstup je řešen pomocí relé a tranzistoru, který jej spíná. Dioda připojená paralerně k cívce relé má za úkol eliminovat napěťové špičky vyskytující se v indukčnosti během přechodových stavů - sepnutí / rozepnutí tranzistoru.

Ovládání

Vypínač zapíná a vypíná :-) Tlačítko s názvem VYNULOVAT smaže čítač na nulu. Tlačítkem NAHORU / ODEČET lze v režimu běžného čítání přepínat mezi přičítáním jedničky od nuly nahoru nebo odečtem jedničky od nastavené hodnoty směrem k nule. V prvním případě se na displeji zobrazuje počet vyrobených obrobků, v druhém případě počet, který se má ještě vyrobit něž dojde k vypnutí stroje. V případě odečtu se na displeji zobrazuje taktéž znaménko mínus, pokud se tam vleze, tedy pokud je zbytek menší jak 99. Tlačítko NASTAVIT slouží k nastavení konečné hodnoty počitadla, kdy se má stroj vypnout. Pomocí tohoto tlačítka se přípíná po řádech (100,10,1) a tlačítkem NAHORU / ODEČET se cyklicky mění hodnota v daném řádu. Stisk tlačítka NAHORU / ODEČET po nastavení řádu jednotek způsobí uložení nové konečné hodnoty do EEPROM a následné vynulování čítače.
Po dosažení požadovaného počtu se na displeji objěví nápis End, sepne a rozepne se relé a následně začne blikat konečná hodnota. Obsluha tak ví, proč se stroj zastavil a po kolika obrobcích. Stiskem tlačítka VYNULOVAT se počitadlo uvede do výchozího stavu.

Software

Celý program je napsán jednoduchým stylem v asembleru. Jednoduchým proto, že jsem se vůbec nesnažil o nějakou optimalizaci velikosti, protože funkce zařízení je jednoduchá, ale mou shanou byla hlavně přehlednost a čitelnost kódu. V paměti PICu zabírá asi 26%. Multiplexn řízení displeje je řešeno pomocí přerušení od časovače TMR2, což je 16-ti bitový čítač plněný od interních hodin. K přerušení dochází každých 10ms. Hodnota počtu impulzů se ukládá do 2 registrů cnthi a cntlo. Konečná hodnota je uložena ve stophi a stoplo. V registrech d100, d10, d1 je uložena informace, která se posílá na port A pro rozsvícení těch správných segmentů. Ostatní registry jsou určeny pro různé výpočty, jako je třebas převod binárního čísla na BCD kód (binární cnthi, cntlo na displej apod..) nebo převod BCD na binární tvar (nastavovaní nového konečného čísla).. Jelikož požadavkem bylo i to, že se musí uchovat počet vyrobených obrobků i po vypnutí napájení, je po každém sepnutí mikrospínače na vačkovém hřídeli uložena aktuální hodnota cnthi a cntlo do EEPROM. Tato paměť má ale omezenou životnost a proto jsem do programu implementoval tzv. cestování po EEPROM. Spočívá v tom, že se na adrese 02h EEPROM ukládá adresa, kde se v EEPROM nalézá uložený obsah registru cnthi. Cntlo má adresu vždy o jednu vyšší. Funkce je taková, že si PIC nejprve přečte obsah EEPROM na adrese 02h. Tento obsah je adresa, kde je cnthi a na tuto adresu po sepnutí mikrospínače uloží aktuální obsah cnthi. Cntlo je pak o jedničku výše. Pokud v pak dojde k vypnutí počitadla, po startu programu si PIC tyto hodnoty z EEPROM přečte a nastavi podle nich cnthi a cntlo, na displeji se tak objeví číslo, jaké na něm bylo před vypnutím. Pozice uložení těchto průběžných hodnot se mění po každém stisku tlačítka VYNULOVAT, resp. po vykonání instrukcí spojených s vymazáním čísla. Registry cnthi a cntlo tak cestují do kolečka po celé EEPROM ve snaze zvýšit životnost, která by asi nebyla taková, kdyby se stále zapisovalo na stejné místo. Hodnoty konečné hodnoty počitadla, kdy dojde k vypnutí stroje, se ukládají do EEPROM hned na začátek bez zbytečných šaškáren, pač se tak často němění.

Hardware

Počitadlo je ve vodotěsné a robustní plastové krabici a rozděleno na 2 DPS. Ta větší obsahuje silové prvky, relé, konektory a druhá PIC, displej a tlačítka. Obě tyto části se dají oddělit pro případ nějaké údržby atd.. Více už na obrázcích. Foceno foťákem Nikon CoolPix 8700 a strašně se mi líbilo makro :-)

 

Soubory se stažení

Schéma zapojení
Soubory