Муфты электромонтажные от производителя Fucon

Измеритель индуктивности на микроконтроллере PIC16F1936

Microchip PIC16F1936 Atmega328

Журнал РАДИОЛОЦМАН, май 2018

Lukas Fässler

soldernerd.com

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

На портале РадиоЛоцман публиковалась статья [1] с описанием простой конструкции цифрового прибора для измерения индуктивности, в основе которого была плата Arduino Uno. Этот вариант прибора, по отзывам пользователей, хорошо зарекомендовал себя в работе, но для повседневного использования, возможно, вы хотели бы иметь, нечто похожее на мультиметр. Поэтому было решено разработать новую версию прибора, которая питается от 9-вольтовой батареи и помещена в пластиковый корпус, напечатанный на 3D принтере (Рисунок 1).

Измеритель индуктивности на микроконтроллере PIC16F1936
Рисунок 1. Измеритель индуктивности на микроконтроллере PIC.

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

Прибор выполнен на микроконтроллере (МК) Microchip PIC16F1936. Этот выбор не связан с какими-то особенностями данной модели, просто такие МК остались у автора от прошлых проектов. Была даже мысль использовать ATmega328 – тот самый МК, который установлен на плате Arduino Uno. Но для измерения частоты и управления ЖК-индикатором ATmega328 слишком избыточен. Кроме того, он несколько дороже микроконтроллера PIC. Поэтому, несмотря на то, что переход к совершенно другому МК означает написание программного кода с нуля, было принято решение использовать PIC16F1936.

Принципиальная схема измерителя индуктивности изображена на Рисунке 2. Как видите, входная часть прибора (LC-генератор, преобразователь синусоидального сигнала в прямоугольный, делитель частоты), а также схема управления, включая цепь подавления дребезга контактов кнопки, идентичны версии измерителя на Arduino, поэтому для понимания работы схемы и ее характеристик рекомендуется обратиться к статье [1]. Что касается питания, то в схему варианта на МК PIC введен дополнительный регулятор напряжения 5 В серии LM2931-5.0. Выходной сигнал SLOW_FREQ с делителя частоты поступает для обработки непосредственно в микроконтроллер (порт RB0).

Измеритель индуктивности на микроконтроллере PIC16F1936
Рисунок 2. Принципиальная схема автономного измерителя индуктивности на
микроконтроллере PIC16F1936.

Теперь о ЖК-индикаторе. В данном случае применен Midas MCCOG21605B6W-BNMLW – достаточно компактный символьный ЖК-индикатор, синий с белой подсветкой, имеющий две строки по 16 символов. Он управляется по интерфейсу I2C (порты МК RC3, RC4), но еще дополнительно используется вход сброса RST (порт RC2).

С точки зрения высокоуровневого программирования, программный код очень похож на скетч для версии прибора на Arduino. Но если взглянуть поближе, вы увидите несколько отличий, связанных с изменением аппаратной части:

  • Используется совершенно другой МК: PIC16F1936 вместо Atmega328.
  • Код написан на Си в компиляторе mikroC для микроконтроллеров PIC компании mikroElektronika, а не в стиле Arduino Си++.
  • Дисплей, используемый в этой версии прибора, имеет интерфейс I2C, а не обычный параллельный интерфейс контроллера Hitachi.

При написании кода, как и ожидалось, много времени ушло на реализацию управления ЖК индикатором, а точнее, его контроллером. Похоже, что интерфейс I2C реализован в нем как надстройка для основного Hitachi-совместимого контроллера. Сама по себе такая концепция была бы неплоха, если бы не одно «но» – техническое описание дисплея. И если бы не предыдущий опыт работы с другими графическими дисплеями Midas, совместимыми с Hitachi, автору пришлось бы отказаться от его использования в устройстве. Вот примеры недостатков технического описания, из-за которых возникли проблемы при написании части кода для управления ЖК-индикатором:

  • В документе нет нумерации страниц. Да, это незначительный недостаток, но вы когда-нибудь видели техническое описание с непронумерованными страницами?
  • Имеется вход сброса. Аналогично многим сигналам сброса различных контроллеров, активный уровень сигнала низкий. В техническом описании об этом не сказано ничего.
  • Очень подробно рассмотрены некоторые функции контроллера Hitachi, но ни слова о том, что эти функции недоступны через интерфейс I2C.
  • Как и всем дисплеями с контроллерами, совместимыми с Hitachi, ЖК-индикатору Midas требуется время на запуск и инициализацию. В противном случае вы просто не сможете с ним работать. Но прочитать об этом, опять же, вы не сможете.

Но, в конце концов, все заработало прекрасно. Для этого измерителя у МК более чем достаточно ОЗУ, Flash-памяти и вычислительной мощности, поэтому не стоит ожидать, что код будет каким-либо образом оптимизирован. Этого просто не нужно. Бóльшую часть математических операций он выполняет с плавающей точкой, что «раздувает» размер скомпилированного кода и очень тормозит его выполнение, но для нашей задачи этого вполне хватает и оставляет неиспользуемым порядка половины доступного объема Flash и ОЗУ.

а) Измеритель индуктивности на микроконтроллере PIC16F1936
б) Измеритель индуктивности на микроконтроллере PIC16F1936
Рисунок 3. Корпус измерителя индуктивности.

Корпус прибора был спроектирован в среде FreeCAD (Рисунок 3). Это, как следует из названия, бесплатный инструмент с отрытым кодом, простой и понятный в изучении.

Измеритель индуктивности на микроконтроллере PIC16F1936
Рисунок 4. Внешний вид печатной платы измерителя индуктивности
с установленными компонентами.

Двусторонняя печатная плата проектировалась в Eagle под микроконтроллер в корпусе SOIC (Рисунок 4). Проектные файлы также доступны для загрузки.

Ссылки

Загрузки

Материалы по теме

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Stand-alone Inductance Meter on PIC16F1936

60 предложений от 33 поставщиков
PIC PIC® XLPTM16F Microcontroller IC 8-Bit 32MHz 14KB (8K x 14) FLASH 28-QFN (6x6)
PIC16F1936-I/SO
Microchip
45 ₽
Akcel
Весь мир
PIC16F1936T-I/ML
Microchip
от 91 ₽
ЭИК
Россия
PIC16F1936-I/SS
Microchip
от 409 ₽
Контест
Россия
PIC16F1936-I/SO
Microchip
по запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя