Подключение 50 фоторезисторов к Arduino UNO

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Riman, 26 ноя 2018.

  1. Riman

    Riman Нуб

    Не выходит каменный цветок. Собрал схему, запускаю код и получаю некорректные результаты.
    На А1 фоторезистор подключен без Мультиплексора и выдает нормальный результат.
    А фоторезисторы, которые подключены через мультиплексор, выдают мусор. Как я понял мусор выдается, если я подключаюсь к неактивному входу.
    Код и схему несколько раз перепроверил. Не вижу проблем, подскажите

    Приложил схему и скетч.
    #include <MUX74HC4067.h>

    #define LDR_PIN A1

    MUX74HC4067 mux(7, 8, 9, 10, 11);

    void setup()
    {
    pinMode(LDR_PIN, INPUT);
    Serial.begin(9600);
    while ( !Serial ) ;

    mux.signalPin(A0, INPUT, ANALOG);
    }

    void loop()
    {
    int lightness = analogRead(LDR_PIN);

    Serial.print(lightness);
    Serial.print(" ");

    int data;
    for (byte i = 14; i < 16; ++i)
    data = mux.read(i);

    Serial.print("(");
    Serial.print(i);
    Serial.print(")=");
    Serial.print(data);
    Serial.print(" ");
    delay(25);
    }
    Serial.println();
    delay(2000);
    }

    { 2018-11-28-sketch_bb.png Снимок экрана 2018-11-29 в 15.36.50.png
     
  2. Riman

    Riman Нуб

    Все таки схему неверно собрал) Так заработало
     

    Вложения:

  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Не стоило тут библиотеку подключать. Управлять мультиплексором - как 2 пальца обоссать.
     
  4. Riman

    Riman Нуб

    Да, уже и с библиотекой и без нее пробовал.
    Проблема в другом. Подключил несколько фоторезисторов и их значения колеблятся в разных диапазонах.
    1) Подключен напрямую к А0. Колеблется в диапазоне (полностью без света и с фонарем)
    Мин=81, Макс=990, в состоянии покоя 794
    2) Вход мультиплекса С0: Мин=178, Макс=680, в покое=466
    3) Вход мультиплекса С15: Мин=613, Макс=1017, в покое=904.

    Меня смущает такой большой разброс. При большом кол-ве фоторезисторов я замучаюсь калибровать.
    Есть мысль, что контакт с мультиплексором плохой, сегодня попробую поменять. Мультиплекс не добавляет какой то кодирование сигнала? Какие еще могут быть причины?
     
  5. Вы не учитываете импеданс АЦП. В такой конфигурации нужно либо ставить буферный усилитель, либо увеличивать время измерения в 70-100 раз через регистры.
     
  6. Riman

    Riman Нуб

    Задержка в 500мс между запросами показаний не помогла.
    Про буферный усилитель буду долго разбираться. Проблема в питании? Если я подключу питание 5В от другого источника, то это решит проблему?
     
  7. Не между, а время измерения. Вы стандартным кодом Ардуино этого не сделаете. Ардуино решили, что это слишком сложно для неокрепших мозгов.
    И это может быть не единственная ваша проблема, но решать это абсолютно точно придется.
     
    Последнее редактирование: 30 ноя 2018
  8. Vovka

    Vovka Гик

    Т.е. переключили вход мультиплексора и СРАЗУ меряете?
     
  9. Riman

    Riman Нуб

    for(int i = 0; i < 4; i ++){
    digitalWrite(controlPin, muxChannel[channel]);
    }

    delay(200);

    //read the value at the SIG pin
    int val = analogRead(SIG);

    Добавил большую задержку между командой мультиплексору, результат немного изменился, но все равно в разных диапазонах.

    А1 / С(0) / С(15)
    829 (0)=457 (15)=851
    831 (0)=456 (15)=848
    798 (0)=441 (15)=816
    791 (0)=439 (15)=811
    794 (0)=441 (15)=820
    821 (0)=451 (15)=842
    813 (0)=446 (15)=831
    793 (0)=440 (15)=815
    796 (0)=441 (15)=817
    792 (0)=439 (15)=813
     
  10. parovoZZ

    parovoZZ Гуру

    на время измерения входная емкость защелкивается, поэтому без разницы.
    10 кОм - внутреннее сопротивление источника. У мультиплексора выше?
     
  11. Riman

    Riman Нуб

    Оказалось все проще - контакты к мультиплексору плохо прилегали. Придавил и показания 5 датчиков колеблются уже в пределах 3-6 процентов между собой. Орден Сутулого мне за кривые руки!
    Всем спасибо :)

    Следующий шаг квеста - подключение нескольких мультиплексоров. 3 шт понятно как подключить, т.к. хватает цифровых выходов для управления из Adruino UNO. А вот если больше, то нужно будет делать один мультиплексор цифровой для управления нижним уровнем?
    Появилось стойкое желание на Мегу перейти)
     
  12. parovoZZ

    parovoZZ Гуру

    сдвиговый регистр))
     
  13. Riman

    Riman Нуб

    74HC595 подойдет?
     
  14. Vovka

    Vovka Гик

    Пойдет, хотя можно и по проще взять, например 74HC164
     
  15. Riman

    Riman Нуб

    В наборе 74HC595 уже был
     
  16. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Я не уверен - вы понимаете, что входы выборки канала (4 шт.) и выходы всех мультиплексоров вы параллелите, а мультиплексор выбираете входом разрешения Е. ? То есть вам нужно всего 8 линий управления для 64 каналов. И 1 линия входа. Или это - слишком много ? Сколько доступно ? От этого зависит как решать.
    ПС. Прогонять аналоговый сигнал последовательно через несколько мультиплексоров - вряд ли хорошая идея. У них остаточное сопротивление не нулевое.
     
    Последнее редактирование: 30 ноя 2018
  17. Riman

    Riman Нуб

    Пока до этого не дошел. С первым мультиплексором доделываю стенд.
    Про вход Е не понял, имеется ввиду EN? По схему подключения пока особо не разбирался, т.к. пока получить только 1 мультиплексор и протестировать не смогу сразу.
    На Arduino UNO доступно 13 цифровых выходов, так что должно хватить. Ближе к январю приедет МЕГА, будет еще проще)

    При последовательном подключении мультиплексоров сопротивление изменится при подключении или может "плавать" во время работы? Если сразу, то я один раз опытным путем проверю диапазон выходных значений для фоторезистора и дальше буду им пользоваться.
     
  18. DetSimen

    DetSimen Guest

    набери в гугле "Аналоговый мультиплексор + Ардуино", и задолбайся читать. А если внимательно прочитаешь, тебе и Uno хватит, чтоб подключить
     
  19. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Я когда-то для студентов делал стенды подобного рода.
    1. Ну да EN -enable - разрешено.
    2. При каскадировании мультиплексоров в работе сразу несколько устройств
    и их "влияния любого рода" суммируются. При параллельном соединении в
    работе всегда только один. Экспериментируйте и делайте выводы.
    3. На полупроводники влияет температура. Результат - непредсказуем.
     

    Вложения:

    • MULT.PNG
      MULT.PNG
      Размер файла:
      13,3 КБ
      Просмотров:
      362
    Последнее редактирование: 3 дек 2018