Съдържание:

PIC16F877 Мултицет: 6 стъпки
PIC16F877 Мултицет: 6 стъпки

Видео: PIC16F877 Мултицет: 6 стъпки

Видео: PIC16F877 Мултицет: 6 стъпки
Видео: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Юли
Anonim
PIC16F877 Мултицет
PIC16F877 Мултицет

PICMETER Въведение

Този проект PICMETER се превърна в полезен и надежден инструмент за всеки ентусиаст на електрониката.

  • Работи на микроконтролер PIC16F877 / 877A.
  • Това е система за развитие на PIC
  • Това е 19-функционален мултиметър (волтметър, честотомер, генератор на сигнали, термометър …)
  • Това е компонент за проверка (R, L, C, диод …) с до 5 диапазона за всяка функция.
  • Той разполага с 433MHz честотно ASK радио, което очаква някакво приложение.
  • Това е система за дистанционно събиране, където друг компютър (компютър) може да събира данни през серийния порт за графично показване. (Използвана е като преден край на ЕКГ проект).
  • Той има средство за регистриране (за регистриране на данни в продължение на часове), резултатите се качват от EEPROM.
  • Той произвежда тестови сигнали за задвижване на някои двигатели.
  • Той е старателно тестван, вижте снимките в Стъпка 5.
  • Софтуерът е пуснат като Open Source

Тази инструкция е съкратена версия на пълната документация. Той описва хардуера и софтуера, достатъчен за другите да го изградят или като завършен проект, или да го използват като система за разработка, за да направят допълнителни промени, или просто да търсят идеи, които да използват за други проекти.

Консумативи

Единственият критичен чип за закупуване е Microchip PIC16F877A-I/P

  • A = по -късната ревизия, която се различава от оригинала по дефиниция на конфигурационни битове.
  • I = Индустриален температурен диапазон
  • P = 40-оловен пластмасов двоен вграден пакет, 10 MHz, нормални граници на VDD.

Също така Hitachi LM032LN 20 символа по 2 реда LCD, който има вграден HD44780 контролер.

Другите части са само общи електрически компоненти, печатна платка, LM340, LM311, LM431, транзистори с ниска мощност и др.

Стъпка 1: Описание на PICBIOS

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

Описание на PICBIOS

Този софтуер работи на платка PIC16F877 и заема долните 4k памет на програмата. Той осигурява софтуерната среда за приложна програма, заемаща горната половина на програмната памет. По идея е подобен на PC-BIOS с няколко команди за „отстраняване на грешки“за разработка на програми и има 5 компонента:

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

Стъпка 2: Описание на PICMETER

PICMETER Описание
PICMETER Описание

PICMETER Описание

Въведение

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

Менюто е „сърцето“, където функциите се избират с помощта на бутоните [вляво] и [вдясно]. След това за всяка функция се избират различни диапазони чрез бутоните [inc] и [dec]. Например кондензаторите се измерват от около 0.1nF до 9000uF посредством 5 отделни диапазона.

2.1 Софтуер PICMETER

Това е организирано като приложна програма, която заема горните 4k от програмната памет и разчита на функциите на PICBIOS за входно/изходни устройства и обработка на прекъсвания. Състои се от менюто, което се изпълнява като фонова задача и извиква бутоните на всеки 20 ms. Когато се натисне бутон за промяна на функция или промяна на обхвата, се извиква съответната рутина. Когато не се натискат бутони, измереното отчитане се актуализира на интервали от около 0,5 сек. По принцип менюто е таблица за търсене.

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

Има много функции, така че тази част е разделена на секции, всяка от които се занимава с функции от подобен характер. Това е кратък списък на разделите, вижте Пълната документация, за да видите как работи всеки раздел в детайли. Поради ограничения на порта, има 3 варианта на проекта (вижте Пълната документация). Функциите с нормален шрифт са общи за всички проекти. Функциите UNDERLINED са включени само в проекта PICMETER1. Функциите в ITALICS са включени само в проекти PICMETER2 или PICMETER3.

Секция VoltMeter - Изходният файл е vmeter.asm

Съдържащи функции, които се основават на измерване на напрежение с помощта на ADC.

  • ADC напрежение (отчита напрежението на избрания вход, AN0 до AN4)
  • AD2 Dual (показва едновременно напрежение на AN0 и AN1)
  • TMP термометър -10 до 80? degC (2N3904 или двоен преобразувател LM334)
  • LOG - задава интервал на регистриране
  • OHM - Измерване на съпротивлението (метод на потенциометъра) от 0Ω до 39MΩ в 4 диапазона
  • DIO-Диод, измерва напрежение напред (0-2.5V)
  • CON - Непрекъснатост (звуков сигнал, когато съпротивлението е по -малко от прага от 25, 50 или 100)

Component Meter1 - Изходният файл е meter1.asm

Измерване на кондензатор, индуктор и резистор с помощта на сравнителна верига LM311. Въз основа на измерване на времето на един цикъл на зареждане.

  • CAL - калибриране - измерва фиксирани 80nf и 10μF за самотестване и настройка
  • Cx1 - измерване на кондензатор от 0,1nF до 9000μF в 5 диапазона
  • Lx1 - измерване на индуктора от 1mH до ?? mH в 2 диапазона
  • Rx1 - измерване на резистора от 100Ω до 99MΩ в 3 диапазона

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

Измерване на компоненти с помощта на алтернативен релаксационен осцилатор LM311 и осцилатор на Колпитс. Въз основа на измерване на периода от време на N цикъла. Това е малко по -точно от горния метод, тъй като се измерва времето на N = до 1000 цикъла. Това е по -скоро хардуерно решение и изисква повече конструкция.

  • Cx2 - измерване на кондензатор от 10pF до 1000 μF в 5 диапазона.
  • Rx2 - измерване на резистора от 100 ома до 99M в 5 диапазона.
  • Lx2 - измерване на индуктора от 1mH до 60mH в 1 диапазон.
  • osc - измерване на индуктор (метод на Colpitts) от 70μH до 5000μH? в 2 диапазона.

Честотен измервател - изходен файл Fmeter.asm

Съдържащи функции, които използват PIC броячи и таймери, и малко други;

  • FREQ - Честотен метър от 0Hz до 1000kHz в 3 диапазона
  • XTL - измерва честотата на кристалите LP (не е тествано)
  • SIG - генератор на сигнали от 10Hz до 5KHz в 10 стъпки
  • SMR - стъпков двигател - обратна посока
  • SMF- стъпков двигател- посока напред.

Комуникации - Изходният файл е comms.asm

Функции за предаване/приемане на сигнал за тестване на серийни и SPI периферни устройства;

  • UTX тест сериен TX & inc и намаляване на битрейт от 0.6 до 9.6k
  • URX тест сериен RX & inc и намаляване на битрейт от 0.6 до 9.6k
  • SPM - тества SPI в главен режим
  • SPS - тества SPI в режим slave

Радиомодул FSK - Изходният файл е Radio.asm

Функции, използващи модули за приемане и предаване на радио RM01 и RM02. Тези модули се свързват чрез SPI, който използва повечето от изводите на порт C.

  • RMB - задайте BAUD скорост на радиомодула
  • RMF - задава радиочестотен модул на радиомодула
  • RMC - задава тактова честота на радиомодула
  • XLC - регулира натоварването на капацитета на кристала
  • POW - задава мощност на предавателя
  • RM2 - предаване на тестови данни (модул RM02)
  • RM1 - получаване на тестови данни (модул RM01)

Контролен модул - Изходен файл control.asm

  • SV1 - Серво изход (използвайки CCP1) от 1ms до 2ms на стъпки от 0.1ms
  • SV2 - Серво изход (използвайки CCP2) от 1ms до 2ms на стъпки от 0.1ms
  • PW1 - ШИМ изход (използвайки CCP1) от 0 до 100% на стъпки от 10%
  • PW2 - PWM изход (използвайки CCP2) от 0 до 100% на стъпки от 10%

Отдалечено събиране на данни - Изходният файл е remote.asm

Дистанционен режим (Rem) - набор от команди, така че глюкомерът да може да се управлява от компютър чрез сериен интерфейс. Една команда събира данни, регистрирани в EEPROM за период от часове. Друга команда чете напрежения с пълна скорост на ADC в буфера на паметта, след което предава буфера на компютър, където резултатите могат да се показват графично. Всъщност това е осцилоскоп, работещ в аудио честотен диапазон

Time - Изходният файл е time.asm

Tim - просто показва времето във hh: mm: ss формат и позволява промяна с помощта на 4 бутона

Стъпка 3: Описание на веригата

Описание на веригата
Описание на веригата
Описание на веригата
Описание на веригата

Описание на веригата

3.1 Основен съвет за развитие

Фигура 1 показва основна платка за разработка, за да стартирате PICBIOS. Това е много стандартен и ясен, 5V регулиран източник на захранване и отделящи кондензатори, C1, C2….

Часовникът е 4 MHz кристал, така че TMR1 тиктака на интервали от 1us. 22pF кондензаторите C6, C7 се препоръчват от Microchip, но изглежда не са действително необходими. Заглавката на ICSP (програмиране във верига-серийно) се използва за първоначално програмиране на празен PIC с PICBIOS.

Серийният порт (COM1)- бележка TX и RX се разменят, т.е. COM1-TX е свързан към порт C-RX, а COM1-RX е свързан към порт C-TX (обикновено наричан „нулев модем“). Също така нивата на сигнала, необходими за RS232, наистина трябва да бъдат +12V (интервал) и -12V (знак). Нивата на напрежение от 5V (пространство) и 0V (маркировка) изглеждат подходящи за всички компютри, които съм използвал. Така че нивата на сигнала на RX и TX са просто инвертирани от линейния драйвер (Q3) и линейния приемник (Q2).

LM032LN (2-ред 20-знаков) LCD използва стандартния „HD44780 интерфейс“. Софтуерът използва 4-битов режим на гризане и само запис, който използва 6 пина на порт D. Софтуерът може да бъде конфигуриран за ниско гриване (порт D битове 0-3) или високо за гризане (порт D битове 4-7), както се използва тук.

Превключвателите с бутони осигуряват четири входа за избор на меню. Използвайте бутон за превключване, тъй като софтуерът открива падащия ръб. Издърпващите резистори (= 25k) са вътрешни към PORT B. Порт RB6 не може да се използва за превключватели поради капачката 1nF (която се препоръчва за ICSP). Няма нужда от превключвател за нулиране?

бутон0

опции от менюто вляво [◄]

бутон 1

опции от менюто надясно [►]

бутон 2

диапазон на увеличение/стойност/изберете [▲]

бутон 3

диапазон на намаляване/стойност/изберете [▼]

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

Фигура 2 показва аналоговата схема за PICMETER1. Аналоговите входове AN0 и AN1 се използват за измерване на напрежение с общо предназначение. Изберете стойностите на резистора за атенюаторите, за да дадете 5V на входните щифтове AN0/AN1.

За 10V входен обхват, m = 1 + R1/R2 = 1 + 10k/10k = 2

За 20V входен обхват, m = 1 + (R3 + R22)/R4 = 1 + 30k/10k = 4

AN2 се използва за измерване на температурата, като се използва транзистор Q1 като "суров" температурен преобразувател. Температурен коефициент на NPN транзистор при 20 celcuis = -Vbe/(273+20) = -0.626/293 = -2.1 mV/K. (вижте измерване на температурата в аналоговия раздел). LM431 (U1) осигурява справка за напрежение от 2.5V на AN3. Накрая AN4 се използва за или тестване на компоненти в аналоговия раздел.

За измерване на компонент, тестовият компонент е свързан към входа RE2 (D_OUT) и AN4. Резисторите R14 до R18 осигуряват пет различни стойности на съпротивление, използвани за измерване на съпротивлението (метод на потенциометъра) в секция Аналог. Резисторите са „свързани във верига“чрез задаване на изводите Port C/Port E като вход или изход.

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

λΩπμ

Стъпка 4: Ръководство за строителството

Строително ръководство
Строително ръководство
Строително ръководство
Строително ръководство

Строително ръководство

Хубавото е, че този проект се изгражда и тества на етапи. Планирайте своя проект. За тези инструкции предполагам, че изграждате PICMETER1, въпреки че процедурата е подобна за PICMETER2 и 3.

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

Трябва да изградите основната платка за разработка (Фигура 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 на LCD, в противен случай проверете връзките си. Проверете менюто за зареждане, като натиснете левия и десния бутон.

4.4 Серийна връзка (хипертерминална или замазка)

Сега проверете серийната връзка между PIC и компютър. Свържете серийния кабел от компютър COM1 към платката за разработка и стартирайте комуникационна програма, като стария Win-XP Hyper-Terminal или PUTTY.

Ако използвате Hyperterminal, конфигурирайте както следва. От главното меню извикайте> Прекъснете връзката. След това Файл> Свойства> Свързване към раздела. Изберете Com1, след което щракнете върху бутона Конфигуриране. Изберете 9600 bps, без паритет, 8 бита, 1 стоп. Хардуерен контрол на потока”. След това Обадете се> Обадете се, за да се свържете.

Ако използвате PuTTY, Connection> Serial> Connect to COM1 и 9600 bps, без паритет, 8 бита, 1 стоп. Изберете „RTS/CTS“. След това Session> Serial> Open

В менюто за зареждане на PICBIOS изберете “Command Mode”, след това натиснете [inc] или [dec]. На екрана трябва да се появи съобщение „PIC16F877>“(ако не проверите серийния интерфейс). Натиснете ? за да видите списък с команди.

4.5 ПРОГРАМЕН ПИКМЕТЪР

След като серийната връзка работи, програмирането на флаш памет е толкова просто, колкото изпращането на шестнадесетичен файл. Въведете команда „P“, която отговаря с „Изпращане на шестнадесетичен файл …“.

Използвайки хипертерминал, от менюто Прехвърляне> Изпращане на текстов файл> PICMETER1. HEX> Отваряне.

Напредъкът се обозначава с „:“. тъй като всеки ред от шестнадесетичен код е програмиран. Накрая заредете успеха.

Ако използвате PuTTY, може да се наложи да използвате Notepad и да копирате/поставите цялото съдържание на PICMETER1. HEX в PuTTY.

По същия начин, за да проверите, въведете команда „V“. В хипертерминала от менюто Прехвърляне> Изпращане на текстов файл> PICMETER1. HEX> OK.

Предупреждение = xx … Ако програмирате чип 16F877A, ще получите някои предупредителни съобщения. Това е свързано с разликите между 877 и 877A, които програмират в блокове от 4 думи. За съжаление линкерът не подравнява началото на разделите върху граници от 4 думи. Простото решение е да имате 3 NOP инструкции в началото на всеки раздел, така че просто игнорирайте предупрежденията.

Рестартирайте и в менюто за зареждане на BIOS изберете „Стартиране на приложение“. Трябва да видите PICMETER1 на LCD дисплея.

4.6 Стартирайте PICMETER1

Сега започнете да изграждате още секции от дъската за разработка (Фигура 2), за да накарате волтметъра, функцията за измерване на компоненти да работи според нуждите.

Meter1 се нуждае от калибриране. При функцията „Cal“, регулирайте R10, за да дадете показания от 80.00, 80.0nF и 10.000uF прибл. След това прочетете малка функция от 100pF на Cx1. Ако показанията са отпаднали, или сменете капачката за подстригване C13, или променете стойността на „trimc“в meter1.asm.

Сега стартирайте PICBIOS Setup и променете няколко настройки за калибриране в EEPROM. Калибрирайте температурата, като регулирате 16-битовото отместване (висок, нисък формат). Може също да се наложи да промените стойността на „delayt“.

Ако намерението ви е да изградите проекта такъв, какъвто е - Поздравления - приключихте! Разкажете ми за вашия успех в Instructables.

4.7 MPLAB

Но ако искате да направите промени или да развиете проекта по-нататък, трябва да възстановите софтуера с помощта на MPLAB. Изтеглете MPLAB от Microchip. Това е „старият“, който е прост и ясен за използване. Не съм опитвал новия инструмент за разработка на labx, който изглежда далеч по -сложен.

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

Стъпка 5: Снимки от тестването

Снимки от тестването
Снимки от тестването
Снимки от тестването
Снимки от тестването
Снимки от тестването
Снимки от тестването

Снимка по -горе на термометър, показание 15 degC

Честота на тестване, четене = 416k

Тестващ индуктор с маркировка 440uF, отчита 435u

Тестване на 100k резистор, чете 101k, това е лесно.

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

Стъпка 6: Препратки и връзки

6.1 PIC16F87XA Информационен лист, Microchip Inc.

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

6.2 Спецификация за програмиране на флаш памет PIC16F87XA, Microchip

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 решения

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 Схема за програмиране на картина, базирана на AN589, Best-Microcontroller-Projects

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

6.9 Файлове с отворен код

отворен код

Препоръчано: