Оглавление:

Мультиметр PIC16F877: 6 шагов
Мультиметр PIC16F877: 6 шагов

Видео: Мультиметр PIC16F877: 6 шагов

Видео: Мультиметр PIC16F877: 6 шагов
Видео: Аппаратная реализация. UART. Передатчик и приёмник на PIC 2024, Ноябрь
Anonim
PIC16F877 Мультиметр
PIC16F877 Мультиметр

PICMETER Введение

Этот проект PICMETER превратился в полезный и надежный инструмент для любого энтузиаста электроники.

  • Он работает на микроконтроллере PIC16F877 / 877A.
  • Это система разработки ПОС
  • Это 19-функциональный мультиметр (вольтметр, частотомер, генератор сигналов, термометр …)
  • Это средство проверки компонентов (R, L, C, диод…) с 5 диапазонами для каждой функции.
  • У него есть радио ASK в диапазоне 433 МГц, которое ждет какого-то приложения.
  • Это система удаленного сбора данных, когда другой компьютер (ПК) может собирать данные через последовательный порт для графического отображения. (Он использовался как начальная часть проекта ЭКГ).
  • Он имеет возможность регистрации (для регистрации данных в течение нескольких часов), результаты выгружаются из EEPROM.
  • Он выдает тестовые сигналы для управления некоторыми двигателями.
  • Он тщательно протестирован, см. Фотографии в шаге 5.
  • Программное обеспечение выпущено с открытым исходным кодом.

Эта инструкция является сокращенной версией полной документации. В нем описывается аппаратное и программное обеспечение, достаточное для того, чтобы другие могли построить его либо как завершенный проект, либо использовать его в качестве системы разработки для внесения дальнейших изменений, или просто найти идеи для использования в других проектах.

Запасы

Единственный критически важный чип для покупки - это Microchip PIC16F877A-I / P.

  • A = более поздняя версия, которая отличается от оригинала определением битов конфигурации.
  • I = Промышленный температурный диапазон
  • P = 40-выводный пластиковый двухрядный корпус, 10 МГц, нормальные пределы VDD.

Также Hitachi LM032LN с 20-символьным двухстрочным ЖК-дисплеем, который имеет встроенный контроллер HD44780.

Остальные части представляют собой обычные электрические компоненты, печатную плату, LM340, LM311, LM431, транзисторы малой мощности общего назначения и т. Д.

Шаг 1: Описание PICBIOS

PICBIOS Описание
PICBIOS Описание

PICBIOS Описание

Это программное обеспечение работает на плате PIC16F877 и занимает нижние 4 КБ программной памяти. Он обеспечивает программную среду для прикладной программы, занимающей верхнюю половину программной памяти. По идее он похож на PC-BIOS с несколькими «отладочными» командами для разработки программ и состоит из 5 компонентов:

  1. Меню загрузки
  2. Программа установки
  3. Интерфейс командной строки (через последовательный порт)
  4. Ядро и драйверы устройств
  5. Интерфейс прикладного программирования

Шаг 2: Описание PICMETER

ПИКМЕТР Описание
ПИКМЕТР Описание

ПИКМЕТР Описание

Вступление

Как и мультиметр (вольт, ампер, ом), он имеет множество функций, которые выбираются с помощью системы меню. Но сочетание аппаратного и программного обеспечения делает его очень универсальным, например, доступны такие функции, как ведение журнала за длительные периоды и отправка последовательных данных.

Меню - это «сердце», в котором функции выбираются с помощью кнопок [влево] и [вправо]. Затем для каждой функции с помощью кнопок [inc] и [dec] выбираются разные диапазоны. Например, конденсаторы измеряются от 0,1 нФ до 9000 мкФ с помощью 5 отдельных диапазонов.

2.1 Программное обеспечение PICMETER

Он организован как прикладная программа, которая занимает верхние 4 КБ программной памяти и полагается на функции PICBIOS для ввода-вывода устройства и обработки прерываний. Он состоит из раздела меню, который запускается как фоновая задача и опрашивает кнопки каждые 20 мсек. Когда нажимается кнопка для изменения функции или изменения диапазона, вызывается соответствующая процедура. Когда никакие кнопки не нажимаются, измеренные показания обновляются с интервалом примерно 0,5 секунды. В основном меню представляет собой справочную таблицу.

2.2 Функция счетчика - разделы

Существует много функций, поэтому эта часть разделена на разделы, каждая из которых имеет дело с функциями схожего характера. Это краткий список разделов; см. Полную документацию, чтобы подробно узнать, как работает каждый раздел. Из-за ограничений порта существует 3 варианта проекта (см. Полную документацию). Функции, выделенные обычным шрифтом, являются общими для всех проектов. ПОДПИСАННЫЕ функции включены только в проект PICMETER1. Функции в ITALICS включены только в проекты PICMETER2 или PICMETER3.

Раздел VoltMeter - Исходный файл - vmeter.asm

Содержит функции, основанные на измерении напряжения с помощью АЦП.

  • Напряжение АЦП (считывает напряжение на выбранном входе, от AN0 до AN4)
  • AD2 Dual (отображает напряжение на AN0 и AN1 одновременно)
  • Термометр ТМП от -10 до 80? degC (2N3904 или двойной датчик LM334)
  • LOG - устанавливает интервал логирования
  • ОМ - Измерение сопротивления (метод потенциометра) от 0 Ом до 39 МОм в 4 диапазонах
  • DIO - диод, измеряет прямое напряжение (0-2,5 В)
  • CON - Непрерывность (звуковой сигнал, когда сопротивление меньше порога 25, 50 или 100)

Компонент Meter1 - Исходный файл - meter1.asm

Измерение конденсатора, катушки индуктивности и резистора с использованием схемы компаратора LM311. На основе измерения времени одного цикла зарядки.

  • CAL - калибровка - измеряет фиксированные 80 нФ и 10 мкФ для самотестирования и настройки
  • Cx1 - измерение конденсатора от 0,1 нФ до 9000 мкФ в 5 диапазонах
  • Lx1 - измерение индуктивности от 1мГн до ?? мГн в 2 диапазонах
  • Rx1 - измерение резистора от 100 Ом до 99 МОм в 3 диапазоне

Компонент Meter2 Исходный файл Meter2.asm

Измерение компонентов с использованием альтернативного релаксационного генератора LM311 и генератора Колпитца. На основе измерения периода времени N циклов. Этот метод немного более точен, чем описанный выше, поскольку измеряется время N = до 1000 циклов. Это больше аппаратное решение и требует большей конструкции.

  • Cx2 - измерение конденсатора от 10 пФ до 1000 мкФ в 5 диапазонах.
  • Rx2 - измерение резистора от 100 Ом до 99М в 5 диапазонах.
  • Lx2 - измерение индуктивности от 1 мГн до 60 мГн в 1 диапазоне.
  • osc - измерение индуктивности (метод Колпитца) от 70 мкГн до 5000 мкГн? в 2-х диапазонах.

Frequency Meter - исходный файл Fmeter.asm

Содержит функции, использующие счетчики и таймеры PIC, и многое другое;

  • FREQ - Частотомер от 0 Гц до 1000 кГц в 3 диапазонах
  • XTL - измеряет частоту кристаллов LP (не тестировалось)
  • SIG - генератор сигналов от 10 Гц до 5 кГц с 10 шагами
  • SMR - шаговый двигатель - обратное направление
  • SMF - шаговый двигатель - вперед.

Связь - исходный файл - comms.asm

Функции передачи / приема сигнала для тестирования периферийных устройств с последовательным интерфейсом и SPI;

  • UTX тестовый последовательный TX & inc и dec битрейт от 0,6 до 9,6k
  • URX тестовый последовательный RX & inc и dec битрейт от 0,6 до 9,6k
  • SPM - тестирует SPI в мастер-режиме
  • SPS - тестирует SPI в ведомом режиме

Радиомодуль FSK - Исходный файл - Radio.asm

Работает с использованием радиоприемных и передающих модулей RM01 и RM02. Эти модули взаимодействуют через SPI, который использует большую часть контактов порта C.

  • ПКМ - установить скорость передачи данных радиомодуля.
  • RMF - установка радиочастоты радиомодуля
  • RMC - устанавливает тактовую частоту радиомодуля
  • XLC - регулирует емкостную нагрузку кристалла
  • POW - устанавливает мощность передатчика
  • RM2 - передача тестовых данных (модуль RM02)
  • RM1 - получение тестовых данных (модуль RM01)

Модуль управления - Исходный файл control.asm

  • SV1 - серво выход (с использованием CCP1) от 1 мс до 2 мс с шагом 0,1 мс
  • SV2 - Servo Output (с использованием CCP2) от 1 мс до 2 мс с шагом 0,1 мс
  • PW1 - выход ШИМ (с использованием CCP1) от 0 до 100% с шагом 10%
  • PW2 - выход ШИМ (с использованием CCP2) от 0 до 100% с шагом 10%

Удаленный сбор данных - исходный файл - remote.asm

Удаленный режим (Rem) - набор команд, позволяющих управлять счетчиком с компьютера через последовательный интерфейс. Одна команда собирает данные, зарегистрированные в EEPROM в течение нескольких часов. Другая команда считывает напряжения на полной скорости АЦП в буфер памяти, затем передает буфер на ПК, где результаты могут отображаться графически. Фактически это осциллограф, работающий в диапазоне звуковых частот

Время - Исходный файл - time.asm

Тим - просто отображает время в формате чч: мм: сс и позволяет изменять с помощью 4 кнопок

Шаг 3: Описание схемы

Описание схемы
Описание схемы
Описание схемы
Описание схемы

Описание схемы

3.1 Базовая плата разработки

На рисунке 1 показана базовая плата разработки для запуска PICBIOS. Это очень стандартный и простой источник питания с регулируемым напряжением 5 В и разделительные конденсаторы C1, C2….

Часы представляют собой кристалл с частотой 4 МГц, так что TMR1 тикает с интервалом в 1 мкс. Конденсаторы C6, C7 емкостью 22 пФ рекомендованы Microchip, но, похоже, в них нет необходимости. Заголовок ICSP (внутрисхемное последовательное программирование) используется для первоначального программирования пустого PIC с помощью PICBIOS.

Последовательный порт (COM1) - обратите внимание, что TX и RX поменяны местами, то есть COM1-TX подключен к порту C-RX, а COM1-RX подключен к порту C-TX (обычно называемому «нуль-модемом»). Также уровни сигнала, необходимые для RS232, должны быть +12 В (пробел) и -12 В (отметка). Однако уровни напряжения 5 В (пробел) и 0 В (отметка) кажутся достаточными для всех компьютеров, которые я использовал. Таким образом, уровни сигналов RX и TX просто инвертируются линейным драйвером (Q3) и линейным приемником (Q2).

LM032LN (2-рядный 20-символьный) ЖК-дисплей использует стандартный «интерфейс HD44780». Программное обеспечение использует 4-битный полубайтовый режим и только запись, в котором используются 6 контактов порта D. Программное обеспечение может быть настроено на низкий полубайт (биты 0-3 порта D) или высокий полубайт (биты 4-7 порта D), как здесь используется..

Кнопочные переключатели обеспечивают четыре входа для выбора меню. Используйте нажатие для переключения, поскольку программное обеспечение обнаруживает спад. Подтягивающие резисторы (= 25 кОм) являются внутренними для ПОРТА B. Порт RB6 не может использоваться для коммутаторов из-за ограничения 1 нФ (что рекомендуется для ICSP). Нет необходимости в переключателе сброса?

button0

опции меню слева [◄]

button1

пункты меню справа [►]

button2

диапазон увеличения / значение / выбор [▲]

button3

уменьшить диапазон / значение / выбрать [▼]

3.2 Аналоговые входы и проверка компонентов - Плата 1

На рисунке 2 показана аналоговая схема PICMETER1. Аналоговые входы AN0 и AN1 используются для измерения напряжения общего назначения. Выберите номиналы резисторов для аттенюаторов, чтобы на входных контактах AN0 / AN1 подавалось 5 В.

Для входного диапазона 10 В m = 1 + R1 / R2 = 1 + 10k / 10k = 2.

Для входного диапазона 20 В m = 1 + (R3 + R22) / R4 = 1 + 30k / 10k = 4

AN2 используется для измерения температуры с использованием транзистора Q1 в качестве «грубого» датчика температуры. Температурный коэффициент NPN-транзистора при 20 ° C = -Vbe / (273 + 20) = -0,626 / 293 = -2,1 мВ / K. (см. измерение температуры в разделе «Аналоговый»). LM431 (U1) обеспечивает опорное напряжение 2,5 В на AN3. Наконец, AN4 используется для тестирования компонентов в секции аналоговых сигналов.

Для измерения компонентов тестовый компонент подключается к RE2 (D_OUT) и входу AN4. Резисторы от R14 до R18 обеспечивают пять различных значений сопротивления, используемых для измерения сопротивления (метод потенциометра) в аналоговой секции. Резисторы «подключаются в цепь» путем установки контактов порта C / порта E как вход или выход.

Meter1 выполняет измерение компонентов, заряжая различные комбинации известного / неизвестного конденсатора и резистора. LM311 (U2) используется для создания прерываний CCP1, когда конденсатор заряжается до верхнего порога (75% VDD) и разряжается до нижнего порога (25% VDD). Эти пороговые напряжения устанавливаются с помощью R8, R9, R11 и потенциометра R10, который дает небольшой корректирование. При тестировании конденсаторов конденсатор C13 (= 47 пФ) плюс паразитная емкость платы обеспечивают подстройку 100 пФ. Это гарантирует, что при удалении тестового компонента интервал между прерываниями CCP1 превысит 100 мксек и не приведет к перегрузке PIC. Это значение подстройки (100 пФ) вычитается из измерения компонента программным обеспечением. D3 (1N4148) обеспечивает путь разряда при тестировании катушек индуктивности и защищает D_OUT, предотвращая отрицательное напряжение.

λΩπμ

Шаг 4: Руководство по строительству

Руководство по строительству
Руководство по строительству
Руководство по строительству
Руководство по строительству

Руководство по строительству

Хорошо, что этот проект строится и тестируется поэтапно. Спланируйте свой проект. Для этих инструкций я предполагаю, что вы создаете PICMETER1, хотя процедура аналогична для PICMETER2 и 3.

4.1 Плата разработки

Вам необходимо собрать базовую отладочную плату (рисунок 1), которая должна поместиться на печатной плате стандартного размера 100 на 160 мм, спланировать компоновку так, чтобы она оставалась как можно более аккуратной. Очистите печатную плату и залудите всю медь, используйте надежные компоненты и разъемы, проверенные, где это возможно. Используйте 40-контактный разъем для PIC. Проверить целостность всех паяных соединений. Возможно, будет полезно посмотреть на мои фотографии макета платы выше.

Теперь у вас есть пустой PIC, и вам нужно запрограммировать PICBIOS во флэш-память. Если у вас уже есть метод программирования - отлично. Если нет, я рекомендую следующий метод, который я успешно использовал.

4.2 Программатор AN589

Это небольшая интерфейсная схема, которая позволяет программировать PIC с ПК, используя порт принтера (LPT1). Дизайн был первоначально опубликован Microchip в примечании к приложению. (ссылка 3). Приобретите или сделайте программатор, совместимый с AN589. Я использовал улучшенную конструкцию AN589, описанную здесь. Это ICSP - это означает, что вы вставляете PIC в 40-контактный разъем для его программирования. Затем подключите кабель принтера ко входу AN539, а кабель ICSP от AN589 к плате разработки. Моя конструкция программиста получает питание от платы разработки через кабель ICSP.

4.3 Настройки PICPGM

Теперь вам нужно какое-то программное обеспечение для программирования для работы на ПК. PICPGM работает с различными программаторами, включая AN589, и загружается бесплатно. (См. Ссылки).

В меню оборудования выберите Programmer AN589 на LPT1.

Устройство = PIC16F877 или 877A или автоопределение.

Выберите шестнадцатеричный файл: PICBIOS1. HEX

Выберите Erase PIC, затем Program PIC, затем Verify PIC. Если повезет, вы получите сообщение об успешном завершении.

Снимите кабель ICSP, Перезагрузите PIC, надеюсь, вы увидите дисплей PICBIOS на ЖК-дисплее, в противном случае проверьте свои соединения. Проверьте меню загрузки, нажав левую и правую кнопки.

4.4 Последовательное соединение (Hyperterminal или Putty)

Теперь проверьте последовательное соединение между PIC и ПК. Подключите последовательный кабель от компьютера COM1 к плате разработки и запустите программу связи, например, старый Win-XP Hyper-Terminal или PUTTY.

При использовании Hyperterminal настройте следующим образом. В главном меню выберите «Вызов»> «Отключиться». Затем Файл> Свойства> Подключиться к вкладке. Выберите Com1, затем нажмите кнопку «Настроить». Выберите 9600 бит / с, без четности, 8 бит, 1 ступень. Аппаратный контроль потока ». Затем «Вызов»> «Вызов» для подключения.

При использовании PuTTY, Connection> Serial> Connect to COM1, и 9600 бит / с, без четности, 8 бит, 1 остановка. Выберите «RTS / CTS». Затем Session> Serial> Open

В меню загрузки PICBIOS выберите «Командный режим», затем нажмите [inc] или [dec]. На экране должно появиться сообщение «PIC16F877>» (если нет, проверьте свой последовательный интерфейс). Нажмите ? чтобы увидеть список команд.

4.5 Программа PICMETER

После того, как последовательное соединение заработало, программирование флэш-памяти так же просто, как отправка шестнадцатеричного файла. Введите команду «P», которая отвечает «Отправить шестнадцатеричный файл…».

Используя гипер-терминал, выберите в меню «Передача»> «Отправить текстовый файл»> «PICMETER1. HEX»> «Открыть».

Прогресс обозначается знаком «:». поскольку программируется каждая строка шестнадцатеричного кода. Наконец загрузка успешна.

Если вы используете PuTTY, вам может потребоваться использовать Блокнот и скопировать / вставить все содержимое PICMETER1. HEX в PuTTY.

Аналогично для проверки введите команду «V». В гипер-терминале выберите меню «Передача»> «Отправить текстовый файл»> «PICMETER1. HEX»> «ОК».

Предупреждение = xx… Если вы запрограммируете микросхему 16F877A, вы получите несколько предупреждающих сообщений. Это связано с различиями между 877 и 877A, которые программируются блоками из 4 слов. К сожалению, компоновщик не выравнивает начало разделов по границам четырех слов. Простое решение - иметь 3 инструкции NOP в начале каждого раздела, поэтому просто игнорируйте предупреждения.

Перезагрузите компьютер и в меню загрузки BIOS выберите «Запустить приложение». Вы должны увидеть PICMETER1 на ЖК-дисплее.

4.6 Запуск PICMETER1

Теперь начните создавать дополнительные разделы платы разработки (рис. 2), чтобы функции вольтметра и измерителя компонентов работали должным образом.

Meter1 требует некоторой калибровки. В функции «Cal» отрегулируйте R10, чтобы получить показания примерно 80,00, 80,0 нФ и 10 000 мкФ. Затем прочтите небольшой 100 пФ на функции Cx1. Если показания отсутствуют, либо измените подстроечный колпачок C13, либо измените значение «trimc» в meter1.asm.

Теперь запустите PICBIOS Setup и измените несколько настроек калибровки в EEPROM. Откалибруйте температуру, отрегулировав 16-битное смещение (высокий, низкий формат). Вам также может потребоваться изменить значение «delayt».

Если вы намерены построить проект как есть - Поздравляем - вы закончили! Расскажите мне о своем успехе на Instructables.

4.7 MPLAB

Но если вы хотите внести изменения или развить проект дальше, вам необходимо пересобрать программное обеспечение с помощью MPLAB. Загрузите MPLAB с сайта Microchip. Это «старый», простой и понятный в использовании. Я не пробовал новый инструмент разработки labx, который выглядит намного сложнее.

Подробная информация о том, как создать новый проект, а затем добавить файлы в проект в полной документации.

Шаг 5: фотографии тестирования

Фотографии тестирования
Фотографии тестирования
Фотографии тестирования
Фотографии тестирования
Фотографии тестирования
Фотографии тестирования

Фотография выше термометра, показывающего 15 градусов Цельсия.

Частота тестирования, чтение = 416к

Испытательный индуктор с маркировкой 440uF, читает 435u

Тестирую резистор 100 кОм, читает 101 кОм, это несложно.

Тестирование конденсатора 1000 пФ, показание 1.021 нФ

Шаг 6. Ссылки и ссылки

6.1 Таблица данных PIC16F87XA, Microchip Inc.

ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

6.2 Спецификация программирования флэш-памяти PIC16F87XA, микрочип

ww1.microchip.com/downloads/en/devicedoc/39589b.pdf

6.3 Примечание по применению AN589, Microchip Inc.

ww1.microchip.com/downloads/en/appnotes/00589a.pdf

6.4 Загрузка PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 скачать бесплатно, Microchip

pic-microcontroller.com/mplab-ide-v8-92-free-download/

6.6 Паспорта модулей Hope RFM01-433 и RFM02-433, RF Solutions

www.rfsolutions.co.uk/radio-modules-c10/hope-rf-c238

6.7 LT Spice, Аналоговые устройства

www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html

6.8 Схема программатора pic на основе AN589, Best-Microcontroller-Projects

www.best-microcontroller-projects.com/pic-programmer-circuit.html

6.9 Файлы с открытым исходным кодом

Открытый исходный код

Рекомендуемые: