Автор, поясни пожалуйста зачем нужен индекс давления? Ведь это реально бездельное включение электромашины, поскольку заведомо неизвестно, сколько будет продолжаться отбор воды из накопителя.
Полагаю, оптимальным было бы включение на нижнем давлении, и отключении при достижении верхнего порога, эмулируя электромеханическое реле. Так насос будет включаться реже всего, и переживать наименьшее количество разрушительных моментов пуска.
Вобщем, поясни свои мысли по этому вопросу, почему решил что реализовывать эту фичу действительно необходимо.
я так думаю это для того, чтобы при быстром падении давления насос включился до того, как станет поздно. Насос же не сразу начинает качать. А давление падает быстро. считайте это адаптивным нижним порогом.
все верно, спасибо. если индекс не срабатывает, сработает по низкому. у нас 3 дома и одна сисьема водоразбора. есть моменты когда можно включать преждевременно, для этого был придуман индекс этот :)
Частотник вам нужен на насос.

Он стоит знаааачительно дороже ардуины

На низком давлении насосу включаться легче.
Так для этого служит обратный клапан. То есть в трубах всегда есть вода и насос не наполняет из каждый раз, фактически да, качает сразу.
у меня быстрое падение давления предотвращает расширительный бак + ещё вода в нем уже не ледяная как сразу из скважины
использую реле KPI-35, основная проблема — конденсат от холодной воды, реле приходится примерно раз в год чистить т.к. заростает окислами
интересно как датчик этот отнесется к постоянному конденсату
тут ещё один скрытый плюс: если производительности насоса не хватает то включать его по нижнему пределу уже поздно. А вот включение заранее позволит распределить пиковую нагрузку между накопителем и насосом и вода в накопителей кончится позже. Возможно этого хватит, чтобы пережить без проблем эту пиковую нагрузку.
Вообще то это неправильно — наличие пиковых нагрузок, с которыми не справляется насос, должно компенсироваться гидроаккумулятором. Например это может быть смыв унитаза пока кто-то другой моется в душе. Если насос не справляется систематически с водоразбором, то надо что-то делать с насосом и/или с источником воды.
А разве нельзя применить PID-регулирование? В 99% случаев оно помогает.
верно, я тоже так подумал, но здесь нет метода ШИМ для управления насосом, тоесть для корректировки ошибок и правильного включения, так как есть автоматика насоса и она уже управляется стартом насоса.

здесь только адаптивный старт, либо старт при достижении низкого и выкл при достижении высокого.

спасибо, я тоже люблю пид, но он не для такой простой задачи
индекс падения давления я рассчитываю тогда, когда в гребенке остается половина давления и каждые 10 секунд проверяется предыдущее и текущее, если разница составит меньше установленного по дефолту 0.05 — тогда меняется текущий индекс и включается насос на ОПЕРЕЖЕНИЕ, тоесть по логике идет быстрое водопотребление


Еще чуть-чуть и Вы заново откроете «скорость изменения давления» и «ускорение изменения давления» )) А если Вы дойдете до ускорения, то Ваш алгоритм, по идее, должен коренным образом упроститься.
мне так захотелось считать, у вас есть конкретные примеры другой реализации? я ж не против — выкладывайте )
спасибо
У меня насос включается по падению давления, и выключается по прекращению протока. Мне этот вариант нравится больше всего.
ага, у меня тоже так почти в 80%

Проток механическим датчиком определяете или по давлению?

Не знаю, после закрытия крана насос работает ещё 15 секунд.
Автоматика насоса такая: www.jeelex.ru/catalog/komplektuyushchie/avtomatika-dlja-nasosa
Из описания: «Блок автоматики для насоса производит запуск насоса при понижении величины давления в системе и остановку насоса в случае прекращения потока жидкости.»
Jeelex ныне — бренд, жестко противопоказанный к применению, особенно, если небезразличен результат.
это вроде частотника, который сделали сторонние разработчики? вроде бы сейчас к любому насосу более менее известному, компании производители продают свои частотники, адаптированные под свои же насосы. Так как частотник, это не просто вкл\выкл насос, там намного все сложнее с частотой вращения (глубоко стаф не знаю)
В джилексе не частотник, к сожалению.
Частотник доступный ищу, но пока не попадался. Вот тут бы цифровой пуск пригодился, т.к. частотник снизит нагрузки и на насос и на сеть, и тогда уже можно предиктивный старт мутить.
Посмотрите в сторону Inovert. Я с таким баловался, когда контроллер насоса разрабатывал. Однофазный вход/выход, удобен для бытового применения. так же есть и трехфазные варианты.

У меня — по давлению в расширительном бачке. Так же просто, и манометр не забъётся ничем, так как сквозь него вода не течёт. Плюс запас воды с давлением при пропадении электричества.

Для дома не плохо! Я делал подобное, только с промышленным датчиком с выходом 4-20мА, все равно лежал без дела. Сделал ещё его калибровку и защиту по сухому ходу насоса, и защиту от закисания вала(проворот вала на несколько секунд раз в сутки если насос не включался за эти сутки.) В качестве шунта на датчик использовал прецизионный резистор на 1Вт.

Ходил уже этим путём. Началось всё с того, что у меня это механическое реле просто развалилось через лет 5 службы. Заклинило, насос не выключался (обычный, не погружной), перегрелся (термозащиты нет), труп, 70 евро на ремонт кишок. Собрал по подобной схеме с таким же датчиком на таком же твёрдотельном реле. Через несколько месяцев сдохло это реле, насос не выключался — труп, 70 евро на ремонт кишок. Теперь собрал по схеме твердотельное реле + пускатель. Работает чётко. Термозащиту всё ещё ленюсь сделать :))
хороший опыт, я то думал я один этот датчик запихнул, спасибо хоть есть и другие. опыт полезен, можно больше про реле? как сдохло?

Аналогично механика забилась отложениями и сдохла. А твердотельное реле рекомендуют ставить на радиатор. Греется сильно.

Затрудняюсь скзать как именно. Я его разобрал, там залито всё компаундом, отдирать эту гадость поленился. Но прозванивалось оно насквозь.
Это ваше реле — на самом деле обычный оптосимистор, они крайне отрицательно относятся к реактивной нагрузке без цепей компенсации. Обычно для таких случаев когда ну очень надо параллельно симистору ставят снабберую цепочку — последовательные резистор и конденсатор, они рассчитываются исходя из полного сопротивления нагрузки, косинуса угла реактивного сдвига фазы(должен быть указан на насосе) и свойств самого симистора(допустимый предел dV/dt) обычно номиналы находятся в районе 100Ом@1Вт и 0.1мкФ@600В. Ясное дело, в ваших модулях использован самый дешёвый симистор, оттуда все беды.
Но есть ньюанс — снабберная цепочка во-первых рассеивает тепло при работе симистора, во вторых создаёт утечку тока через выключенное «реле» порядка 1-2мА.
А, и очень важное замечание — учтите что симистор может самопроизвольно открыться от превышения dV/dt(скорость роста напряжения на выводах) т.е. от помех в сети, и что самое интересное — от КЗ в нагрузке когда симистор выключен. т.е. в отличие от реле когда симистор выключен это не означает что можно что-то делать с нагрузкой, даже банальная коммутация цепей внутри нагрузки может привести к срабатыванию симистора и выдаче импульса напряжения до 10мс(один полупериод).
Есть и snabberless симисторы

Примените тепловую модель :)

90% разговоры за жизнь. Вам бы друзей чтоль завести, да под пивко поговорить…

Единственно полезное тут алгоритм. Мог бы быть, если бы был доработан.
А так… «Прикрутил китайскую фигню и запрограммировал андурину» таких статей тут полно.

Ну и про реле… не верьте надписям. «безопасность» это не про них. Пример писали комментами выше. Контактор наше все.
>Контактор наше все.
Нет, тема полностью раскрывается при гуглении «безшумный контактор» )
Контакторы тоже бывает подводят… Особенно, они любят «залипать»,
Это да, особенно дешевые марки грешат. Еще до 25А на фазу автоматические выключатели и контакторы — семь-восемь — могут работать, то выше — контакты под нагрузкой синеют и горят (слава Богу, при наличии постоянного контроля только они).
а Вы китайские не берите. На всех заводах успешно пашут с лохматых годов. На каждом станке стоят.
И ЗИПа на тех заводах много-много ящиков, да-да.
Дохнуть умеют даже понтовые шнайдеровские контакторы, как практика показывает.
А сейчас можно взять что-то не китайское?
есть РОССИЯ — ОМРОН, но ростите, ценник за реле запредельное (у нас в Минске) — 30$ — я даже не против его взять, но — гарнтии какие, что там внутри начинка не такая же, как в китайском реле )))) — у нас в беларуси так моники в горизонте делают — наклейку клеяют свою и все… красота — «made in Belarus» :D — у Вас не так, я надеюсь?
красота — «made in Belarus» :D — у Вас не так, я надеюсь?
Ну Samsung и Lg лепят «Сделано в России», но они как минимум собирают телевизоры полностью в России и Lg точно платы печатает тут же.
Есть DEXP, фоток завода нет и видео от туда нет. Нашел вакансию начальника цеха, зарплата 40-60 т. рублей. Ну то есть с такой зарплатой начальника цеха предположу, что там максимум телевизоры в коробки засовывают.
Да и к Китаю люди в России давно нормально относятся, понимают что все производится там. У людей к надписи «сделано в России» наоборот временами неоправданный скепсис возникает. К той техники Samsung или Lg например или автомобилям. Типа все привозят из Китая или Европы а тут просто болтики закручивают.
В том-то и беда, что все пять умерших за последний контакторов- отечественного производства, два из них не проработали и пары месяцев. Причем это были отнюдь не мелкие аппараты на 5А, а здоровенные «железяки», рассчитанные на номинальный ток 250А.
в том то и дело, что статей про замену механичского реле я не нашел, пытался искать, или плохо или мало. мне было интересно получить опыт и понять, как это будет работать в режиме реальности, а не в режиме 5 минут в обвесе с соплями )))

90% за жизнь, верно — жизнь наше все, гораздо интересней прокатит такая статья, чем сухая выжимка кода с расчетом PID регулятора или выявления ускорения падения воды в системе :), а так — статья зацепила Вас, вы даже коментарий написали, мнение высказали, полезную информацию про контактор (почитаю ещё про них).

друзей хватает, баня на фотке выходные не простаивает ))) — а вообще да, удаленность от города, живя в лесу, встречая каждый вечер зайцев на дороге, сильно расстаскивает :D

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

Какой у него диаметр резьбы?
По фото похоже на 1/4", в описании встретил только 1/8".

у меня 1\4"
Дайте ссылку на Ваш датчик
Спасибо

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

Очевидно, использована не бронза, а что-то подешевле. али такой али…
У меня была идея на обычный стрелочный манометр наклеить диск с прорезями и 2 оптопары. При наличии прямых рук и нескольких оптопар можно кодировать угол поворота стрелки в код Грея… Но поленился.
Easy-removal-Carbon-Steel — не stainless steel, Вас не заинтриговало?
В придачу описание применения начинается с гсм материалов и в конце добавили воздух с водой (ну типа это тоже можно)
ну так, для этого мы здесь, что бы проверить и убедится в том, что это может жить или нет :)
Я провел эксперимент по использованию таких датчиков давления длительностью более двух лет.
Датчики использованы в домашней системе для повышения ситуационной осведомленности, как сейчас модно говорить :)
Датчики измеряют давление холодной и горячей воды.
До этих датчиков стояли механические автомобильные датчики давления масла. Менее чем за год входные отверстия зарастают ржавчиной и датчики замирают на одном показании. Я пару отказавших распилил — ржавчина заполняет все свободное пространство до мембраны.

Электронные датчики как тут уже написали — точно так же зарастают.

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

Я решил, что проблему можно решить, если входное отверстие датчика заполнить консистентным веществом типа густой смазки.
Я порылся в инете и нашел такое вещество :) Это специальная силиконовая смазка. Густая, допущенная для применения в пищевой промышленности, несмываемая водой.

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



В моем случае датчики калибровались по образцовому механическому манометру. Любопытно, что датчики при начале эксплуатации были разные — требовались разные параметры прямой, аппроксимирующей выходной сигнал (зависимость выходного сигнала от давления).
Через примерно год я заметил, что датчики «разошлись».
Повторная калибровка дала удивительный результат — параметры датчиков стали одинаковыми.

Если кому интересно конкретное название смазки — напишу завтра. Сейчас выходить на балкон сильно лень :)
А можете показать пример мембран и где их купить, а то первая страница гугла всё под заказ и по запросу.
А то смазку как-то всётаки не хочется…
загуглите «манометр с разделительной мембраной» или «разделительная мембрана для датчика давления» или «мембранные разделители сред».

Насчет где купить не знаю, однако на запрос «купить ...» и заход по ссылке с ценой www.npo-manometr.ru/products/25/152 дает цену в 3750 руб. Полагаю, что если там порыться — то и способ покупки найдется :)

Это у данного конкретного датчика так. В том, что я заказывал была указана нержавейка.

да, заметил в описании, идет защита от ржавения, но не нержавейка основа. но нашел замену www.aliexpress.com/item/1PC-New-Arrival-Stylish-Top-Selling-300-psi-Stainless-Steel-Oil-pressure-Sensor-for-Oil-Fuel/32818589938.html

надо будет проверить его :)

Если приглядеться и сравнить с вариантом с ebay, то качество изготовления хуже.

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

У меня подозрение, что как-то повлияло возможное наличие напряжения (-5V) от ардуины на корпусе датчика и наличие потенциала в самой воде, т.к. от водопроводных труб иногда током дергает. Сниму датчик, покажу фото. Местами его корпус съеден. Может быть, окалина, наросшая на отверстии — это частицы самого корпуса датчика, которые не уплыли далеко.
Не разбираюсь в этом вопросе настолько, чтобы дать исчерпывающий ответ.

Электролизом попахивает. спасибо за информацию — скиньте фото как получится.
300psi ~ 20bar для водопровода не многовато?
т.к водопровод 2-6 максимум…
это я так — нашел из нержавейки. конечно много ;)
1/8" но есть
ebay.to/2BNunkv
1/8" на 1/2"
Я правильно понял, что там читается значение АЦП и из него сразу (точнее после проверки корректности) считается давление? А как же усредение, фильтрация и т.п. Я только что дописал прогу для управления твердотельным котлом, плата на ATMega8, так вот, там значения АЦП (даже со спец подготовкой типа режима уменьшения шума при конвертации) скачут на 2 младшие единицы. А при хорошей фильтрации значимыми получается даже «десятые» от этих единиц. Какую точность без этого всего получаете?

void ADCGetADCTemprCZ2(void)
{
uint tmpData;

ADMUX = (1<<REFS0)|(1<<MUX1); //
__delay_cycles(50);

/*MCUCR |= (1<<SE)|(1<<SM0);
__sleep();*/

ADCSR |= (1<<ADSC); // Start ADC
while(!(ADCSR & (1<<ADIF))) {}; // Weit ADC complite flag

tmpData = ADCL;
tmpData |= (ADCH << 8);

if (CheckADCDataCZ2(tmpData) == true) tmpData -= MIN_TEMPR_ADC;
else return; // выходим из функции не применяя "плохие значения"

if (prgState.cz2ApplyFilter)
{
  ADCTemprCZ2 = Filter(ADCTemprCZ2, tmpData);
}
else
{
  ADCTemprCZ2 = (tmpData - 1) << 8;
  prgState.cz2ApplyFilter = true;
}

}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

uint Filter(uint inOldData, uchar inNewData)
{
uint deltaOrOut, tmpData;
uint inNewDataLong = inNewData << 8;

if (inOldData > inNewDataLong)
{
  deltaOrOut = inOldData - inNewDataLong;
  
  tmpData = deltaOrOut >> 6;
  deltaOrOut = inOldData - tmpData;
}
else
{
  deltaOrOut = inNewDataLong - inOldData;
  
  tmpData = deltaOrOut >> 6;
  deltaOrOut = inOldData + tmpData;
}

return deltaOrOut;
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

schar ADCToTempr(uint adcData)
{

ulong tmpData;
schar out;

tmpData = (adcData - (settings.temprMinus10Offset << 8));
tmpData = tmpData * settings.temprKoefMult;
tmpData = tmpData >> 16;

out = tmpData - TEMPR_MINUS10_CONST;
return out;
}

какой то добрый человек уже закинул пул реквест на мой код и добавил медиану, спасибоему огромное. фактически в тестах показало что нет скачков, но иногда бвает 0.01bar может шалить, но в рамках интервала 1.6-3 это никак не влияет на работу.

медиану добавил в код.

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

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

Пожалуйста, не поленитеь отписаться через полгода-год.
Ставил себе точно такие датчики — дохли через 3-4 месяца. При демонтаже были все в ржавчине (забор воды из колодца, трубы — полипропилен, больше следов накопления ржавчины нигде нет).
Плюнул, вернулся к механике.


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

Приветствую, обязательно отпишусь, самому интересно. У меня скважина 56 метров, монометр за 4 года не сгнил, внутри чистый (обратите внимание, он в магистрали как и датчик) — трубы пластик вводные. У меня так же спортирвный интерес.

1. хотелось применить этот датчик не на соплях в макетке, а рально в девайсине
2. применить сделаный девайс в домашней системе и проверить как оно, твое устройство будет реально эксплуатироваться
3. проверить живучесть таких устройств с АЛИ, которые визуально выглядят хорошо
Посмотрите продукцию Pumpela (Санкт-Петербург) — очень неплохие изделия, еще из с защитой от ХХ без включения на проток!
Ставьте датчик не в контур водоснабжения, а через мембрану. Датчик-емкость разделенная мембраной-контур водоснабжения. В ту часть разделительной емкости, куда вкручен датчик, залита нейтральная (по отношению к материалу датчика) и безопасная (по отношению к человеку) жидкость.

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

Вот за эту идею — спасибище!

Только не забудьте откалиброваться, воздух в ноль не падает.
Плюс еще переходник поискать.
Не по предмету:
Скрытый текст
КМК, это крысёныш был, и это плохо.
у Вас хорошие познания, но вроде как мышка, не крыса. у нас тут крысы не водятся, а вот полевок хватает… летом заскочила, гоняюсь за ней все, открыт гараж был.

кошку бы тебе надо ;)

Скажите, мышь вы ловили с помощью Arduino, или там уже STM32 надо брать?
:) — ардуинка, вечером решил за 15 минут собрать из того что было, ради фана. заодно проверить как срабатывает линза Френеля на мышке :D
Для таких устройств желательно использовать автоматический RESET в случае зависания. А то если контроллер зависнет в момент включения насоса, могут возникнуть потом некоторые траты за электричество и всякое такое.
Микроконтроллеры ATmega имеют встроенный механизм WatchDog Timer. В Ардуино он не прописан, но добрые люди сделали поддержку этой функции
www.cyber-place.ru/showthread.php?t=550&page=13
Там механическое реле осталось для таких случаев.
механика на случай краха электроники, которая в тестовом сейчас работает. тоесть прода перекинуть всегда можно обратно
продумывал механическое вклинить паралельно\последовательно — смысла болшого нет, тупики все равно получаются в случае выхода твердотельного
А не было мысли поставить второй датчик после магистрального фильтра, чтобы этот самый фильтр менять не визуальным контролем, а по достижению порогового значения дельты показаний двух датчиков?
меняю раз в 3-5 месяца(ев) и как то ОК — не напрягает ;)
У меня колодец и потребность выше — в среднем раз в месяц замена фильтра происходит. Да и хочется оперировать более объективным критерием нежели визуальное загрязнение и уже по факту ослабевший напор воды из под крана. Пока не встретил готового решения.
если найдете решение — буду рад услышать его, возможно поделитесь статьей. спасибо
Замена по календарю — надежно и бюджетно ;)
Можно наколхозить 2 датчика давления (на входе и на выходе фильтра), измерять разницу давлений (можно даже без ардуины, хватит и операционного усилителя) и зажигать светодиод при превышении.
В вашем случае, думаю, надо 2 фильтра — грубой очистки и тонкой очистки и 3 датчика.
защита от сухого хода предусмотрена?
пока продумываю ка интегрировать в текущий алгоритм с проверкой давления после включения реле. по факту есть тепловое реле в автоматике… но можно добавить и со своей стороны.
Может уж тогда и плавный пуск вкорячить, чтобы не было бросков тока в момент включения (реализуется программно либо на U2008B). Заменить оптореле связкой MOC + симистор. Шунтировать симистор относительно слаботочным реле, чтобы уменьшить безполезный нагрев…
много чего можно добавить
Плавный пуск асинхронного двигателя выглядит немного сложнее ;) Дешевле купить еще один насос.
А вот производители электроинструмента не видят в этом ничего сложного
Ссылку на электроинструмент с асинхронным двигателем, плавным пуском и ценой в студию ;)
В этом инструменте универсальный коллекторный двигатель, а не асинхронный двигатель. Первым можно управлять напряжением, вторым частотой. Ставить/делать частотный преобразователь в эту конструкцию, весьма не бюджетно выйдет.
Вы правы, но только наполовину.
Асинхронным двигателем нужно управлять по закону U/F, т.е. с изменением частоты должно меняться и напряжение. Однако, не вижу причин по которым двигатель не мог бы стартовать с пониженного напряжения.
не вижу причин по которым двигатель не мог бы стартовать с пониженного напряжения

Стартовый ток. Ну не умеет асинхронник крутиться медленно.

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

Они традиционны для универсальных двигателей, не для асинхронных.
Ну здрасьте. Например GE Astat Plus — как раз для асинхронников и как раз симисторный.
Загуглил.
Устройства плавного пуска General Electric серии Astat Plus — полупроводниковые устройства плавного пуска для трехфазных двигателей переменного тока


Трехфазный двигатель от однофазного (с здоровым таким фазосдвигающим конденсатором) таки отличается. Реактивная нагрузка же. И что-то мне кажется, что этот гаджет будет стоить как насос вместе со скважиной.
И что это даст, кроме вероятности того, что он не стартует вовсе?
можно добавить дачик протока
ebay.to/2y7wGgc
заодно по нему можно будет считать потребление и косвенно загрязнение фильтра.
я себе поставил вот такую управлялку: fiting.com.ua/p362188900-rele-davleniya-zaschitoj.html
За изделие и прямые руки, безусловно, плюс. Но если исключить из текста все приветствия, поздравления, хвалебные слова самому себе и прочие оправдания, то останется примерно 10 строчек. Из которых половина о том как можно умножить и разделит на 10 чтобы хранить все в памяти в человекопонятном виде вместо того, чтобы хранить значение от 0 до 255 (как на выходе с АЦП) и преобразовывать в человекопонятное при выводе на экран.
Задача надуманная. Ладно бы плавный пуск насоса организовали… А так это замена 1 типового модуля на 4 редких (датчик-источник питания-контроллер-индикатор; куда бежать, если в пятницу вечером датчик с алиэкспресса сломается?). Механическое реле (при правильной регулировке) просто работает годами. Если напрягают щелчки — можно завернуть в шумоподавитель (хотя, раз оно осталось в системе и продолжает щелкать — думаю, это не повредит).
Гидроаккумулятор должен быть литров на 100, раз от него запитаны еще и соседи.
Давление воздуха в нем (без воды!) должно быть 1.5..1.7 атм.
Нижнее давление в в автоматике должно быть на 0.2-0.3 атм выше чем давление воздуха — тогда не будет провалов давления при пуске насоса.
Датчик давления (или реле) желательно монтировать поближе к гидроаккумулятору.
Хороший коммент.
Не надо сочинять новый механизм там, где достаточно грамотно настроить имеющийся.
Не буду спрашивать, нафига там вообще float, а спрошу, в чем проблема с записью его в EEPROM?
www.arduino.cc/en/Reference/EEPROMWrite
value: the value to write, from 0 to 255 (byte)

возможно профи ардуинщики меня тыкнут куда то :) в другой мануал

float чем вам не нравится? он применяется в давлении так как цена изменения давления идет 0.01 — мне так захотелось учитывать.

аналог выдет от 0 до 1023 — тоесть от 0 до 5V
этот сенсор выдает от 0.5-4.5В

так как 0-1023 это больше чем byte (uint16_t), а выводить как вы визуально будет еданные без float?

Если есть конкретнеы предложение, буду рад выслушать, спасибо :)
byte(int/uint8_t) — это как раз и значения от 0 до 255. А uint16_t — это значения от 0 до 65к, 1024 туда поместятся. А еще проще умножать сразу на коэффициент пересчета(какой, там, 11?) и хранить значение в миллибарах каких-нибудь. Т.е. давление у вас 3бар, АЦП выдает 274, вы умножаете на 11, получаете 3014 и его храните. А если надо вывести на экран/в лог — вычисляете сначала целую часть, деля на 1000, а потом дробную, беря остаток от деления. Все сравнения внутри программы ведете в миллибарах.
Таким образом, избавляетесь от float, ускоряя операции, и экономите на памяти, храня два байта вместо 4, да еще и не теряя в точности.

А по поводу EEPROM, что вам мешает записать эти два байта, составляющие uint16_t(или 4 в случае float) в разные ячейки?
спасибо за подход, рассмотрим его в рамках оптимизации кода.

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

касательно памяти — не вижу проблем сторить большие даные разбивая на адресные пространства.

спасибо за время
Что-то типа.
#define EEPROM_OFFSET_VALUE = 0x10
#define ADC_MBAR_FACTOR = 11

typedef union u8_u16_t
{
   uint16_t u16;
   uint8_t u8[2];
} u8_u16_t;

uint16_t read_value()
{
   u8_u16_t value;
   value.u8[0] = EEPROM.read(EEPROM_OFFSET_VALUE+0);
   value.u8[1] = EEPROM.read(EEPROM_OFFSET_VALUE+1);
   return value.u16;
}

void write_value(uint16_t value_u16)
{
   u8_u16_t value;
   value.u16 = value_u16;
   EEPROM.write(EEPROM_OFFSET_VALUE+0, value.u8[0]);
   EEPROM.write(EEPROM_OFFSET_VALUE+1, value.u8[1]);
} 

void measure()
{
   uint16_t raw_value = ADC.read(1);
   write_value(raw_value*ADC_MBAR_FACTOR);
}

void print()
{
   uint16_t valuembar = read_value();
   printf("Value: %u.%u\n", valuembar / 1000, valuembar % 1000);
}


Про формат данных хочу вставить пять копеек «на гипотетически возможное будущее»:

Пока данные используются только в пределах одного устройства, вопрос формата — либо удобство разработчика, либо оптимизация использования ресурсов контроллера. Даже если надо выводить на индикатор в понятном виде — всё равно точку конвертации можно без далеко идущих последствий двигать от момента замера до момента вывода на индикатор.

А вот как только возникнет задача передачи данных на другое устройство (например, на комп для мониторинга), то лучше сразу предусмотреть в протоколе передачи некую стандартизацию формата — и хорошо бы привязать или к какому-то уже существующему стандарту, или просто заложить «человеко-понятную» форму (самый простой пример — ASCII-протокол через UART, который можно посмотреть тупо в терминале).

Другими словами, передавать в канал «сырой» замер АЦП чревато следующим сценарием: делаем мы следующую версию нашего устройства, с другой разрядностью АЦП (12 вместо 10 или наоборот), а того веселее (и вероятнее) — если меняются параметры цепи между датчиком и АЦП (делитель или усилитель), или сам датчик (с другой характеристикой) — и привет.

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

Возможный способ — в новой версии сделать перед передачей в канал конвертацию, имитирующую старый формат — по сути получается, что мы фиксируем тот первый вариант «сырого АЦП» в качестве стандарта. Но «еще один самопальный стандарт» — это всё-таки фу. Через несколько итераций может получиться "эффект лошадиной задницы".

В общем, повторюсь — всё это не актуально в случае единичных поделок «для себя». Просто хорошая привычка, могущая пригодиться при дальнейшем развитии. А оно ведь как бывает — сделал для себя, потом зашёл сосед, увидел — и попросил и ему такое сделать (за вознаграждение или просто в рамках добрососедских отношений — это уже по ситуации), потом еще знакомым рассказал — и пошла писать губерния.
было решено с моей стороны так: зная, что число x.x0 это давление float типа, его можно легко конвертировать в byte если умножить на 10 и записать в память


Поздравляю! Вы «изобрели» формат записи с фиксированной точкой. ;)

А вообще вы молодец. Спасибо. Интересно. Люблю малую автоматизацию.
Спасибо, «изобрели» формат записил — это хорошая шутка, посмеялся ))))
Как ктото писал — «нафига переводить, и в чем трабла записи в EEPPROM float типа?» — да дело в том что EEPPROM сейвит по мануалу 0-255 byte тип или как любят писать: uint8_t тип.
Вообще это просто минимальная порция данных для записи, никто не запрещает хоть 16 ячеек по очереди записывать! А float в контроллере представлен 4-мя такими байтами, если мне память не изменяет.
да все верно — я хотел быстро записать в одну ячейку без разбивок.
Там даже разбивать ничего не надо. Пишите подряд и всё. Все I2C EEPROM имеют режим последовательной страничной записи. Один раз посылаем адрес микросхемы и бит записи, потом адрес стартовой ячейки, а потом данные без стопа. Стоп — только после последнего байта. Адрес инкрементируется в микросхеме сам.

Ну и раз уж у вас Ардуина с её библиотеками, то там это делается через EEPROM.put():
www.arduino.cc/en/Tutorial/EEPROMPut
а там точно епром именно I2C используется, а не внутренний AVR- микроконтроллера?
Может и внутренний. Не имел дела с ардуинами, честно говоря. Но всё равно в API есть функция EEPROM.put(), которая любые переменные сохраняет.
я к тому вёл, что если встроенный — то не в каждом AVR есть страничный режим, вот в AT90CANxxx — нет.
Впрочем, автоинкремент адреса байтов может быть реализован в API и программно. Тем более, что пользователь может указать такой начальный адрес, что попадёт на границу страниц.
Ну и что, что он «сейвит» байты. Это как-то до сих пор никому не мешало хранить там хоть 16, хоть 32, хоть 64 бита, хоть строки любой длины (лишь бы влезло). Процедура записи 4 байт мало отличается от таковой для 1 байта.

Кстати, вот совершенно справедливое было высказано тут предложение хранить данные в EEPROM в «сыром» виде, как выдаёт АЦП. И ничего отбрасывать или округлять не надо было бы. А всей этой арифметикой заниматься уже непосредственно перед выводом на экран.
в EEPPROM не надо хранить данные АЦП, нет никакого смысла, в EEPPROM сохраняется нижнее и высокое давление, в случае если изменялись настройки от дефолтных и блок выключают и включают.
Более того, если сдвинете на 2 разряда то, что вычитали из АЦП — можно спокойно сохранять 1 байт, разницы никто не увидит. Вряд ли у этих датчиков точность в 0.1%, а даже для 1% (что тоже вряд ли) 255 уровней достаточно.
Ну так а сравниваете-то вы это сохранённое значение с чем? Правильно, с показаниями АЦП. В итоге, при каждом сравнении приходится переводить данные АЦП в человекочитаемый формат, сохранённый в EEPROM. А хранили бы в формате, выдаваемом АЦП, сэкономили бы на этой конверсии. В вашем случае, правда, это не критично, но в других системах может быть и важно.

Ну и верно тут ранее заметили, что эти 0-1023 легко можно поделить на 4 отбрасыванием двух младших битов и никто не заметит разницы.
Цифровое реле от $20
это реле из семейства реле, которые работают с насосами напрямую и скорее всего для насосов колодцев. у меня насос со своим пускатель насоса (блок) который защищает реле давления от высоких токов…
частный случай.
в большинстве случаев этой релюхи за глаза.
можно даже пневмореле использовать, просто сделать вертикальный глухой отвод и втулить датчик вверху.
тоже цена около $20
Помимо прочего, очень не рекомендую когда-либо писать в коде вот так:

P_c = ((11.5 * Vout + 2.25) / 4.5) + Pcorrection;


Тут сразу две проблемы:
  1. Через пару лет, когда полезете разбираться в коде, будете долго вспоминать, что это за циферки такие и почему они именно такие
  2. Если эту формулу вы используете более, чем в 1 месте, то потом есть риск поменять её в одном месте и забыть поменять в другом.


Решение состоит в том, чтобы никогда не использовать «магические числа», а заменять их макросами с понятными именами (и комментами в месте определения макросов). Ну а если формула используется в коде несколько раз, то лучше и её всю заменить на макро или инлайн функцию.

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

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

Схема работы такова:
— Насос через фильтр грубой очистки закачивает из скважины воду в 300 литровый бак на чердаке дома.
— На выходе из бака стоит фильтр тонкой очистки воды и повышающий насос с датчиком расхода.
— При открытии крана вода сначала самотеком идет, но почти моментально срабатывает датчик расхода и начинает давить повышающий насос.

Плюс в том что при отстутствии электричества водоснабжение в доме не пропадает, потому-что вода самотеком, хоть и с небольшим напором, течет из бака к потребителям. Гравитация рулит :)

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

Эта ардуинка подключена через I2C шину к stm-ке которая обслуживает пульт управления и датчик давления в баке (для измерения уровня воды через давление). Стм-ка посылает команды на включение насоса ардуинке если уровень воды опускается ниже 10%.

Было бы неплохо прикрутить импульсный счётчик воды. Для измерения расхода и как датчик сухого хода. Правда в этом случае его нужно ставить до насоса. Ещё полезная функция защита от протечек. При очень медленном снижении давления в течении определенного периода времени включается закрывающий клапан.

Разрешите поделиться опытом. Так случилось, что живу в Крыму и несколько лет занимаюсь этой темой (насосы, скважины).

Итак, реле давления бавают двух типов — механические и электронные. Есть еще электронные регуляторы давления с функцией частотного преобразования, но это редкость в наших краях да и цена кусается.

1. Механика. Простенькая конструкция с двумя пружинами и гайками, позволяющими настроить давление включения и отключения (на самом деле настраивается P и ΔP но по сути это одно и то же). Обязательно наличие гидроаккумулятора. Есть версии с защитой от сухого хода, но на практике они ненадежны.

2. Электроника. Гидроаккумулятор не нужен. Как правило устройство содержит микропроцессор и 2 датчика — датчик давления и датчик протока воды. Прошу заметить — оба датчика механические а сигнал к микропроцессору обычно поступает через герконы. Присутствует защита от сухого хода, в продвинутых схемах присутствует защита мотора по току.

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

На практике я много раз наблюдал смерть насосов с электронным реле давления и ни разу (НИ РАЗУ!) с механическим. В чем проблема? Да в том, что вода в Крыму грязная. Если из скважины, то с песком, а если из магистрали, то жесткость воды удивляет — трубы «зарастают» на глазах. Что происходит с электроникой? Вечером вы приходите домой и обнаруживаете, что мотор все время включен. Почему? Да просто засорился датчик протока воды (или датчик давления) и микроконтроллер думает, что открыт кран и тупо включает мотор. Мотор работает (краны закрыты), вода нагревается до кипятка, гидравлическая часть плавится. А ее стоимость — половина нового мотора. В случае засорения механического реле все происходит наборот — мотор не включается. Улавливаете разницу?

И еще классческий недостаток электронных реле. Программа (по тем или иным причинам) частенько отключает мотор. И чтобы его включить — нужно нажать на кнопку. Это доводит до белого каления как пользователей, так и обслуживающий персонал. Да, механика тоже может погубить мотор. Например в сети пониженное напряжение и мотор никак не может развить двление для отключения реле. Или залипли контакты. Сухой ход в конце концов. Но почему-то на практике я этого не встречал ни разу.

А теперь теория. Самое слабое место в механическом реле давления — гидроаккумулятор. Именно он плохо переносит морозы, именно он требует периодической проверки давления и именно в нем обычно рвется «груша». Поэтому легко понять тех, кто предпочитает электронные реле. Но давайте рассмотрим ситуацию с научной точки зрения. Что происходит, когда, например вы решили побриться и открыли кран тоненькой струйкой?

1. Механика. Да ничего такого, штатный режим работы. При падении давления, например до 1,8 атмосфер насос включается, закачивает воду в гидроаккумулятор и при достижении 3 атмосфер отключается. (Параметры 1,8 и 3 — регулируются).

2. Электроника. Мотор все время включен. Давление в системе зависит от модели мотора и может быть как 3 атмосферы (обычно), а может быть и 4...5 атмосфер. Суть в том, что электроника видит, что вода течет и не отключает мотор.

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

Заключение. Электронное реле — это механика + электроника, а механическое — это только механика. Как вы думаете, что надежнее? К тому-же электронное реле постоянно эксплуатирует мотор в неблагоприятном для него режиме да и статистика не в пользу электроники… Выводы делайте сами.

p.s. Состоятельным клиентам я ставлю механику и электронику в паре — получается чудесный тандем. Электроника защищает от сухого хода и повышенного тока (это то, чего не хватает механике). А механика всегда отключает мотор (и электронику) при достижении 3 атмосфер — это действительно чудесный тандем. В случае прорыва груши электроника продолжает работать и имеется возможность ремонта гидроаккумулятора без отключения водоснабжения.

p.p.s. Надежность — это дублирование. Это правило всегда используется в связи и почему-то не используется в черных ящиках самолетов, ну да бог с ними. То бишь два китайских датчика давления — это уже очень надежно, а + механическое реле — почти совершенно. Потому что микропроцессоры иногда зависают, а порты выгорают. Простите, за многословность — это мой первый комментарий на Гиктаймсе :-)
Если вместо водяной схемы нарисовать электрическую, где вместо насоса — источник тока, вместо гидроаккумулятора — конденсатор, вместо труб — провода (с сопротивлением и индуктивностью), вместо крана — резистор — все просто и понятно.

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

огромное всем спасибо за разносторонние посылы и информацию, спасибо!

Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.