Close

Multiplexor – zapojenie

Úvodní stránka Fórum Hardware Senzory Multiplexor – zapojenie

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (celkem z 5)
  • Autor
    Příspěvky
  • #9971
    Miroslava
    Účastník

    Ahojte,

    zapojila som Arduino spolu s Muxshield II:
    Arduino Muxshield II

    Zapojila som viacero magnetických snímačov a využila tak porty Arduina (24 – 53) a Muxshield (všetky 3 riadky od 2-15). Zapojenie je nasledovné (hore je zapojenie Arduina (A) a nižšie Muxshieldu (M):

    Výsledkom je, že z Arduina mi fungujú všetky snímače v poriadku avšak multiplexor mi vôbec neindikuje kedy sa spínač zopol. Používam kód z example:

    //This example shows how to use the Mux Shield for digital inputs
    #include <MuxShield.h>
    
    //Initialize the Mux Shield
    MuxShield muxShield;
    
    void setup()
    {
        //Set IO1, IO2, and IO3 as digital inputs
        muxShield.setMode(1,DIGITAL_IN);
        //use DIGITAL_IN in place of DIGITAL_IN_PULLUP if internal pullups are not needed
        muxShield.setMode(2,DIGITAL_IN);
        muxShield.setMode(3,DIGITAL_IN);
        
        Serial.begin(38400);
    }
    
    //Arrays to store digital values
    int IO1DigitalVals[16];
    int IO2DigitalVals[16];
    int IO3DigitalVals[16];
    
    void loop()
    {
      for (int i=0; i<16; i++)
      {
        //Digital read on all 16 inputs on IO1, IO2, and IO3
        IO1DigitalVals[i] = muxShield.digitalReadMS(1,i);
        IO2DigitalVals[i] = muxShield.digitalReadMS(2,i);
        IO3DigitalVals[i] = muxShield.digitalReadMS(3,i);
      }
      
      //Print IO 1 values for inspection
      Serial.print("IO1 analog values: ");
      for (int i=0; i<16; i++)
      {
        Serial.print(IO1DigitalVals[i]);
        Serial.print('\t');
      }
      Serial.println();
      Serial.print("IO2 analog values: ");
      for (int i=0; i<16; i++)
      {
        Serial.print(IO2DigitalVals[i]);
        Serial.print('\t');
      }
      Serial.println();
      Serial.print("IO3 analog values: ");
      for (int i=0; i<16; i++)
      {
        Serial.print(IO3DigitalVals[i]);
        Serial.print('\t');
      }
      Serial.println();
      delay(5000);
    }

    Čiže v Muxshield je 48 vstupov z ktorých využívam 45 prechádzam každých 5 sekúnd zmenu ale nedeteguje sa mi nič. Vedeli by ste mi poradiť ohľadom toho či som to vôbec dobre zapojila..alebo prečo mi Muxshield nefunguje tak ako ma? Ďakujem moc 🙂

    Attachments:
    #9990
    Vojtěch Vosáhlo
    Účastník

    Mohl by být problém třeba s tím že pokud je spínač nespojený, pin „lítá“ -> neni ani na 1 ani na 0. Chtělo by to tedy rezistor jako máte u arduina. Taky bych ještě přidal jeden rezistor mezi tím spínačem a pinem aby omezil proud který se dostane na pin jak u arduina, tak u shieldu.

    #10001
    Miroslava
    Účastník

    Ako to myslíte rezistor ako u arduina? Rezistor tam je pri uzemnení kdežto pri multiplexor uzemnenie nie je.

    #10003
    Vojtěch Vosáhlo
    Účastník

    Přesně tak. Měla byste mít obvod stejný jako u arduina tzn. i s uzemněním + by se hodil ještě rezistor na ochranu pinu před velkými proudy. Sepnutím spínače připojujete VCC rovnou na pin! Mělo by to být něco jako na tomto obrázku.

    #10146
    Miroslava
    Účastník

    Skúsila som to zmeniť – tak, že ten pin čo bol zapojený v Arduino som zapojila do multiplexora ale nič sa nezmenilo – ak priložím k snímaču magnet tak nefunguje. (pre pin v Arduino to funguje). Neviem teda v čom bude problém 🙁

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (celkem z 5)
  • Pro reakci na toto téma se musíte přihlásit.