КПК

Показати повну версію : Простой акваконтроллер ARDUINO


Сторінки : 1 2 [3] 4 5 6

AlexVOK
16.02.2015, 12:03
Открыл тему Простой акваконтроллер ARDUINO v.2 (LED море) (http://www.aquaforum.ua/showthread.php?p=3032647#post3032647)

Там будет
Полноценный 6-и канальный свет
LED драйвера
БП

svunko
18.02.2015, 03:26
Вброшу сюда, так как не знаю куда еще :)
Нашел на Хабре статейку (http://habrahabr.ru/post/250417/). Самому сейчас нет времени заниматься. Может кому-то пригодится.
Себестоимость в $14 подкупает.

AlexVOK
18.02.2015, 09:42
Вброшу сюда, так как не знаю куда еще :)
Нашел на Хабре статейку (http://habrahabr.ru/post/250417/). Самому сейчас нет времени заниматься. Может кому-то пригодится.
Себестоимость в $14 подкупает.

Конечно интересно, для того у кого есть под рукой 3Dпринтер ;)
у меня нет ;( (штука евро решит конечно этот вопрос)

а теперь посмотрим смету
1. Микроконтроллер Atmega328 — $1.8;
2. LCD экран 16x2 — $2.3;
3. Термодатчик DS18B20 — $3;
4. Модуль часов RTC DS1302 — $3.5;
5. Пластик ABS для 3d печати 84г. — $2.5
6. Шаговый двигатель, кварц, резисторы, кондеры, текстолит, итп — $1, как бы такого добра хватает.

1. цены ибей 1 PCS ATMEGA328P-PU Microcontrolle​r With ARDUINO UNO Bootloader $1.97 (только смысл если можно купить готовую плату New Pro Mini atmega328 Board 5V 16M Replace ATmega128 Arduino Compatible Nano $2.20) т.е. разница 23 цента - за которые мы получаем заводскую собранную плату со стабилизатором кварцем фильтром и обвязкой, как по мне выгодней взять готовое.

6. если у вас есть кучка хлама откуда можно все выколупать это одно, а если все покупать то далеко не 1 бакс

и Самое главное там нет очень многих функций и силовой части

glottis
18.02.2015, 12:17
3D printer там не нужен, обычный лазерный

AlexVOK
18.02.2015, 12:42
3D printer там не нужен, обычный лазерный

читаем внимательно
"Корпус нарисовал в OpenSCAD и распечатал на 3D-принтере
Так же нарисовал и распечатал корпус для самой кормушки"

да и это не тема обсуждения в данной ветке.
Предлагаю на этом остановится.code33

paradox860
25.02.2015, 10:33
Кому не хватало отображения каналов на главной, я себе сделал так

///////////////////////////////////////////////////////////////////////////////////////////////
if (light1 == true){
myGLCD.print("L1", 3, 30);/////////
}
else {
myGLCD.print(" ", 3, 30);
}

if (light2 == true){
myGLCD.print("L2", 15, 30);/////////
}
else {
myGLCD.print(" ", 15, 30);
}

if (CO2 == true){
myGLCD.print("Co2", 27, 30);/////////
}
else {
myGLCD.print(" ", 27, 30);
}
///////////////////////////////////////////////////////////////////////////////////////

вставлять после 636 строки.

AlexVOK
25.02.2015, 11:04
paradox860,
молодчина

внесу корректировку для экономии памяти без изменения функционала
//////////////////////////////////////////////////////////////////////////////////////////////
if (light1){
myGLCD.print("L1", 3, 30);/////////
}

if (light2){
myGLCD.print("L2", 15, 30);/////////
}

if (CO2){
myGLCD.print("Co2", 27, 30);/////////
}
///////////////////////////////////////////////////////////////////////////////////////

смысла нет в печати пустых строк - экран каждый цикл очищается

paradox860
25.02.2015, 14:04
paradox860,
молодчина

внесу корректировку для экономии памяти без изменения функционала
//////////////////////////////////////////////////////////////////////////////////////////////
if (light1){
myGLCD.print("L1", 3, 30);/////////
}

if (light2){
myGLCD.print("L2", 15, 30);/////////
}

if (CO2){
myGLCD.print("Co2", 27, 30);/////////
}
///////////////////////////////////////////////////////////////////////////////////////

смысла нет в печати пустых строк - экран каждый цикл очищается
Спасибо, недоглядел!

Вячеслав Сергеев
27.02.2015, 08:22
Не получилось! Что не так?

paradox860
27.02.2015, 08:57
Не получилось! Что не так?

Видимо у вас изменен код, поэтому строки не совпали, нужно найти вот этот кусок кода
switch (cur_menu) {
case 0: // Time
{
analogWrite(LED_LIGHT_PIN, DispLight_min);
myGLCD.setFont(BigNumbers);
myGLCD.clrScr();
myGLCD.printNumI(time.hour, 7, 2, 2, '0');
myGLCD.drawCircle(42, 9, 3);
myGLCD.drawCircle(42, 19, 3);
if (secc < 2) {
myGLCD.drawCircle(42, 9, 2);
myGLCD.drawCircle(42, 19, 2);
myGLCD.drawRect(41, 8, 43, 10);
myGLCD.drawRect(41, 18, 43, 20);
myGLCD.setPixel(42, 9);
myGLCD.setPixel(42, 19);
}
myGLCD.printNumI(time.min, 49, 2, 2, '0');

myGLCD.setFont(SmallFont);
и вставить сразу после него.

Вячеслав Сергеев
27.02.2015, 09:05
Вот и я думаю не туда пихаю.

Вячеслав Сергеев
27.02.2015, 09:43
Получилось, спасибо.

андрей.н
27.02.2015, 10:56
AlexNT, а вы посчитайте сколько стоит MEAN WELL по нынешнему курсу
MBI6651 22грн
дросель 100 мкГн 7 грн (кардачи павильон 9В)
танталы 5 - 6 грн
диод 2 грн
резистор + текстолит + флюс + ... 2 грн

всего около 40 - 45 грн.

По поводу резисторов и хитрых номиналов = все просто набираем 2-8 шт параллельно ;)

Да и ток какой нравится - я на некоторых каналах по 800мА выставил

где можно про эти драйверы почитать?

Вячеслав Сергеев
27.02.2015, 12:21
где можно про эти драйверы почитать?

http://www.google.ru/url?url=http://www.neumueller.com/pages/pg/drawings/pg_led_treiber/MBI6651%2520Preliminary%2520Datasheet%2520VA.00-EN.pdf&rct=j&q=&esrc=s&sa=U&ei=3ETwVIOYPKWAzAP_xILgBw&ved=0CBMQFjAA&sig2=F83eWyKDsSzw1M0cz5GiQQ&usg=AFQjCNFxJFk9j49w0WeSMWYtTNWKCHPOfw

Вячеслав Сергеев
27.02.2015, 12:23
индикатор обогревателя сделал а включить не могу.

Daliusb
27.02.2015, 12:44
Dobryj den, a vy nedumali o takoi podsvetke akvariuma http://www.ebay.com/itm/1W-COB-LED-Filament-Light-Bulb-Globe-Candle-Light-Source-Warm-Pure-White-DIY-/201175141319?pt=LH_DefaultDomain_15&var=&hash=item2ed6f90bc7
dolzno byt udobno, odna palocka 50-60 v. Ja kupil lampocku e27 4w iz 4 palocek ocen prijatnyj svet, gorit kak lampocka i svet dajet na 360 gradusov.

AlexVOK
27.02.2015, 12:53
Вячеслав Сергеев, так работать не будет

EXT_HEATER_PIN - это просто № ножки и никакой информации о состоянии не несет :)

Вячеслав Сергеев
27.02.2015, 13:30
AlexVOK, Я предполагал это, мне не найти строку в которой хранится состояние D12. Подскажите пожалуйста.

Петко Шкодров
27.02.2015, 17:10
В начале
boolean HEATER = false;


if(cur_temp < (float)aquaT){
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
HEATER = true;
}else{
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель
HEATER = false;
}

AlexNT
27.02.2015, 21:53
Ну... раз уж пошли бросаться кусками кода, то внесу парочку вредных идеек.
(Да, вот такой я вредный)
Определяем переменные состояния выводов ардуинки что-то типа тагого
// Переменные текущего состояния выводов Arduino
byte pinCoolingState;
byte pinLed1State;
//byte pinLed2State;
//byte pinLed3State;
//byte pinLed4State;
//byte pinLed5State;
//byte pinLed6State;
byte pinAirState;
byte pinCOState;
byte pinLight1State;
byte pinLight2State;
byte pinFilterState;
byte pinHeaterState;
byte pinPowerOnState;
byte pinDispLedState;
//byte pinUdoMacroState;
//byte pinUdoMicroState;
//byte pinUdoFeState;

Затем во всех местах проги, где встречается код типа

analogWrite(LED_LIGHT_PIN, displLedLight);
или
digitalWrite(EXT_HEATER_PIN, HIGH);

пишем:
pinDispLedState = displLedLight;
pinHeaterState = HIGH

Т.е. физически в ножки ардуинки ничего не пишем. Только задаем виртуально их текущее состояние. И только в конце Loop() вызываем функцию записи что-то вроде:

void SetPinState(void)
{ //Устанавливает выходы Arduino в заданное состояние
analogWrite(EXT_COOLING_PIN, pinCoolingState); //Вентилятор
analogWrite(LED_LIGHT_PIN, pinDispLedState); //Подсветка дисплея
analogWrite(EXT_LIGHT_LED1_PIN, pinLed1State); //Светодиодная подсветка
//analogWrite(EXT_LIGHT_LED2_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED3_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED4_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED5_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED6_PIN, pinLed1State);

digitalWriteFast(EXT_AIR_PIN, pinAirState);
digitalWriteFast(EXT_CO2_PIN, pinCOState);
digitalWriteFast(EXT_LIGHT_1_PIN, pinLight1State); //Светильник 1
digitalWriteFast(EXT_LIGHT_2_PIN, pinLight2State); //Светильник 2
digitalWriteFast(EXT_FILTER_PIN, pinFilterState); //Фильтр
digitalWriteFast(EXT_HEATER_PIN,); //Нагреватель
digitalWriteFast(EXT_POWER_ON_PIN,);
//digitalWriteFast(EXT_UDO_MACRO_PIN, pinUdoMacroState);
//digitalWriteFast(EXT_UDO_MICRO_PIN, pinUdoMicroState);
//digitalWriteFast(EXT_UDO_Fe_PIN, pinUdoFeState);
}

Таким образом, последовательно читая таймера мы не сталкиваемся с микросекундными бросками напряжения на выходах, когда один таймер включает нагрузку, а следом за ним другой таймер (или возможная подпрограмма обработки аварийных ситуаций) тут-же выключает ее. На выходе мы получаем уже четко сформированное состояние ВСЕХ ножек ардуинки.
Ну и плюс еще один Бонус - широкие возможности для эспериментов. Программа может обсчитывать кучу всяких выходов-нагрузок. Даже тех, которых на самом деле нет :) например с десяток каналов ледов для которых и выводов не хватит :) И только на последнем этапе вывести на конкретные ножки ардуинки или ипользовать регистры, расширители, а то и просто проигнорировать их не изменяя основной код программы или как вариант залить в "более ногастую" ардуину.

AlexNT
27.02.2015, 22:06
Ах да, забыл предупредить. Это не сработает на участках оригинального кода, где есть задержки как в обработке УДО
case 6: // UDO
udo_tim = (byte) (b4 & B00111111);
digitalWriteFast(EXT_POWER_ON_PIN, HIGH);
delay(100); //Время на выход в режим БП
switch ((byte) ((b4 >> 6) & B00000011)) {
case 0:
digitalWriteFast(EXT_UDO_MICRO_PIN, HIGH);
delay(udo_tim * 4.2);
digitalWriteFast(EXT_UDO_MICRO_PIN, LOW);
break;
case 1:
digitalWriteFast(EXT_UDO_MACRO_PIN, HIGH);
delay(udo_tim * 4.2);
digitalWriteFast(EXT_UDO_MACRO_PIN, LOW);
и так далее
Просто мне пока УДО не актуально и я "слегка позволил себе"
И да, у меня подключена библиотека digitalWriteFast.h так что в моем коде
digitalWriteFast()
можно заменить на обычное
digitalWrite()

sae74
27.02.2015, 23:28
AlexVOK,Из сообщения AlexNT я так понял что УДО дозатор вы просто делаете задержку?
Позволю предложить вставить возможность прерывания подачи.
Или это реализовано?

AlexNT
28.02.2015, 00:19
AlexVOK,Из сообщения AlexNT я так понял что УДО дозатор вы просто делаете задержку?
Позволю предложить вставить возможность прерывания подачи.
Или это реализовано?

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

Вячеслав Сергеев
01.03.2015, 14:04
В начале
boolean HEATER = false;


if(cur_temp < (float)aquaT){
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
HEATER = true;
}else
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель
HEATER = false;

Спасибо, завтра попробую.

paradox860
02.03.2015, 08:31
А кто разобрался как сделать так чтоб при вырубании света задания не проходили невыполненными? Смотрел скетч в этой теме, товарищ выкладывал, но как я понял там просто отдельная менюшка с интервальными таймерами...

AlexNT
02.03.2015, 11:51
А что еще надо?
Если таймер работает по ИНТЕРВАЛУ, то при включении света на первом-же цикле проверки таймеров будет произведена проверка попадания текущего времени в заданный для каждого из таймер ИНТЕРВАЛ. Соответственно все нагрузки управляемые ими включатся или выключатся согласно Вашим заданиям. Что и требовалось.

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

Вячеслав Сергеев
02.03.2015, 12:46
Благодаря Петко Шкодрову получилось вот так.

Sem
02.03.2015, 20:39
Благодаря Петко Шкодрову получилось вот так.

...***.dsn можно выложить? Версия Прота?

Вячеслав Сергеев
03.03.2015, 13:33
Sem, proteus 7.7

kolljj
11.03.2015, 14:52
Подскажите, при повторении силовой части нагрузки на симисторах, как они греются, обязателен ли радиатор. К примеру нагрузка до 100 Вт.

AlexVOK
11.03.2015, 16:30
kolljj, можно без радиатора
у меня грелка на 300Вт в это случае радиатор нужен
хотя недельку и без него работало ;)

Denisios
17.03.2015, 16:29
у меня грелка на 300Вт в это случае радиатор нужен
Рас для 300Вт грелки уже нужен радиатор, а у меня грелка на 500Вт. ТО может стоит симистор преобрести не BT-139, а другой? Что бы без радиатора. (силовая плата в процессе сборки)

asdff
18.03.2015, 10:06
AlexVOK, спасибо за проделанную работу!!!
1. Собрал, работает. с силовой частью непонятки: на дисплее "Light ON" - реле отключено (по идее на пин 0) и наоборот.И так по всем пункта (кормление-реле включается). (Блок реле на фото) Как можно поправить?
2. ШИМ LED еще не пробовал (хотя драйвер собран и на КА7500 по резистору работает)

Выкладываю фотки (кто то просил)

sae74
18.03.2015, 10:16
asdff, Хорошая Работа.

pimass
18.03.2015, 10:30
asdff, аккуратно вышло, только "дороги" бы пролудить, окислятся будут....

mikhail.glushko
18.03.2015, 10:43
Доброй день всем!
Планирую себе тоже собрать аква-контроллер на Ардуино.
Для управления силовой частью (http://arduino-ua.com/products_pictures/large_8xrelay5V_1.jpg) планирую использовать (http://arduino-ua.com/products_pictures/large_I2CtoGPIO.jpg) это должно сэкономить порты. К даному расширителю портов можно подключить 8+8 цифровых входов-выходов. для управления ШИМ планирую использовать (http://arduino-ua.com/products_pictures/large_L298moduleRed.jpg) который умеет управлять до 4 выходами, каждый по 1А (4*1А или 2*2А или 1*4А) в зависимости от того как его заюзать.

Может у кого есть опыт уже по сабжу?

sae74
18.03.2015, 10:47
mikhail.glushko, я извиняюсь, но какой опыт Вас интересует?

P.S. Сорри автору темы.

mikhail.glushko
18.03.2015, 11:00
mikhail.glushko, я извиняюсь, но какой опыт Вас интересует?

P.S. Сорри автору темы.

Интересуют примеры использования Драйвера на L298N для получения на сигналов на всех 4-х выходах.

sae74
18.03.2015, 11:05
Интересуют примеры использования Драйвера на L298N для получения на сигналов на всех 4-х выходах.

вот (http://cxem.net/arduino/arduino70.php)

mikhail.glushko
18.03.2015, 11:26
вот (http://cxem.net/arduino/arduino70.php)
Спасибо за ссылку, но это немножко не то.
В данном примере ШИМ идет на два вывода, два других используются для указания направления вращения. Меня интересует конфигурация драйвера и ШИМ на все 4 выхода.
P.S Задаю дурацкие вопросы так как я в этом не шарю, а тупо собрать схему могу...

asdff
18.03.2015, 11:32
pimass,
Спасибо. Специально перед пайкой элементов не лудил плату (отверстия делал впритык, а жидкого олова жалко - экономлю под smd). так что лужение, смывка флюса и покрытие лаком еще впереди :-)

Dima 111
18.03.2015, 19:19
Добрый вечер пытаюсь прошить ардуино в первый раз при прошивке выдает ,, ошибка компиляции программы,,

mikhail.glushko
18.03.2015, 19:39
Добрый вечер пытаюсь прошить ардуино в первый раз при прошивке выдает ,, ошибка компиляции программы,,

Переписал библиотеки, пробую скомпилировать скетч, - выдает:
C:\Program Files\Arduino\libraries\LCD5110\DefaultFonts.c:12: 14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype SmallFont[] PROGMEM =
^
C:\Program Files\Arduino\libraries\LCD5110\DefaultFonts.c:117 :14: error: variable 'BigNumbers' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype BigNumbers[] PROGMEM =
^
Ошибка компиляции.

Подскажите где копать?

AlexNT
19.03.2015, 08:24
Переписал библиотеки, пробую скомпилировать скетч, - выдает:
C:\Program Files\Arduino\libraries\LCD5110\DefaultFonts.c:12: 14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype SmallFont[] PROGMEM =


Вариант 1 - Использовать для компиляции Arduino IDE версии 1.0.6 или что-то около того.
Если не путаю, то с версии 1.5.7 поменяли компилятор gcc и если хочется использовать версии IDE выше этой то:
Вариант 2 - В библиотеке LCD5110 в файле DefaultFonts.c строчки вида
fontdatatype SmallFont[] PROGMEM =
поменять на
fontdatatype const SmallFont[] PROGMEM =

Аналогично для других шрифтов (их там пару штук)

AlexNT
19.03.2015, 08:29
Только что сообразил... Может было бы более корректно в том-же файле просто поменять
#if defined(__AVR__)
#include <avr/pgmspace.h>
#define fontdatatype uint8_t
на
#if defined(__AVR__)
#include <avr/pgmspace.h>
#define fontdatatype uint8_t const

но так не проверял

mikhail.glushko
19.03.2015, 09:09
Вариант 1 - Использовать для компиляции Arduino IDE версии 1.0.6 или что-то около того.
Если не путаю, то с версии 1.5.7 поменяли компилятор gcc и если хочется использовать версии IDE выше этой то:
Вариант 2 - В библиотеке LCD5110 в файле DefaultFonts.c строчки вида
fontdatatype SmallFont[] PROGMEM =
поменять на
fontdatatype const SmallFont[] PROGMEM =

Аналогично для других шрифтов (их там пару штук)

Прописал const и все пошло "как дети в школу".

mikhail.glushko
19.03.2015, 09:22
Есть вопрос по Real Time Clock Модуль с батарейкой (DS1307), вроде такой как у вас на схеме. Чем отличается подключение с того боку что вы сделали от противоположного?

P.S. Я изначально заюзал те контакты что возле контактов датчика температуры и все работало нормально. Пробую вашу схему (+ мое подключение) - и мне выдает вместо времени какой то бред вида 25:85, ггг.

Спасибо.

pimass
19.03.2015, 11:33
а жидкого олова жалко - экономлю под smd Это да.... Дорогое удовольствие, я сам юзаю сплав Розе, отлично выходит и времени занимает минут 10.
Вроде не плохо выходит.
https://lh3.googleusercontent.com/-HKGmiMWSkeg/T_3R8ZZnTcI/AAAAAAAABGA/02em2h3w-1E/w949-h712-no/DSC00532.JPG

Вячеслав Сергеев
19.03.2015, 18:48
AlexVOK, спасибо за проделанную работу!!!
1. Собрал, работает. с силовой частью непонятки: на дисплее "Light ON" - реле отключено (по идее на пин 0) и наоборот.И так по всем пункта (кормление-реле включается). (Блок реле на фото) Как можно поправить?
2. ШИМ LED еще не пробовал (хотя драйвер собран и на КА7500 по резистору работает)

Выкладываю фотки (кто то просил)

Красиво, а печатку не жалко?

kolljj
19.03.2015, 21:02
осмелюсь так же предложить вариант исполнения.

P.S. До конца еще не довел (не испытывал силовую часть "220В"). Компонуя в такое расположение хотел добиться следующего:
1. Нашел достаточно дешевый корпус, не сильно громадный но в него с лихвой все вмещается.
2. Силовая часть на симисторах (BT139) и твердотельных реле МОС3063, что должно снизить нагрев симисторов при переключении.
3. Плата делалась под SMD резисторы, но в некоторых случаях предусмотрены отверстия под обычные.
4. Подключения всех нагрузок, дисплея, кнопок да и подключение всех плат сделано на разьемах, учтен опыт первой сборки. Может для кого то будет минусом что нет розеток, вместо них я использовал колодки для подключения проводов на прямую (кому нужны розетки легко может их подключить к колодкам)
5. Корпус легко закрепить на любую стену, так же можно просто положить или поставить.
6. Предусмотрено как питание от 5 вольтового блока так и от 12 вольтового (есть место под кренку)
7. Кнопки и дисплей приклеены с помощью термоклея, можно прикрутить но получается не тот вид.
8. В данном варианте не предусмотрен обвес на УДО, но навсякий случай предусмотрены свободные площадки и кому нужно может реализовать.

Sem
19.03.2015, 21:49
осмелюсь так же предложить вариант исполнения.

в 7 лае?
6-й не открываетcode13

kolljj
19.03.2015, 22:11
в шестом вот скрин

asdff
20.03.2015, 08:39
Красиво, а печатку не жалко?

Конечно не жалко :-) Плата сделана под мыльницу (поэтому и длинные кнопки) на фото (уж больно они мне нравятся под небольшие корпуса, легкая обработка и т.д. при цене в 12 руб :-)
Наименование выходов (длинный разъем) проверте по пинам (перепутаны несколько, а поправить не успел). Плата в layout_5.
Еще фотка с применением мыльницы, китайский метр всяко-разного (с неисправным електролитом - большой ESR)

asdff
20.03.2015, 08:47
осмелюсь так же предложить вариант исполнения.

P.S. До конца еще не довел (не испытывал силовую часть "220В"). Компонуя в такое расположение хотел добиться следующего:
1. Нашел достаточно дешевый корпус, не сильно громадный но в него с лихвой все вмещается.
2. Силовая часть на симисторах (BT139) и твердотельных реле МОС3063, что должно снизить нагрев симисторов при переключении.
3. Плата делалась под SMD резисторы, но в некоторых случаях предусмотрены отверстия под обычные.
4. Подключения всех нагрузок, дисплея, кнопок да и подключение всех плат сделано на разьемах, учтен опыт первой сборки. Может для кого то будет минусом что нет розеток, вместо них я использовал колодки для подключения проводов на прямую (кому нужны розетки легко может их подключить к колодкам)
5. Корпус легко закрепить на любую стену, так же можно просто положить или поставить.
6. Предусмотрено как питание от 5 вольтового блока так и от 12 вольтового (есть место под кренку)
7. Кнопки и дисплей приклеены с помощью термоклея, можно прикрутить но получается не тот вид.
8. В данном варианте не предусмотрен обвес на УДО, но навсякий случай предусмотрены свободные площадки и кому нужно может реализовать.

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

Dima 111
21.03.2015, 23:57
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows XP), Board: "Arduino Nano w/ ATmega168"
aqua_controll:35: error: 'LCD5110' does not name a type
aqua_controll:46: error: 'OneWire' does not name a type
aqua_controll:59: error: 'DS1307' does not name a type
aqua_controll:61: error: 'Time' does not name a type
aqua_controll.ino: In function 'void setup()':
aqua_controll:137: error: 'myGLCD' was not declared in this scope
aqua_controll:146: error: 'rtc' was not declared in this scope
aqua_controll:173: error: 'temp' was not declared in this scope
aqua_controll.ino: In function 'float getTemp()':
aqua_controll:214: error: 'temp' was not declared in this scope
aqua_controll.ino: In function 'void drawMenu(String, String, String, String, String)':
aqua_controll:300: error: 'myGLCD' was not declared in this scope
aqua_controll:304: error: 'rtc' was not declared in this scope
aqua_controll:304: error: 'FORMAT_SHORT' was not declared in this scope
aqua_controll:304: error: 'RIGHT' was not declared in this scope
aqua_controll.ino: In function 'void drawIntMenu(String, int, int, int)':
aqua_controll:349: error: 'myGLCD' was not declared in this scope
aqua_controll:358: error: 'CENTER' was not declared in this scope
aqua_controll.ino: In function 'void loop()':
aqua_controll:392: error: 'temp' was not declared in this scope
aqua_controll:439: error: 'time' was not declared in this scope
aqua_controll:439: error: 'rtc' was not declared in this scope
aqua_controll:606: error: 'myGLCD' was not declared in this scope
aqua_controll:829: error: 'myGLCD' was not declared in this scope
aqua_controll:863: error: 'FORMAT_SHORT' was not declared in this scope
aqua_controll:863: error: 'RIGHT' was not declared in this scope
aqua_controll:1013: error: 'myGLCD' was not declared in this scope
aqua_controll:1040: error: 'FORMAT_SHORT' was not declared in this scope
aqua_controll:1040: error: 'RIGHT' was not declared in this scope
aqua_controll:1430: error: 'myGLCD' was not declared in this scope
aqua_controll:1434: error: 'FORMAT_SHORT' was not declared in this scope
aqua_controll:1434: error: 'RIGHT' was not declared in this scope
aqua_controll:1516: error: 'myGLCD' was not declared in this scope
aqua_controll:1520: error: 'FORMAT_SHORT' was not declared in this scope
aqua_controll:1520: error: 'RIGHT' was not declared in this scope
aqua_controll:1670: error: 'myGLCD' was not declared in this scope
Вот такое пишет при компиляции.
Помогите я чайник в этом деле, кто уже загружал в Ардуину . Напишите как мне загрузить. Буду очень признателен!!!

kolljj
22.03.2015, 09:37
на вскидку..
1. скачайте новую программу у Вас 1.0.6 , а нужно не ниже 1.5.7
2. У вас отсутствуют библиотеки для LCD5110, OneWire, DS1307,

Библиотеки есть в шапке, а программу можете скачать с официального сайта или где то тут на форуме был архивчик.

GreyJester
22.03.2015, 10:28
Вот моя силовая часть, правда она задумывалась для другого контроллера.
Если кто будет повторять, обязательно проверьте печатку, в работе пока не проверял.
!Обратите внимание, используется МС ULN2803 и поэтому управление опторазвязкой происходит "минусом", а не "плюсом" как на схеме!
Среди печаток есть "управление силой" там на МК делалась передача сигнала управления каналами на нескольких "проводах", идея не моя, поэтому эту часть можно убрать.

Dima 111
22.03.2015, 19:43
на вскидку..
1. скачайте новую программу у Вас 1.0.6 , а нужно не ниже 1.5.7
2. У вас отсутствуют библиотеки для LCD5110, OneWire, DS1307,

Библиотеки есть в шапке, а программу можете скачать с официального сайта или где то тут на форуме был архивчик.
Компилирование прошло успешно но не получаеться загрузить на плату.
Использую програматор USBasp S51&AVR может кто уже прошивал с его помощью?

kolljj
22.03.2015, 20:25
:програматор USBasp?

я USBasp только и прошиваю.
1. правильно его подсоединить
2 Правильно выставить в настройках тип процесстора, тип платы, тип программатора
3. Для прошивки использовать: Файл - Вгрузить через программатор, правильность должен моргать светодиод на програматоре

Dima 111
22.03.2015, 22:36
у меня горит синий на програматоре и красный на ардуине и когда после компиляции начинаеться прошивка ничего не моргает прошить никак не получаеться может надо подать доп питание на плату

Andressio
22.03.2015, 22:54
Попробуй как только программа выдает размер файла для загрузки нажать reset на ардуине, хотя на usbasp должен быть свой reset

Mehannik
06.04.2015, 10:45
Ребят подскажите по пункту термостат?? как и что !
и подскажите можноли на расвете закате поставить придел шима тоесть чтобы не на полную горел диод??? может надо гдето в каой то строке изминить ? подскажите!

AlexVOK
06.04.2015, 11:08
Mehannik,
если я правильно понял ваш вопрос
то нужно просто заменить 255 на ваш "потолок" максимальное значение

if (LED_cur_pos >= led_val){
led_tmp = 255;
LED_sunrise = 0;
}else{
led_tmp = LED_cur_pos*255/led_val;
}
if(!is_sunrise){ // Закат
led_tmp = 255 - led_tmp;
}

Mehannik
06.04.2015, 19:36
Ребят подскажите по пункту термостат?? как и что ! что надо выстовить чтобы куллер работал как охолождение по датчику!

AlexVOK
06.04.2015, 19:47
Mehannik, устанавливаете нужную температуру воды
если вода в банке
холоднее - включается грелка
если больше - куллер

+ гистерезис

Mehannik
06.04.2015, 19:55
Mehannik, устанавливаете нужную температуру воды
если вода в банке
холоднее - включается грелка
если больше - куллер

+ гистерезис

обьясниете что такое

Cooltime
CoolMin
CoolMax

AlexVOK
06.04.2015, 19:58
обьясниете что такое

Cooltime
CoolMin
CoolMax

Cooltime - период времени когда разрешена работа куллера - я люблю спать в тишене
CoolMin - минимальные обороты куллера
CoolMax - максимальные обороты куллера

Mehannik
06.04.2015, 20:13
Что то я не понимаю ! датчик нагреваю температура поднимается ,куллер молчит! даже сигнала на прямую с ардуино не выходит! а когда охолождаю все четко отробатывает нагреватель!

AlexVOK
06.04.2015, 20:16
нужно установить в меню Cooltime
например начало в 7 утра вкл
и в 23 выкл

и в период от 7 до 23 будет включатся куллер

Mehannik
06.04.2015, 20:58
нужно установить в меню Cooltime
например начало в 7 утра вкл
и в 23 выкл

и в период от 7 до 23 будет включатся куллер

А сколько надо выстовить оборотов??? просто как вы сказали я все сделал куллер завелся но он теперь не остонавливается)) даже если я остужаю датчик !

AlexVOK
06.04.2015, 22:21
выставленные параметры в студию

а то хрустальный шар сломался :)

Mehannik
06.04.2015, 22:38
выставленные параметры в студию

а то хрустальный шар сломался :)

coolmin 20
coolmax 255
таймер 7утра до 23-59вечера
температура 25 выстовлена!
а реальная температура с датчика 24,38
включилась грелка! но винтилятор как крутился так и крутится! и еще прикол когда в меню light off и Air off то и винтилятор глохнет! может что то с программой не так??

Mehannik
07.04.2015, 09:54
Вывел вчера такую закономерность что это все же глюк программы так как датчик к этому каналу вообще не как не относится (именно по охолождению) по грелке отробатывает как молодец) и таймер тоже (по назначенному времени вентилятор не отключился) ! работает только минимальная и максимальная скорость и то когда в реальном времени ее регулируешь!

AlexVOK
07.04.2015, 12:30
да нет там никаких глюков
больше полугода работает на действующей банке ;)

читаем код
// Управление нагревом и охлаждением ----------------------------------------------
if(cur_temp < (float)aquaT){
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
}else
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель

if (CoolingEnabled) {
if(cur_temp > ((float)aquaT+0.1)){ // Разрешено ли охлаждение куллером
int coll_cur = minCool+(((float)(maxCool - minCool))/100)*(((float)(cur_temp-aquaT))/0.5)*100;
if (coll_cur > maxCool) { coll_cur = maxCool;}
analogWrite(EXT_COOLING_PIN, coll_cur); // включает куллер
}else{
analogWrite(EXT_COOLING_PIN, minCool); // включаем режим проветривания
}
}else{
if (air||light1){
analogWrite(EXT_COOLING_PIN, minCool); // включаем режим проветривания
}else{
digitalWrite(EXT_COOLING_PIN, LOW); // выключает куллер
}
}
}

одна особенность если даже в "период сна" включается свет или компрессор
тогда принудительно включаю куллер - для того, чтоб под крышкой не скапливался конденсан или не перегревалась лампа.
гистерезис вниз = 0, вверх 0,1
в пределах 0,5 градусов обороты куллера плавно меняются от минимума до максимума

Все работает в железе.

sae74
07.04.2015, 12:46
AlexVOK, Если сказали что глюк - ищите глюк. Откуда Вы знаете что его там нету?:patstalom:

Mehannik
07.04.2015, 12:49
да нет там никаких глюков
больше полугода работает на действующей банке ;)

читаем код
// Управление нагревом и охлаждением ----------------------------------------------
if(cur_temp < (float)aquaT){
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
}else
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель

if (CoolingEnabled) {
if(cur_temp > ((float)aquaT+0.1)){ // Разрешено ли охлаждение куллером
int coll_cur = minCool+(((float)(maxCool - minCool))/100)*(((float)(cur_temp-aquaT))/0.5)*100;
if (coll_cur > maxCool) { coll_cur = maxCool;}
analogWrite(EXT_COOLING_PIN, coll_cur); // включает куллер
}else{
analogWrite(EXT_COOLING_PIN, minCool); // включаем режим проветривания
}
}else{
if (air||light1){
analogWrite(EXT_COOLING_PIN, minCool); // включаем режим проветривания
}else{
digitalWrite(EXT_COOLING_PIN, LOW); // выключает куллер
}
}
}

одна особенность если даже в "период сна" включается свет или компрессор
тогда принудительно включаю куллер - для того, чтоб под крышкой не скапливался конденсан или не перегревалась лампа.
гистерезис вниз = 0, вверх 0,1
в пределах 0,5 градусов обороты куллера плавно меняются от минимума до максимума

Все работает в железе.

ну раз так ,я же не могу запутаться в2х проводах правельно?)))

Mehannik
07.04.2015, 13:29
подскажите тогда куда копать и что делать??

AlexVOK
07.04.2015, 14:12
sae74, это опен соурс
т.е. отдается как есть

сделал, отладил, поделился
на вопросы по возможности отвечаю.

Даже поясняю прокоментированный код.

если у вас что то не работает. - дайте максимально четкое описание ситуации

Если у меня в железе это работает, и по коду это должно работать,
то за отладку я не берусь :(


Mehannik, - нужно отлаживать
в выше приведенный кусок встраиваем отладочную печать и смотрим что творится
по результату делаем выводы и соответствующие правки.

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

Mehannik
07.04.2015, 14:27
sae74, это опен соурс


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

выже мне сами скидывали иде с билиотеками 1,5,7 ! я вчера даже на ардуино мега это собирал тоже самое все!и скетч перезагружал с сайта

sae74
07.04.2015, 15:02
sae74, это опен соурс
т.е. отдается как есть

сделал, отладил, поделился
на вопросы по возможности отвечаю.

Даже поясняю прокоментированный код.

если у вас что то не работает. - дайте максимально четкое описание ситуации

Если у меня в железе это работает, и по коду это должно работать,
то за отладку я не берусь

Это бы вообще то сарказм с моей стороны...

Andressio
08.04.2015, 09:42
Подскажите а можно ли в библиотеку LCD5110 добавить кирилицу , хотя бы как это сделал Петко Шкодоров в сообщение #221, я чтото вообще не могу понять как у него это работает.

AlexVOK
08.04.2015, 09:48
Andressio, он подменил файл с массивом знакогенератора
суть вместо символа "D"="В"
единственное неудобство писать в тексте скетча латиницой "ghbdtn" = "привет"
а так все работает

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

будут вопросы - задавайте

Mehannik
08.04.2015, 10:06
Andressio, он подменил файл с массивом знакогенератора
суть вместо символа "D"="В"
единственное неудобство писать в тексте скетча латиницой "ghbdtn" = "привет"
а так все работает

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

будут вопросы - задавайте

Дня доброго! вчера урезал скет( убрал полностью УДО) память по освободил а проблемма вентилятора так и осталась!
можно ли как то полностью очистить ардуино? может там мусор какой в памети хрониться? и подскожите почу все таймера начинаются со значения 36 ?

Andressio
08.04.2015, 10:23
хорошо, а как узнать какой код нужен допустим для буквы "Ы" или "Ш" ? я не пойму почему в его файле анлийской букве "с" соответствует русская "Ц"? Вопрос к уважаемомому Петко Шкодров, поделитесь секретом.

AlexVOK
08.04.2015, 11:18
Mehannik,
в скетче есть
// Init EEPROM
// for(int e = 0; e < 2047; e++) EEPROM.write(e,0);

просто раскоментируй одну строку залей скетчь
потом верни все как было
и залей опять - это полностью очистит ЕЕПРОМ


Andressio, ну какие буквы на какие менять (таблица соответствия)
это ж не принципиально - сделайте свою,
это не так важно
главное в скетче правильно написать ;)

Mehannik
08.04.2015, 11:30
Mehannik,
в скетче есть
// Init EEPROM
// for(int e = 0; e < 2047; e++) EEPROM.write(e,0);

просто раскоментируй одну строку залей скетчь


тоесть это?

// Init EEPROM
// for(int e = 0; e < 2047; e++) EEPROM.write(e,0);
// EEPROM.write(0,61); // ledContrast !!!!!!! Очень акуратно иначе белый либо черный экран
// EEPROM.write(1,200); // ledLight
// EEPROM.write(2,24); // Требуемая температура воды
// EEPROM.write(3,1); // Разрешено ли охлаждение куллером

а последнее что это ?

и какую именно стору раскоментировать ? эту // Init EEPROM или эту ? // for(int e = 0; e < 2047; e++) EEPROM.write(e,0);

Andressio
08.04.2015, 11:40
AlexVOK, можно немножко поподробнее, я в этом деле новичек так что простите за может быть глупые вопросы. возьмем для примера строчку из DefaultFonts.c:

0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J

как я понимю, то что стоит до // это код который дисплей воспримет для отображения символа "J"?

Допустим я исправляю эту строчку:

0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J Ж

как дисплей понимает что нужно рисовать не "J" а "Ж" тоесть закрашивать совсем другие пикселы?

AlexVOK
08.04.2015, 14:19
AlexVOK, возьмем для примера строчку из DefaultFonts.c:

0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J

как я понимю, то что стоит до // это код который дисплей воспримет для отображения символа "J"?

Допустим я исправляю эту строчку:

0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J Ж

как дисплей понимает что нужно рисовать не "J" а "Ж" тоесть закрашивать совсем другие пикселы?

на самом деле для отображения буквы
берется ее ASCI код - по коду находится соответствующее место(строчка)
в массиве
А в этой строке 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, собственно в битовом виде указаны точки из которых состоит конкретный символ

По этому подменяя эти строки мы вместо латинской буквы можем получить хоть кирилицу хоть иероглиф

я даже где-то в нете встречал готовый редактор этих битовых маск

AlexVOK
08.04.2015, 14:21
Mehannik,
for(int e = 0; e < 2047; e++) EEPROM.write(e,0);

Andressio
08.04.2015, 15:11
на самом деле для отображения буквы
берется ее ASCI код - по коду находится соответствующее место(строчка)
в массиве
А в этой строке 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, собственно в битовом виде указаны точки из которых состоит конкретный символ

По этому подменяя эти строки мы вместо латинской буквы можем получить хоть кирилицу хоть иероглиф

я даже где-то в нете встречал готовый редактор этих битовых маск

ага, таперь понятно, а можно не подменивать строки, а добавить, чтобы были и английские и килица?

Mehannik
08.04.2015, 15:26
Mehannik,
в скетче есть
// Init EEPROM
// for(int e = 0; e < 2047; e++) EEPROM.write(e,0);


сделал так

// Init EEPROM
# for(int e = 0; e < 2047; e++) EEPROM.write(e,0);
// EEPROM.write(0,61); // ledContrast !!!!!!! Очень акуратно иначе белый либо черный экран
// EEPROM.write(1,200); // ledLight
// EEPROM.write(2,24); // Требуемая температура воды
// EEPROM.write(3,1); // Разрешено ли охлаждение куллером


а он мне выдает вот что!!!!!!!!!!!!

Arduino: 1.5.7 (Windows 7), Board: "Arduino Nano, ATmega328"

Build options changed, rebuilding all

aqua_controll.ino:124:4: error: invalid preprocessing directive #for

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

Mehannik
08.04.2015, 15:42
очистил память этим

/*
* EEPROM Clear
*
* Sets all of the bytes of the EEPROM to 0.
* This example code is in the public domain.

*/

#include <EEPROM.h>

void setup()
{
// write a 0 to all 512 bytes of the EEPROM
for (int i = 0; i < 512; i++)
EEPROM.write(i, 0);

// turn the LED on when we're done
digitalWrite(13, HIGH);
}

void loop()
{
}

все равно кулер также равботает! может ли повлиять транзистор? по схеме стоит irf510 а я поставил irfz44

AlexVOK
08.04.2015, 17:04
Mehannik,
1 зачем вы вставили в код #
об этом вам и написал компилятор

2 вы очистили только 512б из 2к ЕЕПРОМ
выполните for(int e = 0; e < 2047; e++) EEPROM.write(e,0);
3 изменение типа транзистора не влияет - если он исправен (не пробит)

AlexVOK
08.04.2015, 17:05
ага, таперь понятно, а можно не подменивать строки, а добавить, чтобы были и английские и килица?

конечно можно, но
1 это не так просто
2 памяти и так мало

самое критичное последнее

Mehannik
08.04.2015, 17:13
Mehannik,
1 зачем вы вставили в код #
об этом вам и написал компилятор

2 вы очистили только 512б из 2к ЕЕПРОМ
выполните for(int e = 0; e < 2047; e++) EEPROM.write(e,0);

Напишите тогда как выполнить то?)

AlexVOK
08.04.2015, 17:16
Mehannik, максимально подробно описано в посте #585

разве что добавлю
раскоментировать = убрать //

Andressio
08.04.2015, 17:25
конечно можно, но
1 это не так просто
2 памяти и так мало

самое критичное последнее
Понятно, расскажете как добавить или для новичка это сложно?

Mehannik
08.04.2015, 19:03
Mehannik, максимально подробно описано в посте #585

разве что добавлю
раскоментировать = убрать //

все очистил! но так все и работает! последняя просьба скиньте свой скетч скомпа а не ссайта))) если не прокатит буду собирать отдельно термостат на охолождения))) раз в прошивка рабочая!

AlexVOK
09.04.2015, 09:16
Andressio, в интернете встречал 2 решения
но обо далеко не тривиальные.
отчасти упираются в компилятор.

я б не брался.
Да и реальной задачи под это нет.

mikhail.glushko
09.04.2015, 09:22
Andressio, в интернете встречал 2 решения
но обо далеко не тривиальные.
отчасти упираются в компилятор.

я б не брался.
Да и реальной задачи под это нет.

Ну как вариант можно подменить только часть шрифта, скажем вместо маленьких английских букв подставить матрицу русских, как бы по транслитерации. Например, когда хочешь вывести большую английскую "С" - то ее и получишь, когда хочешь вывести маленькую английскую "с" - получишь "Ц". Только проблема в том что "англицких" буков меньше русских, гггг :)

Mehannik
09.04.2015, 10:01
AlexVOK, Подскажите мне что можно еще сделать по моей проблемме?

Петко Шкодров
09.04.2015, 10:07
Ну как вариант можно подменить только часть шрифта, скажем вместо маленьких английских букв подставить матрицу русских, как бы по транслитерации. Например, когда хочешь вывести большую английскую "С" - то ее и получишь, когда хочешь вывести маленькую английскую "с" - получишь "Ц". Только проблема в том что "англицких" буков меньше русских, гггг :)

Можно заменить и некоторые символы.:)

AlexVOK
09.04.2015, 10:39
Mehannik,
если в переменной minCool у вас значение 0
должно отключатся
Вложил скетчь который залит в мой контроллер
(он должен быть один в один с тем что в шапке темы).

Вопрос
У вас хоть иногда куллер отключается?
может полевик пробит?

AlexVOK
09.04.2015, 10:43
Петко Шкодров,
вместо свободных буков,
можно нарисовать спец символы, значки, псевдографику

кто возьмется?

Mehannik
09.04.2015, 10:47
Mehannik,


Вопрос
У вас хоть иногда куллер отключается?
может полевик пробит?

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

Mehannik
09.04.2015, 10:50
Ну вот как то так , замостырил крышку со всеми прибомбасами! силовую часть вынес за пределы аквы! а то вдруг тыдыщь )))) но пока без охолождения))))

http://www.isok.ru/img/full/b33adc0bc21f8bb9394024c0558d4e24.jpg
http://www.isok.ru/img/full/0d4b13641aec0a32c0123b2464c75a0a.jpg
http://www.isok.ru/img/full/22aa535600f66391d28842147f9843d8.jpg
http://www.isok.ru/img/full/18e50d613d655d328eded43e74af083c.jpg
http://www.isok.ru/img/full/ea6a26d717cac6abb258371e44794b61.jpg
http://www.isok.ru/img/full/f140d521f7474c74098ff132f97ec24c.jpg

kolljj
09.04.2015, 14:03
Петко Шкодров,
вместо свободных буков,
можно нарисовать спец символы, значки, псевдографику

кто возьмется?

А что нужно нарисовать? какие картинки или иконки, поподробнее.

Mehannik
10.04.2015, 22:33
Mehannik,
если в переменной minCool у вас значение 0
должно отключатся
Вложил скетчь который залит в мой контроллер
(он должен быть один в один с тем что в шапке темы).

Вопрос
У вас хоть иногда куллер отключается?
может полевик пробит?

Доброго время суток! вроде разобрался ! но я не верю в случайности и совподения! НО! поменял прошивку что вы мне дали и вентилятор начал работать но только на следующие сутки! срузу не хочет не могу понять почему! и еще начала вылезать ошибка датчика(ERROR) может быть ли какая нить помеха проходить через кабель? я запустил в одном кабеле и питание ардуино и питание светодиодов! но кабель датчика идет по другой стороне крышке! и еще питаю ардуино БП на 18 вольт через кренку 7805 (БП 18v 0.6A)

AlexNT
11.04.2015, 12:01
вместо свободных буков,
можно нарисовать спец символы, значки, псевдографику

кто возьмется?

Ну я рисовал...
Шрифт 8х8 вместо цифр.

fontdatatype const SymbFont[] PROGMEM =
{
0x08, 0x08, 0x30, 0x08,
0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // 0
0X00, 0x1C, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C, // 1 Кружок
0X00, 0x1C, 0x22, 0x5D, 0x5D, 0x5D, 0x22, 0x1C, // 2 Кружок с точкой
0X00, 0x1C, 0x3E, 0x7F, 0x7F, 0x7F, 0x3E, 0x1C, // 3 Кружок закрашенный
0X00, 0x7F, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7F, // 4 Квадратик
0X00, 0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x41, 0x7F, // 5 Квадратик с точкой
0X00, 0x7F, 0x4D, 0x59, 0x71, 0x49, 0x47, 0x7F, // 6 Квадратик с птичкой
0X00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, // 7 Квадратик закрашенный
//8
//9
};

Это я вместо графики в меню контроллера ставил (кружок, кружок с точкой) Могу еще какие надо символы добавить...

AlexVOK
11.04.2015, 22:08
Доброго время суток! вроде разобрался ! но я не верю в случайности и совподения! НО! поменял прошивку что вы мне дали и вентилятор начал работать но только на следующие сутки! срузу не хочет не могу понять почему! и еще начала вылезать ошибка датчика(ERROR) может быть ли какая нить помеха проходить через кабель? я запустил в одном кабеле и питание ардуино и питание светодиодов! но кабель датчика идет по другой стороне крышке! и еще питаю ардуино БП на 18 вольт через кренку 7805 (БП 18v 0.6A)

1. по поводу датчика температуры - такое бывает часто от помех
помехи могут быть по питанию или по шине данных
- попробуйте на выводы датчика припаять електролит 10мкФ или что найдется под рукой и керамику на 0.1 мкФ ;)
- использовать витую пару для провода данных
2. по поводу кренки условия у нее жестковатые
можно подстраховаться и поставить две последовательно на 12В и потом на 5В

ШИМ создает достаточно много помех ;(

Mehannik
13.04.2015, 12:38
1. по поводу датчика температуры - такое бывает часто от помех
помехи могут быть по питанию или по шине данных
- попробуйте на выводы датчика припаять електролит 10мкФ или что найдется под рукой и керамику на 0.1 мкФ ;)
- использовать витую пару для провода данных
2. по поводу кренки условия у нее жестковатые
можно подстраховаться и поставить две последовательно на 12В и потом на 5В

ШИМ создает достаточно много помех ;(

кондюки припоя стало лучше на много ошибка выскакивает примерно раз в час а без их каждые 3 секунды! по кренкам все уладил поставил БП 12 вольт! и еще вопрос на который не ответили впрошлом посте! почему таймера и термостат не работает сразу а только на утро??? так задуманно или это у меня что то не так?

AlexVOK
13.04.2015, 19:02
кондюки припоя стало лучше на много ошибка выскакивает примерно раз в час а без их каждые 3 секунды! по кренкам все уладил поставил БП 12 вольт! и еще вопрос на который не ответили впрошлом посте! почему таймера и термостат не работает сразу а только на утро??? так задуманно или это у меня что то не так?

Разнесите провода питания и датчика по дальше друг от друга - ошибки должны вообще исчезнуть.

По поводу таймеров вопрос не понял.
если сейчас 10:00 а вы настраиваете таймер на 9:00 то он сработает через сутки.
если сейчас 10:00 а вы настраиваете таймер на 10:10 - он должен сработать через 10 мин
(конечно нужно учитывать дни недели - у меня во всех таймерах все дни недели отмечены - может там глюк? - я не проверял, но должно работать)

Olegvs
14.04.2015, 02:45
AlexVOK, помогите пожалуйста разобраться с таймерами led. Не пойму значения Act и Pas, также On Off и алгоритм восхода- заката. В одном таймере можно выставлять только восход или закат или оба действия одновременно?
Просто попытался выставить восход и закат, восход происходит нормально, а вот закат ни в какую... Заранее благодарю за разъяснение.

AlexVOK
14.04.2015, 09:29
Olegvs,
Act и Pas - таймер используется или нет
дальше задается это закат или рассвет и время плавного наростания от 0 - до мксимума
или спадания от максимума до 0

в пресном аквариуме я не использую светодиодов
в морском на той же ардуинке у меня полноценный 6-и канальный свет
ссылка на тему в шапке

Unforgiven
16.04.2015, 21:46
Может кто нибудь проверить, правильно ли я развел плату или нет, и если есть возможность поправить косяки

kolljj
18.04.2015, 21:52
AlexVOK, Подскажите пожалуйста, по чему в программе прописано #define Key_PIN 7, а не #define Key_PIN 21.

AlexVOK
19.04.2015, 10:46
kolljj,
Key_PIN используется в функции аналогового чтения
7 - линия А7
если нужно читать этот пин как цыфровой вход то нужно 21

для аналога А7 - 7=21 (это чисто мой вывод - нужно глянуть в документации)

Denisios
19.04.2015, 16:20
AlexVOK, подскажите, с какой целью часы подключены не к шине i2c?

AlexVOK
19.04.2015, 18:31
Denisios,
так как ардуино это игрушка
а не полноценное решение

Возьмите авр студию и на чистом Си можно написать
намного компактнее и правильней

А вот той либе часов которую я использовал (первая которую выдал гугл) далеко всеравно к каким ногам подключать часы - как как протокол там реализован программно ;)

конкретные выводы были выбраны только удобством подключения на макетке

spolyakov
19.04.2015, 19:19
Ребята помогите пожалуйста, собираю данный контроллер. Пока не пришла ардуинка решил собрать плату управления 3мя насосами Ulka, схема прикреплена ниже. Так вот собрал я это добро, решил испытать подключив входы на оптрон через 5В 2А источник питания - один канал сразу заработал, а два других глухо. Проверил схему и работу всех элементов - выяснилось что не работают оптроны. Поставил вместо резистора на 470 Ом магазин сопротивлений и выяснилось чтобы сработал оптрон (загорелся диод) нужен резистор на 300Ом , а на последнем канале вообще 210Ом.
Как такое вообще возможно? Если смотреть даташид МОС 3052 и посчитать этот резистор его номинал должен быть 385Ом. Подскажите пожалуйста просто заменить резисторы? я не спалю ноги у ардуинки при таких номиналах?

П.С. я новичек в электронике это мой первый опыт не пинайте пожалуйста, если что-то не так говорю. Заранее спасибо!

http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=206787&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=206787')

AlexVOK
19.04.2015, 21:06
spolyakov,
ардуинке от нагрузки в 200 Ом ничего не случится

а вот вашим тестом вы скорее всего сожгли светодиоды в оптроне
(если подали на вход 5В без токоограничивающего резистора)

kolljj
19.04.2015, 21:24
Как такое вообще возможно?

[/url]


- Какое напряжение вы подаете на вход (какой блок питания используете)?

spolyakov
19.04.2015, 21:24
Я подавал через набор сопротивлений от 470 ом и ниже пока оптрон не открылся. Я правильно понимаю, что ничего спалить немог? Не понимаю почему один и тотже оптрон при одинаковых резисторах один открывается а другие нет???

spolyakov
19.04.2015, 21:26
- Какое напряжение вы подаете на вход (какой блок питания используете)?
Блок питания импульсный 5В 2А через резистор 470Ом один канал открывается, а два других работают при 300 Омах и 210Ом не могу понять почему так...

kolljj
19.04.2015, 21:27
Вы подключаете питание по очереди или только к одному каналу?

AlexVOK
19.04.2015, 21:28
решил испытать подключив входы на оптрон через 5В 2А источник питания

это ключевой момент
при первом включении были гасящие резисторы??
если нет - меняйте оптроны ;(

упс, пропустил ваш ответ.
Значит такие попались оптроны
хотя из тех 40 шт что я использовал таких не попадалось

spolyakov
19.04.2015, 21:30
Конечно были на 470Ом как на схеме. Я без них питание не давал. Так вот из 3 каналов сработал один. Я начал разбиратся и выяснилось что оптроны не срабатывают, начал менять номиналы резисторов и получилось что один канал открывается при 300 омах а последний при 210 омах.

spolyakov
19.04.2015, 21:31
Вы подключаете питание по очереди или только к одному каналу?

Я подключал поочереди

kolljj
19.04.2015, 21:31
а теперь попробуйте подавать питания с последнего канала
и что получется и итоге

spolyakov
19.04.2015, 21:33
а теперь попробуйте подавать питания с последнего канала
и что получется и итоге

Извините, но я не понимаю, что Вы имеете ввиду?

kolljj
19.04.2015, 21:35
при подключении первого, он у вас срабатывает от 470, второй от ...
а если сначало подключить последний и от скольки он сработает?

spolyakov
19.04.2015, 21:36
смотрите первый срабатывает при 470 омах как на схеме, второй при 300 омах, третий при 210 омах

kolljj
19.04.2015, 21:37
если запитать только третий и проверить при каком сопротивлении происходит срабатывание. первый и второй не подключать.

spolyakov
19.04.2015, 21:38
Я так и делал, запитывал все отдельно поочереди и подбирал номинал резюков... Извините если непонятно разьясняю, я в этом новичек.

kolljj
19.04.2015, 21:40
в таком случае только два варианта:

1. Попались такие оптроны
2. что то с разводкой платы (тонкие дорожки или что то такое)

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

spolyakov
19.04.2015, 21:46
Ну теоретически получается что ток открытия 18ма при резисторе 210ом. Подсчитывал так: (5-1.15)/210=0,018 Фактически ток не замерял позже проверю. Если я правильно понимаю максимальный ток для этого оптрона 60 ма?

kolljj
19.04.2015, 21:52
если у Вас падение на сопротивлении 1.15 то получется слудующее 1.15/210= 0.0054 А
Так же есть максимальный и ток срабатывания. У Вас очень хороший показатель, правда не понятно по чему на 470 не срабатывает.


по паспорту он должен открываться от 0.01 а максимальный 0.06, а на деле у вас еще при меньшем открывается.

Можно фото вашей конструкции?

spolyakov
19.04.2015, 22:07
1.15 это падение на оптроне по даташиду фото сейчас сделаю, только не смейтесь это моя первая в жизни плата

spolyakov
19.04.2015, 22:14
Вот сие чудо

http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=206829&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=206829') http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=206828&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=206828')

kolljj
19.04.2015, 22:21
spolyakov, Как я понял у нав на входе оптопары всего 1.5 вольт?
проверте сколько воль на входе платы там где подпаяны проводки.

AlexVOK
19.04.2015, 22:21
spolyakov,
вы все правильно сделали

правда у меня схемка влючения чуть отличается но думаю это не важно
ставьте везде резисторы по 200 Ом
в вашем случае такой выход, чтож поделать

spolyakov
19.04.2015, 22:26
spolyakov, Как я понял у нав на входе оптопары всего 1.5 вольт?
проверте сколько воль на входе платы там где подпаяны проводки.

На входе где подпаяны проводники 5,2 вольта. Сколько входе оптопары не мерял.

Sem
20.04.2015, 09:00
5,2 вольта.

Это с какого перепугу?
Питание свое смотрите.
Кренки обычно немного "не додают" напруги.
Или импульсник-зарядка нонейм за 5 гривен?

spolyakov
20.04.2015, 09:26
Это с какого перепугу?
Питание свое смотрите.
Кренки обычно немного "не додают" напруги.
Или импульсник-зарядка нонейм за 5 гривен?

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

Sem
20.04.2015, 10:06
Крона+кренка.
Для проверки
или LM 317 (http://www.electronics-lab.com/articles/LM317/) или тут (http://www.reuk.co.uk/LM317-Voltage-Calculator.htm)
Имхо.

AlexVOK
20.04.2015, 10:12
Sem,
народ прекращайте писать глупости

4.99 или 5.2 на не нагруженом импуснике - да эще и не понятна точность измерительного прибора
(читай матчасть)

spolyakov,
с БП у вас все нормально, то что оптроны странные ну и какая разница, вы выяснили как заставить их работать.
Как по мне - подключайте их к ардуинке и все будет ок.

Sem
20.04.2015, 10:29
AlexVOK, стабильность питания єто глупости ? Ню-ню.

AlexVOK
20.04.2015, 10:33
Sem, о какой стабильности разговор
о стабильности питания светодиода в оптроне????
1. Для него нужен ток если на то пошло
2. Для теста силовой части даже плюс минус 1 В ничего не решает.

Это последний пост на эту тему.

spolyakov
20.04.2015, 20:44
Ребята подскажите пожалуйста, в схеме управления вентилятором какой диод ставить (если можно его маркировку)?

AlexVOK
20.04.2015, 22:08
spolyakov,
практически любой что есть в наличии
это защита полевика

RozarioAgro
23.04.2015, 10:27
Спасибо за разработку

RozarioAgro
23.04.2015, 11:15
Какая то ошибка с библиотекой?
Arduino: 1.6.4 (Windows 7), Плата"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

D:\arduino-nightly\libraries\LCD5110\DefaultFonts.c:12:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype SmallFont[] PROGMEM =
^
D:\arduino-nightly\libraries\LCD5110\DefaultFonts.c:117:14: error: variable 'BigNumbers' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype BigNumbers[] PROGMEM =
^
Ошибка компиляции.


кто может подсказать. Спасибо.

RozarioAgro
23.04.2015, 16:33
Нашел в чем проблема
В DefaultFonts.c просто добавить const в строке fontdatatype SmallFont[] PROGMEM =

Starcomputer
25.04.2015, 14:22
Для блоков питания с током до 2А милиамперные токи оптрона все равно, что ничего. Я уже сталкивался с ситуацией когда такие блоки (именно от роутера) не "заводились" нормально на малом токе нагрузки (хотя он был около 300 мА).
И 1к8 в цепи симистора это многовато. Я ставлю 330 Ом и все работает годами без сбоев.

spolyakov
25.04.2015, 17:03
Ребята купил я 8ми релейный 5 вольтовый модуль ардуино. Разбираюсь как его подключить к ардуинке, правильно я понимаю, что при использовании этого модуля надо пины настроить на вход, а не на выход как в скетче?

П.С. Извините после публикации поста, внимательно почитал про функцию пинмоде и понял, что порт настроенный как вывод может быть приемником тока. Поэтому на сколько я понял в скетче ничего менять не надо...

AlexVOK
25.04.2015, 17:33
spolyakov, как то непонятно вы описали
В скетче ничего менять ненужно - если модуль управляется высоким уровнем.

Если хотите ответы, уточните вопрос.
Какой именно модуль вы купили?
фото, описание, схема в идеале.

spolyakov
25.04.2015, 17:51
Релейный модуль: 8 канальный релейный модуль 5В 10А
Фото: http://www.aquaforum.ua/picture.php?albumid=6252&pictureid=207146&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=6252&pictureid=207146')

Описание: Может управляться непосредственно с выводов микроконтроллера (Arduino и подобным).
Максимальный ток нагрузки 10А при напряжении 250В, размеры: 13.9см x 5.2см x 1.7см
Если вам нужна полная оптическая изоляция подключите "Vcc" к выходу +5В Arduino, но не подключайтесь к Gnd. Уберите джампер Vcc to JD-Vcc. Подключите отдельные +5В к выводу "JD-Vcc" и отдельные Gnd. Это даст питание для транзисторов и обмотки реле.
Если же вам достаточно изоляции реле то можно просто запитать модуль от выводов Arduino +5В и Gnd и оставить джампер Vcc to JD-Vcc на своем месте.
Важно: для замыкания реле нужно подать на управляющий вход низкий логический уровень (LOW), тогда реле замыкается и светодиод загорается, для размыкания реле нужно подать уровень логической единицы (HIGH).

Планирую подключать в обход оптрона следующим образом:
VCC релейного модуля на питание ардуинки
GND релейного модуля на ноль ардуинки
Выходы релейного модуля подключить к соответсвующим пинам ардуины
Джампер Vcc to JD-Vcc оставить на своем месте.

В скетче в местах управления пинами поменять High на Low , т.к. этот модуль при значении High размыкается, при значении Low - замыкается.

AlexVOK
25.04.2015, 18:07
spolyakov,
вы все правильно описали !

так и действуйте

spolyakov
03.05.2015, 13:22
Наконец пришел микроконтроллер, спаял. Скачал программу Ардуино 1.6.3. Поставил библиотеки из шапки, установил драйвер, а при заливке скетча пишет:

Arduino: 1.6.2 (Windows 7), Плата"Arduino Nano, ATmega328"

Изменена опция сборки, пересобираем все

Используем библиотеку LCD5110 в папке: C:\Users\Анатолий\Documents\Arduino\libraries\LCD5 110 (legacy)

Используем библиотеку EEPROM в папке: C:\Users\Анатолий\AppData\Roaming\Arduino15\packag es\arduino\hardware\avr\1.6.2\libraries\EEPROM

Используем библиотеку OneWire в папке: C:\Users\Анатолий\Documents\Arduino\libraries\OneW ire (legacy)

Используем библиотеку DS1307 в папке: C:\Users\Анатолий\Documents\Arduino\libraries\DS13 07 (legacy)



C:\Users\Анатолий\AppData\Roaming\Arduino15\packag es\arduino\tools\avr-gcc\4.8.1-arduino2/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10602 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Анатолий\AppData\Roaming\Arduino15\packa ges\arduino\hardware\avr\1.6.2\cores\arduino -IC:\Users\Анатолий\AppData\Roaming\Arduino15\packa ges\arduino\hardware\avr\1.6.2\variants\eightanalo ginputs -IC:\Users\Анатолий\Documents\Arduino\libraries\LCD 5110 -IC:\Users\Анатолий\AppData\Roaming\Arduino15\packa ges\arduino\hardware\avr\1.6.2\libraries\EEPROM -IC:\Users\Анатолий\Documents\Arduino\libraries\One Wire -IC:\Users\Анатолий\Documents\Arduino\libraries\DS1 307 C:\Users\E393~1\AppData\Local\Temp\build5037175306 117761921.tmp\aqua_controll.cpp -o C:\Users\E393~1\AppData\Local\Temp\build5037175306 117761921.tmp\aqua_controll.cpp.o

C:\Users\Анатолий\AppData\Roaming\Arduino15\packag es\arduino\tools\avr-gcc\4.8.1-arduino2/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10602 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Анатолий\AppData\Roaming\Arduino15\packa ges\arduino\hardware\avr\1.6.2\cores\arduino -IC:\Users\Анатолий\AppData\Roaming\Arduino15\packa ges\arduino\hardware\avr\1.6.2\variants\eightanalo ginputs -IC:\Users\Анатолий\Documents\Arduino\libraries\LCD 5110 -IC:\Users\Анатолий\AppData\Roaming\Arduino15\packa ges\arduino\hardware\avr\1.6.2\libraries\EEPROM -IC:\Users\Анатолий\Documents\Arduino\libraries\One Wire -IC:\Users\Анатолий\Documents\Arduino\libraries\DS1 307 -IC:\Users\Анатолий\Documents\Arduino\libraries\LCD 5110\utility C:\Users\Анатолий\Documents\Arduino\libraries\LCD5 110\DefaultFonts.c -o C:\Users\E393~1\AppData\Local\Temp\build5037175306 117761921.tmp\LCD5110\DefaultFonts.c.o

C:\Users\Анатолий\Documents\Arduino\libraries\LCD5 110\DefaultFonts.c:12:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

fontdatatype SmallFont[] PROGMEM =

^

C:\Users\Анатолий\Documents\Arduino\libraries\LCD5 110\DefaultFonts.c:117:14: error: variable 'BigNumbers' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

fontdatatype BigNumbers[] PROGMEM =

^

Ошибка компиляции.

spolyakov
03.05.2015, 20:35
Разобрался, надо в библиотеке к экрану заменить fontdatatype SmallFont[] PROGMEM = на fontdatatype const SmallFont[] PROGMEM = и fontdatatype BigNumbers[] PROGMEM = на fontdatatype const BigNumbers[] PROGMEM =

Скетч загрузился, все собрал - работает. Большое спасибо разработчику и Всем кто отвечал в теме.

spolyakov
06.06.2015, 16:32
Прошло две недели испытания акваконтроллера разработанного AlexVOK. Отдельное спасибо за такую полезную разработку, и помощь в процессе его сборки. Должен сказать, что до этой статьи никогда не работал ни с ардуино ни с другими контроллерами. Также огромное спасибо пользователю AlexNT за его подсказки =)
Вот что получилось:
Приборная панель
http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210127&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210127')
Вид изнутри
http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210125&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210125')
Блок дозирующих насосов ULKA
http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210126&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210126')
Ввод шлангов в аквариум
http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210128&thumb=1 ('http://www.aquaforum.ua/picture.php?albumid=3892&pictureid=210128')

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

Если кому будет интересно вышлю скетч - не понимаю как сюда его выложить....

AlexVOK
06.06.2015, 17:13
spolyakov,
Отличная работа
Особенно мне понравился держатель для трубочек, сам гнул?

По поводу скетча выкладывай.
заархивируй его, (внизу под окном сообщения форума есть кнопка расширенный режим, там можно прикреплять файлы)

spolyakov
06.06.2015, 18:52
Нет держатель для трубочек это работа местного умельца http://www.aquaforum.ua/showthread.php?t=193084 , только пришлось немного рассверлить отверстия.
Скетч вроде прикрепил.

RozarioAgro
06.06.2015, 19:58
spolyakov, у меня клапана стоят на выходе, для предотвращения попадания воздуха. Кстати используемые вами вибро насосы конструктивно выполнены так, что имеют встроенные обратные клапана.

http://savepic.su/5715346.jpg

spolyakov
06.06.2015, 22:09
Они имеют даже 2 клапана, но в 2 из 3 насосов вода постепенно уходит назад в банки с удо.

RozarioAgro
06.06.2015, 22:14
Извините за то что пишу не по теме автора. Долгое время использовал вибронасосы, не понравилось (шум, протечки). Перешел на такие помпочки, пока доволен.
http://savepic.su/5720488.jpg

spolyakov
16.06.2015, 21:12
Ребят при создании своего проекта обратил внимание на одну особенность, полез в скетч и возник следующий вопрос с данным куском кода:
currentTime = millis();
key = getPressedButton();
if((currentTime >= (loopTime + 250))||(key != prev_key)){ // проверяем каждые 5мс (20 Гц)

А что будет приблезительно через 50 дней когда millis() обнулится (при условии, что за это время ни разу не выключали свет, у меня к примеру устройство подключено к УПС).
Тоесть условие currentTime >= (loopTime + 250) перестанет выполняться, а key в случае простоя будет равен prev_key (поидее 0). По идее программа тупо зависнет, пока пользователь не нажмет какую либо из кнопок. Или я не прав?

Если я прав то можно либо сделать контроль переполнения функции millis() , что добавит кусок кода и будет занимать дополнительно память контроллера.
Или переписать условие как-то так:
if((abs(currentTime - loopTime) >= 250)||(key != prev_key)){ // проверяем каждые 5мс (20 Гц)
да такое условие будет давать ошибку на один пропуск, но по идее это не критично....

AlexVOK
16.06.2015, 22:28
spolyakov,
был не прав

патч ниже

spolyakov
16.06.2015, 23:12
не пойму почему так. millis () сбросился и равен пусть 0 в этот момент loopTime равен максимальному значению функции millis (). Следовательно условие currentTime >= (loopTime + 250) не выполнимо. Далее key будет равен prev_key и равен 0 так как контроллер в простое. Соответсвенно эта часть условия key != prev_key тоже не выполняется. Следовательно все что внутри функции if((currentTime >= (loopTime + 250))||(key != prev_key)){ не будет выполнено пока пользователь не нажмет какую либо кнопку и не выполнится условие key != prev_key.

AlexVOK
17.06.2015, 10:29
spolyakov, мысли у вас конечно правильные
хотя за год никаких залипаний не было
но всетаки вы правы
предлагаю патчь

if((abs(currentTime-loopTime) >= 250)||(key != prev_key)){ // проверяем каждые 5мс (20 Гц)

Еще для полной отказоустойчивости нужно было б прошить новый бутлоадер в ардуинку с поддержкой WatchDog таймера
я использовал optiboot. (но сразу предупреждаю нужен програматор для AVR микроконтроллеров!!)

Внимание для тех кто повторил контроллер ОБЯЗАТЕЛЬНО ОБНОВИТЕ скетчь
(есть вероятность залипона, хоть и очень маленькая но она есть)

AlexNT
04.07.2015, 01:00
Следовательно все что внутри функции if((currentTime >= (loopTime + 250))||(key != prev_key)){ не будет выполнено пока пользователь не нажмет какую либо кнопку и не выполнится условие key != prev_key.

|| - это ИЛИ
Так что условие сработает если разница в таймингах больше заданной (5мс) ИЛИ пользователь нажал кнопку (тогда плюем на тайминг и срочно обрабатываем весь цикл)
Кстати, вот только подумал. Ведь с таким условием можно запускать обработку и гораздо реже, раза 2 в секунду (чтобы точки на часах мигли :) )
Ошибки срабатывания таймеров управления будут не больше секунды, что вполне достаточно.
Не ??

spolyakov
04.07.2015, 17:26
правильно но разница в таймингах при обнулении функции millis() будет отрицательная так как значение loopTime будет почти максимальным значением функции millis(), а loopTime будет в момент сброса равно 0 или около того и следовательно эта часть условия (currentTime >= (loopTime + 250) никогда не выполниться. Вторая часть условия (key != prev_key) не выполниться до тех пор пока пользователь что-то не нажмет.....

AlexVOK
04.07.2015, 19:31
|| - это ИЛИ
Кстати, вот только подумал. Ведь с таким условием можно запускать обработку и гораздо реже, раза 2 в секунду (чтобы точки на часах мигли :) )
Ошибки срабатывания таймеров управления будут не больше секунды, что вполне достаточно.
Не ??
это возможно но особого смысла в этом нет, так как нет необходимости экономить электроэнергию потребленную самим микроконтроллером

Пусть себе малюет экран лишние разы - эму это не сложно ;)

AlexNT
04.07.2015, 23:59
это возможно но особого смысла в этом нет, так как нет необходимости экономить электроэнергию потребленную самим микроконтроллером



Ну в принципе... наверное да... это я не подумал. По сравнению с подсветками\помпами действительно мелочь. Тем более что loop() все равно будет бегать вхолостую и жрать энергию. Разве что в сон ложить... Но это лишние сложности ради 0.0001% и реакция на клавиши замедлится

spolyakov
05.07.2015, 12:26
Второй раз за месяц использования возникает странная ситуация - пропадает связь с датчиком температуры и сразу включается нагрев. После перезапуска контроллера все приходит в норму. Думаю связано с тем что я удлинял проводку к нему гдето на полтора метра. Думаю выйти из ситуации так: запихнуть в функцию кусок кода отвечающий за инициализацию датчика и при пропадании его вызывать эту фунцию к примеру 3 раза, если все равно не видит пишем еррор. Чтоже касается включения нагреваткля при обрыве датчика - то этот касяк можно исправить поменяв условие включения нагревателя, ато так можно уху сварить если к примеру датчик замокнет... Что думаете?

Петко Шкодров
21.07.2015, 09:52
В главном меню можно заменить.
myGLCD.printNumF(cur_temp,2,15,38);

на
myGLCD.drawRect(28, 44, 29, 45);
int temp1 = (cur_temp - (int)cur_temp) * 100;
myGLCD.printNumI(cur_temp, 15, 38, 2, '0');
myGLCD.printNumI(temp1, 30, 38, 2, '0');

Снижает объем скеча.

floMasterdp
28.07.2015, 16:31
AlexVOK, спасибо за проделанную работу!!!
1. Собрал, работает. с силовой частью непонятки: на дисплее "Light ON" - реле отключено (по идее на пин 0) и наоборот.И так по всем пункта (кормление-реле включается). (Блок реле на фото) Как можно поправить?
2. ШИМ LED еще не пробовал (хотя драйвер собран и на КА7500 по резистору работает)

Выкладываю фотки (кто то просил)

А платка в лае есть?
....
НАШЕЛ!

Multiman
02.08.2015, 17:50
В главном меню можно заменить.
myGLCD.printNumF(cur_temp,2,15,38);

на
myGLCD.drawRect(28, 44, 29, 45);
int temp1 = (cur_temp - (int)cur_temp) * 100;
myGLCD.printNumI(cur_temp, 15, 38, 2, '0');
myGLCD.printNumI(temp1, 30, 38, 2, '0');


По моему так будет красивее...

myGLCD.invertText(1);
if(cur_temp < 1){
myGLCD.print(" ", 0, 39);
}else{
myGLCD.print(" ", 0, 39);
myGLCD.print("T = ", 16, 39);
myGLCD.drawRoundRect(0, 38, 83, 47);
int temp1 = (cur_temp - (int)cur_temp) * 100;
myGLCD.printNumI(cur_temp, 42, 39, 2, '0');
myGLCD.printNumI(temp1, 57, 39, 2, '0');
myGLCD.clrRect(55, 45, 56, 46);

(там где "myGLCD.print(" ", 1, 39);" по 15 пробелов в кавычках)
508735

AlexVOK
02.08.2015, 18:56
Multiman,
сделай пожалуйста картинку

Aksiles
27.08.2015, 20:22
Скажите пожалуйста можно ли сделать выход ламп 1 и 2 шим чтоб повесить светодиоды

AlexVOK
27.08.2015, 21:06
Aksiles,
конечно можно, но нужна конкретная доработка
может вам http://www.aquaforum.ua/showthread.php?p=3032647#post3032647 подойдет

Aksiles
28.08.2015, 08:26
Спасибо за ссылку но там слишком много наворотов

Aksiles
28.08.2015, 10:49
Подскажите пожалуйста что такое управление БП. как работает

AlexVOK
28.08.2015, 14:45
Подскажите пожалуйста что такое управление БП. как работает

это управление выводом PS-ON ATX блока питания
т.е. включение и отключение силовой части

Aksiles
29.08.2015, 06:45
Включает и выключает БП в заданное время?

AkaPain
29.08.2015, 13:43
Здравствуйте! AlexVok при компиляции вот такая ошибка:
Arduino: 1.6.5 (Windows 7), Плата"Arduino/Genuino Uno"

C:\Users\HP\Desktop\arduino-1.6.5-r5-windows\arduino-1.6.5-r5\libraries\LCD5110\DefaultFonts.c:12:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype SmallFont[] PROGMEM =
^
C:\Users\HP\Desktop\arduino-1.6.5-r5-windows\arduino-1.6.5-r5\libraries\LCD5110\DefaultFonts.c:117:14: error: variable 'BigNumbers' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
fontdatatype BigNumbers[] PROGMEM =

я так понимаю были изменения в библиотеке LCD5110. Можно попросить актуальную версию среды и скетча выложить. Спасибо!

Multiman
02.09.2015, 20:18
AkaPain
В Вашем файле C:\Users\HP\Desktop\arduino-1.6.5-r5-windows\arduino-1.6.5-r5\libraries\LCD5110\DefaultFonts.c строка для SmallFont должна выглядеть следующим образом:
const fontdatatype SmallFont[] PROGMEM = ...
и дальше по аналогии... это проблема старых и новых IDE.

AkaPain
02.09.2015, 21:35
Спасибо разобрался уже))

AkaPain
03.09.2015, 20:06
Полскажите переменная "CoolingEnabled Разрешено ли охлаждение куллером "
где-то в меню задается?

Aksiles
22.09.2015, 21:27
Расскажите пожалуйста про настройки меню, как выставить температуру, включения света , включение БП,фильтра ,компрессора заданное время ?

imac2008
22.09.2015, 21:36
...

AlexVOK
22.09.2015, 23:11
Полскажите переменная "CoolingEnabled Разрешено ли охлаждение куллером "
где-то в меню задается?
Да в настройках термостата если не ошибаюсь

AlexVOK
22.09.2015, 23:15
Расскажите пожалуйста про настройки меню, как выставить температуру, включения света , включение БП,фильтра ,компрессора заданное время ?
меню интуитивно понятное
Инструкции пользователя нет
Так как это не коммерческий продукт ;)
И ни кто из повторивших не решился помочь в написании инструкции

Контроллер у меня работает больше года на полном автопилоте.
Я уже забыл что там и как в меню

подхожу к нему только для перевода часов - зима/лето code44

imac2008
23.09.2015, 17:05
AlexVOK Вы пользуетесь скетчем с шапки темы?

Aksiles
23.09.2015, 19:57
Подскажите все включения и выключения настраиваются в меню или в скетче ?

AlexVOK
23.09.2015, 21:26
Все настраивается через меню.

единственный параметр который задается жестко это коэффициент коррекции хода часов (для правки отстающих часов)

Aksiles
29.09.2015, 21:16
Подскажите в меню не могу найти настройку включения и выключения БП где она ? Прошивка с шапки
И нужно ли подавать 12 вольт на ножку платы arduino ?

Toha24510
23.10.2015, 14:09
ПО ходу забросили эту ветку.

AlexVOK
23.10.2015, 14:15
ПО ходу забросили эту ветку.

с чего такие выводы?

Есть вопросы или желание участвовать?, добро пожаловать

Сей контроллер трудится на моей баночьке.

В планах баллинг добавить - будет время выложу

Aksiles
23.10.2015, 21:07
Подскажите пожалуйста как управлять БП

AlexVOK
23.10.2015, 21:51
Подскажите пожалуйста как управлять БП
Внесу ясность - управление БП

В моем случае в качестве БП был использован ATX блок питания
контроллер был запитан от дежурки 5В
в вывод управления БП подключен к выводу PS-ON (таким образом ночью отключается силовая часть БП - это нужно только для ЛЕД)

если вы используете обычные ЛЛ - управление БП можно не использовать

Unforgiven
24.10.2015, 00:46
Внесу ясность - управление БП

В моем случае в качестве БП был использован ATX блок питания
контроллер был запитан от дежурки 5В
в вывод управления БП подключен к выводу PS-ON (таким образом ночью отключается силовая часть БП - это нужно только для ЛЕД)

если вы используете обычные ЛЛ - управление БП можно не использовать

Вопрос по блоку питания, не подскажете есть ли в продаже блоки (не компьютерные) с таким же управлением включения как у atx? А то не хотелось бы вешать блок питания на отдельный таймер включения а без таймера держать включенным его круглосуточно наверное сильно сократит срок службы

Aksiles
24.10.2015, 12:46
А как выставить время включения и отключения БП, в меню не магу найти,использую подсветку LED. Прошивка с шапки объясните пожалуйста.

Toha24510
24.10.2015, 18:42
Скажите пожалуйста часы можно корректировать не по секундам , а по десятым доли секунд?И ещё при пропадании питания с последующим появлением его, андруина не запускает каналы которые включены.У меня это L2,CO2,LED, а вот L1 включает.Это можно исправить?Заранее спасибо.

Петко Шкодров
24.10.2015, 21:32
Скажите пожалуйста часы можно корректировать не по секундам , а по десятым доли секунд?И ещё при пропадании питания с последующим появлением его, андруина не запускает каналы которые включены.У меня это L2,CO2,LED, а вот L1 включает.Это можно исправить?Заранее спасибо.

Можно попробовать заменить

if(b1&B10000000){
if((1<<(time.dow-1))&b1){ // активная запись и день недели
byte b2 = EEPROM.read(a+1);
if(time.hour == (byte)(b2&B00011111)){ // сравниваем часы
byte b3 = EEPROM.read(a+2);
if(time.min == (byte)(b3&B00111111)){ // сравниваем минути
byte b4 = EEPROM.read(a+3);

С небольшим пересмотра

int T_ON = EEPROM.read(a + 1) * 60 + EEPROM.read(a + 2);
int T_OFF = EEPROM.read(a + 3) * 60 + EEPROM.read(a + 4);
int T_cur = time.hour * 60 + time.min;
if (b1 & B10000000) {
if ((1 << (time.dow - 1))&b1) {
boolean tajmer = false;
if (T_ON < T_OFF) //Проверка на таймера в едно денонощие
{
if (T_cur >= T_ON && T_cur <= T_OFF)
{
tajmer = true;
} else {
tajmer = false;
}
} else { // ако се е сменил деня
if ((T_cur >= T_ON && T_cur <= 2820) || (T_cur >= 0 && T_cur <= T_OFF)) //2820=24часа*60
{
tajmer = true;
} else {
tajmer = false;
}
}
if (tajmer) {

AlexVOK
24.10.2015, 22:41
Toha24510,
Восстановление состояний я не делал намеренно
Изложу свои мысли.
Отрубалось электричество - как долго нам не известно
и в этот момент подать СО2 - уж нет, а то рыбка может и всплыть (травы много аэрации не было) ,
я уж лучше на всяк пожарный отрублю СО2 Врублю свет и аэрацию
и так до следующего цикла.

Сделано не ради удобства а ради выживания живности - не приятно вылавливать дискусов после отпуска - поверьте

Toha24510
25.10.2015, 16:17
Можно попробовать заменить

if(b1&B10000000){
if((1<<(time.dow-1))&b1){ // активная запись и день недели
byte b2 = EEPROM.read(a+1);
if(time.hour == (byte)(b2&B00011111)){ // сравниваем часы
byte b3 = EEPROM.read(a+2);
if(time.min == (byte)(b3&B00111111)){ // сравниваем минути
byte b4 = EEPROM.read(a+3);

С небольшим пересмотра

int T_ON = EEPROM.read(a + 1) * 60 + EEPROM.read(a + 2);
int T_OFF = EEPROM.read(a + 3) * 60 + EEPROM.read(a + 4);
int T_cur = time.hour * 60 + time.min;
if (b1 & B10000000) {
if ((1 << (time.dow - 1))&b1) {
boolean tajmer = false;
if (T_ON < T_OFF) //Проверка на таймера в едно денонощие
{
if (T_cur >= T_ON && T_cur <= T_OFF)
{
tajmer = true;
} else {
tajmer = false;
}
} else { // ако се е сменил деня
if ((T_cur >= T_ON && T_cur <= 2820) || (T_cur >= 0 && T_cur <= T_OFF)) //2820=24часа*60
{
tajmer = true;
} else {
tajmer = false;
}
}
if (tajmer) {

К сожалению не получилось.Ошибка компиляции.

Toha24510
25.10.2015, 16:22
Отрубалось электричество - как долго нам не известно
и в этот момент подать СО2 - уж нет, а то рыбка может и всплыть (травы много аэрации не было) ,
я уж лучше на всяк пожарный отрублю СО2 Врублю свет и аэрацию
и так до следующего цикла.

Согласен на все 100.Но L2 и LED не запускаются,а жаль.

AlexVOK
25.10.2015, 16:39
в секции
void setup()
......
digitalWrite(EXT_LIGHT_2_PIN, LOW); // выключает
light2 = false;
Замените на
digitalWrite(EXT_LIGHT_2_PIN, HIGH); // выключает
light2 = true;

Toha24510
25.10.2015, 17:20
Блин тоже нашёл в 177 посте.Ещё раз спасибо!

imac2008
30.10.2015, 09:15
Приобрел влагозащищенный датчик температуры у китайцев, подключил, врет на 2 градуса в + по сравнению с открытым датчиком и всеми градусниками, что нашел. Время опроса датчика не менял. Кто подскажет как исправить данную неприятную ситуацию?

AlexVOK
30.10.2015, 10:17
imac2008, с каким скетчем используешь?

imac2008
30.10.2015, 10:19
imac2008, с каким скетчем используешь?
с тем что в архиве в начальном посте

AlexVOK
30.10.2015, 12:35
скорее всего брак датчика, хотя я с таким ни разу не сталкивался

imac2008
30.10.2015, 12:46
скорее всего брак датчика, хотя я с таким ни разу не сталкивался
может быть, хотя температуру показывает, на изменение реагирует. можно ли в скетч (расчеты) внести коррективы на эти пресловутые 2 градуса?

AlexVOK
30.10.2015, 12:55
imac2008,
если есть желание разобраться подскажу направление куда копать
датчики бывают разных типов DS18S20,DS18B20,DS1822 - расчетная формула для них отличается.

Все датчики что у меня есть работают одинаково точно.

imac2008
30.10.2015, 13:11
Покупал вроде как Ds18B20, хотя кто его знает что в капсюль могли засунуть. Буду копать дальше.
Хотя, почитав различия всех представленных температурных датчиков - был бы не В20 вообще ничего не показывал бы; либо полный бред а не разницу в 2 градуса. Вроде так.
Да и определился как В20.

Вячеслав Сергеев
06.11.2015, 11:44
Я много датчиков этих использовал и все работали отлично с разными скетчами, скорее брак.

Я тут обратил внимание на другую проблему с модулем часов.
Здесь уже поднимали вопрос про батарейку в модуле, в некоторых модулях вместо батарейки стоит LI-ION аккумулятор ZM.LIR2032 3.6V.
С аккумуляторм модуль не работает как надо, а именно при наличии питания всё хорошо, а вот при исчезновении питания отсчёт времени приостанавливается. После возобновления питания отсчёт времени возобновляется с того же места.
Замена на CR2003 3V проблему решает.

imac2008
06.11.2015, 13:41
Я много датчиков этих использовал и все работали отлично с разными скетчами, скорее брак.

Я тоже склоняюсь к браку. Погонял его с неделю - работает. но все равно врет на 2 гр. в + практически во всем диапазоне. Читал где-то, что закавыка в калибровке при изготовлении. Заказал второй - но месяц ждать. Думал решить проблему программно... но так пока не дошел до этого
С часами проблем не заметил. Стоит батарейка. Разве что, калибровку часов в скетче поменял.

Вячеслав Сергеев
06.11.2015, 17:44
Проработал модуль несколько часов с батарейкой и всё! Опять стоит без питания, причём не всегда.
Я буду юзать теперь Ds3231.

imac2008
20.12.2015, 20:09
Не всегда кнопки срабатывали точно (скорее всего с резисторами перемудрил). Залил тестовый скетч для кнопок с этой темы, подправил скетч акваконтроллера, залил - и ничего... экран ничего не показывает., (в спящий переходит). Залил опять тестовый скетч и тоже экран чистый. Кто подскажет?

AlexVOK
20.12.2015, 21:04
imac2008,
посмотрите что именно вы правили
может где то с кавычками напутали?
может в глухой цыкл попали

imac2008
21.12.2015, 17:07
Разобрался - все дело в экране. Придется покупать новый

Toha24510
22.12.2015, 17:30
Разобрался - все дело в экране. Придется покупать новый
imac2008, А может попробовать контакты прочистить экрану
.Мне помогло.

imac2008
23.12.2015, 09:44
...

imac2008
23.12.2015, 14:57
imac2008, А может попробовать контакты прочистить экрану
.Мне помогло.
Разбирали?

Alserk-3
24.12.2015, 15:32
Подскажите пожалуйста как поправить, начал только осваивать ардуино

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino: In function 'void loop()':

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:623:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:625:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:834:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:838:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:842:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:846:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:850:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:854:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:858:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1018:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1021:36: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1024:36: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1027:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1030:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1033:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1036:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1045:41: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1433:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1441:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1519:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1529:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1536:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\Алуксандр\Desktop\aqua_controll\ aqua_controll.ino:1543:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\....\Documents\Arduino\libraries\LCD5110\ DefaultFonts.c:12:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

fontdatatype SmallFont[] PROGMEM =

^

C:\Users\.....\Documents\Arduino\libraries\LCD5110 \DefaultFonts.c:117:14: error: variable 'BigNumbers' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

fontdatatype BigNumbers[] PROGMEM =

^

exit status 1
Ошибка компиляции.

Toha24510
29.12.2015, 20:49
Разбирали?
Да разобрал экран аккуратно.Контактную площадку спиртом а опосля чистым ластиком (стырачкой).Собрал-
работает.

Denisios
05.01.2016, 18:11
Доброго времени суток, подскажите, сколько потребляет 8-ми канальный блок реле если все нагрузки активны?

Sem
05.01.2016, 18:33
все нагрузки активны?

Что -то мне подсказывает, что ток равен сумме токов удержания реле ))

Denisios
05.01.2016, 22:11
Что -то мне подсказывает, что ток равен сумме токов удержания реле ))
Есть у меня блок на 4 реле, замерял ток удержания одной, получился 55 мА. Не плохо они хавают.

OrcSin
16.01.2016, 22:56
Denisios,так и есть, у меня когда ардуино с этим реле и экраном от юсб висит, от при включении обмоток реле резко изменяется яркость экрана и кнопки начинают тупить.

AlexVOK
16.01.2016, 23:11
OrcSin, так и есть
еще у релюшек минус - подгорают контакты

stas226823
16.02.2016, 06:39
Подскажите пожалуйста. С ардуино первый раз столкнулся. И сразу такие грабли. Подключаю ардуино к переходнику. На ардуино загорается красный диод. Среда ардуино выдает вот это
Arduino: 1.5.7 (Windows 7), Board: "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

Sketch uses 28*246 bytes (91%) of program storage space. Maximum is 30*720 bytes.

Global variables use 949 bytes (46%) of dynamic memory, leaving 1*099 bytes for local variables. Maximum is 2*048 bytes.

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Порт, плата, процессор выставил вроде правильно. При нажатии резет на переходнике загорается еще один диод.
Если подключить другую ардуинку то на переходнике загорается 2 диода, если нажать резет один гаснет, после снова загорается. Как проверить платы, или в какую сторону искать хоть?

Sem
16.02.2016, 06:47
Как проверить платы, или в какую сторону искать хоть?

Для начала в примерах залейте скетч Blink - поморгайте цветиком.
Потом измените delay(1000) на 100 или 500 чтоб было видно глазу разница и скомпилить -залить-смотреть

stas226823
16.02.2016, 07:11
Blink тоже выдает туже ошибку((((

glan
16.02.2016, 08:06
Драйвера поставили для данной ардуины?


Нацарапано

stas226823
16.02.2016, 09:34
Я ставил драйвера только на конвертер usb . На ардуино он не спрашивает

Sem
16.02.2016, 10:52
Я ставил драйвера

Вот и проверьте чтоб не было желтых треугольников с воскл. знаком в системе

stas226823
16.02.2016, 15:41
Драйвера стоят вроде все. Треугольника желтых нет. При подключении ардуино к конвертеру новые устройства не определяются. И две ардуино ведут себя по разному. Одна зажигает диод на конвертер. А другая наоборот гасит, хотя сначала загораются почему то 2

alex_palace
18.02.2016, 06:48
Заказал все по списку + 3 шт двухканальных релейных модуля (аж по 1.5 долл что по ходу будет дороже чем самому паять :)
Если со скетчем (да еще гранд респект автору за ремарки) я разберусь то вот с электронной частью... теоретически понял что для заката-рассвета надо ключами на транзисторах взять с трех пинов уровни для R G и B, но хоть в описании они и прописаны на схеме или я совсем туплю или я не вижу их :(
следующий вопрос т.к пока еще FM не RT :) В теории если есть таймер то по логике должен быть и календарь?

Sem
18.02.2016, 08:55
alex_palace, я эту игрушку не делал, но в описании вижу - рассвет -закат и нога на схеме D11. Где там RGB не вижу.
Что такое "FM не RT" даже стесняюсь спросить ))

alex_palace
18.02.2016, 09:46
alex_palace, я эту игрушку не делал, но в описании вижу - рассвет -закат и нога на схеме D11. Где там RGB не вижу.
Что такое "FM не RT" даже стесняюсь спросить ))
ну я видно раскатал губу что рассвет будет полноцветной светодиодной лентой :) а не чисто белыми
это от абревиатуры РТФМ (рид тзе факинг мануал:)) ) в смысле инструкцию к программингу скетчей на ардуино еще не освоил...

Сергій М
18.02.2016, 13:27
alex_palace, никакой ленты, светодиоды и драйвер ШИМ, а уж светодиоды лепите какие нравятся.
РТФМ (рид тзе факинг мануал ) — улыбнуло :-)

alex_palace
18.02.2016, 13:47
RTFM. LOL. AkA и другие это ж баян-бабаян с времен когда интернет ходил по модемам :)

Перечитывал, наткнулся на эмуляцию в протеусе, заодно подкачал библиотеки http://www.theengineeringprojects.com/2015/12/arduino-library-proteus-simulation.html
и пока железо едет из китая можно будет попробовать поизвращатся :)

Sem
18.02.2016, 14:01
alex_palace, прот какой? Давно не игрался.

alex_palace
18.02.2016, 14:05
7,7 рус , на 10ке взлетел. Брал на еиксе

alex_palace
18.02.2016, 16:17
AlexVOK, как автору вопрос - а коррекция помп в скетче уже есть? Есть идея т.к сейчас даже перистальтик 1 шт уже 200 грн на али а помпа очень б/у таки 300 использовать http://ru.aliexpress.com/item/2015-New-Mini-Micro-Priming-Gear-Water-Pump-DC-3V-12V-RS-360SH-Spray-Motor/32521083255.html (таки втрое дешевле) или вообще насос от омывателя авто и тонкий шланг для подачи чтоб уменьшить обьем, но надо таки калибровка.
(сделал перистальтику на 3 канала типа продаваемой на форуме, но за неделю уже дважды пришлось шланги натягивать и перекалибровывать :((( потому и ищу таки варианты, т.к на Комбайнеровский податчик в бюджете пока никак...

stas226823
19.02.2016, 18:57
Прошил я все таки ардуину. Руки кривые просто походу. Теперь другая проблема произвольно срабатывают кнопки. Через keytest значения скачут. без нажатия кнопок как я понял должен показывать 1023, а у меня около 100. В какую сторону копать то хоть?

alex_palace
19.02.2016, 19:03
проверь резисторы. ну и сопротивление общее и в т.ч кнопок... при подаче на 7 ногу 5 в через резистор 2к должно быть ненажатые кнопки