|
Правила форуму !!! |
Громадські гурти | Баня | Галерея | Нагороди | ЧаПи | Учасники | Календар | Позначити усі розділи як прочитані |
Інше устаткування СО-установки, УФ-стерилізатори, автоматичні годівниці, автодолив, таймери, термометри, контролери і т. п. |
![]() |
|
Параметри теми |
![]() |
#1 |
Живу на форумі
Львів
Реєстрація: 13.04.2010
Дописи: 5.001
Подякував(ла): 3.634
Подякували 15.624 разів в 4.154 дописах
Репутація: 15813
|
![]()
Все почалося з того, що крапельні нітрат-фосфат тести трохи дістали.
У дешевих - ті кольорові шкали не співпадають з реальним кольором у баночці незалежно від освітлення. Тому процес вимірювання перетворюється на догадки. У дорогих - з поліграфією краще. Але шкали надто грубі, тому результат оцінюєш з точністю "десь біля". А ще чекати від кількох хвилин до десяти і лише тоді витріщатися на ті кольори ... А ще тести з часом дохнуть ... А дешеві тести відрізняються в залежності від партії.. Тому виникло бажання зробити колориметр. Колориметр - то така штука, за допомогою котрої можна оцінити інтенсивність кольору. Хіміки то використовують віддавна для вимірювання концентрації речовини в розчині. Ідея, власне, стара як світ: світлом відповідного кольору просвічуємо розчин і вимірюємо освітленість з протилежного боку. Попередньо треба зробити і протестувати кілька розчинів з відомою концентрацією, щоб побудувати відповідний графік по кількох точках. Але то лише один раз, потім досить час від часу перевіряти свій тест на стандартному розчині. Враховуючи те, що тест на нітрати і фосфати різного кольору, то колориметр може автоматично визначати вид тесту. В результаті вийшла така коробочка Робимо тест згідно інструкції і вставляємо баночку в отвір. Починається відлік часу. Коли час закінчився - з'являється значення виміру, котре загасне, коли витягнемо баночку. Ото й усе. Якщо комусь цікаво - з часом опишу прилад в подробицях.
__________________
Choc juz zycia, psiamac, popoludnie - Jest cudnie |
![]() |
![]() |
16 користувачів подякували Bobus: | Andrew1 (31.03.2017), Burij (20.08.2016), colinmcrae (26.08.2016), george795 (20.08.2016), kinolog (20.08.2016), KRustik (21.08.2016), Mlevo (20.08.2016), Rain (26.08.2016), ressi (21.08.2016), Sasha@ (20.08.2016), sergiy (20.08.2016), YuraIF (20.08.2016), Yurskiy (21.08.2016), Нічна Лють (20.08.2016), тешнер (20.08.2016), Ярослав (20.08.2016) |
Реклама |
|
![]() |
#3 |
Живу на форумі
Львів
Реєстрація: 13.04.2010
Дописи: 5.001
Подякував(ла): 3.634
Подякували 15.624 разів в 4.154 дописах
Репутація: 15813
|
![]()
Якщо справді комусь цікаво, то почну.
Звісно, хотілось, щоб то було недорого, тому купуємо китайські клони ![]() 1. Arduino Nano v3.0 (CH340G) - 1шт 2. LCD OLED 0.96Є" 128X64 SPI ДИСПЛЕЙ (СИНІЙ) - 1шт 3. RGB cвітлодіод діаметром 5мм зі спільним анодом - 1шт 4. Фоторезистор (найзвичайнісінький для Arduino) - 1шт 5. Транзистор MPS404A - 3 шт. (або будь-який малопотужний pnp транзистор) 6. Резистор 1 КОм - 1шт 7. Резистор 470 Ом - 1шт 8. Резистор 68 Ом - 1шт ( можливо прийдеться зменшити, щоб струм через діод був біля 10мА) 9. Відсік для шести елементів ААА (кому більше до вподоби "Крона" 6F22 - то відсік для неї, або роз’єм. ) 10. Корпус. В мене Z45P PS (Kradex) 43x55x100мм ( чи який кому сподобається ). 11. Мікровимикач живлення. Ось такий. 12. Кусочки акрилу, клей. Ну і про вартість того. Позиції з 1 по 5 включно - приблизно 280 грн з доставкою того ж дня до під'їзду. Звісно можна знайти дешевше, але мені було ліньки, тому брав тут http://diylab.com.ua/ Позиції 9 і 10 близько 80 грн ( "радіомаг" на радіобазарі ) Решта - лежало у шухляді. А якщо то купувати - то ще + 20 грн. Важливо : Пристрій працюватиме вкрай неточно, якщо на контакт VIN не подається напруга живлення більша ніж 7 Вольт. Тому живити через USB не варто. Як і від інших джерел напруги менше 7 Вольт. Стабілізатор струму світлодіода є необхідним, інакше виміри доволі сильно залежатимуть від температури. Для баночки треба склеїти "шахту". На її протилежних стінках висверлити отвори і клеєвим пістолетом приліпити світлодіод і фоторезистор на висоті половини рівня рідини в баночці. А збоку закріпити мікровимикач, щоб він вмикався при вставлянні баночки. З'єднання виглядають так Ну і скетч Код:
#include <SPI.h> #include <Adafruit_SSD1306.h> // Using software SPI (the default case): #define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13 Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); // first raw of calibrate array is the values coming from the photoresistor according to 0; 0.25; 0.5; 1.0; 2.0; 5.0 phosphate concentration : // third raw of calibrate array is the values coming from the photoresistor according to 0; 2.5; 5.0; 10.0; 20.0; 50.0 nitrate concentration : float calibrate[4][6]= { {536,565,595,633,709,814}, {0,25,50,100,200,500}, {740,780,815,845,890,940}, {0,250,500,1000,2000,5000} }; int timeoftest[2]= {180,600}; // time in sec for PO4 and NO3 test int sensorPin = A0; // select the input pin for the photoresistor int sensorValue1 = 0; // variable to store the value coming from the photoresistor int sensorValue2 = 0; // variable to store the value coming from the photoresistor byte index = 0; // array raw number byte NorP = 0; // if 0 - then phosphate, if 2 - then nitrate void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC); // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) display.clearDisplay(); // init done display.display(); // pinMode(6, OUTPUT); //green led reserved pinMode(7, OUTPUT); //red led pinMode(8, OUTPUT); //blue led digitalWrite(7, HIGH); //red led off digitalWrite(8, HIGH); //blue led off } void loop() { delay (1000); digitalWrite(8, LOW); //blue led on delay (1000); sensorValue1 = analogRead(sensorPin); digitalWrite(8, HIGH); //blue led off digitalWrite(7, LOW); //red led on delay (1000); sensorValue2 = analogRead(sensorPin); digitalWrite(7, HIGH); //red led off // definite NO3 or PO4 if (sensorValue2 + 100 <= sensorValue1) { NorP = 2; digitalWrite(8, LOW);} else { NorP = 0; digitalWrite(7, LOW);} delay (5000); sensorValue1 = analogRead(sensorPin); // timer for ( int i = 0; i < timeoftest[NorP / 2]; i++) {delay (1000); display.clearDisplay(); display.setTextSize(4); display.setTextColor(WHITE); display.setCursor(0,0); display.print(timeoftest[NorP / 2] - i); display.println ("s"); display.display(); } sensorValue1 = analogRead(sensorPin); digitalWrite(8, HIGH); //blue led off digitalWrite(7, HIGH); //red led off if (sensorValue1 <= calibrate[NorP][0]) { sensorValue1 = calibrate[NorP][0] +1 ; } for (int i = 0; i < 5; i++) { if (sensorValue1 > calibrate[NorP][i]) {index = i ; } } float result = (( calibrate[NorP + 1][index + 1] - calibrate[NorP + 1][index]) / (calibrate[NorP][index + 1] - calibrate[NorP][index]) * ( sensorValue1 - calibrate[NorP][index]) + calibrate[NorP + 1][index])/100; Serial.print (NorP); Serial.print (" "); Serial.print (index); Serial.print (" "); Serial.println (sensorValue1); display.clearDisplay(); display.setTextSize(4); display.setTextColor(WHITE); display.setCursor(0,0); if (NorP < 1 ) { if (result > 8) {display.println("> 8.0");} else {display.println(result,1);} } else { if (result > 80) {display.println("> 80");} else {display.println(result,1);} } display.setTextSize(1); display.println(" "); display.setTextSize(2); if ( NorP <= 1) {display.println(" mg/L PO4");} else {display.println(" mg/L NO3");} display.display(); delay(4000000); display.clearDisplay(); }
__________________
Choc juz zycia, psiamac, popoludnie - Jest cudnie |
![]() |
![]() |
![]() |
Закладки |
Тут присутні: 1 (учасників - 0 , гостей - 1) | |
Параметри теми | |
|
|
![]() |
||||
Тема | Автор | Розділ | Відповідей | Останній допис |
Саморобний Lilypipe | Ye_Lviv | Інше устаткування | 32 | 17.02.2013 00:29 |
Мій саморобний акваріум | vladlv | Прісноводні акваріуми учасників форуму | 45 | 21.08.2012 04:01 |
Саморобний Акватерраріум | Терлецький Дмитро | Палюдаріум | 1 | 02.03.2011 14:22 |
Саморобний інкубатор ікри | Roman71 | Інше устаткування | 13 | 09.02.2011 00:04 |