Автоматичний фазометр

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

1. Вибір структури автоматичного фазометра

2. Розрахунок блоку живлення

3. Розробка алгоритму роботи програми

4. Опис алгоритму програми для МК

5. Програма для МК

6. Опис алгоритму програми для ПК

7. Програма для ПК

Висновки

Введення

Фазометр - електровимірювальні прилади, призначений для вимірювання кутів зсуву фаз між двома змінними періодично електричними коливаннями. Фазою гармонійної напруги

U (t) = U m sin t + φ 0)

називається аргумент функції U (t), яка описує коливальний процес. Фаза гармонійної напруги є лінійною функцією часу. Кут зсуву фаз являє собою модуль різниці фаз двох гармонійних сигналів U 1 (t) b U 2 (t) однакової частоти. Таким чином, якщо

U 1 (t) = U 1 m sin t + φ 1), a U 2 (t) = U 2 m sin t + φ 2),

то за визначенням кут зсуву фаз Δφ дорівнює Δφ = | φ 1 - φ 2 |. Якщо φ 1 і φ 2 постійні, то Δφ + від часу не залежить. При Δφ = 0 гармонійні напруги називаються синфазними, при Δφ = ± π - противофазно. Вибір методу вимірювання кута зрушення фаз залежить від діапазону частот, амплітуди сигналу і від необхідної точності вимірювання. Вимірювання кута зрушення фаз може виконуватися як методом безпосередньої оцінки, так і методом порівняння. Результат вимірювання виражається або в градусах, або в радіанах. Вимірювальні прилади, спеціально призначені для вимірювання кута зрушення фаз, називаються фазометра.

В основі роботи цифрових фазометрів всіх систем лежить принцип перетворення вимірюваного кута зсуву фаз в часовий інтервал, тривалість якого пропорційна значенням вимірюваної величини. Тривалість тимчасового інтервалу визначається при цьому методом дискретного рахунку безпосередньо, або з проміжним перетворенням тривалості тимчасового інтервалу в пропорційне йому значення величини напруги постійного струму.

Фазометри з безпосереднім перетворенням значення тривалості тимчасового інтервалу в код в свою чергу поділяються на дві групи: з вимірюванням за один період вхідних напруг і з вимірюванням за кілька періодів вхідних напруг. Фазометри першої групи називаються фазометра миттєвого значення, а другої групи - фазометра середнього значення. Фазометри середнього значення, звані також фазометра з постійною датою вимірювання, завдяки гарним характеристикам набули найбільшого поширення.

1. Вибір структури автоматичного фазометра

Для знаходження фази сигналу простіше всього вимірювати час між проходженням еталонного й вимірюваного сигналів через нуль t ±. При цьому знаючи частоту вимірюваного сигналу можна знайти його фазу виходячи з наступної формули:

(1),

де t ± - час між проходженням еталонного й вимірюваного сигналу через нуль, f - частота вимірюваного сигналу, множник 360 переводить безрозмірну величину в градуси.

Виходячи з того, що дані вимірювань слід передавати в комп'ютер через COM-порт, то фазометр буде містити мікроконтроллер, так як за допомогою нього найбільш просто реалізувати зв'язок з комп'ютером по інтерфейсу RS -232.

Також мікроконтроллер можна використовувати для вимірювання фази, так як майже кожен мікроконтроллер має інтегрований таймер-лічильник.

За завданням, а саме - максимальна частота сигналу f max = 100кГц і похибка вимірювання фази δ = 0.2% визначаємо мінімальний час вимірювання. Цей час знаходиться за формулою:

нс (2).

Для вимірювання такого часу мікроконтроллер повинен володіти такою ж або меншим часом циклу. При цьому він повинен мати частоту f = 50 · n МГц, де n - кількість тактів в машинному циклі мікроконтролера, тобто як мінімум 50 МГц. Мікроконтролери з такою частотою дуже дорогі і їх недоцільно використовувати для даної задачі. Тому для вимірювання фази слід використовувати окремий таймер і генератор прямокутних імпульсів з тактовою частотою 50 МГц або вище, при цьому вимоги до мікроконтролера спрощуються. У даному випадку мікроконтроллер, один раз за період повинен зчитувати дані з лічильника. Так як максимальна частота сигналу 100 кГц, то час зчитування не повинно перевищувати 10 мкс. До того ж контролер повинен підтримувати інтерфейс UART для зв'язку з комп'ютером. Згідно з цими вимогами вибираємо мікроконтролер фірми Atmel ATMega 48 з тактовою частотою 1МГц і часом циклу 1 мкс.

Структурна схема проектованого пристрою зображена на рис. 1

Рис. 1. Структурна схема фазометра

На систему визначення фази подається два сигнали. У момент проходження одного сигналу через нуль включається таймер. У цей інтервал часу таймер починає вважати такти генератора імпульсів. Коли другий сигнал досягне нульового значення - в ​​таймері буде зберігатися число, яке відповідає різниці фаз еталонного й вимірюваного сигналів, і відбудеться скидання таймера. Це число зчитується мікроконтролером і передається по інтерфейсу RS -232, через перетворювач рівнів у комп'ютер. У комп'ютері це число переводиться в градуси і відображається на екран.

Визначник фази виконує наступні функції:

  1. Як тільки вимірюваний сигнал змінює полярність, на виході цього встановлюється сигнал для запуску таймера.

  2. Таймер продовжує працювати поки інший сигнал не пройде через нуль.

За завданням необхідно виконати гальванічну розв'язку.

Функціональна схема цього вузла зображена нижче.

Рис.2. Функціональна схема системи визначення переходу через нуль

Робота системи визначення фази.

Вимірюване і еталонне напруга подається на вхід компараторів через обмежувачі напруги, який обрізає напруги великі деякої величини. Це зроблено через те, що максимальне значення напруги сигналу може досягати 100В, що виведе з ладу компаратори. На виході компаратора реалізована розв'язка на оптичних елементах.

Компаратори видають сигнал високого рівня, якщо відповідну напругу більше нуля і сигнал низького рівня - якщо менше нуля. На виході компараторів буде меандр. Далі ці сигнали надходять на вхід засувки C D-тригерів DD 2.1 і DD 2.2. За переднього фронту меандру на виході тригерів встановиться сигнал, який присутній на D - вході.

У момент приходу позитивного фронту на С-вхід тригера DD2.2 на його прямому виході встановиться логічний "0", і це призведе до встановлення на виході тригера DD 2.1 логічного "0" (так як вихід тригера DD 2.2 пов'язаний зі входом скидання тригера DD 2.1). На виході тригера DD 2.2 знову з'явиться сигнал високого рівня. Фактично за першим переднього фронту на засувці тригера DD 2.2 відбувається ініціалізація системи. Тепер вона готова до роботи. При парафії позитивного фронту на С-вхід тригера DD 2.1 на його виході встановиться "1", тому що на D-вході постійно присутня напруга живлення. Сигнали з виходів тригерів DD 2.1 і DD 2.2 надходять на входи мікросхеми 2И DD 3.1, і на її виході в проміжок часу між переходами вимірюваного і еталонного напруги через нуль буде сигнал логічної "1". Після того як напруга еталонного сигналу перейде з від'ємного значення в позитивне, то відбудеться процес ініціалізації і на виході системи знову з'явиться сигнал логічного "0". Таким чином, на виході системи присутня логічна одиниця в проміжок часу між переходами через 0 напруг вимірюваного і еталонного сигналів.

Рис.3. Тимчасові діаграми системи переходу через нуль

Обмежувач напруги, блок гальванічної розв'язки

Максимальне припустиме вхідна напруга компаратора не повинно перевищувати напруга джерела живлення (+5 В). Тому на вході компаратора включають резисторний дільник напруги. Схема включення компаратора вказана нижче.

Рис.4. Блок гальванічної розв'язки

Як компаратора вибираємо Philips NE 5682 N. Резистори R 1 і R 2 призначені для розподілу напруги сигналу. Їх співвідношення має бути таким, щоб при максимальній амплітуді вхідного сигналу (500В), напруга на прямому вході ОП не перевищувало 5В. Виходячи з цього

Так як вхідний опір ОУ становить сотні кілом, то опір R 2 можна взяти досить великим. Візьмемо R 2 = 10 кОм. Тоді R 1 = 990 кОм ≈ 1 МОм. Через опір R 3 заземлюється інверсний вхід ОП. Опір R 4 використовується як токозадающій елемент для оптопари. Його величину розраховують виходячи зі співвідношення:

,

де - Напруга логічної "1" на виході компаратора (5В),

- Напруга на відкритому світлодіоді (близько 1.5В),

- Номінальний струм світлодіода (30 мА).

Виходячи з цього

Ом.

Опис таймера

На даний час більшість таймерів інтегровані в мікроконтролери і є його невід'ємною периферією. Дискретні таймери розраховані на частоту роботи 50 МГц не випускаються. Тому в даній роботі буде реалізований на дискретних компонентах. Як генератор імпульсів використовуємо генератор фірми DS1065-60, з програмованою частотою (30 кГц .. 60 МГц). До виходу цього генератора під'єднав лічильник імпульсів. Коли на виході системи визначення фази встановиться високий рівень напруги, МК вважає число тактів з лічильника і визначить еквівалентну час різниці фаз еталонного й вимірюваного сигналів.

Визначимо розрядність лічильника для задоволення заданої точності. Похибка вимірювання фази 0.2%, отже максимальне число на виході лічильника повинно бути . Але враховуючи, що частота генератора не може бути встановлена ​​в точності в 500 разів більше ніж у вимірюваного сигналу, але може, відрізнятися максимум у 2 рази N = 1000. Розрядність лічильника тоді дорівнює . 10-бітові лічильники не випускаються, тому вибираємо 12-бітний лічильник NXP 74 HC 4040. Тоді N = 2 12 = 4096. Враховуючи, що мінімальна частота генератора дорівнює 30кГц, то мінімальна частота вимірюваного сигналу дорівнює . Тому фазу сигналів, частота яких менших 7.5 даний прилад виміряти не зможе.

Принцип вимірювання фази

Вимірювання фази ведеться в такій послідовності:

  1. Мікроконтролер за допомогою вбудованого таймера вимірює частоту сигналу;

  2. Якщо частота сигналу знаходитися в проміжку від 7.5 Гц до 15кГц (60МГц/4000), то МК записує в генератор імпульсів константу так, щоб його частота була в 4096 разів більше ніж частота сигналу (точніше в N разів, де N - максимально можливе число менше 4096);

Якщо частота сигналу більше 15кГц, то в генератор імпульсів записується константа так, щоб його частота дорівнювала 60МГц;

  1. Мікроконтролер зчитує значення фази;

  2. Мікроконтролер передає по каналу UART число відповідні фазі сигналу.

2. Розрахунок блоку живлення

У даній роботі використовуються мікросхеми з напругою живлення +5 В. Тому блок живлення також треба проектувати на 5В.

Розрахуємо споживання схеми. Струм споживання компараторів 40 мА. Генератор споживає 50 мА, лічильник 50 мА, тригер (Texas Instruments SN 7474 - 20 мА, інвертор (ST Microelectronics HCF 4069) - 10 мА, мікросхема 2І-НЕ - 4 мА, мікроконтроллер (ATMega 48) - 20 мА, перетворювач рівнів (MAX 232) - 10 мА. Тобто сумарна навантаження на блок живлення дорівнює 154 мА. Будемо розраховувати на струм 200 мА. Споживана потужність всіх елементів плати трохи більше 1 Вт. Блок живлення на основі некерованого мостового випрямляча із знижуючим трансформатором. Для отримання стабільної напруги використовуємо інтегральний стабілізатор LM 7805. Вибираємо стандартний трансформатор типу ТПП - ТПП234-127/220-50 (струм вторинних обмоток 200 мА, номінальна потужність - 10Вт, напруга вторинних обмоток 10В).

Кожен діод випрямляча повинен витримувати зворотне напруга і прямий струм

мА

Згідно з цим в якості діодів мостового випрямляча був обраний діодний міст B 40 S (I пр = 1А, U обр = 40В). При стандартному підключенні стабілізатора LM 7805 на його вході і виході слід включити конденсатори номіналом 20 мкФ марки К50-6.

3. Розробка алгоритму роботи програми

Розглянемо алгоритм вимірювання фази і частоти сигналу.

Частота буде вимірюватися за допомогою сигналу з виходу підсилювача на транзисторі VT 2. Цей сигнал буде приєднаний до входу зовнішнього переривання INT 0. Мікроконтролер буде налаштований так, щоб переривання викликалося коли на цьому висновку буде сигнал низького рівня. Перед вимірюванням частоти сигналу у змінній FRQ заноситься нуль, дозволяється переривання INT 0 (у регістр маски EIMSK відправляється 1). Коли на цьому вході буде сигнал низького рівня то переривання буде викликатися і збільшувати значення регістра DPTR на 1. Підрахуємо скільки циклів займає одне виконання підпрограми переривання. Один цикл займає виклик переривання, два цикли інкремент регістра і ще два - вихід з підпрограми переривання. З урахуванням, того що час циклу МК становить 1 мкс, то підпрограма обробки переривання займає 5мкс. Так можна вимірювати відрізки часу від 5мкс (200 кГц) .. 5мкс · 65536 (3Гц). З урахуванням того, що вимірюється тільки час половини періоду (негативний напівперіод сигналу) діапазон вимірюваних частот буде складати 100 кГц. При цьому значення FRQ буде прямо пропорційно періоду сигналу. Перерахунок в частоту буде здійснюватися за формулою:

,

де N - вміст FRQ. Виходячи з цього частоті 15 кГц відповідає число 6.

Сигнал з допомогою якого визначається фаза приєднаний до входу зовнішнього переривання INT 1. Різниця фаз прямопропорційна сигналу низького рівня. Підпрограма обробки цього переривання буде мати наступний вигляд:

Fase:

Inc DPTR

NOP

NOP

NOP

NOP

NOP

reti

Ця підпрограма виконується 10 мкс. Збільшення часу виконання цієї підпрограми викликано тим, що сигнал фази може мати максимальну тривалість рівну періоду сигналу (а не половині як при вимірювання частоти), що може призвести до переповнення регістру DPTR у разі якщо підпрограма займає 5 мкс. Тому час виконання цієї підпрограми збільшено вдвічі.

Розглянемо алгоритм знаходження константи перерахунку для завантаження в генератор.

Якщо частота сигналу більше 15 кГц (N <7), то в 9-розрядний регістр MUX генератора, за допомогою якого визначається режим роботи програмного дільника частоти, завантажується число 000110010В. При занесенні в регістр MUX даного числа частота генератора буде дорівнює 60 МГц.

Якщо частота сигналу менше 15 кГц (N> 6), то в 9-розрядний регістр MUX генератора, за допомогою якого визначається режим роботи програмного дільника частоти, завантажується число 000110100В. При занесенні в регістр MUX даного числа частота генератора буде дорівнює (60 / (N D +2)) МГц, де N D - число завантажувати в 9-розрядний регістр-дільник. Так як необхідно отримувати частоту генератора рівну

і виходячи з довідкової документації частота генератора має залежність від константи перерахунку:

,

то маємо систему виходячи з якої знайдемо залежність

N D (N): (1).

З урахуванням того, що обчислення за формулою (1) константи N D буде виконуватися з похибкою, то слід збільшити її значення на 1, для того щоб частота генератора гарантовано була меншою від кількості , І не відбулося переповнення лічильника. Тоді

(2).

Порахуємо при якому N у формулі (2) N D буде невід'ємним

Тобто фактично формулу (2) для перерахунку можна застосовувати для частот при яких N> 6. Так як максимальне значення програмного дільника складає 513 (2 9 +2), то мінімальна частота генератора при якій можна застосовувати цей алгоритм розподілу частоти складає

кГц.

При цьому з формули (2)

,

а частота сигналу дорівнює

Гц.

Для отримання більш низької частоти потрібно змінити значення регістра MUX генератора на таке значення 000111000В. Тоді частота на виході генератора буде менше ніж частота резонатора генератора (60 МГц) в 2 · (N D +2) рази. Тоді рівняння, з якого обчислюється константа N D, зміниться, і буде мати вигляд

Тому значення N D згідно з формулою (2) потрібно поділити на 2 і додати 1. Тоді

(3)

При цьому константа N D, обчислена за формулою (3) програмується в генератор при частоті сигналу в діапазоні Гц, що відповідає значенню N = 3496 .. 6977 = 0 DA 8 h .. 1 B 41 h.

При частотах сигналу в діапазоні f c = 7.5 .. 14.3 Гц в регістр MUX генератора програмується таке значення 000110000В. Тоді частота на виході генератора буде менше ніж частота резонатора генератора (60 МГц) в 4 · (N D +2) рази. Тому значення N D згідно з формулою (2) потрібно поділити на 4 і додати 1. Тоді

що відповідає значенню N = 6978 .. 13954 = 1 B 42 h .. 3682 h.

Розрахуємо, яке число потрібно завантажити в регістр TH 1 для налаштування послідовного інтерфейсу на швидкість 4800 бод / с. Частота передачі даних розраховується за формулою:

.

З цієї формули знаходимо константу яку потрібно завантажити в TH 1.

Так як число 243 округлялася знайдемо фактичну швидкість передачі даних.

бод / с

Похибка складає 0.15%. Така похибка швидкості не викликає помилок при передачі даних.

4. Опис алгоритму програми для МК

Мікроконтролер повинен здійснювати такі дії:

  1. початкову настройку своїх вузлів і периферійних пристроїв;

  2. прийом параметрів вимірювання фази від комп'ютера;

  3. вимірювання частоти сигналу;

  4. вибір режиму вимірювання фази;

  5. видача інформації про частоту і фазі комп'ютера.

Відповідно до цього МК буде працювати за алгоритмом вказаною на рис.5.

Рис.5. Блок-схема алгоритму програми для МК

5. Програма для МК

6. Опис алгоритму програми для ПК

Програма, яка буде виконуватися ПК повинна здійснити наступні дії:

  1. визначити у користувача параметри вимірювання фази;

  2. ініціювати початок роботи фазометра;

  3. вважати повідомлення про справності фазометра;

  4. у разі якщо він справний послати повідомлення про параметри вимірювання фази;

  5. рахувати числа відповідні фазі і частоті;

  6. перетворити частоту в герци, а фазу в радіани і зберегти;

  7. в кінці вимірювання вивести на екран середнє значення фази і частоти;

  8. повторити всі починаючи з пункту 1.

Рис.6. . Блок-схема алгоритму програми для ПК

7. Програма для ПК

uses crt;

var i, k, z, contr, l, ms: Byte;

Base: word;

Value: byte;

t: Boolean;

fase, freaquency: integer;

fase_r, freaquency_r, divider: real;

data: array [1 .. 100,1 .. 2] of real absolute $ 6B00: $ 0000;

Procedure OpenCom (Base: word; Baudrate: word; Config: byte);

begin

while Port [Base +5] and $ 60 <> $ 60 do;

Port [Base +3]: = $ 80;

Port [Base +1]: = BaudRate shr 8;

Port [Base +0]: = BaudRate and $ FF;

Port [Base +3]: = Config;

Port [Base +4]: = 0;

Port [Base +1]: = 0;

end;

Procedure send_char (Base: word; Value: byte);

begin

while ((Port [Base +5] and $ 20) = 0) do;

Port [Base]: = Byte (Value);

end;

Function get_char (Base: word): Boolean;

var status: word;

begin

Status: = Port [Base + 5];

if ((Status and $ 1E) <> 0) or ((Status and 1) = 0) then get_char: = False

else

begin

Value: = Port [Base];

contr: = contr + Value;

get_char: = True;

end;

end;

begin

z: = 1;

while (z = 1) do

begin

clrscr;

contr: = 0;

writeln ('Progam measure of fase');

writeln;

writeln ('Input count measures');

Readln (i);

writeln;

writeln ('Input time of measurements');

Readln (l);

Base: = MemW [$ 40:2]; {COM2}

OpenCom (Base, 24,3 + 0 + 0); {4800,8-bit, 1 stop-bit, no control error}

send_char (Base, 0); {start}

if (get_char (BASE) = TRUE) then k: = Value; {meassage about working of device}

k: = k and 1;

if (k = 0) then

begin

send_char (Base, i); {number of measurements}

send_char (Base, l); {time of measurement}

for k: = 1 to i do

begin

if (get_char (BASE) = TRUE) then k: = Value; {higer byte of freaquency}

freaquency: = k * 256;

if (get_char (BASE) = TRUE) then k: = Value; {lower byte of freaquency}

freaquency: = freaquency + k;

freaquency_r: = 10e5/freaquency; {convertion in Hz}

if (get_char (BASE) = TRUE) then k: = Value; {higer byte of fase}

fase: = k * 256;

if (get_char (BASE) = TRUE) then k: = Value; {lower byte of fase}

fase: = fase + k;

if (freaquency <7) then {60MHz}

begin

divider: = 1;

end;

if (freaquency> 6) and (freaquency <$ 0E00) then {60/Nd +2}

begin

divider: = (75 * freaquency) / 512 +1;

end;

if (freaquency> $ 0DFF) and (freaquency <$ 1C00) then {30/Nd +2}

begin

divider: = (75 * freaquency) / 1024 +2;

end;

if (freaquency> $ 1BFF) and (freaquency <$ 3700) then {15/Nd +2}

begin

divider: = (75 * freaquency) / 2048 +2;

end;

if (freaquency <$ 3700) then fase_r: = 360 * (freaquency_r * divider/6e7) {convertion}

else {fase measured MK}

begin

fase_r: = 360 * ((2 * fase) / freaquency);

end;

data [k] [1]: = freaquency_r;

data [k] [2]: = fase_r;

end;

if (get_char (BASE) = TRUE) then

begin

if (Value <> contr) then {control}

begin

z: = 0;

writeln ('Error COM port');

end

else

begin

l: = 0;

while l = 0 do

begin

clrscr;

writeln ('Input number of measurements');

Readln (ms);

if (ms> 100) then l: = 1

else writeln ('f =', data [ms, 1], 'fase =', data [ms, 2]);

ReadKey;

end;

freaquency_r: = 0;

fase_r: = 0;

for k: = 1 to i do {medium measurements}

begin

freaquency_r: = freaquency_r + data [k, 1];

fase_r: = fase_r + data [k, 2];

end;

freaquency_r: = freaquency_r / i;

fase_r: = fase_r / i;

Writeln ('Medium f =', freaquency_r, 'fase =', fase_r, 'o');

end;

end;

end

else

begin

clrscr;

writeln ('Error COM port');

z: = 0;

end;

end;

end.

Висновки

У даній роботі був спроектований автоматичний фазометр. Основною складністю при його проектування був вибір компонентою бази, так як даний фазометр повинен вимірювати фазу у сигналу з частотою 100кГц з точністю 0.2%. Це еквівалентно виміру тимчасових інтервалів тривалістю 20нс. Інтегральних таймерів на таку частоту знайдено не було. Через що таймер був спроектований на базі трьох 4-розрядних лічильників і генератора з програмованою частотою. Для вимірювання фази сигналу спочатку вимірюється його частота з допомогою мікроконтролера, а потім генератор програмується на частоту в 2 12 разів більшу, ніж частота сигналу. При активному рівні з виходу системи переходу напружень через нуль, лічильник вважає імпульси генератора, а потім мікроконтроллер зчитує їх і передає комп'ютера, де константи відповідні частоті і фазі перетворюються на герци і градуси і показуються оператору за його запитом.


Додати в блог або на сайт

Цей текст може містити помилки.

Комунікації, зв'язок, цифрові прилади і радіоелектроніка | Курсова
79.8кб. | скачати


Схожі роботи:
Система ПЕОМ IBM PCAT автоматичний фазометр
Автоматичний ливарний конвеєр
Автоматичний потенціометр з кулачковим механізмом
© Усі права захищені
написати до нас