Spinaní pinu na delši vzdalenost

Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Spinaní pinu na delši vzdalenost

Příspěvek od Le-Ze » 24 úno 2020, 21:08

Zdravím Vás.
Se snažim spinat piny klasickým vypinačem co je na světla na vzdalenost 4 metry.
Jelikož ma prace je internet, zvolil jsem UTP kabl, který mam zdarma.
Nějak se to neda ukočirovat a rušení je tak velke že mi to nefunguje.
Moje poslední šance co mně napada je optočlen.
https://www.aliexpress.com/item/4000590924896.html

Ale by mně zajimalo, zda s tým nema někdo zkušenosti a nepodařilo se mu to vyřešit.
Muže být problem v tom UTP kablu, třeba e je kroucený?
Všechny čidla co mám doma tak přes UTP funguji a třeba HC-SR501 jedena 12 metru, DHT 22 na 8 metru.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Spinaní pinu na delši vzdalenost

Příspěvek od KamilV » 24 úno 2020, 22:45

4 m se mi nezdá tak moc, ale problém to být může. Kolik párů využíváš? Všechny? Zkus to rozhodit do různých párů. Taky bych místo obyč. UTP zkusil SFTP. Netáhneš souběžně s datama i napájení?

Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: Spinaní pinu na delši vzdalenost

Příspěvek od Le-Ze » 25 úno 2020, 05:15

KamilV píše:
24 úno 2020, 22:45
Netáhneš souběžně s datama i napájení?
Mam tam i 5V a GND.
Přes to GND jen spinam ty piny a 5V zatim nezapojeno.
Normalně na internet na tomto UTP mame i 100 metrový spoj a přes POE tam cpeme 48V.
Zatim jsem zkoušel jen 2 vypinače.
Sepnout rele jde okamžitě a kdykoliv. Ale je problem je rozepnout a hlavně když sepnu obě.

První jsem zkoušel toto.
S PULLUP odporem to haprovalo.
Tak jsem zrušil a použil 2,2 k a ok.

Kód: Vybrat vše

// Pro rele 2 - tlačitko D4 ------------------------------------
    AktualniStavPinu_D4 = digitalRead(4); // nacteni aktualniho stavu tlacitka D4
       
    if ((AktualniStavPinu_D4 == 0) && (MinulyStavPinu_D4 == 1))  // je-li stisknuto tlacitko D4
       { 
        expander.toggle(2);// obrati stav pinu 2 na expanderu
        Serial.println("A001_Rele2 " + String(expander.digitalRead(2))+ "     vyp");
        delay(100);
        Serial.println("A001_stavrelay " + String(expander.read(), BIN));     
       }
    MinulyStavPinu_D4 = AktualniStavPinu_D4;
//--------------------------------------------------------------------------------    
// Pro rele 3 - tlačitko D5 -----------------------------------
    AktualniStavPinu_D5 = digitalRead(5); // nacteni aktualniho stavu tlacitka D5
       
    if ((AktualniStavPinu_D5 == 0) && (MinulyStavPinu_D5 == 1))  // je-li ted stisknuto tlacitko D5
       { 
        expander.toggle(3);// obrati stav pinu 3 na expanderu
        Serial.println("A001_Rele3 " + String(expander.digitalRead(3))+ "     vyp");
        delay(100);
        Serial.println("A001_stavrelay " + String(expander.read(), BIN));     
       }
    MinulyStavPinu_D5 = AktualniStavPinu_D5;
}
Občas se ale stane že led jen problikne- zakmit vypinače.
Tak jsem to zkusil přes millis.
A toto hapruje i s tým 2,2 k odporem a jsem zkusil i 1,5 k.
Jedině že bych tam měl někde kopanec :?

Kód: Vybrat vše

//-----------------------------------------------------------------------------------------------
//  Tlačitko D4 pro rele 2
//-----------------------------------------------------------------------------------------------
  if (digitalRead(4) == 0)           // je-li tlacitko stisknuto D4
  {                                                  
    if ((MinulyStavTlacitka_D4 == 1) && (millis() - CasZmenyTlacitka_D4 > PRODLEVA))      
       {                                                                                   
        MinulyStavTlacitka_D4 = 0;                                 
        expander.toggle(2);          // obrati na expanderu stav pinu 2 
        Serial.println("A001_Rele2 " + String(expander.digitalRead(4))+ "     vypinač");
        delay(50);
        Serial.println("A001_stavrelay " + String(expander.read(), BIN));    
       }
    }
  else                                      // neni-li stisknuto tlacitko
  {
    CasZmenyTlacitka_D4 = millis();         // zapamatuj si posledni cas, kdy bylo nestisknuto
    MinulyStavTlacitka_D4 = 1;              // nuluj priznak, tlacitko stisknuto
  }
//-----------------------------------------------------------------------------------------------
//  Tlačitko D5 pro rele 3
//-----------------------------------------------------------------------------------------------
if (digitalRead(5) == 0)           // je-li tlacitko stisknuto 
  {                                                  
    if ((MinulyStavTlacitka_D5 == 1) && (millis() - CasZmenyTlacitka_D5 > PRODLEVA)) 
       {                                                                                   
        MinulyStavTlacitka_D5 = 0;                                 
        expander.toggle(3);        // obrati na expanderu stav pinu 3 
        Serial.println("A001_Rele3 " + String(expander.digitalRead(5))+ "     vypinač");
        delay(50);
        Serial.println("A001_stavrelay " + String(expander.read(), BIN));    
       }
    }
  else                                      // neni-li stisknuto tlacitko
  {
    CasZmenyTlacitka_D5 = millis();         // zapamatuj si posledni cas, kdy bylo nestisknuto
    MinulyStavTlacitka_D5 = 1;              // nuluj priznak, tlacitko stisknuto
  }

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Spinaní pinu na delši vzdalenost

Příspěvek od pavel1tu » 25 úno 2020, 06:08

Nic neřeš SW, dokud nezměříš, že ti to funguje po elektrické stránce ....

Vůbec jsem nepochopil co jak máš zapojené, oddělit minimálně optočlenem to budeš muset.

Nejjednodušší je oddělení relátkem (přímo relátkem), třeba s 12V cívkou (podle používaného napětí). Ta cívka ti "požere" všechny špičky co na trase vzniknou a "nakmitané" rušení. Relé musíš mít u Arduina.
Používá se to v průmyslu dlouhá léta a je to spolehlivé. Ale upouští se od toho, je to drahé a cokoliv mechanického = menší spolehlivost.

Já u alarmu jedu na 12V vzdálenosti i desítky metrů a bez problémů. ALE, v obvodu na 12V neřeším spínání "napětí" ale přerušování proudové smyčky.
Samozřejmě to mám poté (jednotlivé napěťové hladiny) oddělené optočlenem, právě abych zamezil zavlečení rušení směrem k ATmega.

Na toto téma najdeš na netu spoustu schemat.
Naposledy upravil(a) pavel1tu dne 25 úno 2020, 06:37, celkem upraveno 1 x.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: Spinaní pinu na delši vzdalenost

Příspěvek od Le-Ze » 25 úno 2020, 06:18

Tak ono to na stole s pul metrovým kablikem šlapalo jak hodinky.
Počkam teda na ty opto.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Spinaní pinu na delši vzdalenost

Příspěvek od pavel1tu » 25 úno 2020, 06:40

A netáhneš ten kabel kolem elektriky ?

On ten ten kabel se na DC napětí chová jako "kondenzátor" a pokud ho nemáš stíněný, pěkně ti posbírá rušení. Pokud je stíněný - tak stínění se "kostří" nebo dává na mínus jen na 1 straně a to u Arduina
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Spinaní pinu na delši vzdalenost

Příspěvek od kiRRow » 25 úno 2020, 08:45

zkus to takhle Obrázek kondenzátor může být i keramický, už s 18nF to odstranilo veškeré problémy s 3tlačítky a napájením přes dvoumetrový utp ...

... taky je sranda laborovat hodiny kolem zapojení, hodiny čumět do programu ... a pak zjistit, že na vině je nekvalitní nepájivé pole, neudělaný propoj či nalomený drátek :-D

Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: Spinaní pinu na delši vzdalenost

Příspěvek od Le-Ze » 25 úno 2020, 08:52

@ kiRRow a nějak obratit by to nešlo, abych to spinal s GND - na pinu LOW?

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Spinaní pinu na delši vzdalenost

Příspěvek od KamilV » 25 úno 2020, 09:22

Le-Ze píše:
25 úno 2020, 05:15
KamilV píše:
24 úno 2020, 22:45
Netáhneš souběžně s datama i napájení?
Mam tam i 5V a GND.
Přes to GND jen spinam ty piny a 5V zatim nezapojeno.
Normalně na internet na tomto UTP mame i 100 metrový spoj a přes POE tam cpeme 48V.
Já myslel spíš souběžně vedené UTP a 230 V. V jedné liště atp.

Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: Spinaní pinu na delši vzdalenost

Příspěvek od Le-Ze » 25 úno 2020, 09:27

Tak to ne.Psal si DC :D

Odpovědět

Kdo je online

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