Как работает счетчик витков на микроконтроллере. Какие основные компоненты входят в его состав. Какие преимущества дает использование микроконтроллера в счетчике витков. Как реализовать энергонезависимую память в таком устройстве. На что обратить внимание при разработке счетчика витков.
Принцип работы счетчика витков на микроконтроллере
Счетчик витков на микроконтроллере представляет собой устройство для подсчета числа оборотов вала намоточного станка или другого оборудования. Основными компонентами такого счетчика являются:
- Микроконтроллер — центральный элемент, выполняющий подсчет импульсов и управление индикацией
- Датчик оборотов — как правило, оптический или магнитный, генерирующий импульсы при вращении вала
- Индикатор — светодиодный или ЖК-дисплей для отображения количества витков
- Кнопки управления — для сброса, установки значений и т.д.
- Источник питания — батарея или внешний блок питания
Принцип работы заключается в следующем:
- Датчик генерирует импульсы при каждом обороте вала
- Микроконтроллер считает поступающие импульсы
- Текущее значение счетчика выводится на индикатор
- При необходимости значение сохраняется в энергонезависимой памяти
Преимущества использования микроконтроллера в счетчике витков
Применение микроконтроллера в конструкции счетчика витков дает ряд существенных преимуществ по сравнению с механическими или простыми электронными счетчиками:
- Высокая точность подсчета импульсов
- Возможность реализации сложных алгоритмов обработки сигналов
- Гибкая настройка параметров работы устройства
- Энергонезависимая память для сохранения данных
- Расширенная индикация и вывод дополнительной информации
- Простота добавления новых функций программным путем
Современные микроконтроллеры обладают достаточной производительностью для реализации всех необходимых функций счетчика витков при низком энергопотреблении.
Реализация энергонезависимой памяти в счетчике витков
Одной из важных функций счетчика витков является сохранение текущего значения при отключении питания. Для этого используется энергонезависимая память микроконтроллера. Существует несколько способов ее реализации:
- Встроенная EEPROM память микроконтроллера
- Внешняя микросхема EEPROM, подключенная по интерфейсу I2C или SPI
- Использование ферроэлектрической памяти FRAM
- Запись данных во флэш-память программ микроконтроллера
Наиболее простым вариантом является использование встроенной EEPROM памяти, которая имеется во многих микроконтроллерах. Однако нужно учитывать ограниченное количество циклов перезаписи.
Особенности разработки программного обеспечения для счетчика витков
При разработке прошивки микроконтроллера для счетчика витков необходимо учитывать следующие аспекты:
- Корректная обработка импульсов от датчика с устранением дребезга контактов
- Реализация энергосберегающих режимов работы микроконтроллера
- Периодическое сохранение данных в энергонезависимой памяти
- Защита от сбоев при внезапном отключении питания
- Реализация пользовательского интерфейса с кнопками управления
- Вывод информации на индикатор с учетом его особенностей
Грамотная реализация этих функций обеспечит надежную и стабильную работу счетчика витков в различных условиях эксплуатации.
Выбор компонентов для счетчика витков на микроконтроллере
При разработке счетчика витков важно правильно подобрать основные компоненты устройства:
Микроконтроллер
Для большинства задач подойдет 8-битный микроконтроллер с низким энергопотреблением. Популярные варианты:
- ATmega328P — классический МК семейства AVR
- STM8S003 — недорогой 8-битный МК от STMicroelectronics
- PIC16F1829 — микроконтроллер Microchip с низким энергопотреблением
Датчик оборотов
Наиболее распространенные типы датчиков для счетчика витков:
- Оптический датчик на основе фотодиода и светодиода
- Герконовый датчик, срабатывающий от магнита на валу
- Датчик Холла для бесконтактного определения положения
Индикатор
Для отображения информации можно использовать:
- Семисегментные светодиодные индикаторы
- Символьные ЖК-дисплеи, например 1602 или 2004
- Графические OLED-дисплеи для расширенной индикации
Выбор конкретных компонентов зависит от требований к функциональности, стоимости и условий эксплуатации счетчика витков.
Алгоритмы обработки сигналов в счетчике витков
Для повышения точности работы счетчика витков необходимо реализовать следующие алгоритмы обработки сигналов от датчика:
Устранение дребезга контактов
При использовании механических датчиков возникает эффект дребезга контактов, приводящий к ложным срабатываниям. Для его устранения применяются:
- Программная задержка между обработкой импульсов
- Алгоритм подсчета стабильных состояний датчика
- Аппаратная фильтрация с помощью RC-цепочки
Определение направления вращения
Для реализации реверсивного счетчика необходимо определять направление вращения вала. Это можно сделать следующими способами:
- Использование двух датчиков, сдвинутых по фазе
- Анализ длительности импульсов от одного датчика
- Применение специализированных энкодеров
Фильтрация помех
Для защиты от электромагнитных помех применяются:
- Цифровая фильтрация сигнала программными методами
- Использование триггеров Шмитта на входе микроконтроллера
- Экранирование чувствительных цепей устройства
Грамотная реализация этих алгоритмов позволяет существенно повысить надежность и точность работы счетчика витков.
Дополнительные функции счетчика витков на микроконтроллере
Использование микроконтроллера позволяет легко добавить в счетчик витков расширенные функции:
- Измерение скорости вращения вала
- Подсчет общего времени работы оборудования
- Установка предустановленных значений счетчика
- Звуковая и световая сигнализация при достижении заданного числа витков
- Передача данных на компьютер или смартфон по беспроводному интерфейсу
- Ведение журнала работы с сохранением в энергонезависимой памяти
Какие дополнительные функции могут быть полезны в счетчике витков для конкретного применения? Их реализация часто не требует значительных изменений в схеме устройства, а осуществляется программным путем.
Особенности конструкции счетчика витков на микроконтроллере
При разработке конструкции счетчика витков необходимо учитывать следующие аспекты:
- Защита от пыли и влаги в производственных условиях
- Устойчивость к вибрациям при работе на оборудовании
- Удобство монтажа датчика на вращающемся валу
- Эргономичное расположение органов управления и индикации
- Возможность быстрой замены элементов питания
- Минимизация габаритов устройства
Как правильно спроектировать корпус счетчика витков с учетом этих требований? Выбор материалов и конструктивных решений зависит от конкретных условий эксплуатации устройства.
Счетчик на микроконтроллере
Во многих устройствах техники и автоматики всё ещё установлены механические счетчики. Они считают количество посетителей, продукцию на конвейере, витки провода в намоточных станках и так далее. В случае выхода из строя найти такой механический счетчик непросто, а отремонтировать невозможно ввиду отсутствия запчастей. Электронный счетчик получается слишком сложным, если строить его на микросхемах серий К, К Но можно построить счетчик всего на одной микросхеме — универсальном микроконтроллере PIC16FA, имеющем в своем составе разнообразные периферийные устройства и способном решать широкий круг задач. Вот и недавно меня попросил человек сделать счётчик импульсов на много разрядов.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Счетчик импульсов (счетчик витков) прямого и обратного счета на микроконтроллере PIC16F690.
- Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
- Реверсивный счётчик на PIC16F628A (c вариантом использования на намоточном станке)
- Счетчик 0-99 на микроконтроллере AVR ATmega32
- Оптоизолированный счетчик на микроконтроллере AVR
- Счетчик импульсов на микроконтроллере
- Счетчик витков для намотки трансформаторов
- Таймеры/счетчики 0 и 2 в ШИМ режиме — Timer/Counter 0 and 2 in PWM mode
- Счётчики/Таймеры
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Счетчик импульсов OMRON Dh58J-11A. Multi-function Counter Dh58J-11A
Счетчик импульсов (счетчик витков) прямого и обратного счета на микроконтроллере PIC16F690.
Для того, чтобы определить действительное назначение выводов, относящихся к счетчику, см. Пояснения к диаграмме: буква n в именах регистров и битов может быть заменена на цифру 0, 1 или 2, в зависимости от того, какой счетчик используется — в разных моделях микроконтроллеров AVR может быть разное количество счетчиков с разными номерами.
Импульсы можно регистрировать аппаратно и измерять их длительность , если подать цифровой сигнал на вывод ICP1. Регистрация импульсов в даташите Atmel также называется «захватом событий» capture event и «захватом по входу» Input Capture. Настройка тактирования таймера и разрешение работы узла захвата производится записью в соответствующие регистры см. В обработчике прерывания Input Capture нужно сохранить или проанализировать значение счетчика, чтобы по нему определить длительность входного импульса.
Импульсы можно считать аппаратно, если подать цифровой сигнал на вывод T1. Обычно подсчет импульсов нужен для измерения частоты некоторого цифрового сигнала. Установка этого бита в лог. Функция фильтрации требует 4 последовательных одинаковых значений, поступивших на вывод ICP1, чтобы было зарегистрировано изменение уровня сигнала. Таким образом, захват входных импульсов Input Capture будет задержан на 4 такта генератора микроконтроллера, когда возможность фильтрации разрешена.
Этот бит выбирает тип среза фронт или спад на входе ICP1, который вызовет событие захвата импульса. Когда в ICES1 записан лог. Для подсчета импульсов на входе T1 можно выбрать последние 2 варианта в таблице. Если для подсчета выбрана ножка T1, Импульсы будут подсчитываться даже тогда, когда порт T1 настроен как выход. Эта возможность позволяет программно управлять счетом. Эти два регистра составляют битный регистр ICR1. Регистр ICP1 битный, поэтому к нему также применяется правило атомарного доступа, как и к другим битным регистрам см.
Для того, чтобы удостовериться в том, что старший и младший байты будут прочитаны одновременно при доступе CPU к этим регистрам, доступ выполняется с использованием временного 8-битного регистра для старшего байта, High Byte Register TEMP.
Этот регистр является общим для доступа ко всем битным регистрам таймера подробнее см. При срабатывании прерывания когда произошло событие захвата и установился флаг ICF1 в регистре TIFR будет вызвана подпрограмма обработчика по соответствующему вектору см. При срабатывании прерывания когда произошло переполнение и установился флаг TOV1 в регистре TIFR будет вызвана подпрограмма обработчика по соответствующему вектору см. Этот флаг устанавливается, когда произошло событие захвата на выводе ICP1.
ICF1 автоматически очищается, когда вызывается обработчик прерывания по вектору Input Capture Interrupt. Альтернативно ICF1 может быть очищен записью в этот бит лог. Установка этого флага зависит от установки битов WGM TOV1 автоматически очищается, когда вызывается обработчик прерывания по вектору Input Capture Interrupt.
Альтернативно TOV1 может быть очищен записью в этот бит лог. Доступ к битным регистрам AVR. Имя обязательное. E-Mail обязательное. Подписаться на уведомления о новых комментариях. Главная Контакты Администрирование Программирование Ссылки. English Version Die deutsche Version Карта сайта. Расширенный поиск. Нашли опечатку? Пожалуйста, сообщите об этом — просто выделите ошибочное слово или фразу и нажмите Shift Enter.
Блог одного Сумасшествия. Для измерения длительности импульсов нужно сделать следующее: — Настроить тактирование таймера 1 от внутреннего тактового генератора. Эти 3 бита задают источник тактового сигнала для счетчика. Тактирование происходит по срезу спаду уровня сигнала.
Тактирование происходит по фронту нарастанию уровня сигнала. Пришёл к такому же алгоритму, что описан у Вас в статье. Таймер0 для подсчёта импульсов с тахометра диапазон от 25 до Гц.
Таймер1 с предделителем с прерыванием по переполнением. В прерывании заносим данные счётного регистра Таймера0 в переменную и обнуляем это регистр. В теории всё Ок. Но в Протеусе это тупо не работает.
Вы с таким сталкивались? Непонятно, кстати, зачем понадобились 2 таймера, к чему такие усложнения? Для отсчета реального времени достаточно одного таймера. На основе этого реального времени Вы можете определить частоту оборотов тахометра. По количеству импульсов с тахометра считайте наработку двигателя. На C я могу ли подсчитать импульсы поступающих от внешних датчиков. Если да то как? Прошейте в микроконтроллер платы прошивку Сергея Кухтецкого. Откройте любой пример его программы, там показано как на C записывать и читать регистры микроконтроллер а ATmega32A или ATmega Всю голову сломал!
Как мне после подобного счета импульсов импульсы с энкодера дискретностью имп. Нигде не могу найти ничего похожего Например: 1. LabView легко может обмениваться данными через COM-порт. Все тупо и просто — берете готовенькое и радуетесь. Вот собственно и все. Что может быть проще, если все делать по шагам? Примеров готового кода для них навалом, это же платформа AVR. Это самый популярный на сегодняшний день класс устройств USB, и наверняка LabVeiw имеет для подключения к этому классу готовые компоненты и библиотеки или примеры кода.
Как можно измерять этот сдвиг между фронтами импульсов двух последовательно стей? Другой вариант, с использованием внешнего логического элемента 3И-НЕ — подавать тактовые сигналы на счетный вход T1, когда не равны друг другу уровни входных последовательно стей. Обновить список комментариев RSS лента комментариев этой записи.
English Version. Die deutsche Version. Внешний тактовый сигнал, поданный на вход T1.
Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
Дневники Файлы Справка Социальные группы Все разделы прочитаны. Всем доброго времени суток! Мой новый счётчик избавлен от этой недоделки. Как бы долго или коротко не была нажата кнопка входа, счёт продолжится только при её очередном нажатии. Максимальное количество поступивших импульсов Показания счётчика сохраняются в памяти контроллера и при отключении питания. Тех, кто решит повторить мою схему, пусть не пугает то, что при первом включении на индикаторе может высветиться непредсказуемая информация.
В этой статье мы рассмотрим счетчик на двух символьном семисегментном дисплее под управлением микроконтроллера.
Реверсивный счётчик на PIC16F628A (c вариантом использования на намоточном станке)
В этой статье мы рассмотрим счетчик на двух символьном семисегментном дисплее под управлением микроконтроллера ATmega32 семейство AVR. Мы будем подсчитывать число событий основываясь на числе нажатий кнопки. Но прежде чем идти дальше, кратко остановимся на том, что такое семисегментный дисплей. Этот дисплей получил свое название исходя из того факта, что он имеет семь светящихся сегментов. Каждый из этих сегментов содержит светодиод. Диаграмма контактов семисегментного дисплея показана на рисунке ниже. Светодиоды в таком дисплее установлены таким образом, что каждый из них содержит свой собственный сегмент.
Счетчик 0-99 на микроконтроллере AVR ATmega32
Она может считать входные импульсы от 0 до Импульсы поступают на линию порта RA3 кнопка SA1 активный уровень низкий. После импульса на индикаторе высвечивается 0 и загорается точка начала второй тысячи правая по схеме и т. Так счёт может продолжаться до значения
Пожалуйста, подождите На каком языке программирования вы пишите программы?
Оптоизолированный счетчик на микроконтроллере AVR
Урок Сегодня мы узнаем, что такое таймеры-счётчики в микроконтроллерах и для чего они нужны, а также что такое прерывания и для чего они тоже нужны. Таймеры-счётчики — это такие устройства или модули в микроконтроллере, которые, как видно из названия, постоянно что-то считают. Считают они либо до определённой величины, либо до такой величины, сколько они битности. Два из них — это восьмибитные таймеры, то есть такие, которые могут максимально досчитать только до
Счетчик импульсов на микроконтроллере
Счетчик импульсов счетчик витков прямого и обратного счета на микроконтроллере PIC16F Смотреть онлайн. Скачать видео бесплатно. Опубликовано: Продолжительность: Данный электронный счетчик импульсов обладает довольно компактными размерами. Имеет ряд функциональных настроек. Может вести счет как в прямом, так и в обратно реверсном направлении. Может применяться в качестве: счетчика витков, счетчика для намоточного станка, счетчика для намотки трансформаторов и катушек, счетчик для намотки провода, счетчиком количественного учета. Работает с бесконтактными датчиками и датчиками типа сухой контакт.
Сегодня мы узнаем, что такое таймеры-счётчики в микроконтроллерах и для чего они нужны, а также что такое прерывания и для чего.
Счетчик витков для намотки трансформаторов
Энергонезависимый двадцатиканальный счетчик импульсов на микроконтроллере. Помогает осуществлять подсчет потребления ресурсов холодной и горячей воды поквартирно. Используется в сфере ЖКХ с целью поквартирного учета расхода энергоресурсов.
Таймеры/счетчики 0 и 2 в ШИМ режиме — Timer/Counter 0 and 2 in PWM mode
ВИДЕО ПО ТЕМЕ: Прерывания от таймер-счетчика ATmega8 — Микроконтроллеры с нуля #15
youtube.com/embed/Cz4UGSPbj98″ frameborder=»0″ allowfullscreen=»»/>Для того, чтобы определить действительное назначение выводов, относящихся к счетчику, см. Пояснения к диаграмме: буква n в именах регистров и битов может быть заменена на цифру 0, 1 или 2, в зависимости от того, какой счетчик используется — в разных моделях микроконтроллеров AVR может быть разное количество счетчиков с разными номерами. Импульсы можно регистрировать аппаратно и измерять их длительность , если подать цифровой сигнал на вывод ICP1. Регистрация импульсов в даташите Atmel также называется «захватом событий» capture event и «захватом по входу» Input Capture. Настройка тактирования таймера и разрешение работы узла захвата производится записью в соответствующие регистры см. В обработчике прерывания Input Capture нужно сохранить или проанализировать значение счетчика, чтобы по нему определить длительность входного импульса.
Данный пример предназначен, скорее всего, для начинающих радиолюбителей.
Счётчики/Таймеры
Счетчик импульсов Всем привет. Требуется сделать быстрые счетчик кол-ва имупльсов. Частота входных импульсов до Пытаюсь настроить таймер Tim1 на счет внешних импульсов по входу ETR. По RM Счетчик импульсов Всем привет, Есть клок 30Mhz. Нужно считать импульсы и через каждые клоков генерировать
Доброго дня уважаемые радиолюбители! Сегодня мы с вами продолжим более подробное изучение процессорного ядра микроконтроллера. В прошлый раз мы рассмотрели арифметико-логическое устройство и организацию памяти микроконтроллера.
Запоминающий реверсивный счётчик витков | Библиотека устройств на микроконтроллерах
Ознакомившись с рядом опубликованных в журнале конструкций счётчиков различного назначения (например, [1, 2]), я принял решение разработать свой вариант счётчика витков, в котором использована энергонезависимая память микроконтроллера. В результате удалось создать простой и удобный в работе счётчик витков для намоточного станка, не содержащий дефицитных деталей.
Он способен считать от 0 до 9999 оборотов вала, после чего показания индикатора обнуляются и счёт начинается заново. При вращении вала в обратную сторону индикатор уменьшает показания на единицу на каждый оборот.
Рис. 1
Счётчик состоит из нескольких узлов (рис. 1). Основой конструкции служит микроконтроллер DD1, к которому через токоограничительные резисторы R10—R16 подключён четырёхразрядный светодиодный индикатор HG1. Две оптопары — излучающий ИК диод— фототранзистор (VD2VT1, VD3VT2), — образующие датчик числа оборотов рабочего вала станка, формируют импульсы низкого уровня, по которым микроконтроллер определяет направление вращения и число оборотов вала. Предусмотрена кнопка SB1 для обнуления памяти, а также вспомогательные цепи: R2C2, работающая в составе встроенного тактирующего генератора микроконтроллера, VD1C1, сохраняющая напряжение питания, необходимое для перехода микроконтроллера в режим SLEEP, и R6R8, следящая за напряжением питания счётчика.
Известно, что микроконтроллеры семейства PIC довольно капризны при работе с EEPROM (особенно, когда запись в неё происходит автоматически). Уменьшение напряжения питания может исказить содержимое памяти При работе счётчика линия RB1 (вывод 7) микроконтроллера, к которой подключена цепь R6R8, опрашивается на наличие напряжения питания, и если оно пропадает, то благодаря цепи VD1C1 микроконтроллер успевает перейти в спящий режим, тем самым блокируя дальнейшее выполнение программы и защищая информацию в EEPROM. В процессе счёта микроконтроллер будет сохранять в памяти числа после каждого оборота рабочего вала станка. При каждом очередном включении питания индикатор HG1 отобразит то число, что было до отключения.
Датчик представляет собой небольшую печатную плату (22×22 мм), на которой смонтированы два излучающих диода и два фототранзистора, установленных так, что образуют два оптических канала передатчик—приемник. Оптические оси каналов параллельны, межосевое расстояние — около 10 мм.
На рабочем валу станка неподвижно закреплена шторка в виде диска из жёсткого непрозрачного для ИК лучей материала (текстолит, гетинакс, металл, пластик) толщиной 1…2 мм. Диаметр шторки — 35…50 мм, диаметр центрального установочного отверстия равен диаметру вала. Плату на станке фиксируют так, чтобы шторка, вращаясь вместе с валом, могла перекрывать собой оба ИК луча.
В шторке пропиливают вырез в форме неполного сектора. Угловая ширина и глубина выреза должны быть такими, чтобы при вращении вала шторка обеспечивала кратковременное прохождение ИК излучения сначала только через один канал, затем через оба и, наконец, только через другой, как это схематически проиллюстрировано на рис. 2. Цветом показаны каналы, открытые в той или иной позиции. Такой порядок следования сигналов с датчика даёт микроконтроллеру возможность определять направление вращения рабочего вала станка.
Счётчик рассчитан на питание от батареи из трёх гальванических элементов АА (R6), но можно использовать любой сетевой блок со стабилизированным выходным напряжением 5 В.
Вместо «поверхностных» резисторов можно использовать МЛТ-0,125 или С2-23 мощностью 0,062 Вт. Кнопка SB1 — любая, подходящая по месту крепления на плате. Вместо E40281-L-O-0-W подойдёт цифровой индикатор FYQ-2841CLR.
Программа микроконтроллера разработана и отлажена в среде Proteus, после чего с помощью программатора ICProg загружена в микроконтроллер. После установки микроконтроллера в панель при первом и последующих включениях счётчика индикатор отобразит знак «минус» во всех знакоместах. Примерно через две секунды на табло появятся нули — это признак готовности счётчика к работе.
В программе предусмотрена функция аварийного обнуления памяти на тот случай, когда в неё попадёт ошибочная информация и микроконтроллер «зависает» (такое бывает крайне редко, но быть может). Для возвращения микроконтроллера в рабочий режим нужно выключить питание счётчика, нажать на кнопку «Обнуление» и, не отпуская её, включить питание. Как только табло отобразит нули, можно продолжать работать, но информация о прежнем числе витков будет, разумеется, утрачена.
В налаживании правильно собранное устройство не нуждается.
ЛИТЕРАТУРА
1. Долгий А. Усовершенствованный реверсивный счётчик. — Радио, 2005, №11, с. 28, 29.
2. Гасанов А., Гасанов Р. Электронный счётчик. — Радио. 2006, № 11, с. 35, 36.
А. БАНКОВ, г. Орёл (Радио, №8 2011г)
прошивка, печатная плата-скачать
| —> Как ленточные конвейеры облегчают работу шахты? Ленточные конвейеры — это профессиональные рабочие устройства, которые используются во многих отраслях промышленности и хозяйства. Как самостоятельно сделать угольную маску? В период, когда пандемия коронавируса бушует по всему миру, каждый хочет защититься от опасных вирусов. Особенности зимней стройки Строительство обычно проводится в теплое время года. Однако кто сказал, что строить зимой нельзя? Что собой представляет сварочный инвертор Сегодня сварку активно используют не только для строительных и монтажных процедур, но и при выполнении различных бытовых работ. Игровые автоматы Плей Фортуна Для любителей азартных игр на просторах интернета представлены много игровых площадок, удовлетворяющих требования своих игроков. Что делать если зависает компьютер Постепенное снижение работоспособности и производительности компьютера — одна из наиболее частотных проблем, с которой сталкиваются пользователи любого ПК. Gaminator Slot — игровые автоматы бесплатно Несмотря на большой ассортимент игровых автоматов, наибольшей популярностью пользуются Гаминаторы. Для тех, кто любит и знает мир спорта — полная версия Вулкан ставка на спорт Отличные знания спортивных игр и событий могут значительно улучшить финансовое положение. Для этого существуют букмекерские конторы, где можно воспользоваться опытом прогнозирования в спорте и заработать. Игровые автоматы на деньги в 2020 году Очень много игроков уже давно просиживают вечера в казино-онлайн. Играть в онлайн автоматы без регистрации Еще с незапамятных времен некоторые люди предпочитали проводить время за игрой… |
Использование микроконтроллера за 3 цента в качестве счетчика энкодера
Даже в мире микроконтроллеров микроконтроллер стоимостью 0,03 долл. США в единичных экземплярах является диковинкой. Это очень дешевый . Самые дешевые микроконтроллеры, которые вы можете найти поштучно среди онлайн-дистрибьюторов, таких как Digikey или Mouser, стоят в районе 1 доллара. Чтобы опустить его ниже отметки в 1 доллар, ваш заказ обычно должен составлять тысячи. С другой стороны, это безымянный смартфон за 6 долларов в мире смартфонов за 600 долларов.
Это здорово? Черт возьми нет. Он использует эзотерическую реализацию C, называемую mini-C, документация повсюду, а ИС трудно найти. Но интересно ли им пользоваться? Это зависит от вашего представления о развлечениях. Я люблю ограничения и спрашивать себя: «Что я могу с этим сделать?»
Микроконтроллеры Padauk: исследование и использование
Изучение микроконтроллера 3 cent от Padauk, Тайвань. Впечатление: Достойная замена простым проектам.
West Side Electronics Бенджамен Лим
Несколько лет назад я посмотрел на эти ИС и немного поковырялся, изучая, что их можно использовать. С тех пор документация в среде IDE стала лучше, микросхемы стоят в 4 раза больше(!) и цепочка инструментов с открытым исходным кодом (SDCC) стала более зрелой.
На этот раз я хочу использовать эту микросхему в качестве счетчика энкодера.
Отслеживание счетчиков энкодера является важным действием. Кодировщики часто используются для отслеживания углового положения, и эта информация используется для отслеживания таких вещей, как скорость вращения колеса или насколько далеко продвинулась печатающая головка принтера.
Однако подсчет энкодера также сильно загружен. Представьте, что вам пришлось смотреть на экран, на котором отображались две переменные, равные либо единице, либо нулю. Отслеживая, как часто появляются единицы или нули и в каком порядке, вы можете определить положение энкодера и направление его вращения. Вы можете смотреть на экран весь день, а это значит, что вы не можете делать ничего другого… или вы можете настроить уведомление, чтобы сообщить вам, когда каждая переменная изменилась.
Так много чиселВместо уведомлений микроконтроллеры используют прерывания, чтобы убедиться, что они не пропустили счет. Но с сотнями операций в секунду вы не сможете делать ничего, кроме обслуживания прерывания, поэтому некоторые (читай: дорогие) чипы имеют специальные модули кодировщика, которые освобождают основной контроллер для выполнения других задач, таких как чтение управляющего сигнала или отправка данных.
Не все микроконтроллеры имеют этот модуль, и здесь на помощь приходит микроконтроллер Padauk.
КонцепцияКонцепция довольно проста: используйте микроконтроллер Padauk для выполнения рутинной работы по считыванию кодировщика, а затем предоставьте другому микроконтроллеру простые средства для получить доступ к счетчикам.
Я решил использовать два способа чтения счетчика. SPI для получения точного количества от микроконтроллера, а также схема управления с двумя выводами подсчета/направления для менее критичных к положению приложений: микроконтроллер Padauk выдает импульс на один вывод, когда обнаруживает вращение энкодера, и указывает направление вращения. энкодер, используя другой контакт.
Принцип работы энкодера
Энкодер с nScopeРабота энкодеров путем вывода кода Грея . Это пара сигналов, которые указывают количество оборотов, а также направление ручки.
Сигнал A слегка смещен по оси y для ясностиПутем считывания изменений каждого сигнала и отслеживания того, какой сигнал изменяется первым, можно точно увеличивать или уменьшать значение счетчика энкодера.
Каждый пин нужно подтянуть резисторомПодключение энкодера также довольно простое, с подтягивающими резисторами на каждом канале.
Эмуляция IC
Протестировал код на эмуляторе от Padauk. Я обнаружил, что опыт отладки оказался весьма полезным для исправления нескольких ошибок в моей логике. Padauk IDE автоматически отображает все регистры и их текущее состояние, а также значения переменных в каждой части кода по мере прохождения.
Тестирование схемы с помощью эмулятораПоскольку набор инструкций для микросхем Padauk очень мал, все можно отобразить в IDE. Одна вещь, которая мне не понравилась, заключалась в том, что документация для Mini-C разделена на Application Note в IDE, а также в таблице данных IC.
В коде я установил два прерывания для чтения кода Грея из энкодера и его сохранения в глобальной переменной. Эта глобальная переменная может увеличиваться и уменьшаться.
Дополнение до двух
В Mini-C нет понятия отрицательных чисел, которое обычно реализуется как дополнение до двух.
Этот метод согласуется с логикой двоичных и арифметических операций, поэтому это действительно полезный способ представления отрицательных чисел. Однако вместо того, чтобы иметь отрицательные значения, поскольку меня больше интересует относительно положения энкодера, еще один способ добиться этого — инициализировать значение в середине диапазона.
Если мы начнем с нуля и не реализуем дополнение до двух, значение будет меняться от 0 до 100, что нежелательно. Вместо этого я начал значение в середине диапазона, и это позволяет ему нормально уменьшаться и увеличиваться. Все, что мне нужно сделать, это отслеживать начальное значение и сбрасывать его до того, как оно перевернется.
Программирование ИС
Когда вы нажмете «Программировать», программатор Падока сохранит двоичный файл в памяти программиста, чтобы вы могли использовать его как отдельное устройство или запустить процесс загрузки с компьютера.
Успешное программированиеPFS173, который я использовал, поддерживает многократное программирование по времени (MTP) и делает то, что написано на крышке, это позволяет программировать его несколько раз. Есть и другие микросхемы Padauk, которые можно запрограммировать только один раз, например, PMC150.
Функции конечного контактаПопутно я добавил несколько других функций, таких как возможность для платы служить основным контроллером вместо того, чтобы просто интерпретировать сигналы энкодера, а также возможность сохранять последнее установленное значение ШИМ, когда оно выключен или включен. Когда я был достаточно доволен результатом, я перенес его на специальную доску в моем основном проекте.
Обновленная концепцияВ общей сложности на ознакомление с функционалом и отладку кода у меня ушло около двух дней. При регулярном использовании программирование микросхемы и ее пайка могут быть сокращены до нескольких часов.
Для меня наличие этого сверхдешевого микроконтроллера весьма полезно в качестве микросхемы общего назначения, которая может заменить более специализированные компоненты или устройства. Мне он нравится, потому что он дешевый, его легко паять, его легко понять и запрограммировать.
Если вам понравилась эта статья, рассмотрите возможность подписки на информационный бюллетень и свяжитесь со мной!
Подпишитесь на получение новых обновлений
Документация
Документация улучшилась с тех пор, как я просматривал ее в последний раз. Теперь есть правильные разделы и категории, которые четко сегментированы и нет битых ссылок. Язык также был очищен с прошлого раза. Я проверил версию программного обеспечения и документации на китайском языке и не нашел никаких отличий. Однако я все еще хочу получить лучшую документацию по Mini-C.
СДКК
Компилятор C для малых устройств стал более зрелым и поддерживает широкий спектр микросхем Padauk. Однако вам все равно придется создавать программатор самостоятельно, а эмулятора нет. Преимущество в том, что вы получаете доступ к современному C, который определенно лучше, чем эзотерический мини-C, который реализует Падок. Если у вас нет устройства с Windows, это, вероятно, единственный способ запрограммировать эти микросхемы.
Лично мне до сих пор нравится использовать Padauk IDE и mini-C, потому что я считаю, что они достаточно хорошо работают для моих целей. Возможность пошагового выполнения кода по-прежнему чрезвычайно полезна для меня, и я не хочу переставлять микроконтроллер с платы на отладчик и наоборот для каждого обновления кода
Стоимость
ИС Падаука теперь стоят почти в 4 раза дороже, чем когда я купил их в 2019 году. -plugging, так как я еще не нажал кнопку программы. Мальчик был я неправ. Это поджарило микросхему, потому что она была наклонена, когда я вставил ее — были подключены неправильные контакты, и я потратил несколько долгих минут, пытаясь понять, почему она не работает, прежде чем решил попробовать другую микросхему, на этот раз тщательно расположенную перед тем, как я подключил к писателю. Это сработало с первого раза.
Удивительно умный компилятор
Компилятор выдает ошибку, когда обнаруживает определенные структуры кода, приводящие к двусмысленности, которую я нечасто встречал. Например, если у вас есть оператор if-else, который запускается, когда значение > 0, то компилятор не примет оператор else if
, потому что это было бы неоднозначно. Ему нужно только утверждение else
: если вы уже рассмотрели все, начиная с 0, но не с нуля, то единственный другой вариант — ноль. Имея if-else
означало бы, что есть как минимум еще два результата, которые компилятор считает логически невозможными и поэтому отказывается от компиляции.
;****************************************************** ****** | |
;Конфигурация PIC для PIC16F887 | |
#include «p16F887.inc» | |
; КОНФИГ1 | |
; __config 0x2032 | |
__CONFIG _CONFIG1, _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_ON & _CPD_ON & _BOREN_OFF & _IESO_OFF & _FCMEN_OFF & _LVP_OFF | |
; КОНФИГ2 | |
; __config 0x3FFF | |
__КОНФИГ _КОНФИГ2, _BOR4V_BOR40V и _WRT_OFF | |
;****************************************************** ****** | |
РАСЧЁТ ЭКВ 20H | |
CNT_100th EQU 21H ; счетчик на 0,01 с | |
CNT_10th EQU 22H ; счетчик на 0,1 с | |
CNT_sec EQU 23H ; счетчик секунд | |
CNT_10sec EQU 24H ; счетчик десятков секунд | |
CNT_мин EQU 25H ; счетчик минут | |
CNT_10мин EQU 26H ; счетчик десятков минут | |
РАБОТА ЭКВ 70Ч ; поставить в общий регион | |
WCOPY EQU 71H ; поставить в общий регион | |
СТАТКОПИЯ EQU 72H ; поставить в общий регион | |
СЧЕТ ЭКВ 28H ; счетчик ожидания, внешний цикл | |
ICOUNT EQU 29H ; счетчик ожидания, внутренний цикл | |
ОРГ 000H | |
ПЕРЕЙТИ К ГЛАВНОМУ | |
ОРГ 004H | |
MOVWF WCOPY ;сохранение контекста | |
СТАТУС ПОДСТАВКИ, W | |
MOVWF СТАТКОПИЯ | |
CLRF ИНТКОН | |
КОМФ. ПУСК, 1 | |
БАНКСЕЛ ПОРТB | |
БКФ ПОРТБ, РБ0 | |
BCF INTCON,INTF | |
ЧФ ИНТКОН, ИНТЕ | |
SWAPF STATCOPY,W ;восстановление контекста | |
СОСТОЯНИЕ ДВИГАТЕЛЯ | |
SWAPF WCOPY, F | |
SWAPF WCOPY,W | |
РЕТФИ | |
;****************************************************** ******* | |
ОСНОВНОЙ | |
БАНКСЕЛ CNT_100th | |
CLRF CNT_100th | |
CLRF CNT_10th | |
CLRF CNT_sec | |
CLRF CNT_10sec | |
CLRF CNT_мин | |
CLRF CNT_10мин | |
CLRF RUN | |
БАНКСЕЛЬ АНСЕЛЬ | |
CLRF ANSEL ;используя полностью цифровой режим, отключает аналоговый | |
CLRF ANSELH ; Сделать все аналоговые порты цифровыми | |
BANKSEL TRISA ; измените на правильный банк для настройки регистров TRIS | |
;СДЕЛАТЬ ВЫХОД RA0, ВХОД RB0, PORTC И PORTD ВСЕ ВЫХОДЫ | |
CLRF ТРИСА | |
CLRF ТРИСБ | |
КОМФ ТРИСБ, 1 | |
CLRF ТРИСД | |
BANKSEL CCP1CON ;очистить другие банки, связанные с операцией PORTB | |
CLRF CCP1CON | |
БАНКСЕЛЬ IOCB | |
CLRF IOCB | |
БАНКСЕЛЬ WPUB | |
CLRF WPUB | |
CLRF ИНТКОН | |
ЧФ ИНТКОН, 7 | |
ЧФ ИНТКОН,4 | |
БАНКСЕЛЯ OPTION_REG | |
CLRF OPTION_REG | |
ЧФ ОПЦИЯ_РЕГ, 6 | |
ПЕТЛЯ | |
БАНКСЕЛ CNT_100th | |
MOVF CNT_100th,0 ; Поместите счет 1/100 секунды в W | |
ТАБЛИЦА ВЫЗОВОВ ; Получить значение для записи в PORTD из таблицы | |
МОВВФ ПОРТД ; Поместите значение в PORTD | |
BCF PORTA,5 ; Включите и выключите дисплей, чтобы показать цифру | |
ЗАДЕРЖКА ВЫЗОВА | |
ЧФ ПОРТ,5 | |
MOVF CNT_10th,0 ; Поместите счет 1/10 секунды в W | |
ТАБЛИЦА ВЫЗОВОВ ; Получить значение для записи в PORTD из таблицы | |
МОВВФ ПОРТД ; Поместите значение в PORTD | |
BCF PORTA,4 ; Включите и выключите дисплей, чтобы показать цифру | |
ЗАДЕРЖКА ВЫЗОВА | |
ЧФ ПОРТ,4 | |
MOVF CNT_sec,0 ; Поместите количество секунд в 1 с в W | |
ТАБЛИЦА ВЫЗОВОВ ; Получить значение для записи в PORTD из таблицы | |
МОВВФ ПОРТД ; Поместите значение в PORTD | |
BCF PORTA,3 ; Включите и выключите дисплей, чтобы показать цифру | |
ЗАДЕРЖКА ВЫЗОВА | |
ЧФ ПОРТ,3 | |
MOVF CNT_10sec,0 ; Поместите счет 10 секунд в W | |
ТАБЛИЦА ВЫЗОВОВ ; Получить значение для записи в PORTD из таблицы | |
МОВВФ ПОРТД ; Поместите значение в PORTD | |
BCF PORTA,2 ; Включите и выключите дисплей, чтобы показать цифру | |
ЗАДЕРЖКА ВЫЗОВА | |
ЧФ ПОРТ,2 | |
MOVF CNT_min,0 ; Поместите количество 1 с минут в W | |
ТАБЛИЦА ВЫЗОВОВ ; Получить значение для записи в PORTD из таблицы | |
МОВВФ ПОРТД ; Поместите значение в PORTD | |
BCF PORTA,1 ; Включите и выключите дисплей, чтобы показать цифру | |
ЗАДЕРЖКА ВЫЗОВА | |
ЧФ ПОРТ,1 | |
MOVF CNT_10мин,0 ; Поместите счет 10 минут в W | |
ТАБЛИЦА ВЫЗОВОВ ; Получить значение для записи в PORTD из таблицы | |
МОВВФ ПОРТД ; Поместите значение в PORTD | |
BCF PORTA,0 ; Включите и выключите дисплей, чтобы показать цифру | |
ЗАДЕРЖКА ВЫЗОВА | |
ЧФ ПОРТ,0 | |
ОЖИДАНИЕ ВЫЗОВА | |
BTFSC RUN, 0 | |
ЗВОНИТЕ ПО НОМЕРУ | |
ПЕРЕЙТИ К ЦИКЛУ | |
WAIT ;регулируемая задержка для точного срабатывания таймера | |
МОВЛВ 07Х | |
MOVWF СЧЕТ | |
МОВЛВ 0D0H | |
MOVWF ЗНАЧОК | |
ОКОН | |
ILOOP | |
ИКОНТ DECFSZ, 1 | |
ПЕРЕЙТИ В КОНТУР | |
СЧЕТ DECFSZ, 1 | |
ПЕРЕЙТИ К ОЦЕНКЕ | |
ВОЗВРАТ | |
ИНККТ | |
INCF CNT_100th,1 ; приращение счетчика 0,01 с сохранение обратно в счетчик | |
МОВЛВ 0X0A ; проверьте, равно ли 10 | |
XORWF CNT_100th,0 | |
СТАТУС BTFSC, Z | |
ПЕРЕЙТИ НА НАВЕРХ_100-й ; если это 10, перейти к OVER100th | |
ВОЗВРАТ ; если нет переполнения, вернуть | |
OVER_100th INCF CNT_10th,1 ;было переполнение предыдущей цифры, увеличить следующую цифру | |
CLRF CNT_100th ;очистить предыдущую цифру | |
MOVLW 0x0A ;проверьте, не приведет ли это к переполнению | |
XORWF CNT_10th,0 | |
СТАТУС BTFSC, Z | |
GOTO OVER_10th ;было еще одно переполнение | |
ВОЗВРАТ ;нет переполнения, вернуться | |
OVER_10th INCF CNT_sec,1 ;этот процесс повторяется | |
CLRF CNT_10th | |
МОВЛВ 0x0A | |
XORWF CNT_sec,0 | |
СТАТУС BTFSC, Z | |
GOTO OVER_sec | |
ВОЗВРАТ | |
OVER_sec INCF CNT_10sec,1 | |
CLRF CNT_sec | |
МОВЛВ 0x06 | |
XORWF CNT_10sec,0 | |
СТАТУС BTFSC, Z | |
ПЕРЕЙТИ НА ПЕРВЫЙ_10сек | |
ВОЗВРАТ | |
OVER_10sec INCF CNT_min,1 | |
CLRF CNT_10sec | |
МОВЛВ 0x0A | |
XORWF CNT_min,0 | |
СТАТУС BTFSC, Z | |
ПЕРЕЙТИ НА ПЕРВОЕ_мин | |
ВОЗВРАТ | |
OVER_min INCF CNT_10min,1 | |
CLRF CNT_мин | |
МОВЛВ 0x06 | |
XORWF CNT_10min,0 | |
СТАТУС BTFSC, Z | |
ПЕРЕЙТИ НА НАВЕРХ_10мин | |
ВОЗВРАТ | |
OVER_10мин CLRF CNT_100th | |
CLRF CNT_10th | |
CLRF CNT_sec | |
CLRF CNT_10sec | |
CLRF CNT_мин | |
CLRF CNT_10мин | |
ВОЗВРАТ | |
ЗАДЕРЖКА ;задержка включения/выключения мигания сегмента | |
МОВЛВ 0xFF | |
МОВВФ СЧЕТ | |
DLOOP DECFSZ СЧЕТ | |
ПЕРЕЙТИ К ЦИКЛУ | |
ВОЗВРАТ | |
СТОЛ | |
ADDWF PCL,1 ;регистр инструкций добавить адрес отклонения | |
RETLW 0C0H ; код для 0 (общий светодиод — анод) | |
RETLW 0F9H ;код для 1 | |
RETLW 0A4H ;код для 2 | |
RETLW 0B0H ;код для 3 | |
RETLW 99H ; код 4 | |
RETLW 92H ; код 5 | |
RETLW 82H ; код 6 | |
RETLW 0F8H ; код 7 | |
RETLW 80H ; код 8 | |
RETLW 90H ; код 9 | |
КОНЕЦ | |
Счетчик посетителей и Детектор паролей :: Проекты 8051
Стоимость проекта: 5 200
Код проекта: 1110
Заказать сейчас
Описание проекта:
Этот проект состоит из двух модулей. Первый — это двунаправленный счетчик людей, а второй — блокировка, управляемая паролем. Основная идея этого проекта заключается в измерении и отображении количества людей, входящих в любое помещение, такое как зал для семинаров, конференц-зал. ЖК-дисплей, расположенный за пределами помещения, отображает это значение. А когда количество людей в помещении равно нулю, подача электроэнергии внутри помещения может быть отключена с помощью релейного интерфейса. Вторая часть проекта выполняет функцию открывания дверной защелки с помощью пароля, введенного с клавиатуры. А также отправка этих данных на компьютер через последовательный порт. Этот модуль также включает зуммер, если последовательно введены 3 неправильных пароля. Пользователь может изменить этот пароль в любое время с помощью клавиатуры.
Описание:
Таким образом, этот проект служит двум важным целям:
- Энергосбережение / Энергосбережение: Это делается путем подсчета количества людей в любой комнате, и когда счет равен нулю, свет выключается. Для подсчета используются две пары ИК-передатчика и приемника.
- Вход без ключа в дом/офис: Часто мы забываем взять с собой ключи от офиса или дома. Или когда-нибудь ключ потерян или может быть продублирован. Поэтому мы разработали схему детектора пароля, которая открывает дверную защелку при вводе правильного пароля с помощью клавиатуры 9.1268
Блок-схема:
Вместе с этим проектом вы получите следующие документы:
- Отчет о проекте в формате pdf и в формате doc (word)
- Шестнадцатеричный файл кода микроконтроллера
- Спецификации всех компонентов/ИС, используемых в проекте
Фотографии проекта:
Подробное описание:
Существует множество проектов на основе датчиков для ece, и этот проект в основном состоит из следующих блоков:
- Передатчик: мы собираемся реализовать модуль счетчика посетителей, используя 2 передатчика и 2 приемника. Мы собираемся использовать инфракрасные передатчики, потому что инфракрасные лучи не видны человеческому глазу. В качестве передатчика используются ИК-светодиоды
- . Приемник: Мы собираемся использовать инфракрасный приемник. Это устройство с низким уровнем активности, что означает, что оно дает низкий выходной сигнал, когда получает инфракрасные лучи.
- ЖК-дисплей: мы собираемся использовать буквенно-цифровой жидкокристаллический дисплей (ЖК-дисплей) 16×2, что означает, что он может отображать буквы алфавита вместе с числами на 2 строках, каждая из которых содержит 16 символов.
- Взаимодействие с ПК: Мы собираемся использовать максимум 232 IC для взаимодействия с ПК, значения количества людей в комнате и статус введенного пароля (Правильно/неправильно) будут отправлены на ПК.
- Клавиатура: Пользователь вводит пароль с помощью клавиатуры. Различные клавиши клавиатуры: I. от 0 до 9 II. Введите III. Побег
- Микроконтроллер: это ЦП (центральный процессор) нашего проекта. Мы будем использовать микроконтроллер семейства 8051. Различные функции микроконтроллера:
- Чтение цифрового входа с двух инфракрасных приемников и подсчет количества людей от них.
- Отправка этих данных на ЖК-дисплей, чтобы человек, работающий над этим проектом, мог прочитать количество людей в комнате.
- Определить пароль с помощью клавиатуры и проверить, правильный это пароль или неправильный, и повернуть шаговый двигатель, если введенный пароль является правильным.
- Отправка данных на компьютер через последовательный порт. Эти данные состоят из количества людей в комнате и статуса введенного пароля (правильный/неправильный)
Применение и преимущества:
- Может использоваться в различных помещениях, таких как зал для семинаров, конференц-зал и учебные комнаты в колледже, вместимость номера ограничена и не должна превышаться. Таким образом, проект будет отображать фактическое количество людей в помещении.
- Другая часть проекта (детектор паролей) может использоваться для автоматизации процесса запирания дверей, поэтому пользователю не нужно носить с собой ключи от дверных замков, он может просто запомнить пароль и использовать его позже, чтобы открыть дверь дверь
Будущее развитие:
- Мы можем отправить эти данные в удаленное место с помощью мобильного телефона или Интернета
- Мы можем внедрить другие связанные модули, такие как датчик пожара, датчик ветра.