Ви не увійшли.
На данном этапе, мне не важна красота кода, мне более важно выжать из контроллера его именно простой функционал..
Непрерывная слежка за параметрами и автоматическая регуляция процессов в управлении простой домашней котельной - не нужны!.
У меня была задача снять нагрузку с оператора котельной, а именно: включать и выключать насосы по помещениям должен контроллер, а не оператор. Это делается для того, чтобы поддерживать температуру в доме и в подсобных помещениях строго в райне заданной. Для этого мне только и нужно, что опросить Далласы и выполнить простой код, заняв, при этом, 8 портов на релюхи и 1 порт на далласы. Итого 9 портов и 150 строчек кода.
Мне от контроллера за 200 грн больше ничего не надо. Вся его работа - это включать свет по светореле, и измерять и сравнивать и включать релюхи.
Он полностью выполняет свою работу уже около 5-ти лет, а в этом году, вот, появилась лампочка и кнопка перезагрузки. Дисплей врезать не успел. Но, по сути, там все настроено уже точно за все эти годы... Параметры эмпирическим путем получены и вшиты уже прямо в код, ничего не нужно даже менять. В доме есть точно установленная температура 22оС и в подсобных 21оС.
Раньше у оператора котельной был алгоритм: если прошло около часа, котел и бак-накопитель нагрелись до 60оС, а тепло в батареи не пошло, то надо пойти открыть щиток и выключить, а потом включить автомат. А сейчас, если шина ванвайр отвалилась, то лампочка загорится и папа или мама нажмут на кнопку и перезагрузят контроллер по питанию. Это сэкономит время и тепло в дом пойдет четко по расписанию.
В этом, как бы, суть.
Ну, все заработало, как надо..
сравнивайте, а не присваивайте, (tempC1 == -127) и т.д.
Спасибо. Коротко и емко))
сравнивайте, а не присваивайте, (tempC1 == -127) и т.д.
Хозяин - барин.
Honey пише:Специально для Вас: https://arduino.ua/ru/prod4832-master
С таким монтажом сомневаюсь что даже это поможет. А про секретный код вааще молчу...
С каким это ТАКИМ монтажем, проФФесор?
Лучше ваще молчи, за умного сойдешь))
Специально для Вас: https://arduino.ua/ru/prod4832-master
С таким монтажом сомневаюсь что даже это поможет. А про секретный код вааще молчу...
Специально для Вас: https://arduino.ua/ru/prod4832-master
Питание у них свое отдельное через стабилизатор 12-3,3В
ЗАДАЧА:
Шина Далласов работает не очень хорошо,
РЕШЕНИЕ:
разобраться с питанием и подключением датчиков
Дописал такую хрень:
//проверка на ошибкиif ((tempC1 = -127)&&(tempC2 = -127)&&(tempC3 = -127)&&(tempC4 = -127)&&(tempC5 = -127)&&(tempC6 = -127)&&(tempC7 = -127))
{
analogWrite (mist, 255); // На пин А1 посадил диодSerial.print("ошибка Dallas OneWire");
Serial.println();ПРОБЛЕМА ПО СУТИ:
Короче, код перестал работать вообще. Все далласы показывают -127.
Начал крутить-вертеть и оставил кусок кода:
if (tempC1 = -127)
{
analogWrite (mist, 255); // На пин А1 посадил диодSerial.print("ошибка Dallas OneWire");
Serial.println();
Вот прям так и пишете?
У меня раз в 10 сек опрос
далласы требуют до 1 сек на получение температуры.
надо правильно организовать опрос и всё будет гуд.
Добрый день.
Помогите разобраться.
ВСТУПЛЕНИЕ:
Есть примитивный скетч для управления отоплением. В системе установлены 7 датчиков Даллас и они опрашиваются по адресам
DeviceAddress Thermometer1 = {
0x28, 0xFF, 0xF6, 0x1E, 0x51, 0x18, 0x01, 0x4B }; //D3 28 FF F6 1E 51 18 01 4B котел подача
DeviceAddress Thermometer2 = {
0x28, 0xFF, 0xC7, 0x10, 0xA6, 0x16, 0x04, 0x03 }; //D5 28 FF C7 10 A6 16 4 3 дом воздух
DeviceAddress Thermometer3 = {
0x28, 0x61, 0x64, 0x11, 0xB0, 0x76, 0x28, 0x12 }; //D0 28 61 64 11 B0 76 28 12 кухня
DeviceAddress Thermometer4 = {
0x28, 0xFF, 0x98, 0x94, 0xA6, 0x16, 0x03, 0xAD }; //D2 28 FF 98 94 A6 16 3 AD верх бака
DeviceAddress Thermometer5 = {
0x28, 0xFF, 0x33, 0x45, 0xA6, 0x16, 0x04, 0xE3 }; //D4 середина бака 28 FF 33 45 A6 16 04 E3
DeviceAddress Thermometer6 = {
0x28, 0xFF, 0xC7, 0x1C, 0xA6, 0x16, 0x04, 0x11 }; //D6 низ бака 28 FF C7 1C A6 16 04 11
DeviceAddress Thermometer7 = {
0x28, 0x61, 0x64, 0x11, 0xB0, 0x76, 0xFD, 0x7A }; //D1 подача на насосы 28 61 64 11 B0 76 FD 7A
Потом в цикле они опрашиваются
float tempC1 = sensors.getTempC(Thermometer1); // котел подача 28 FF DE 16 A6 16 4 85
float tempC2 = sensors.getTempC(Thermometer2); // дом воздух 28 FF C7 10 A6 16 4 3
float tempC3 = sensors.getTempC(Thermometer3); // кухня 28 61 64 11 B0 76 28 12
float tempC4 = sensors.getTempC(Thermometer4); // верх бака 28 FF 98 94 A6 16 3 AD
float tempC5 = sensors.getTempC(Thermometer5); // середина бака 28 FF 33 45 A6 16 04 E3
float tempC6 = sensors.getTempC(Thermometer6); // низ бака 28 FF C7 1C A6 16 04 11
float tempC7 = sensors.getTempC(Thermometer7); // подача на насосы 28 61 64 11 B0 76 FD 7A
Далее выполняю простые команды "иф/элс", например:
if (((tempC3<21)&(tempC7>33))||(tempC3<15))// в кухне меньше 23 и подача теплая ИЛИ котел горячий ИЛИ в (кухне ниже 15)
{
digitalWrite (kyxnya, LOW), Serial.print("Насос кухня включен ");
Serial.println();
}
else
{
digitalWrite (kyxnya, HIGH), Serial.print("Насос кухня отключен ");
Serial.println();
ЗАДАЧА:
Шина Далласов работает не очень хорошо, при перепадах напряжения или резких вкл/выкл она отваливается и все значения становятся -127
Перезагрузка контроллера не решает, нужно только дергать питание контроллера. Для этого вывел кнопку на переднюю панель.
Экрана пока нету, поэтому иногда не видишь, что шина отвалилась (случается редко, но метко)
Захотел я добавить кусок кода и лампочку вывести на панель, чтобы включалась, когда отваливается шина.
Дописал такую хрень:
//проверка на ошибки
if ((tempC1 = -127)&&(tempC2 = -127)&&(tempC3 = -127)&&(tempC4 = -127)&&(tempC5 = -127)&&(tempC6 = -127)&&(tempC7 = -127))
{
analogWrite (mist, 255); // На пин А1 посадил диод
Serial.print("ошибка Dallas OneWire");
Serial.println();
ПРОБЛЕМА ПО СУТИ:
Короче, код перестал работать вообще. Все далласы показывают -127.
Начал крутить-вертеть и оставил кусок кода:
if (tempC1 = -127)
{
analogWrite (mist, 255); // На пин А1 посадил диод
Serial.print("ошибка Dallas OneWire");
Serial.println();
Теперь показания в мониторе порта все верные, но диод горит и строка "ошибка Dallas OneWire" - ХОТЯ, все показания на датчиках есть..
ВОПРОС:
а) подскажите, где я неправильно делаю
б) подскажите другое лаконичное решение проверки шины на отвал
Благодарю за внимание к моей проблеме.