Как правильно подключить много фоторезисторов?

Leo_Galitsin
Offline
Зарегистрирован: 24.10.2018

Здравствуйте. Подскажите пожалуйста, что нужно изменить в схеме чтобы все корректно работало?

Суть в том что: при попадании яркого луча на один из фоторезисторов из первого ряда - на 1 секунду загорается

красный светодиод; из второго - синий; из третьего - желтый. Сейчас срабатывает через раз. Подскажите в чем

ошибка. Как правильно подключить много фоторезисторов?

nevkon
Offline
Зарегистрирован: 20.01.2015

Фоторезисторы какие? А то бывают с абсолютно разными характеристиками. Насколько яркий свет? Какое сопротивление освещенного резистора и неосвещенного? Сколько резисторов в параллели?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да и скетч неплохо бы показать.

Leo_Galitsin
Offline
Зарегистрирован: 24.10.2018
Фоторезистор GL5528, меняет сопротивлениев зависимости от силы падающего на него света. Имеет максимальное сопростивление в темноте (т.н. "темновое сопротивление"), спадающее по мере увеличения интенсивности освещения.
 
Характеристики
 
Темновое сопротивление (0 люкс): 1.0 МОм
Световое сопротивление (10 люкс): 8..20 кОм
Гамма при 100..10 люкс: 0.7
Рассеиваемая мощность при T=25C: 100 мВт
Максимальное напряжение при T=25C: 150В
Пик максимальной чувствительности в спектре при T=25C: 540 нм
Допустимый диапазон температур: -30..+70 С
 
 
Свет: пятно от красной лазерной указки.
 
В параллели сейчас 4 фоторезистора (как на схеме), но в идеале хотелось бы подключить больше 10.
Leo_Galitsin
Offline
Зарегистрирован: 24.10.2018
Скетч писал не я (нашел в Интернете). Он изначально был для одного фоторезистора и одного светодиода, остальное уже я добавил. С одним фоторезистором работает нормально. Но у одного фоторезистора маленькая площадь.
 
int ldrPin1 = A4;
int ldrPin2 = A3;
int ldrPin3 = A2;
int ledPin1 = 2;
int ledPin2 = 3;
int ledPin3 = 4;
long ldrValue1, ldrValue2;
long ldrValue3, ldrValue4;
long ldrValue5, ldrValue6;
 
void setup() {
  
  pinMode (ledPin1,OUTPUT);
  pinMode (ledPin2,OUTPUT);
  pinMode (ledPin3,OUTPUT);
  
  pinMode (ldrPin1,INPUT);
  pinMode (ldrPin2,INPUT);
  pinMode (ldrPin3,INPUT);
}
 
void loop() {
ldrValue1 = analogRead(ldrPin1);
delay(10);
ldrValue2 = analogRead(ldrPin1);
  
  ldrValue3 = analogRead(ldrPin2);
delay(10);
ldrValue4 = analogRead(ldrPin2);
  
  ldrValue5 = analogRead(ldrPin3);
delay(10);
ldrValue6 = analogRead(ldrPin3);
 
if (ldrValue1-ldrValue2 > 20||ldrValue2-ldrValue1 > 20){  
    digitalWrite(ledPin1,HIGH);
    delay(1000);
    }
else{
    digitalWrite(ledPin1,LOW);
    digitalWrite(ledPin2,LOW);
    digitalWrite(ledPin3,LOW);
}
  
  if (ldrValue3-ldrValue4 > 20||ldrValue4-ldrValue3 > 20){  
    digitalWrite(ledPin2,HIGH);
    delay(1000);
    }
else{
    digitalWrite(ledPin1,LOW);
    digitalWrite(ledPin2,LOW);
    digitalWrite(ledPin3,LOW);
}
  
  if (ldrValue5-ldrValue6 > 20||ldrValue6-ldrValue5 > 20){  
    digitalWrite(ledPin3,HIGH);
    delay(1000);
    }
else{
    digitalWrite(ledPin1,LOW);
    digitalWrite(ledPin2,LOW);
    digitalWrite(ledPin3,LOW);
}
  
}
Гриша
Offline
Зарегистрирован: 27.04.2014

Leo_Galitsin прокачайте скил "вставка программного кода" из первого поста песочницы и поправьте скетч и скройте его под спойлер. 

2)какой номинал у сопротивлений поддяжки?

3) почему не вижу сопротивлений ограничения тока для светодиодов. 

Leo_Galitsin
Offline
Зарегистрирован: 24.10.2018

По 220 Ом. И на каждый светодиод тоже 220 Ом. Я на этой схеме их не отобразил, но в рабочей схеме и на железе они есть.

Leo_Galitsin
Offline
Зарегистрирован: 24.10.2018

Гриша
Offline
Зарегистрирован: 27.04.2014

Leo_Galitsin пишет:

По 220 Ом. И на каждый светодиод тоже 220 Ом. Я на этой схеме их не отобразил, но в рабочей схеме и на железе они есть.

вольтметр в помошь и проводить испытания: напряжение в средней точке относительно общего провода при разных сопротивлениях  подтяжки (диапазон сопротивлений от 220 Ом до 50 кОм) и при разной освещенности фоторезисторов. Чем больше точек - тем лучше, обычно используют переменный резистор для таких целей. На выходе должна быть таблица, если хотите от нас помощи. А если сами справитесь - нам она не к чему. 

nevkon
Offline
Зарегистрирован: 20.01.2015

Что-то я не понял - вы делаете делитель напряжения или просто параллельно подключаете постоянный резистор?

Затем смотрим закон параллельного подключения проводников, идеальный вариант 0 люкс, 10 фоторезисторов - 1000 кОм / 10 = 100кОм. В принципе если сделать делитель с 10кОм постоянным резистором (фоторезистор в нижнем плече), то при превышении 2.5В (больше 512 на АЦП) вы будете иметь засвеченный фоторезистор освещением >=10 люкс. Но это надо проверить - 8...20кОм при засветке - возможно надо будет поставить постоянный резистор 20-50кОм. Но при таких сопротивлениях уже может появиться шум.