Страница 1 из 1
Дозатор для воды.
Добавлено: Чт апр 19, 2012 17:03:46
TRIOD
Доброе время суток.
В общем мастерю дозатор для воды(схема во вложении). Использую счетчик с 30 импульсами на литр.
Подключил, но что то счетает неверно то в плюс то в минус врёт причем врет на разные значения.
Прерывание в контролере настроено на счет по спаду импульса.
Программа работает по следующему алгоритму.
Вводить можно только до одного знака после запетой. То есть шаг 0.1 литр.
Ведённое значение умножается на 30 и получается количество импульсов которое надо получить со счетчика.
В обработчике прерывания INT0 значение переменной отвечающей за счет увеличивается на один при каждом импульсе.
После чего сравнивается с нужным и если совпадает то закрываем клапан.
Не могу понять где в столь примитивном аппарате может быть ошибка?
Re: Дозатор для воды.
Добавлено: Чт апр 19, 2012 20:03:23
coredumped
А какого типа датчик? Может имеет место быть дребезг? Или фронты импульсов завалены? Даже если там оптопара, то Вам нужно рулить в сторону устранения дребезга. Если фронты завалены - триггер Шмидта Ваш друг

Re: Дозатор для воды.
Добавлено: Чт апр 19, 2012 21:43:11
TRIOD
Ну так на схеме ОУ и выполняет роль триггера Шмитда.
На контролер приходитя чёткие прямоугольные импульсы.
Я вот думаю контролер у меня тактируется от внутреннего генератора на 4 Мгц, в программе ради простоты много операций с числами с плавающей точкой. Может на 4 Мгц контроллер не успевает ?
Re: Дозатор для воды.
Добавлено: Чт апр 19, 2012 22:20:48
coredumped
Подайте импульсы на вход таймера, допустим T1, настройте его в Normal mode TCCR1B = 6 // External clock, falling edge. Тогда таймер будет считать количество импульсов. Если занесть в регистр OCR1A или OCR1B нужное кол-во импульсов, то по достижении этого числа легко получить либо прерывание (Output Compare Match), либо вообще готовый сигнал на выводе OC1A или OC1B - это как удобней. И не надо кучу прерываний для подсчета импульсов - таймер ничего не пропустит.
Идея понятна?
Re: Дозатор для воды.
Добавлено: Пт апр 20, 2012 00:09:47
TRIOD
Идея понятна, но устройство уже собрано.
Посколько налив идет со скоростью 0.5л/сек то прерывание происходет 15 раз в секунду, а прибавить к переменной 1 в обработчике это не проблема.
Прикол втом что в симуляторе все работает.
Re: Дозатор для воды.
Добавлено: Пт апр 20, 2012 08:15:44
coredumped
TRIOD писал(а):Посколько налив идет со скоростью 0.5л/сек то прерывание происходет 15 раз в секунду, а прибавить к переменной 1 в обработчике это не проблема.
Прикол втом что в симуляторе все работает.
В симуляторе датчика нет. Я советую обратить внимание на импульсы с датчика. Попробуйте не генерировать прерывание, а просто засемплировать с подавлением ложных срабатываний. Если в датчике крыльчатка, то нужно обязательно 2 оптопары, тк она может "качаться" - вот вам и лишние импульсы. Ищите собаку в датчике. Как вариант, советую для начала в обработчик прерывания вставить задержку, скажем 50 милисек, после чего сбросить дополнительно флаг прерывания.
TRIOD писал(а):Идея понятна, но устройство уже собрано.
У Вас вход T1 не задействован, поэтому никто не мешает поставить перемычку - это несущественное изменение.
Re: Дозатор для воды.
Добавлено: Пт апр 20, 2012 13:23:34
TRIOD
В датчике нет не каких оптопар. Это промышленный счетчик с готовым выходом, из счетчика торчит 3 провода и всё.
Re: Дозатор для воды.
Добавлено: Сб апр 21, 2012 11:24:20
coredumped
Попробуй обработчик сделать след. вида
Предположим, что используется прерывание INT0 по отрицательному фронту (falling edge)
ISR(INT0_vect)
{
_delay_ms(10);
if((PIND & 0x04)==0) count++; // проверяем наличие 0 на входе PD2/INT0
GIFR &= 0xbf; //clear INTF0 flag;
}
Это защита от ложных срабатываний.
PS: А описание на датчик есть? Можете выложить или ссылку дать?
Re: Дозатор для воды.
Добавлено: Сб апр 21, 2012 12:10:05
Maklesha
Можно поинтересоваться на сколько врет установка? Пробовали собирать подобную, для поверки счетчиков воды, так ничего и не вышло. Подозрения были на ошибки гидравлического плана - пузыри в системе.
Короче, наши результаты: 10л плюс минус 200мл
Re: Дозатор для воды.
Добавлено: Сб апр 21, 2012 14:13:43
TRIOD
coredumped писал(а):Попробуй обработчик сделать след. вида
Предположим, что используется прерывание INT0 по отрицательному фронту (falling edge)
ISR(INT0_vect)
{
_delay_ms(10);
if((PIND & 0x04)==0) count++; // проверяем наличие 0 на входе PD2/INT0
GIFR &= 0xbf; //clear INTF0 flag;
}
Это защита от ложных срабатываний.
PS: А описание на датчик есть? Можете выложить или ссылку дать?
Спасибо за код, но правда уменя на Bascom. Уменя сейчас после предыдущего ващего совета примерно также, но испытания пока непроводил поскольку на работе надо ковырять водопровод, а это возможно только когда цех останавливается.
На сам сётчик описания найти невозможно поскольку ему уже 20лет и вся маркировка полностью стёрлась. Стоял он ещё пару месяцев назад в итальянском дозаторе, но потом у дазатора успешно ктото проломил блок управления и угробил всё электронику.
Maklesha писал(а):
Можно поинтересоваться на сколько врет установка? Пробовали собирать подобную, для поверки счетчиков воды, так ничего и не вышло. Подозрения были на ошибки гидравлического плана - пузыри в системе.
Короче, наши результаты: 10л плюс минус 200мл
Это врет нестабильно каждый раз по разному. Уже на втором литре может в минус врать на 600мл.
Есть также промышленный врёт на 200мл до 5литров и на 600мл от 10л до 500л.
У старого итальянского врал на +-2% на всём диапазоне налива от 0.1л до 999л.
Re: Дозатор для воды.
Добавлено: Вс апр 22, 2012 21:30:58
TRIOD
Вобщем ввёл антидребезг, но он недал некакого результата.
Да и по осцилографу у счетчиков дребезг незамечен.
Также впаял подтягивающий резистор на ножку прерывания.
Сёйчас унас стоит промышленный дозатор, но счетчик у него какойто странный как будто переделанный бытовой.
Сравнил результыты со своим. Подключив счетчик от промышленного к своему.
Литров___Пром доз(мл)__Мой доз(мл)
1_______1198_________1195
2_______2165_________2255
5_______5475_________5417
10______10660________10610
13______13855________13800
Результаты вобщем одинаковые, некоторые расхождения я склонен отнести к постояно меняющемуся давлению в водопроводе.
Но непонятно почему они так сильно врут изначально? Поскольку два разных прибора дают один результат то скорей всего дело либо в сетчике либо в клапан слишком медлено закрывается.
Re: Дозатор для воды.
Добавлено: Пн апр 23, 2012 09:24:38
coredumped
Любой измерительный прибор имеет погрешность. Если разброс показаний укладывается в тех. требования, значит у Вас все в порядке.
либо в клапан слишком медлено закрывается.
А Вы продолжаете считать импульсы после того, как клапан закрыт? Если да, то скорость закрывания клапана скорее всего не влияет, хотя может я ошибаюсь

Re: Дозатор для воды.
Добавлено: Пн апр 23, 2012 10:16:00
TRIOD
Нет после закрытия клапана я импульсы несчитаю.
Для уточнения на трубе клапан стоитпосле счётчика перед выходом.
Считаю я так. После ввода нужного количества перовожу введённое в количество импульсо(колво имп на литр x введёное). Открываю клапан и считаю приходящие импульсы как только количество прищедщих импульсов сравняется с введённым клапан зарывается. При условии что контролер работает на 8Мгц накладные расходы времени на перевод колва импульсов в литры и индикацию на дисплее неочень больщые. Тоесть сигнал на реле поступает очень быстро.
Дальше тормозит реле, а потом уже клапан.
Но всёже я склонен считать что тот счетчик который сейчас стоит непредназначен для учёта с точность 0.1л. Его подробный осмотр показал что это обычный бытовой счётчик у которого выдернули механическую индикацию и воткнули датчик холла который фексирует обороты крыльчатки.
А склоняюсь я к этому потому что два разных прибора мой и покупной промышленный дают с одним и темже клапаном и счётчиком одинаковый результат, а это верный признак проблемы не всчётном устройстве.
Re: Дозатор для воды.
Добавлено: Пн апр 23, 2012 13:23:23
TRIOD
Вобщем спасибо все кто учавствовал в обсуждении результат получен великолепный.
Удалось мне поченить счётчик от старого дозатора. Унего оказалось под колпачком наконечника провода обламились все жылы и контакт то был то нет.
Сейчас результат слудующий.
до 5л погрешность +150мл, после 5 до 10 погрешность +85мл, от 10 до 50литров погрешность -60мл
Больше не мерял кастрюли на больший обьём неподьёмные.
Так что вся соль только в счётчике.