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

Microchip PIC16F1936 Atmega328

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

Lukas Fässler

soldernerd.com

На портале РадиоЛоцман публиковалась статья [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). Проектные файлы также доступны для загрузки.

Ссылки

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

Загрузки

  1. Принципиальная схема (Eagle, PDF), проект печатной платы (Eagle, PDF), библиотека элементов для FreeCAD, Gerber-файлы для производства печатной платы, исходный код и прошивка

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

  1. Datasheet Microchip PIC16F1936
  2. Datasheet Microchip Atmega328
  3. Datasheet ON Semiconductor MC74VHC1GT50
  4. Datasheet Texas Instruments LM2931AM
  5. Datasheet Microchip MCP6561R
  6. Datasheet Midas MCCOG21605B6W-BNMLW

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

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

Цена PIC16F1936PIC16F1936 на РадиоЛоцман.Цены — от 39,28 до 250 руб.
30 предложений от 20 поставщиков
Исполнение: SOIC-28L. SOIC 28/I°/14KB FLASH, 512B RAM, 256B EEPROM, LCD, 1.8-5.5V Микроконтроллер широкого назначения PIC16F1936-I/SO. Описание в формате PDF
ПоставщикПроизводительНаименованиеЦена
AliExpressCS8615C TDA7419 PL2303TA DRV8811PWPR DRV8811 STC12C5608AD CH452A PIC16F1933-I/SO PCA9535PW PIC16F1936-I/SS PIC16F1938-I/SS39 руб.
Стандарт СИЗMicrochipPIC16F1936-I/SO45 руб.
ДессиMicrochipМикроконтроллер широкого назначения PIC16F1936-I/SO180 руб.
КремнийPIC16F1936T-I/MVпо запросу
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя