Spinaní pinu na delši vzdalenost

Odpovědět
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, 20:51

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 na 12 metru, DHT 22 na 8 metru.

Toto třeba s PULLUP odporem hapruje a da se to ukočirovat až s 2,2 k odporem.

Kód: Vybrat vše

// Pro rele 2 - tlačitko D4 - Led svetlo pokoj------------------------------------
    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 - Led svetlo pokoj -----------------------------------
    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;
}
U tohoto ani 1,5 k odpor nepomuže.
Nemužu mít někde kopanec?

Kód: Vybrat vše

//-----------------------------------------------------------------------------------------------
// Tlačitko D2 pro rele 0 -
//-----------------------------------------------------------------------------------------------
if (digitalRead(2) == 0)           // je-li tlacitko stisknuto D2
  {                                                  
    if (MinulyStavTlacitka_D2 == 1 && millis() - CasZmenyTlacitka_D2 > PRODLEVA)       
       {                                                                                   
        MinulyStavTlacitka_D2 = 0;                        
        expander.toggle(0);       // obrati na expanderu stav pinu 0 
        Serial.println("A001_Rele0 " + String(expander.digitalRead(2))+ "     vypinač");
        delay(50);
        Serial.println("A001_stavrelay " + String(expander.read(), BIN));    
       }
    }
  else                                      // neni-li stisknuto tlacitko
  {
    CasZmenyTlacitka_D2 = millis();         // zapamatuj si posledni cas, kdy bylo nestisknuto
    MinulyStavTlacitka_D2 = 1;              // nuluj priznak, tlacitko stisknuto
  }
//-----------------------------------------------------------------------------------------------
// Tlačitko D3 pro rele 1 - 
//-----------------------------------------------------------------------------------------------
if (digitalRead(3) == 0)           // je-li tlacitko stisknuto D3
  {                                                  
    if (MinulyStavTlacitka_D3 == 1 && millis() - CasZmenyTlacitka_D3 > PRODLEVA)       
       {                                                                                   
        MinulyStavTlacitka_D3 = 0;                           
        expander.toggle(1);        // obrati na expanderu stav pinu 1 
        Serial.println("A001_Rele0 " + String(expander.digitalRead(2))+ "     vypinač");
        delay(50);
        Serial.println("A001_stavrelay " + String(expander.read(), BIN));    
       }
    }
  else                                      // neni-li stisknuto tlacitko
  {
    CasZmenyTlacitka_D3 = millis();         // zapamatuj si posledni cas, kdy bylo nestisknuto
    MinulyStavTlacitka_D3 = 1;              // nuluj priznak, tlacitko stisknuto
  }
//-----------------------------------------------------------------------------------------------
//  Tlačitko D4 pro rele 2 - Led svetlo pokoj 
//-----------------------------------------------------------------------------------------------
  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 - Led svetlo pokoj 
//-----------------------------------------------------------------------------------------------
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
  }

Hafajs
Příspěvky: 151
Registrován: 10 bře 2019, 10:19
Reputation: 0

Re: Spinaní pinu na delši vzdalenost

Příspěvek od Hafajs » 25 úno 2020, 14:18

Kopanec: Schmittův klopný obvod, debounce, optočlen.

Odpovědět

Kdo je online

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