Servisní analyzátor

Tvoříte zajímavý projekt? Pochlubte se s ním.
Pravidla fóra
Vkládejte prosím jen HOTOVÉ projekty, které chcete představit ostatním.
Odpovědět
Uživatelský avatar
BlindP
Příspěvky: 39
Registrován: 23 črc 2017, 00:46
Reputation: 0

Servisní analyzátor

Příspěvek od BlindP » 05 úno 2018, 18:36

Ahoj,
Občas se tu objevují nápady pro použití arduina jako PLC v průmyslu, což podle mě není nejlepší nápad. Ale kdo se stará o průmyslové stroje /výrobní linky mi dá za pravdu, že se občas hodí sledovat stavy vstupů od fotobuněk, indukčních snímačů apod. A na tohle se arduino parádně hodí. Funkce je jednoduchá: načtu 8 vstupů a jako byte odešlu po sériové lince. V pc rozkóduji na jednotlivé signály a zobrazím.

Použil jsem arduino nano, krabička byla vytištěna na 3d tiskárně.
Obrázek

Popis firmware

seznam vstupů:

Kód: Vybrat vše

byte digPins[] = {5,6,7,8,9,10,11,12};
tento seznam projdeme a nastavíme vstupy jako vstupní s vnitřním PULLUP odporem:

Kód: Vybrat vše

for(int i=0;i<sizeof(digPins);i++) {
    pinMode(digPins[i],INPUT_PULLUP);
}
naplníme byte stav stavy vstupů a pošleme:

Kód: Vybrat vše

for(int i=0;i<8;i++) {
bitWrite(stav,i,!digitalRead(digPins[i]));
Serial.write(stav);
To je vše. Pokud z PC pošlete znak 'A' přepne se analyzátor do analogového režimu pro měření pomocí proudového transformátoru SCT013.

Oživení

Pro kontrolu doporučuji odkomentovat:

Kód: Vybrat vše

//#define DEBUG
pro pomalý výpis stavů na sériovou linku.
Pokud je vše ok, zakomentujeme zpět řádek a znovu nahrajeme program sa.ino

Zobrazení

Když jsem tento analyzátor stavěl zobrazovací část jsem napsal v processingu - https://github.com/blindp/sa/blob/maste ... a_java.pde.
Obrázek

Pokud se rozhodnete pro processing, možná budete muset upravit pauzu pro odesílaní dat v sa.ino

Kód: Vybrat vše

#define DELAY_DIGITAL 5
Celé je to takové pomalé a těžkopádné prostě java. :D

Proto jsem přešel k zmijozelu a přepsal to do pythonu.
Obrázek

V počítači je třeba mít nainstalovaný python, modul serial, tkinter a modul pygraf umístit do stejného adresáře jako sa.pyw


tento port se pokouší otevřít při spuštění.Lze vybrat i jiný za běhu programu z menu-> port (analyzátor musí být připojen před spuštěním sa.pyw):

Kód: Vybrat vše

DPORT = '/dev/ttyUSB0' #defaultni port
Čísla v závorkách (10,200,200,200) jsou rychlosti obnovování grafu v ms. Můžete si tedy vytvořit vlastní profily:

Kód: Vybrat vše

profilMenu.add_command(label="CH1 : kolečko, CH2-CH4 : Foto", command=lambda: parent.setdelay((10,200,200,200)))
profilMenu.add_command(label="CH1-CH4 : Foto - rychlé", command=lambda: parent.setdelay((200,200,200,200)))
profilMenu.add_command(label="CH1-CH4 : Foto - pomalé", command=lambda: parent.setdelay((400,400,400,400)))
profilMenu.add_command(label="Vlastní1 ---", command=lambda: parent.setdelay((400,400,400,400)))
profilMenu.add_command(label="Vlastní2 ---", command=lambda: parent.setdelay((400,400,400,400)))
V popisu je sice uvedeno, že lze připojit 8 vstupů, ale zobrazuji jen 4, víc jsem nepotřeboval. Nic Vám nebrání si aplikaci sami rozšířit.
Stejně tak jsem moc nepoužil i ty analogové vstupy, proto je v programu nenajdete. A pozor! Nejsou galvanicky odděleny.

Vše najdete zde: https://github.com/blindp/sa

Závěrem bych chtě říct, že se nejedná o nic velkolepého, ale dost jsem se toho naučil, objevil kouzlo jazyka python a věřím, že i Vám tento projekt něco přinese, inspiruje.

BP

zbysek
Site Admin
Příspěvky: 125
Registrován: 22 úno 2017, 15:18
Reputation: 0

Re: Servisní analyzátor

Příspěvek od zbysek » 05 úno 2018, 22:51

To je moc pěkný projekt.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů