Дозатор для воды.

Обсуждаем цифровые устройства...
Ответить
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Дозатор для воды.

Сообщение TRIOD »

Доброе время суток.

В общем мастерю дозатор для воды(схема во вложении). Использую счетчик с 30 импульсами на литр.
Подключил, но что то счетает неверно то в плюс то в минус врёт причем врет на разные значения.
Прерывание в контролере настроено на счет по спаду импульса.

Программа работает по следующему алгоритму.
Вводить можно только до одного знака после запетой. То есть шаг 0.1 литр.
Ведённое значение умножается на 30 и получается количество импульсов которое надо получить со счетчика.
В обработчике прерывания INT0 значение переменной отвечающей за счет увеличивается на один при каждом импульсе.
После чего сравнивается с нужным и если совпадает то закрываем клапан.

Не могу понять где в столь примитивном аппарате может быть ошибка?
Вложения
Дозатор.png
(139.27 КБ) 581 скачивание
Только абсолютная пустота бездны принесёт мне покой.
Реклама
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Дозатор для воды.

Сообщение coredumped »

А какого типа датчик? Может имеет место быть дребезг? Или фронты импульсов завалены? Даже если там оптопара, то Вам нужно рулить в сторону устранения дребезга. Если фронты завалены - триггер Шмидта Ваш друг :)
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение TRIOD »

Ну так на схеме ОУ и выполняет роль триггера Шмитда.
На контролер приходитя чёткие прямоугольные импульсы.
Я вот думаю контролер у меня тактируется от внутреннего генератора на 4 Мгц, в программе ради простоты много операций с числами с плавающей точкой. Может на 4 Мгц контроллер не успевает ?
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Дозатор для воды.

Сообщение coredumped »

Подайте импульсы на вход таймера, допустим T1, настройте его в Normal mode TCCR1B = 6 // External clock, falling edge. Тогда таймер будет считать количество импульсов. Если занесть в регистр OCR1A или OCR1B нужное кол-во импульсов, то по достижении этого числа легко получить либо прерывание (Output Compare Match), либо вообще готовый сигнал на выводе OC1A или OC1B - это как удобней. И не надо кучу прерываний для подсчета импульсов - таймер ничего не пропустит.
Идея понятна?
Все будет только лучше, в крайнем случае - хуже.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение TRIOD »

Идея понятна, но устройство уже собрано.
Посколько налив идет со скоростью 0.5л/сек то прерывание происходет 15 раз в секунду, а прибавить к переменной 1 в обработчике это не проблема.
Прикол втом что в симуляторе все работает.
Только абсолютная пустота бездны принесёт мне покой.
Реклама
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Дозатор для воды.

Сообщение coredumped »

TRIOD писал(а):Посколько налив идет со скоростью 0.5л/сек то прерывание происходет 15 раз в секунду, а прибавить к переменной 1 в обработчике это не проблема.
Прикол втом что в симуляторе все работает.
В симуляторе датчика нет. Я советую обратить внимание на импульсы с датчика. Попробуйте не генерировать прерывание, а просто засемплировать с подавлением ложных срабатываний. Если в датчике крыльчатка, то нужно обязательно 2 оптопары, тк она может "качаться" - вот вам и лишние импульсы. Ищите собаку в датчике. Как вариант, советую для начала в обработчик прерывания вставить задержку, скажем 50 милисек, после чего сбросить дополнительно флаг прерывания.
TRIOD писал(а):Идея понятна, но устройство уже собрано.

У Вас вход T1 не задействован, поэтому никто не мешает поставить перемычку - это несущественное изменение.
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение TRIOD »

В датчике нет не каких оптопар. Это промышленный счетчик с готовым выходом, из счетчика торчит 3 провода и всё.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Дозатор для воды.

Сообщение coredumped »

Попробуй обработчик сделать след. вида
Предположим, что используется прерывание INT0 по отрицательному фронту (falling edge)

ISR(INT0_vect)
{
_delay_ms(10);
if((PIND & 0x04)==0) count++; // проверяем наличие 0 на входе PD2/INT0
GIFR &= 0xbf; //clear INTF0 flag;
}

Это защита от ложных срабатываний.
PS: А описание на датчик есть? Можете выложить или ссылку дать?
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Maklesha
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Пт янв 14, 2011 15:30:21

Re: Дозатор для воды.

Сообщение Maklesha »

Можно поинтересоваться на сколько врет установка? Пробовали собирать подобную, для поверки счетчиков воды, так ничего и не вышло. Подозрения были на ошибки гидравлического плана - пузыри в системе.
Короче, наши результаты: 10л плюс минус 200мл
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение 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л.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение TRIOD »

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

Сёйчас унас стоит промышленный дозатор, но счетчик у него какойто странный как будто переделанный бытовой.
Сравнил результыты со своим. Подключив счетчик от промышленного к своему.

Литров___Пром доз(мл)__Мой доз(мл)
1_______1198_________1195
2_______2165_________2255
5_______5475_________5417
10______10660________10610
13______13855________13800

Результаты вобщем одинаковые, некоторые расхождения я склонен отнести к постояно меняющемуся давлению в водопроводе.
Но непонятно почему они так сильно врут изначально? Поскольку два разных прибора дают один результат то скорей всего дело либо в сетчике либо в клапан слишком медлено закрывается.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Дозатор для воды.

Сообщение coredumped »

Любой измерительный прибор имеет погрешность. Если разброс показаний укладывается в тех. требования, значит у Вас все в порядке.
либо в клапан слишком медлено закрывается.
А Вы продолжаете считать импульсы после того, как клапан закрыт? Если да, то скорость закрывания клапана скорее всего не влияет, хотя может я ошибаюсь :dont_know:
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение TRIOD »

Нет после закрытия клапана я импульсы несчитаю.
Для уточнения на трубе клапан стоитпосле счётчика перед выходом.
Считаю я так. После ввода нужного количества перовожу введённое в количество импульсо(колво имп на литр x введёное). Открываю клапан и считаю приходящие импульсы как только количество прищедщих импульсов сравняется с введённым клапан зарывается. При условии что контролер работает на 8Мгц накладные расходы времени на перевод колва импульсов в литры и индикацию на дисплее неочень больщые. Тоесть сигнал на реле поступает очень быстро.
Дальше тормозит реле, а потом уже клапан.
Но всёже я склонен считать что тот счетчик который сейчас стоит непредназначен для учёта с точность 0.1л. Его подробный осмотр показал что это обычный бытовой счётчик у которого выдернули механическую индикацию и воткнули датчик холла который фексирует обороты крыльчатки.
А склоняюсь я к этому потому что два разных прибора мой и покупной промышленный дают с одним и темже клапаном и счётчиком одинаковый результат, а это верный признак проблемы не всчётном устройстве.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Дозатор для воды.

Сообщение TRIOD »

:beer: :)) :))
Вобщем спасибо все кто учавствовал в обсуждении результат получен великолепный.

Удалось мне поченить счётчик от старого дозатора. Унего оказалось под колпачком наконечника провода обламились все жылы и контакт то был то нет.
Сейчас результат слудующий.
до 5л погрешность +150мл, после 5 до 10 погрешность +85мл, от 10 до 50литров погрешность -60мл
Больше не мерял кастрюли на больший обьём неподьёмные.
Так что вся соль только в счётчике.
Только абсолютная пустота бездны принесёт мне покой.
Ответить

Вернуться в «Цифровая техника»