Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как посчитать число замыканий ключа?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
esr
Здравствуйте, подскажите как попроще сделать счётчик числа замыканий контактов? Количество замыканий нужно сохранять внутри схемы.
Xenia
Цитата(esr @ Sep 16 2010, 13:32) *
Здравствуйте, подскажите как попроще сделать счётчик числа замыканий контактов? Количество замыканий нужно сохранять внутри схемы.

Вот вариант:
Берем МК, какой подешевле (например, тиньку какую-нибудь), присоединяем ключ замыкания между пином, который у МК способен вызывать прерывание (например, INT0 или INT1), и землей. Все остальное делается программно. В программе, программируем тот пин на режим чтения и устаналиваем ему подтяжку к высокому уровню. Разрешаем соответствующее прерывание (например, INT0 или INT1) от изменения уровня на этом пине. Если есть возможность, то устанавливаем "полярность", при которой должно происходить прерывание (например, при нисходящем фронте).
Теперь при разомкнутом ключе МК сам поддерживает на своем пине высокий уровень, а когда ключ замыкается, но уровень падает до нуля и вызвает срабатывание прерывания. На обработчик этого предывания вешаем процедуру, которая инкрементирует счетчик (прибавляет к нему единичку). Вот и всё.
Осталось только решить, должна ли "система" сохранять значение счетчика при отключенном питании. Если должна, то в счетчик придется заводить в EEPROM (энергонезависимой памяти), помня о том, что от каждой записи та необратимо снашивается.
Ну и не забыть про индикацию или опрос счетчика. МК в этом деле тоже хороший помощник - может сообщать значение счетчика по кому-нибудь интерфейсу связи по запросу или в момент изменения счетчика. Или на какой-нибудь дисплей то значение постоянно выводить.
Tanya
Цитата(Xenia @ Sep 16 2010, 13:56) *
Все остальное делается программно.

А в этой программе еще нужно дребезг контактов устранять.
yakub_EZ
Вариантов реализации очень много. Вполне возможно что делать ничего не придётся, а воспользоваться чем то готовым.
Обычно такие штучки ставят на фасовочное/весовое оборудование. Это, если медленный вариант счета где думать почти не придётся.
Если всё же хотите сваять нечто свое, новое, вариант микроконтоллера с записью в EEPROM пожалуй будет самым простым в реализации
esr
Цитата(Xenia @ Sep 16 2010, 13:56) *
Вот вариант:
Берем МК, какой подешевле (например, тиньку какую-нибудь), присоединяем ключ замыкания между пином, который у МК способен вызывать прерывание (например, INT0 или INT1), и землей. Все остальное делается программно. В программе, программируем тот пин на режим чтения и устаналиваем ему подтяжку к высокому уровню...

Спасибо! У меня вот PIC18F2320 имеется. В нем есть EEPROM, т.е . я наверное на нём смогу сделать?
А подтяжка к высокому уровню - это как сделать?
@Ark
Цитата
Спасибо! У меня вот PIC18F2320 имеется. В нем есть EEPROM, т.е . я наверное на нём смогу сделать?
А подтяжка к высокому уровню - это как сделать?

Можете, конечно. Подтяжку можно сделать резистором к питанию - внешним или внутренним. Ну, а потом нужно
какое-то устройство соорудить, не один же PIC будет. Он то все посчитает, а результат как будете смотреть?
Нужно куда-то выводить его. Питание устройства организовать и т.д.
Tanya
Цитата(esr @ Sep 16 2010, 14:10) *
А подтяжка к высокому уровню - это как сделать?

Можно программно - внутренним, а можно и наружным резистором. Помехоустойчивость будет зависеть от величины резистора.
esr
Цитата(@Ark @ Sep 16 2010, 14:29) *
Можете, конечно. Подтяжку можно сделать резистором к питанию - внешним или внутренним. Ну, а потом нужно
какое-то устройство соорудить, не один же PIC будет. Но то все посчитает, а результат как будете смотреть?
Нужно куда-то выводить его. Питание устройства организовать и т.д.

А резистор какой нужно поставить ? А внутренний резистор - это что ?
Ну с индикацией вроде проблем не должно быть - там 3 порта имеются, подключу к одному светодтоды, и получу индикатор в двоичнов коде - так ?
А вот с питанием - действительно вопрос. Может от батарейки литиевой запитать ? На сколько хватит только?
Xenia
Цитата(esr @ Sep 16 2010, 14:10) *
У меня вот PIC18F2320 имеется. В нем есть EEPROM, т.е . я наверное на нём смогу сделать?

Наверное можете, только в ПИКах я не разбраюсь, т.к. я - АВРошница smile.gif.

Цитата(esr @ Sep 16 2010, 14:10) *
А подтяжка к высокому уровню - это как сделать?

На платформе AVR это делается путем такого парадоксального действия, как посылание единички (высокого уровня) в порт, сконфигурированный не на выдачу, а на прием. Такая ситуация приводит к возникновению подтяжки к питанию (где-то порядка 50 кОм). Но такую подтяжку ничего не стоит сделать самим, т.к. лишний резистор в такой схеме - не проблема.
Tanya
Цитата(esr @ Sep 16 2010, 14:38) *
А резистор какой нужно поставить ? А внутренний резистор - это что ?

Внутренний резистор описан в даташите.

Цитата(esr @ Sep 16 2010, 14:38) *
Ну с индикацией вроде проблем не должно быть - там 3 порта имеются, подключу к одному светодтоды, и получу индикатор в двоичнов коде - так ?

Можете и другие индикаторы поставить... если не хотите тренироваться в преобразовании двоичного кода в уме.
Цитата(esr @ Sep 16 2010, 14:38) *
А вот с питанием - действительно вопрос. Может от батарейки литиевой запитать ? На сколько хватит только?

От частоты зависит. А еще можно в энергосберегающие режимы уходить...
@Ark
Цитата
А резистор какой нужно поставить ? А внутренний резистор - это что?

Номинал не очень критичен. Выбирайте от 1кОм - до 20кОм. Про внутренние подтягивающие резисторы
написано в даташите. Там где описания портов ввода-вывода
Цитата
Ну с индикацией вроде проблем не должно быть - там 3 порта имеются, подключу к одному светодтоды, и получу индикатор в двоичнов коде - так ?

Можно и так.
Цитата
А вот с питанием - действительно вопрос. Может от батарейки литиевой запитать ? На сколько хватит только?

Зависит от емкости батарейки и потребления устройства. Лучше возмите готовый адаптер питания от 220В,
с выходом 5В, например.
esr
Цитата(Xenia @ Sep 16 2010, 14:42) *
Наверное можете, только в ПИКах я не разбраюсь, т.к. я - АВРошница smile.gif.

Ксения, а поскажите - существует ли для этой задачи AVR с маленьким напряжением питания и энергопотребления - 2 вольтf примерно ?
Xenia
Цитата(esr @ Sep 16 2010, 15:13) *
Ксения, а поскажите - существует ли для этой задачи AVR с маленьким напряжением питания и энергопотребления - 2 вольта примерно ?

Да, очень многие работают, начиная с 1.8 вольта, только тогда кварц должен быть не быстрее 4 МГц.

Например, ATtiny20 (свежачок):
Low Power Consumption
– Active Mode:
200 μA at 1 MHz and 1.8V
– Idle Mode:
• 25 μA at 1 MHz and 1.8V
Тут токопотребление даже не миллиамперы, а микро! Один ваш светодиод сожрет тока на несколько порядков больше.
И это, наверное, не предел, т.к. я этот даташит наобум открыла.

Вот еще ATtiny13A:
Low Power Consumption
– Active Mode:
190 μA at 1.8 V and 1 MHz
– Idle Mode:
• 24 μA at 1.8 V and 1 MHz

ATtiny2313A:
Low Power Consumption
– Active Mode
190 μA at 1.8V and 1MHz
– Idle Mode
• 24 μA at 1.8V and 1MHz

ATtiny24A:
Low Power Consumption
– Active Mode:
210 μA at 1.8V and 1MHz
– Idle Mode:
• 33 μA at 1.8V and 1MHz

И т.д. Похоже, что с буковкой "A" на конце они почти все такие...
Короче говоря, смотрите сюда - http://atmel.com/dyn/products/devices.asp?family_id=607#791
и выбирайте из них те, что "picoPower" и поменьше памяти (так дешевле выйдет, а для вашей задачи много памяти не надо).

==========================================

P.S. Если грамотно запрограммировать на спящий режим, то будет просыпаться только на момент срабатывания ключа, инкрементировать счетчик и снова засыпать.
Тогда среднее токопотребление снизится до уровня "Idle Mode", а при таком токе литиевой батарейки хватит на тот же срок, как если бы она нераспечатанная в упаковке лежала.
esr
Цитата(Xenia @ Sep 16 2010, 15:40) *
Да, очень многие работают, начиная с 1.8 вольта, только тогда кварц должен быть не быстрее 4 МГц.


P.S. Если грамотно запрограммировать на спящий режим, то будет просыпаться только на момент срабатывания ключа, инкрементировать счетчик и снова засыпать.
Тогда среднее токопотребление снизится до уровня "Idle Mode", а при таком токе литиевой батарейки хватит на тот же срок, как если бы она нераспечатанная в упаковке лежала.

Спасибо,попробую сделать! Если что - еще поспрашиваю тут a14.gif
rezident
Цитата(Xenia @ Sep 16 2010, 17:40) *
Да, очень многие работают, начиная с 1.8 вольта, только тогда кварц должен быть не быстрее 4 МГц.

А в EEPROM они писать могут при таком напряжении питания?
Xenia
Цитата(rezident @ Sep 16 2010, 17:08) *
А в EEPROM они писать могут при таком напряжении питания?

ATtiny20 не может, но только потому, что ... у нее EEPROMа нет smile.gif. А остальные вроде бы должны мочь, т.к. я что-то не нашла в даташите упоминания о неработоспособности EEPROM при низком питании. Что-то написано про то, что при выходе из режима Power-down EEPROM не сразу начинает нормально работать, но в Power-down мы ложиться не собираемся.
rezident
Цитата(Xenia @ Sep 16 2010, 19:41) *
А остальные вроде бы должны мочь, т.к. я что-то не нашла в даташите упоминания о неработоспособности EEPROM при низком питании.

Открыл даташит первого попавшегося МК из вашего списка ATtiny13A. В Errata есть ограничение.
Xenia
Цитата(rezident @ Sep 16 2010, 18:06) *
Открыл даташит первого попавшегося МК из вашего списка ATtiny13A. В Errata есть ограничение.

Надо же, а я Rev.C смотрела. Странно это, т.к. ревизий Rev.G–H в природе еще не существует, но в последнней из существующих Rev.E дейстительно уже есть указанное вами ограничение.

Однако это нам не страшно smile.gif, т.к. задача стоит о работе на 2-х вольтах, которые выше указанного в еррате порога в 1.9 вольт. А на общем токопотреблении повышение напряжения питания с 1.8 до 2.0 вольта скажется незначительно.

P.S. ATtiny13A - действительно то, что надо! - Корпус с 8-ю ножками и ничего лишнего. И сравнительно дешево - 24 рубля в Терраэлектронике (корпус SO8), если покупать в розницу одну единственную штуку.
Alexashka
}{орошо бы еще предусмотреть, чтобы запись не произошла в момент отключения питания..
Xenia
Цитата(Alexashka @ Sep 16 2010, 18:56) *
}{орошо бы еще предусмотреть, чтобы запись не произошла в момент отключения питания.

Авось smile.gif. Параноики могут завести в EEPROM два одинаковых счетчика, второй из которых инкрементируется лишь после того, как верификация первого счетчика прошла нормально (т.е. чтение из EEPROMа дало тот же результат, который записывался). Тогда отключение питания сможет максимум повредить только один счетчик, но не оба.
rezident
Цитата(Xenia @ Sep 16 2010, 20:29) *
Однако это нам не страшно smile.gif, т.к. задача стоит о работе на 2-х вольтах

Интересно узнать, что это за источник питания с такой экзотической величиной напряжения - 2В?
Xenia
Цитата(rezident @ Sep 16 2010, 21:17) *
Интересно узнать, что это за источник питания с такой экзотической величиной напряжения - 2В?

Полагаю, что это литиевый элемент Li/MnO2, у которого номинальное напряжение 3.0 вольта, а в конце гарантийного срока хранения (10 лет!) падает до 2 вольт smile.gif.
esr
Цитата(Xenia @ Sep 16 2010, 21:25) *
Полагаю, что это литиевый элемент Li/MnO2, у которого номинальное напряжение 3.0 вольта, а в конце гарантийного срока хранения (10 лет!) падает до 2 вольт smile.gif.

Не, это напряжение в проводах, к которым счётчик цепляться будет rolleyes.gif
Спасибо за советы. Решаю вот что выбрать - Atmel или всё-таки PIC. Мне потом посчитанные импульсы передать надо. Думаю по RS 485. А есть ли контроллеры, в которых 1) EEPROM 2) низкое питание 2 в 3) поддержка RS 485 ?
ПОка вот нашел PIC16F688. Подойдёт или есть что попроще/получше/подешевле ?
@Ark
Цитата
ПОка вот нашел PIC16F688. Подойдёт или есть что попроще/получше/подешевле ?

Подойдет. Там все, что нужно есть. В том числе, встроенный модуль UART для приема/передачи. Попроще PIC-и лучше не берите. В них UART-а уже нет, а сделать все программно будет Вам сложно. Судя по всему, опыт у вас не велик.
esr
Цитата(@Ark @ Sep 17 2010, 00:52) *
Подойдет. Там все, что нужно есть. В том числе, встроенный модуль UART для приема/передачи. Попроще PIC-и лучше не берите. В них UART-а уже нет, а сделать все программно будет Вам сложно. Судя по всему, опыт у вас не велик.

Да,опыта у меня маловато пока, на помощь форумчан надеюсь. Хорошо хоть базовые знания по электронике имеются, да и радиоаппаратуру разрабатывать приходилось. Перерыв потом был большой (перестройка специальность заставила поменять smile.gif-в программисты подался ), а за это время всё поменялось существенно. Элементная база - просто фантастика по возможностям стала, да еще и потребляет наноамперы уже.
@Ark
Долгие лирические отступления не приветствуются. wink.gif Рисуйте схему. Раскритикуем, поможем, чем сможем.
Alexashka
Цитата(Xenia @ Sep 16 2010, 20:05) *
Авось smile.gif. Параноики могут завести в EEPROM два одинаковых счетчика, второй из которых инкрементируется лишь после того, как верификация первого счетчика прошла нормально (т.е. чтение из EEPROMа дало тот же результат, который записывался). Тогда отключение питания сможет максимум повредить только один счетчик, но не оба.

Это вовсе не параноя, а реальность, которая даже описана в даташите. Это если вы стремитесь создавать стабильно-работающую технику, а не глюкавое г... smile.gif ("Авось" ничего не случится rolleyes.gif)
И какже узнать при верификации, что первый счетчик корректно инкрементировался? (может в него записались некорректные данные, а может срабатывания ключа не было и значение счетчика не поменялось). Т.е чтобы провести верификацию, нужно знать какое было приращение. Но если записывать и приращение, то ничего не изменится, т.к оно также может быть испорчено при перезаписи.
Tanya
Цитата(esr @ Sep 17 2010, 00:27) *
ПОка вот нашел PIC16F688. Подойдёт или есть что попроще/получше/подешевле ?

Low Power PIC16LF182x variants (1.8V – 3.6V)
Standby Current (PIC16LF182X): 20 nA @ 1.8V, typical
Active Current(PIC12LF1823): 50 uA/MHz @ 1.8V, typical
Herz
Странно, но автора так никто и не спросил, где и для чего он собирается использовать устройство по подсчёту "замыканий". Каково возможное количество этих замыканий, что за требования к питанию? Автор, похоже, ещё и сам не вполне определился. Может, ему было бы достаточно обычного счётчика? Теперь, если если предполагается передача данных на расстояние, то возможно, и с питанием проблема упростится?
esr
Цитата(Herz @ Sep 17 2010, 13:52) *
Каково возможное количество этих замыканий, что за требования к питанию? Автор, похоже, ещё и сам не вполне определился. Может, ему было бы достаточно обычного счётчика? Теперь, если если предполагается передача данных на расстояние, то возможно, и с питанием проблема упростится?

Количество-бесконечно rolleyes.gif . Частота замыканий - низкая, единицы Herz. А обычный счётчик - это что? Микросъхема такая есть?А данные с неё как тогда снять для передачи? На микроконтроллере по-моему проще сделать.

Цитата(Tanya @ Sep 17 2010, 09:58) *
Low Power PIC16LF182x variants (1.8V – 3.6V)
Standby Current (PIC16LF182X): 20 nA @ 1.8V, typical
Active Current(PIC12LF1823): 50 uA/MHz @ 1.8V, typical

Наверное на этом PIC-е и буду делать. Спасибо!
yakub_EZ
Цитата(esr @ Sep 17 2010, 15:21) *
А обычный счётчик - это что?

Типа этого http://kiparis-spb.ru/catalogue/item/2223/ что то подобное всегда можно найти на хороших развалах. В советском детстве игрался с такими от полиграфических машин на 10 или 100 миллионов оттисков
esr
Цитата(@Ark @ Sep 17 2010, 02:29) *
Долгие лирические отступления не приветствуются. wink.gif Рисуйте схему. Раскритикуем, поможем, чем сможем.

Уппс... Решил вот схему нарисовать, и вдруг понял что не знаю начём они сейчас рисуются smile.gif Может подскажет кто soft для этого? И где найти его можно? Желательно free .
Herz
Да вот, хотя бы. Заодно и трассировку освоите. Я пользуюсь, в основном, именно для разводки ПП. Но, если хотите серьёзно подойти к вопросу, то Оркад скачайте, лекарство найти нетрудно. Зато почти стандарт.
esr
Цитата(Herz @ Sep 21 2010, 01:08) *

Установил себе в Free режиме. Кажется то что надо! К тому же для начинающих инструкцию по работе в нём легко отыскал http://easyelectronics.ru/rabota-v-eagle-cad-chast-1.html
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.