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..
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.
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č.
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.
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.
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í.
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 :-)