Подключение счетчика жидкости к Ардуино

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
ansen
Родился
Сообщения: 4
Зарегистрирован: Пт авг 23, 2013 18:53:57

Подключение счетчика жидкости к Ардуино

Сообщение ansen »

Добрый день!

Имею большой опыт программирования, но совсем чайник в электронике.
Возникла необходимость подключения счетчика жидкости к Ардуино.(Arduino MEGA 2560)
Счетчик выдает по двум каналам импульсы (т.е. замыкаются герконы) со сдвигом 180 градусов ( диаграмка на рисунке)
Сочинил я схему, в которой использую Ардуиновские 3.3v Землю и два цифровых пина(рисунок)

При такой схеме (возможно и неправильной!) программа реализуема, но получается больно ветвистая.
Нужно отслеживать чтобы не срабатывал второй канал, когда замыкается первый.
Может подскажете как "разделить" каналы схемно?
Если ответит кто, то "разжуйте" чайнику без проффи-жаргона...
(Может схему "подрихтуете"?)
[url][http://img.radiokot.ru/files/90189/medium/473ifjxv6.jpg][/url]
Вложения
MySchem.jpg
(23.78 КБ) 706 скачиваний
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Подключение счетчика жидкости к Ардуино

Сообщение blackx »

ой как нехорошо замыкать +питания на землю
хотя бы так сделайте:

Изображение

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

Если просто нужно считать кол-во импульсов в секунду и следить, чтобы они были в "противофазе", то, по-моему ничего сложного нет вообще. По крайней мере если писать код под чистый avr-libc
Вложения
MySchem.jpg
(28.22 КБ) 6018 скачиваний
Изображение only pure true norwegian blackx Изображение
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Подключение счетчика жидкости к Ардуино

Сообщение BOB51 »

Конфигурируеш выводы МК как "вход с включенным подтягивающим резистором" и цепляеш общий вывод кнопок на "корпус", а раздельные к соответствующим лапкам МК.
Безымянный.GIF
(8.95 КБ) 840 скачиваний
:)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Подключение счетчика жидкости к Ардуино

Сообщение Аlex »

blackx писал(а):хотя бы так сделайте:
Изображение
Так на 6 и 7 ногах будет всегда +3.3 висеть, независимо от состояний кнопок :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Подключение счетчика жидкости к Ардуино

Сообщение blackx »

Блин :facepalm:

делайте с внутренней подтяжкой короче, как BOB51 нарисовал. Проще и дешевле.
Изображение only pure true norwegian blackx Изображение
Реклама
ansen
Родился
Сообщения: 4
Зарегистрирован: Пт авг 23, 2013 18:53:57

Re: Подключение счетчика жидкости к Ардуино

Сообщение ansen »

blackx писал(а):Блин :facepalm:

делайте с внутренней подтяжкой короче, как BOB51 нарисовал. Проще и дешевле.
А как напряжение 3.3v подается в рисунке BOB51? Или вообще не подается? А что измерять?
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Подключение счетчика жидкости к Ардуино

Сообщение Аlex »

Изображение
Вложения
MySchem.jpg
(65.82 КБ) 4592 скачивания
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Подключение счетчика жидкости к Ардуино

Сообщение Аlex »

ansen писал(а):А как напряжение 3.3v подается в рисунке BOB51? Или вообще не подается? А что измерять?
Вот, с внутренней подтяжкой
Изображение
То-же самое, что и на предыдущей схеме, только сопротивления внутри, которые можно подключить программно.
Вложения
MySchem.jpg
(68 КБ) 4887 скачиваний
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Подключение счетчика жидкости к Ардуино

Сообщение blackx »

ansen писал(а):А как напряжение 3.3v подается в рисунке BOB51? Или вообще не подается?
Напряжение подается через внутренние цепи микроконтроллера. Есть такой режим работы портов ввода-вывода - pull-up ("подтяжка"). Когда она включена, ножка МК подключается через сопротивление к + питания. Таким образом, для ввода сигнала остается лишь замыкать ножку на землю, и не нужно ставить никаких дополнительных сопротивлений - после размыкания через подтяжку напряжение опять вернется на уровень + питания.
Впрочем, Alex правильно перерисовал мой вариант схемы - фактически в таком варианте включения резисторы и есть эта подтяжка. Такой вот альтернативный вариант.

Не знаю как для Arduino, а для обычной АВР-ки вам нужно просто проверять в цикле значения регистров PINXX, где XX - идентификатор вывода GPIO - например D5.
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Подключение счетчика жидкости к Ардуино

Сообщение YS »

Напряжение подается через внутренние цепи микроконтроллера. Есть такой режим работы портов ввода-вывода - pull-up ("подтяжка"). Когда она включена, ножка МК подключается через сопротивление к + питания.
Для ардуинофилов это

Код: Выделить всё

pinMode(pinNumber,INPUT_PULLUP); //ножка на вход, внутри к ножке подключается резистор, другим концом подключенный к питанию

...

if (digitalRead(pinNumber)==LOW)
{
  //снаружи пин замкнули на землю
}
Последний проект по желанию заказчика делал на Ардуино. Долго ржал и плевался.

А что за датчик? Может, там не совсем 180°? Если два контакта, то скорее всего он работает как инкрементальный энкодер. Вот код для энкодера под Ардуино:
Спойлер

Код: Выделить всё

/******************************************************************************
 *  Polls encoder and returns +1 for CW, -1 for CCW rotation "click".         *
 ******************************************************************************/

int16_t PollEncoder(void)
{
  int16_t dir=0;
  uint8_t sA,sB;
  static uint8_t prev_state=0;
  
  sA=digitalRead(BTN_ENCA);
  sB=digitalRead(BTN_ENCB);
  
  if ((sA==LOW) && (sB==LOW))
  {
    if (prev_state==4)
    {
      dir=-1;
    }
    
    if (prev_state==2)
    {
      dir=1;
    }
    
    prev_state=1;
  }
  
  if ((sA==HIGH) && (sB==LOW))
  {
    prev_state=2;
  }
  
  if ((sA==HIGH) && (sB==HIGH))
  {
    if (prev_state==2)
    {
      dir=-1;
    }
    
    if (prev_state==4)
    {
      dir=1;
    }
    
    prev_state=3;
  }
  
  if ((sA==LOW) && (sB==HIGH))
  {    
    prev_state=4;
  }
  
  delay(5);
  
  return dir;
}
Функцию надо вызывать регулярно. Еще про работу с энкодером почитать можно тут.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
ansen
Родился
Сообщения: 4
Зарегистрирован: Пт авг 23, 2013 18:53:57

Re: Подключение счетчика жидкости к Ардуино

Сообщение ansen »

Спасибо за код! Я приблизительно так и написал.
А счетчик посмотреть можно http://www.gespasa.es/en/pro/fuel_u1/me ... index.html
А скупая инструкция его "родственника" во вложении.
Там никакой информации о герконах! Наверное дребезг контактов есть, а какой?
Какую задержку ставить?
Попробовал с производителем связаться - глухо как в танке! Испанцы! Видать сиеста круглосуточно... :)

P.S. Добавил и "родную" инструкцию - мало чем отличается
Вложения
MGI110 M203b.pdf
(166.73 КБ) 877 скачиваний
MGI250 MGI400 v4 M89d.pdf
(583.56 КБ) 533 скачивания
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Подключение счетчика жидкости к Ардуино

Сообщение YS »

Гм. Вообще, если Вам не надо определять направление потока жидкости, можно просто считать количество импульсов за секунду, и все. Или все же надо именно с направлением?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
ansen
Родился
Сообщения: 4
Зарегистрирован: Пт авг 23, 2013 18:53:57

Re: Подключение счетчика жидкости к Ардуино

Сообщение ansen »

А если дребезг контактов есть, то можно лишних импульсов насчитать. Наверное потому в спецификациях герконов и указывают время замыкания.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Подключение счетчика жидкости к Ардуино

Сообщение YS »

А если дребезг контактов есть, то можно лишних импульсов насчитать.
Подождите 5 мс после замыкания, и будет Вам счастье. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Ответить

Вернуться в «Разные вопросы по МК»