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

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


