Постоянный посетитель


693 79
Выкса
3 мес.

ARDUINO для автоматизации аквариума

Создал отдельную тему по вопросам использования простых и не дорогих плат ARDUINO для целей автоматизации аквариума.
Идея такая - довести это устройство до полнофункционального контроллера для аквариума, в итоге - с WEB сервером для управления по сети в т.ч. Интернет, и GSM модулем с отправкой SMS.
Начало обсуждения в теме про дозатор :
дозатор

Информация будет, в основном, в виде конкретных примеров.

Пример 1. Использоание плат Arduino UNO и Arduino NANO для управления по времени суток устройствами в 2-х каналах посредством релейного модуля.
Предполагается использование для создания 2-х канального дозатора, но и для включения света, например подойдет, и для многих других целей также.

Используется модуль часов реального времени, для точного планирования по времени суток, и релейный модуль. В данном примере используется 4-канальный, но 2 канала не используются...

Схема коммутации в случае использования платы UNO R3:


Схема коммутации в случае использования платы NANO:


Программа для среды программирования Arduino:
//***************************************************
// Скетч для управления релейным модулем, в котором *
// использовано два канала. Используется также RTC *
// Релейный модуль - с инверсной логикой на входе *
// Автор: ZORS *
// Версия 1. Дата 21.12.2013 02:40 *
//***************************************************
//----------ИМПОРТ БИБЛИОТЕК-------------------------
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include <RTClib.h> //Подключаем библиотеку для использования модуля часов реального времени RTC

RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC

//----------Объявляем разные переменные------------
const int RelayChn1 = 6; //Используем цифровой ПОРТ 6 для ПЕРВОГО канала релейного модуля
const int RelayChn2 = 7; //Используем цифровой ПОРТ 7 для ВТОРОГО канала релейного модуля
//----------Настройки времени и продолжительности включения реле

//----------ПЕРВЫЙ канал----------------------------
const long StartRelCn_1 = 25200; //Время срабатывания в ПЕРВОМ канале релейного модуля (в секундах от начала суток)
//в данном случае 25200 - это 7 часов 00 минут = ( 60секунд *60 минут *7 = 25200)
const long DurationCh_1 = 10; //ДЛИТЕЛЬНОСТЬ срабатывания реле в ПЕРВОМ канале (в секундах)

//----------ВТОРОЙ канал----------------------------
const long StartRelCn_2 = 37800; //Время срабатывания во ВТОРОМ канале релейного модуля (в секундах от начала суток)
//В данном случае 10 часов 30 минут = (60 секунд * 60 минут * 10 часов + 60сек*30мин = 37800)
const long DurationCh_2 = 15; //ДЛИТЕЛЬНОСТЬ срабатывания реле во ВТОРОМ канале (в секундах)

//----------Модуль инициализации setup() - выполняется один раз при инициализации платы при подаче напряжение (и аналогичных событиях)
void setup(){

pinMode(RelayChn1,OUTPUT); //Инициализируем порт для ПЕРВОГО канала как ВЫХОД
pinMode(RelayChn2,OUTPUT); //Инициализируем порт для ВТОРОГО канала как ВЫХОД

digitalWrite(RelayChn1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень
digitalWrite(RelayChn2,HIGH); //Т.к. используемый релейный модуль с опторазвязкой - управляется инверсной логикой



Wire.begin(); //Инициируем I2C интерфейс
RTC.begin(); //Инициирум RTC модуль

// RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале,
//для того, чтобы загрузить в RTC дату и время на момент компиляции программы
//Иногда необходимо заливать СКЕТЧ на плату со снятым комментарием - для поправки
//времени в RTC, НО оставлять такой СКЕТЧ в работе НЕЛЬЗЯ !!!!!!!!!!!!!

} // КОНЕЦ ИНИЦИАЛИЗАЦИИ

//--------------------------------------------------
void loop() // ПРОГРАММЫй безусловный ЦИКЛ
{
DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла

//----------Раздел обработки реле по времени ----
long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX
utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках,
//Это дает количество секунд с начала текущих суток

//------------КАНАЛ 1------------------------------
if ((utime >= StartRelCn_1) &&
(utime < (StartRelCn_1+DurationCh_1)))
//Если секунд с начала суток больше, чем задано для включения
//Но, одновременно и меньше, чем задано для включения + длительность
{
digitalWrite(RelayChn1,LOW); //Устанавливаем на ПЕРВОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
}
else //во всех остальных случаях
{
digitalWrite(RelayChn1,HIGH); //Устанавливаем на ПЕРВОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
}

//------------КАНАЛ 2 - все аналогично -----------
if ((utime >= StartRelCn_2) &&
(utime < (StartRelCn_2+DurationCh_2)))
{
digitalWrite(RelayChn2,LOW); //Устанавливаем на ВТОРОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
}
else
{
digitalWrite(RelayChn2,HIGH); //Устанавливаем на ВТОРОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
}

}//------------Конец ЦИКЛА-----------------------------


(Редактор текста на данном сайте - к сожалению, "ломает" красивое форматирование.

PS: Выложил этот скетч на файлообменник :
http://my-files.ru/h...

В данной программе реализован, довольно-таки простой подход, а простота - основа надежности.

Каждое из 2-х реле срабатывают один раз в сутки в указанное время, причем время указывается в количестве секунд от начала суток, и удерживается указанное количество времени в секундах.
Такой способ задания времени - несколько сложен для понимания, но за это - не нагружает программу и процессор лишним функционалом, который понадобится всего один раз.
Для определения времени наступления события начала включения и выключения реле - используется время в формате UNIX.

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

У комплектных минутных и секундных таймеров "с розеткой" - об этом можно только мечтать....не реализован такой функционал, и еще у них есть один минус. Реле в таких таймерах - не удерживаемое, а переключаемое, со всеми вытекающими последствиями....

Для программирования нескольких включений каждого реле в течение суток - естественно, потребуется несколько другой подход....спрашивайте когда кому-то потребуется, пока не хочу все усложнять...
В принципе, можно добавить константных переменных, содержащих время и длительность срабатывания, и соответственно добавить проверку на условия.
Если количество необходимых срабатываний каждого реле в сутках больше чем 2 - лучше оформить проверку условий в отдельной функции. Как, говорил человек, учивший меня программированию - "все, что ты делаешь в программе больше двух раз - оформляй отдельной процедурой, или функцией".

Главное ограничение этого подхода - включение и выключение реле - должно произойти в одних сутках. Если необходимо чтобы, реле включилось в одних сутках, а выключилось в других - необходимо разбить это задание на 2 задания, или применить другой метод проверки условий наступления событий включения и выключения.

Весь этот пример тестировался на "живом" железе :

Для наглядности отладки был еще подключен LCD дисплей 16 сим в 2 строках.
Схема итоговая была такая:

Обратите внимание, что при использовании I2C последовательного интерфейса - соединения значительно упрощаются. И LCD дисплей подключен транзитом через модуль RTC (часов реального времени). Никаких паяных соединений нет вообще....все скоммутировано - проводами с разъемами.
Скетч - естественно, несколько другой использовался с добавлением строк инициализации и использования LCD 16x2.

Плата использовалась типа такой:
http://www.ebay.com/...
цена примерно 350 руб.

Релейный модуль
http://www.ebay.com/...
цена примерно 150 руб.

Модуль часов реального времени:
http://www.ebay.com/...
Цена примерно 55 руб.

Для сокращения бюджета можно использовать плату проще:
http://www.ebay.com/...
Цена примерно 200 руб.

Если есть потребность подключить ЖК дисплейчик, то лучше брать ЖК дисплей (LCD) c I2C интерфейсом - это сильно упрощает коммутацию, и сокращает количество использованных портов на микроконтроллере.
Например такой можно использовать :
http://www.ebay.com/...
цена около 180 руб.

На ЖК можно выводить статусную информацию, информацию об ошибках, диагностическую информацию. Все это, конечно, можно и в последовательный порт компьютера выводить, но это не всегда удобно (скорее наоборот), поэтому я всегда использую какой-нибудь девайс для вывода информации.

Для использования I2C интерфейса - необходима библиотека Wire. Она есть в стандартном дистрибутиве среды программирования Arduino.
Для использования модуля RTC на микросхеме DS1307 нужна библиотека RTClib.
Если ее не будет в стандартном дистрибутиве, то ее можно взять в интернет. Например здесь :
http://arduino-info....

Необходимо, скачать, и разархивировать zip-файл в папку с понятным названием, например RTCLib. Затем эту папку поместить в папку, где среда Arduino хранит свои библиотеки. Если ставили среду программирования с настройками по умолчанию, то этой папкой будет :
C:Program FilesArduinolibraries
Сюда и помещайте папки с подключаемыми библиотеками. Если на этот момент, среда программирования была запущена - ее необходимо закрыть, и запустить заново. После этого библиотека будет доступна в меню Скетч/Импортировать библиотеку.

Микросхема RTC модуля DS1307, как правило использует адрес на шине I2C равный 0x68
поэтому, необходимо проверить в библиотечных файлах, библиотеки RTClib наличие строки типа этой:
#define DS1307_ADDRESS 0x68

Если будет использоваться LCD 16x2 с I2C интерфейсом, то - понадобиться библиотека LiquidCrystal_I2C. Можно скачать здесь :
http://dvrobot.ru/lc...
Как подключить к среде программирования Arduino - см. выше

ВАЖНО : при использовании I2C устройств - в скетче, библиотека Wire - должна быть объявлена первой, иначе - будут ошибки компиляции.

По этому примеру - все....

в следующем - присоединение термо-датчика DS18B20, и создание несложного терморегулятора.....


Изменено 24.12.13 автор Z0RS
2013-12-2121/12/2013 15:57:48
#1907148
Новичок


9
Russian Federation Tomsk
2 года

dkozyrev

Для меня не все так просто, я кое как выдать значения смог в сериал порт, на большее нужна практика.
У меня похоже еще что-то с самой ардуино. Она изначально как то странно запускалась - проходило на все ножки паразитное напряжение при включении. Подозреваю на неисправность фильтров питания. Вроде бы одного резистора не хватает на входе питания.
Заказал еще две, когда придут более плотно займусь этим вопросом.

Сегодня убил почти 2 часа вспоминая как написать простой код рассвета-заката без привязки к времени через функцию "for" и задержку "delay"
Собрал все назад, но запускается через раз. Стабильный запуск только при подключении через USB (думаю за счет опроса ардуино нормально стартует). Точно что-то с самой платкой.

Извиняюсь за неверную ссылку. Вот нормальная:
https://drive.google...
2017-01-2424/01/2017 14:02:02
#2331025
Малёк


16
Russian Federation Moscow
6 мес.

Roywalk

Проверьте, может дело в питании? При питании от USB ардуина оттуда берет 5 вольт и сразу пользует, при питании через ножки ардуина пропускает напряжение через понижающий стабилизатор до 5 вольт. Возможно этот узел глючит, если больше 5 вольт.
У меня так было, на 9 вольт на всех аналоговых выходах напряжение появлялось, независимо от скетча. Даже на блинке реллюшки работали. Хотя по стандартам ардуина должна больше 9 вольт тянуть.

Изменено 24.1.17 автор D.motor
2017-01-2424/01/2017 16:13:35
#2331091
Посетитель


405 57
Подольск
11 дн.

Roywalk

Вобщем проверяйте питание. Вывод +5V как раз с питанием микроконтроллера соединен.
И на все выходы оно точно не должно идти при включении. Может сгорел преобразователь и МК подпалило.
Программа не шедевр, но работать должна.
И по поводу рассветов в цикле, оно конечно самому подумать всегда полезно , но можно было и заглянуть в код Дядьки-рыбомора из соседней темы:
long pwm;
if ((UTime<Led1On) || (UTime>=Led1Off + Led1Dur))
{
pwm=PWM_MIN;
}
else if((UTime>=Led1On) && (UTime<(Led1On + Led1Dur)))
{
pwm = ((UTime - Led1On)*(PWM_MAX-PWM_MIN)) / Led1Dur;
}
else if((UTime>=Led1Off) && (UTime<Led1Off + Led1Dur))
{
pwm=((Led1Off + Led1Dur - UTime)*(PWM_MAX-PWM_MIN))/Led1Dur;
}
else
{
pwm=PWM_MAX;
}
analogWrite(Led1, pwm);
2017-01-2424/01/2017 16:47:05
#2331103
Посетитель


432 71
Новокузнецк
3 мес.
При 8 битном шим свет включается ступенчато, и уже при analogWrite(LedPin, 1) светодиоды светятся весьма ярко, не получается плавного "рассвета/заката".
Все гораздо лучше смотрится при шим 10 бит, но аппаратно он есть у DUE, (а эта плата заметно дороже даже Меги и нетерпима к напряжению более 3,3 В на портах, что добавляет некоторые неудобства, хоть и решаемые). Сегодня получил PCA9685 модуль для arduino , попробую с ней ради интереса, хотя сделал уже на DUE.

А с другой стороны - пока отлаживал поигрался с "расветозакатами", а сейчас все работает в режиме вкл/выкл... Нужны ли они - эти рассветы?

Изменено 25.1.17 автор KAA78
2017-01-2525/01/2017 11:38:40
#2331549
Посетитель


50 3
Russian Federation Chelyabinsk
3 мес.

Питание


D.motor


Здравствуйте. подскажите, что используете для питания Ардуино? только USB-порт? возможно ли использовать такую штуку ( ссылка ) для понижения с 12в до 7в для ардуино?
2017-01-3030/01/2017 07:21:51
#2334113
Посетитель


405 57
Подольск
11 дн.

StanOK

Можно конечно, но зачем?
Если потребление небольшое (ардуинка, датчики, твердотельное реле), то можно и 12В напрямую кормить.
Если схема жрет много (+пяток электромагнитных реле, вентиляторы), то и при 7В набортный преобразователь будет греться, хотя и в разы меньше чем от 12.
А если уж ставите DC-DC, то чего бы сразу 5В не сделать и на +5В (или на USB) не подать, исключив набортный линейник вообще.
2017-01-3030/01/2017 12:32:46
#2334204
Посетитель


50 3
Russian Federation Chelyabinsk
3 мес.

dkozyrev


Предполагается такой обвес к Arduino uno:
1.LCD 16*2 (I2C) + 3 кнопки
2.Два твердотельных реле
3.Датчик температуры
4.Модуль часов
5.Работа ШИМ (с поднятием сигнала до 0-10V, с отдельным питанием, как раз для этого и буду 12в подводить).

При 12В норм будет? или какой-то радиатор или вент примострячить нужно? впервые работаю с Arduino =) ).

Изменено 30.1.17 автор StanOK
2017-01-3030/01/2017 12:55:39
#2334217
Малёк


16
Russian Federation Moscow
6 мес.

StanOK

Использую подобный преобразователь.

Выдает 5в на общую шину. С шины питаю Arduino через USB разъем и всю периферию (релюшки, часы реального времени, экран, блютус модуль, датчики температуры)

Изменено 30.1.17 автор D.motor

Изменено 30.1.17 автор D.motor
2017-01-3030/01/2017 12:56:33
#2334218
Посетитель


405 57
Подольск
11 дн.

StanOK

В таком наборе самое жручее это подсветка экрана, но миллиампер в 150 должно уложиться, а значит на линейнике не больше 1Вт выделится. А дальше зависит от разводки платы ардуины - если преобразователь к приличному полигончику припаян, то радиаторы-вентиляторы не понадобятся.
А если будет сильно греться, то всегда можно DC-DC поставить, причем лучше такую
https://ru.aliexpres...
Без вольтметра, но места не занимает и микросхема эффективнее.
2017-01-3030/01/2017 13:26:56
#2334228
Посетитель


124 4
Russian Federation Togliatti
11 дн.

Roywalk
Она изначально как то странно запускалась - проходило на все ножки паразитное напряжение при включении.

У меня такое было, включались все каналы. Я уже не помню почему, но это связано с питанием ардуинки!
2017-01-3030/01/2017 19:38:25
#2334409
Новичок


1
Ukraine Kiev
1 года

Помогите пожалуйста!


Z0RS

Доброго времени суток !Очень буду благодарен за помощь, так как в программировании я полный чайник ((
Насколько я понимаю при заливке скетча строка // RTC.adjust(DateTime(__DATE__, __TIME__)); используется один раз, и в дальнейшем удаляется из скетча. Строка RTC.adjust(__DATE__, __TIME__)) не изменяется и прописывает время компиляции сама автоматически, или нужно в ней прописывать дату, тогда подскажите в каком формате?? Выходит что если пропало питание на ардуино и через время появилось то она(ардуинка) будет в DS1307 перешивать дату по новой из-за етой строки или я заблуждаюсь ?

И еще подскажите пожалуйста как сюда прописать датчик влажности lm393 что б ардуино постоянно проверял (ежесекундно или ежеминутно ) влажность и при достижении например 70 % влажности отключал питание на реле в не зависимости от показаний часов реального времени , то есть защита от КЗ при намокании, а когда уровень влажности будет меньше 70% разрешал включать/выключать свет на реле через показания часов реального времени? Во блин загнул, надеюсь поймете ))
2017-03-3030/03/2017 00:22:29
#2361677
Посетитель


432 71
Новокузнецк
3 мес.
Lm393 - датчик влажности почвы, а не воздуха. Если нужен датчик влажности воздуха, то существуют датчики DHT11 и DHT22. По ним много примеров в сети.
Но, отключать свет по датчику влажности... ну не знаю... 70% - нормальная влажность летом, а под крышкой аквариума, если не вентилировать, то влажность скорее всего стремится к 100%.

RTC.adjust(DateTime(__DATE__, __TIME__)); // каждый раз прописывает в РТЦ время и дату, которое было в момент компиляции.

Изменено 30.3.17 автор KAA78
2017-03-3030/03/2017 06:14:49
#2361696
Посетитель


405 57
Подольск
11 дн.

Dybina

RTC.Adjust прописывает в часы время компиляции, а значит если ее оставить на постоянную, то будет портить время при перезагрузках. Надо раскомментировать эту строку, загрузить скетч для выставления времени, а потом закомментировать обратно и еще раз загрузить.
Lm393 вообще не датчик, а микросхема компаратор, выдает цифровой сигнал при достижении аналоговым сигналом заданного уровня. Что у вас там в качестве собственно датчика?
И да, запрещать включать свет при высокой влажности не дело. Под крышкой аквариума она будет гарантировано. Но можно включать вентилятор для ее понижения.
2017-03-3030/03/2017 09:21:02
#2361730
Новичок


3
United States Providence
1 года

Z0RS


Здравствуйте, сделал по Вашему скетчу проект: свет по движению, PIRдатчик -> ардуино -> реле -> свет, поработал минутку-две, потух. НО, днем свет включать не нужно ибо имеется "лампочка" природная.
использую RTC3231
скетч
ВОЗМОЖНО СПАМ. Если вы хотите открыть ссылку, скопируйте ее в адресную строку самостоятельно

но выполняется только второе условие "NO Check"
Уж голову заламал, помогите
2017-07-2121/07/2017 16:48:00
#2395409
Посетитель


405 57
Подольск
11 дн.

V_Z

У вас свет включается по движению рыбок??
А проблема тут:
const int StartPIRCn_1 = 72000;
const int DurationCh_1 = 1400;
уставки надо тоже long делать, не лезут такие числа в int
а лучше (ОЗУ не расходует)
#define StartPIRCn_1 72000UL
#define DurationCh_1 1400UL
2017-07-2121/07/2017 17:00:00
#2395414
Новичок


3
United States Providence
1 года
а-а-н нет не для рыбок. просто перелопатил инет и не нашел ни одного скетча. а здесь мне понравился
Спасибо что откликнулись сейчас попробую
2017-07-2121/07/2017 17:55:56
#2395427
Новичок


3
United States Providence
1 года

dkozyrev


Вы просто БОГ !!!
СПАСИБО огромное !
2017-07-2121/07/2017 18:03:45
#2395431
Свой на Aqa.ru


2278 511
Москва
1 час.

dkozyrev


Коллеги,

Есть просьба, помочь с актуализацией названий устройств для покупки компонентов, с Arduino никогда дело не имел, но думаю достаточно быстро освоить. Дома стоит 2 unix сервера, для одного старого на arm периодически приходится что-то перекомпилировать.

Мысли следующие.
1. Розетки таймеры, 4-5 штук управляемые по WIFI. Сеть настраивается - 2 (два устройства)
2. Управляющий компьютер - Host (возможно на Raspberi PI) - подключен по ethernet. Порт с web - интерфейсом доступен из вне для управления.
3. Управление температурой через 2 розетки (1 на нагрев, 2-я Охлаждение) и через температурный датчик (лучше встроить в №1).
Охлаждение - вентиляторы с регулировкой вращения через питание.

Дополнительно (план на будущее)
4. Отдельное устройство - спектрофотометр - точный анализ тестов воды на основе капельных тестов JBL
PH, Нитраты, Фосфаты, Калий

Пока все...
2017-08-0707/08/2017 00:05:46
#2399620
Посетитель


405 57
Подольск
11 дн.

rainmaverick

Если важно подключение аквакомпа (умной розетки) по WIFI, то имеет смысл собирать не на основе плат Arduino, а на ESP8266. Тут управляющий МК и сеть в одном чипе. Есть как мелкие дешевые модули типа ESP-12E, малопригодные для пайки на макетке, так и более удобные типа NodeMcu V3 с обвесом как у Arduino Nano. Программируется из той же среды Arduino IDE с библиотеками. Можно сделать как веб интерфейс на самом микроконтроллере, так и клиент-серверный обмен, например MQTT. Но танцев с бубном побольше чем у ардуин, питание надо покачественнее.
Есть уже готовые проекты:
https://reefcentral....
Реле для розеток имеет смысл брать на 12В (массово продаются аналогичные на 5В)
https://ru.aliexpres...
в этом случае будет достаточно одного мощного БП для питания реле и вентиляторов охлаждения и минимум преобразователей. И не забыть вынуть перемычку VCC / JD-VCC.
Ну или симисторные OMRON G3MB-202P:
https://mysku.ru/blo...
Плюс термодатчики DS18В20, часы реального времени DS3231 для автономности.
Для охлаждения компьютерные вентиляторы и регулировка при помощи 12В ШИМ. В качестве ключа любой мосфет, например IRLML5203 и нему оптодрайвер TLP250.

PS А у меня акваконтроллером работает Atmega328 + Ethernet ENC28J60. HTTP для настройки и управления, NTP, Narodmon, лог на флешке. На меге объем памяти не позволит реализовать интерфейс с рюшечками, но зато просто, надежно, и вирусы не страшны
2017-08-1414/08/2017 16:43:43
#2401343
Нравится rainmaverick
Свой на Aqa.ru


2278 511
Москва
1 час.

dkozyrev


В домашней сети уже есть Linux сервер, даже два.
Поэтому думал это все на MQTT затащить... Спасибо за информацию, буду на досуге разбираться и заказывать части.
2017-08-1414/08/2017 16:55:59
#2401347
Посетитель


66 2
Russian Federation
7 мес.
Господа, а возможно ли сделать подсчет пузырьков в счетчике ардуинкой? Какой датчик сможет их увидеть? Оптический в видимом диапазоне справится?
Хотел изначально отключать ЭМ-клапан СО2 при достижении какого-то значения рН, но почитав про недолговечность датчиков отбросил этот вариант.
2018-01-0909/01/2018 17:56:33
#2449799
Посетитель


66 2
Russian Federation Moscow
7 мес.
Отвечаю на свой же вопрос:

Эксперимент удачен.
2018-01-0909/01/2018 21:10:00
#2449884
Посетитель


123 7
Russian Federation Moscow
4 мес.

Lex_vx
Отвечаю на свой же вопрос.

Это ИК? С Али?
2018-01-0909/01/2018 21:19:40
#2449891
Посетитель


66 2
Russian Federation Moscow
7 мес.

Gar-Ik

Нет. В счетчике вода подкрашена пищевым красителем хлорофиллином (надо пробовать ещё прозрачную). Колба просвечивается по центру лазерным лучом. Пятно падает на фоторезистор. При прохождении пузырька луч преломляется и рассеивается в стороны. Световой поток на фоторезистор уменьшается и сигнал пропадает. Чувствительность фоторезистора настраивается.
Обычными светодиодами бесполезно. Рассеивается свет.

Изменено 10.1.18 автор Lex_vx
2018-01-1010/01/2018 09:37:52
#2450017
Посетитель


123 7
Russian Federation Moscow
4 мес.

Lex_vx
... лазерным лучом ...

Типа такого?
2018-01-1010/01/2018 10:11:30
#2450024



Top