Разработка измерителя токов

Автор работы: Пользователь скрыл имя, 16 Мая 2012 в 11:01, курсовая работа

Краткое описание

ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ



Разработать микропроцессорную систему измерения токов в системе электропривода. Структура системы изображена на рис. 1.1.


Рис 1.1. Структурная схема измерителя тока



Датчики напряжения обеспечивают гальваническую развязку электрических цепей и преобразуют токовые сигналы в напряжение. Микроконтроллер опрашивает датчики, оцифровывает сигналы и хранит массив последних отсчетов в памяти.

Содержание

ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ
3

ВВЕДЕНИЕ
4

1. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ
5

2. РАЗРАБОТКА АЛГОРИТМА
6

2.1. Алгоритм расчёта времени задержки
6

3. РАЗРАБОТКА ПРОГРАММЫ
8

4. ОТЛАДКА ПРОГРАММЫ
10

5. РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ
12

ЗАКЛЮЧЕНИЕ
13

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
14

Вложенные файлы: 1 файл

Пояснительная записка.doc

— 884.50 Кб (Скачать файл)


2

 

Министерство образования РФ

Вологодский Государственный технический

университет

 

 

 

 

 

 

 

 

 

 

Курсовой проект

«Разработка измерителя токов»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вологда

2002


СОДЕРЖАНИЕ

 

 

ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ

3

ВВЕДЕНИЕ

4

1. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ

5

2. РАЗРАБОТКА АЛГОРИТМА

6

2.1. Алгоритм расчёта времени задержки

6

3. РАЗРАБОТКА ПРОГРАММЫ

8

4. ОТЛАДКА ПРОГРАММЫ

10

5. РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ

12

ЗАКЛЮЧЕНИЕ

13

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

14


ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ

 

Разработать микропроцессорную систему измерения токов в системе электропривода. Структура системы изображена на рис. 1.1.

Рис 1.1. Структурная схема измерителя тока

 

Датчики напряжения обеспечивают гальваническую развязку электрических цепей и преобразуют токовые сигналы в напряжение. Микроконтроллер опрашивает датчики, оцифровывает сигналы и хранит массив последних отсчетов в памяти. Датчик измеряет мгновенное значение силы тока со знаком.

Количество датчиков, характер сигналов, интервал опроса и разрядность измерений заданы в таблице 1.1.

Таблица 1.1.

Количество датчиков, характер сигналов, интервал опроса и разрядность измерений

Характер

Максимальная величина входного тока (А)

Максимальное выходное напряжение (В)

Количество датчиков

Разрядность (бит)

Интервал опроса (мс)

AC

250

10

3

10

1

•              АС – измерение переменного тока 50 Гц.


ВВЕДЕНИЕ

 

Датчики тока обеспечивают гальваническую развязку электрических цепей и преобразуют токовые сигналы в напряжение. Современные датчики, решающие эти задачи, строятся обычно с использованием эффекта Холла. Выходным сигналом датчика тока может являться напряжение или ток. В последнем случае его преобразуют в напряжение, подключая к датчику тока сопротивление нагрузки. Изменяя сопротивление нагрузки можно изменить коэффициент преобразования датчика.

Выберем датчик тока – ДИТ 250.

Основными параметрами датчика являются:

максимальный входной ток – 250 А;

             максимальное выходное напряжение – 10 В;

             погрешность измерения – 5 %;

             максимальная частота – 20 кГц.

Обработку данных выполним на основе микроконтроллера ATmega 163 фирмы ATMEL семейства AVR.

AVR-микроконтроллеры фирмы ATMEL - это 8-разрядные RISC микроконтроллеры для встраиваемых приложений. Они привлекают внимание разработчиков наилучшим соотношением показателей быстродействие/энергопотребление, удобными режимами программирования, доступностью программно-аппаратных средств поддержки и широкой номенклатурой выпускаемых кристаллов.


1. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ

 

В системе, согласно технического задания, использовано 3 датчика тока. Выходным сигналом датчика является напряжение. Датчик измеряет мгновенное значение силы тока и преобразует его в напряжение прямопропорциональное входному току. ADC микроконтроллера при отрицательных значениях напряжения определяет только его знак.

Будем производить опрос датчиков с интервалом в 1мс и хранить в памяти массив из 20 последних мгновенных значений силы тока с каждого датчика.

В системе будут задействованы следующие элементы:

o        3 датчика тока – ДИТ 250;

o        постоянные резисторы для деления напряжения;

o        микроконтроллер Atmega 163:

      ADC;

      Timer/Counter0;

      Watchdog Timer;

      SRAM;

      Регистры общего назначения.


2. РАЗРАБОТКА АЛГОРИТМА.

 

Сначала произведём инициализацию микроконтроллера ATmega 163. Для этого подключим файл с его описанием “m163def.inc”.

Определим символические описания регистров. В регистре n, будет хранится номер канала ADC, с которого считываются данные, temp – временный регистр.

Очистим регистр n, т.е. зададим считывание данных с ADC0. Регистр temp будем использовать, как временный.

Зададим адрес начала памяти SRAM для записи данных в регистр r30=$60. В памяти будем хранить последние 20 измерений тока в амперах с каждого датчика. Всего 60 записей по 2 байта. Верхний байт – байт знака, нижний – данные. Данные сохраняются в область памяти с адресами $60 - $D9 последовательно с каждого датчика.

Задание деления тактовой частоты на 256. Для этого запишем в регистр TCCR0 значение $4.

Глобальное запрещение прерываний. Для этого запишем в бит 7 регистра SREG значение 0.

Begin:

Запуск таймера. Начинаем счёт с $0. TCNT0=$0.

Сравнить значение n c 1,2,3.

Если n=0, то данные считываются с ADC0. ADMUX=$E0.

Если n=1, то данные считываются с ADC1. ADMUX=$E1.

Если n=2, то данные считываются с ADC2. ADMUX=$E2.

Разрешение работы ADC. Для этого установим бит ADEN регистра ADCSR.

Запуск преобразования ADC. Для этого установим бит ADSC регистра ADCSR. Ждём пока данные не преобразуются, т.е. не установится бит ADIF. После этого программно очистим этот бит. На принципиальной электрической схеме показаны резисторы R1-R8, сопротивление которых подобрано таким образом, что на выходе ADC будет действительное значение силы тока. После преобразования цифровой код мгновенного значения силы тока сохраняется в регистрах ADCL:ADCH. Бит 7 регистра ADCH – бит знака.

Копирование в регистр r26 содержимое ADCL. Копирование в регистр r27 содержимое ADCH.

Сравниваем регистр r26 c 250. Если больше, то значение тока положительно, следовательно нужно вычесть из r26:r27 число 250. Если меньше, то запись $80 в r27 (байт знака), вычетание r26 из 250 с помощью вспомогательного регистра r16 и размещение результата в r26.

Сначала записывается значение тока, потом знак. Запись результата в память начиная с адреса $60.

Инкрементируем номер канала n. Если получаем значение равное трём, то обнуляем его, т.е. снова считываем данные с ADC0.

Сброс сторожевого таймера.

Ждём конца временной задержки и переходим к метке begin.

 

2.1. Алгоритм расчёта времени задержки.

 

Тактовая частота микроконтроллера: МГц.

Зададим коэффициент деления предделителя – 256.

Для этого запишем в регистр TCCR0 значение b100.

Тогда частота Гц.

Время одного такта c

Время задержки  , где k- число до которого надо считать.

.

Будем програмно проверять значение регистра TCNT0 и при установке в него значения $4 запускаем программу снова, считывая данные со следующего канала ADC, значение которого хранится в регистре n.


3. РАЗРАБОТКА ПРОГРАММЫ.

 

 

.nolist

.include "m163def.inc" ; Подключение описания ATmega163

.list

.dseg

.def n=r16 ; Для хранения номера канала ADC

; n = 0 - данные считываются с ADC0

; n = 1 - данные считываются с ADC1

; n = 2 - данные считываются с ADC2

.def temp=r17 ; Временный регистр

.cseg

.org $0

jmp reset

.org $24

reset:

clr n ; Очистка регистра n

ldi r30,$60 ; Задание адреса начала памяти SRAM для записи данных

ldi temp,$4 ; Задание деления тактовой частоты на 256

out tccr0,temp

ldi temp,$0; Глобальное запрещение прерываний

out sreg,temp;

begin:

;**************************

;*     Запуск таймера     *

;**************************

ldi temp,$0 ; Начинаем счёт с $0

out tcnt0,temp

cpi n,$0 ; Сравнение n c $0

breq ADC0; Перейти на метку ADC0, если равно

cpi n,$1 ; Сравнение n c $1

breq ADC1; Перейти на метку ADC1, если равно

cpi n,$2 ; Сравнение n c $2

breq ADC2; Перейти на метку ADC2, если равно

ADC0:

ldi temp,$E0

out ADMUX,temp ; Данные считываются с ADC0

jmp metka1 ; Перейти на метку metka1

ADC1:

ldi temp,$E1

out ADMUX,temp ; Данные считываются с ADC1

jmp metka1 ; Перейти на метку metka1

ADC2:

ldi temp,$E2

out ADMUX,temp ; Данные считываются с ADC2

metka1:

sbi ADCSR,ADEN ; Разрешение работы ADC

;**************************

;*   Преобразование ADC   *

;**************************

sbi ADCSR,ADSC ; Запуск преобразования ADC

ADC:

sbis ADCSR,ADIF; Пропустить, если закончилось преобразование ADC

jmp ADC

cbi ADCSR,ADIF ; Очистка бита прерывания ADC

in r26,ADCL ; Копирование в регистр r26 содержимое ADCL

in r27,ADCH ; Копирование в регистр r26 содержимое ADCH

cpi r26,250 ; Сравнить r26 с 250

brsh bolshe

ldi r27,$80 ; Запись $80 в r27

jmp dalee

bolshe:

sbiw r26,50 ; Вычесть 50 из r26 

sbiw r26,50 ; Вычесть 50 из r26

sbiw r26,50 ; Вычесть 50 из r26

sbiw r26,50 ; Вычесть 50 из r26

sbiw r26,50 ; Вычесть 50 из r26

dalee:

;**************************

;*    Запись в память     *

;**************************

st Z+,r26 ; Запись значения тока в память

st Z+,r27 ; Запись знака в память

cpi r30,$D9 ; Сравнить адрес памяти с максимальным значением

brne metka5 ; Перейти, если не равно

ldi r30,$60 ; Запись адреса начала памяти SRAM для записи данных

metka5:

inc n ; Инкремент номера канала ADC

cpi n,$3 ; Сравнить n с максимальным значение

brne metka6 ; Перейти, если не равно

ldi n,$0 ; Запись $0 в n

wdr ; Сброс сторожевого таймера

metka6:

in temp,tcnt0; Запись значения счётчика в регистр temp

cpi temp,$4; Сравнить текущее значение таймера и максимальное

brsh metka7; Перейти, если больше или равно

jmp metka6;

metka7:

jmp begin

 

4. ОТЛАДКА ПРОГРАММЫ.

 

Предположим, что значение измеряемого тока равно -246А. Датчик тока выдаст напряжение В. Делителями напряжение оно разделится на 16, т.е на выходе будет -0.615 В.К этому напряжению прибавим значение 0.625 В, тогда на вход ADC подастся напряжени 0.01В и результате на выходе ADC будет код $4.

В память мы будем записывать значение тока со знаком.

Значения регистров ADCL:ADCH запишем в регистры r26:r27. Т.к. r26:r27 меньше 250 (значение тока отрицательно) проделаем следующие операции:

Информация о работе Разработка измерителя токов