Разработка цифрового датчика скорости

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


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1.1 Задание

1.2 Анализ поставленной задачи

1.3 Программа

1.4 Разработка и описание алгоритмов

Заключение

датчик порт импульс погрешность

Введение

Поставленная задача звучит таким образом: Программным способом реализовать датчик угловой скорости вращения электродвигателя.

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

На практике наиболее распространенной единицей измерения угловой скорости вращения вала двигателя ПДВ является внесистемная единица — число оборотов в минуту (об/мин). Поэтому на угловой скорости вращения двигателя где на выходе импульсного датчика будет генерировать последовательность импульсов с частотой f и периодом Т.

Расчет угловой скорости вращения двигателя ПДВ через частоту следования импульсов f сопряжен с расчетом числа импульсов за определенный интервал времени дельта t. Недостатком данного способа является то, что информация о скорости вращения двигателя выводится с задержкой на величину At. Кроме этого, изменение скорости вращения двигателя в течение времени счета дельта t приводит к снижению точности расчета скорости.

Аппаратное или программное измерение периода Следования импульсов выполняется по следующему алгоритму:

1) определяется момент времени начала импульса по фронту импульса;

2) с фиксированной дискретной выполняется опрос длительности периода Т до момента времени выполнения условия «окончание периода». При этом в счетчике фиксируется число опросов N за длительность Т;

3) по выражению осуществляется расчет угловой скорости вращения двигателя.

1.1. Задание

Задание 3: программным способом реализовать датчик угловой скорости вращения электродвигателя.

Данные варианта 3 приведены в таблице 1.

Таблица 1

,

об/мин

,

об/мин

,

об/мин

@1

@2

Ошибка, %

1000

500

50

B5

B6

1

1.2. Анализ поставленной задачи

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

Важным аспектом выполнения задачи является уменьшение погрешности, возникающей из-за наличия интервала опроса порта ввода. Для этого интервал опроса нужно выбрать минимально возможным при данной частоте микропроцессора, а программу как можно проще (для уменьшения количества тактов). Также можно увеличить число исследуемых периодов, то есть считать скорость по данным за несколько периодов, тогда скорость будет более усредненной точной. Еще можно использовать более мощный процессор, с большей тактовой частотой. Но я в своей работе уменьшу погрешность посредством уменьшения количества шестерней на вале, именно уменьшения, потому что погрешность возникает в начале и в конце положительного полупериода, из-за того, что опрос порта ввода происходит через некоторый интервал, то есть он не всегда попадает точно на начало или на конец положительного полупериода — чем больше импульсов, тем больше погрешность, чем меньше шестерней, тем меньше импульсов. Я выбрал именно этот способ, так как он самый недорогой.

Импульсы в порт В5 будут поступать на младший разряд, а старшие разряды необходимо заземлить. В дальнейшем под словами данные порта ввода будет пониматься младший бит байта.

Рассчитаем период опроса порта для заданных параметров и погрешности.

Так как максимальная погрешность имеется при максимальной скорости (при максимальной скорости больше импульсов), то необходимо расчет вести для максимальной скорости.

Найдем частоту импульсов при максимальной скорости:

(1),

где

— максимальная скорость двигателя в об/сек,

— минимальная скорость двигателя в об/сек,

— максимальная скорость двигателя в об/мин,

— минимальная скорость двигателя в об/мин,

— число импульсов на оборот импульсного датчика.

Определим минимально возможный период импульса:

. (2)

Длины положительных импульсов при этом будут равны:

. (3)

Найдем необходимый период опроса порта для заданного уровня ошибки:

. (4)

Для разработки алгоритма и программы необходимо знать количество тактов, через которое опрашивается порт. При расчете количества тактов принималось следующее значение тактовой частоты МП КР580ВМ80А — 2 МГц. Определим период одного такта для данного микропроцессора:

(5).

Рассчитаем число тактов, через которое должен производиться опрос порта ввода при заданной погрешности:

(6).

Таким образом, опрос порта, анализ полученных данных и сохранение результатов анализа нужно организовать за полученное число тактов. Это недостижимо при данных условиях, поэтому, как сказано выше, я собираюсь увеличить количества шестерней в вале, за это отвечает параметр. Итак, нужно, чтобы число тактов, через которое должен производиться опрос порта ввода,, было равно 32 (смотреть пункт 1. 2, программа).

(7), это составляет 16(мкс) или 0,16(c)

Подставляем это число в фомулу (4):

(8), при этом (9), (10).

Частота для — (11).

Теперь нужно подставить значение в формулу (1):

,

при этом (12), округлим это значение до целого числа в меньшую сторону, (13).

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

Пусть k — количество посчитанных импульсов за положительный полупериод, тогда

(14),

(15),

(16).

При расчетах скорости в оборотах в секунду необходимо работать с дробными числами, поэтому для большего удобства будем выводить скорость в оборотах в минуту.

(17).

Я считаю, что производить деление с помощью микропроцессора программным путем нецелесообразно, так как программа деления занимает большое адресное пространство и требует сравнительно большое время для выполнения. Поэтому вывод результата будет путем чтения ячеек памяти или в ПЗУ. Адрес читаемой ячейки будет определяться в зависимости от подсчитанных опросов порта ввода, и содержимое ячеек (скорость) будет посылаться в порт вывода. Скорость будет записана в десятичной форме, а так как максимальная скорость равна 1000 об/мин (4 разряда числа), то для отображения реальной скорости необходимо два порта вывода. Один из них будет хранить младшие два разряда, а другой — старшие два. Пусть дополнительным портом вывода будет порт B7.

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

(18),

(19),

(20),

(21),

(22).

Округлим значения, полученные в выражениях (21), (22) до целых, так как может быть только целое число опросов. Итак:

(23),

(24), где

— максимально возможное количество подсчитанных импульсов;

— минимально возможное количество подсчитанных импульсов.

До составления алгоритма необходимо распределить адресное пространство:

В5h — порт считывания данных с датчика скорости;

В6h, B7h- порты вывода количества импульсов сосчитанных микропроцессором за положительный полупериод;

0800h — 08FFh — программа;

0900h — 0AFFh — ячейки памяти, в которых находятся значения скорости;

регистровая пара HL — счетчик количества импульсов;

регистровая пара BC содержит разницу между адресами ячеек, в которых хранятся старшие разряды значений скорости и в которых хранятся младшие разряды скорости.

1.3 Программа

Таблица 2

Адрес

Метка

Ассемблер

Такты

Примечания

0800

MVI B, 00

7

1

0802

MVI C, 6E

7

0804

M3

MVI H, 09

7

2

3

0806

MVI L, 00

7

0808

M1

IN port B5

10

3

080A

CPI 00

7

4

080C

JZ M1

10

5

080F

M2

INX H

5

6

0811

IN port B5

10

7

0813

CPI 00

7

8

0815

JNZ M2

10

9

0818

MOV A, M

5

10

0819

OUT port B6

10

11

081B

DAD B

10

12

081C

MOV A, M

5

13

081D

OUT port B7

10

14

081F

JMP M3

10

15

Работа программы (таблица 2):

Задание значения регистровой пары BC для ее дальнейшего сложения с регистровой парой HL

задание начального значения счетчика импульсов (сосчитанных микропроцессором за положительный полупериод (регистровая пара HL).

Чтение порта В5. Данные с него поступают на аккумулятор.

Сравнение данных из порта с значением нулем. Если значение данных порта изменилось с 0 на 1, то признак Z принимает значение 0.

Проверка признака Z. Если признак Z равен 1, то порт B5 опрашивается заново. Если признак Z равен 0, то программа выходит из цикла и выполняется следующая команда.

Инкремент счетчика импульсов, сосчитанных микропроцессором за положительный полупериод.

Чтение порта В5.

Сравнение новых данных порта с 0. При равенстве данных из порта 1 устанавливается признак Z=0.

Проверка признака Z. Пока данные порта равны единице (Z=0), импульс еще не завершился и надо инкрементировать счетчик.

Запись в аккумулятор данных с ячейки, адрес которой указан в регистровой паре HL для их дальнейшего вывода.

Вывод данных в порт В6, это и будут старшие разряды значения скорости.

Двойное сложение регистровых пар HL и BC, это действие совершается для выведения младших разрядов скорости.

Запись в аккумулятор данных с ячейки, адрес которой указан в регистровой паре HL для их дальнейшего вывода.

Вывод данных в порт В7, это младшие разряды значения скорости.

Переход на начало программы.

Также нужно отметить, что дискрета в программе составила 10+7+10+5=32 такта.

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

Таблица 3

k, раз

Значения скорости, об. /мин.

Для старших разрядов

Для младших разрядов

Адрес

Содержимое

Адрес

Содержимое

100

1041

0964

10

0A32

41

101

1031

0965

10

0A33

31

102

1021

0966

10

0A34

21

103

1011

0967

10

0A35

11

104

1001

0968

10

0A36

01

105

992

0969

09

0A37

92

106

982

096A

09

0A38

82

107

973

096B

09

0A39

73

108

964

096C

09

0A3A

64

109

955

096D

09

0A3B

55

110

946

096E

09

0A3C

46

111

938

096F

09

0A3D

38

112

930

0970

09

0A3E

30

113

921

0971

09

0A3F

21

114

913

0972

09

0A40

13

115

905

0973

09

0A41

05

116

897

0974

08

0A42

97

117

890

0975

08

0A43

90

118

882

0976

08

0A44

82

119

875

0977

08

0A45

75

120

868

0978

08

0A46

68

121

860

0979

08

0A47

60

122

853

097A

08

0A48

53

123

846

097B

08

0A49

46

124

840

097C

08

0A4A

40

125

833

097D

08

0A4B

33

126

826

097E

08

0A4C

26

127

820

097F

08

0A4D

20

128

813

0980

08

0A4E

13

129

807

0981

08

0A4F

07

130

801

0982

08

0A50

01

131

795

0983

07

0A51

95

132

789

0984

07

0A52

89

133

783

0985

07

0A53

83

134

777

0986

07

0A54

77

135

771

0987

07

0A55

71

136

765

0988

07

0A56

65

137

760

0989

07

0A57

60

138

754

098A

07

0A58

54

139

749

098B

07

0A59

49

140

744

098C

07

0A5A

44

141

738

098D

07

0A5B

38

142

733

098E

07

0A5C

33

143

728

098F

07

0A5D

28

144

723

0990

07

0A5E

23

145

718

0991

07

0A5F

18

146

713

0992

07

0A60

13

147

708

0993

07

0A61

08

148

703

0994

07

0A62

03

149

699

0995

06

0A63

99

150

694

0996

06

0A64

94

151

689

0997

06

0A65

89

152

685

0998

06

0A66

85

153

680

0999

06

0A67

80

154

676

099A

06

0A68

76

155

672

099B

06

0A69

72

156

667

099C

06

0A6A

67

157

663

099D

06

0A6B

63

158

659

099E

06

0A6C

59

159

655

099F

06

0A6D

55

160

651

0A00

06

0A6E

51

161

646

0A01

06

0A6F

46

162

643

0A02

06

0A60

43

163

639

0A03

06

0A61

39

164

635

0A04

06

0A62

35

165

631

0A05

06

0A63

31

166

627

0A06

06

0A64

27

167

623

0A07

06

0A65

23

168

620

0A08

06

0A66

20

169

616

0A09

06

0A67

16

170

612

0A0A

06

0A68

12

171

609

0A0B

06

0A69

09

172

605

0A0C

06

0A6A

05

173

602

0A0D

06

0A6B

02

174

598

0A0E

05

0A6C

98

175

595

0A0F

05

0A6D

95

176

591

0A10

05

0A6E

91

177

588

0A11

05

0A6F

88

178

585

0A12

05

0A70

85

179

581

0A13

05

0A71

81

180

578

0A14

05

0A72

78

181

575

0A15

05

0A73

75

182

572

0A16

05

0A74

72

183

569

0A17

05

0A75

69

184

566

0A18

05

0A76

66

185

563

0A19

05

0A77

63

186

560

0A1A

05

0A78

60

187

557

0A1B

05

0A79

57

188

554

0A1C

05

0A7A

54

189

551

0A1D

05

0A7B

51

190

548

0A1E

05

0A7C

48

191

545

0A1F

05

0A7D

45

192

542

0A20

05

0A7E

42

193

539

0A21

05

0A7F

39

194

536

0A22

05

0A80

36

195

534

0A23

05

0A81

34

196

531

0A24

05

0A82

31

197

528

0A25

05

0A83

28

198

526

0A26

05

0A84

26

199

523

0A27

05

0A85

23

200

520

0A28

05

0A86

20

201

518

0A29

05

0A87

18

202

515

0A2A

05

0A88

15

203

513

0A2B

05

0A89

13

204

510

0A2C

05

0A8A

10

205

508

0A2D

05

0A8B

08

206

505

0A2E

05

0A8C

05

207

503

0A2F

05

0A8D

03

208

500

0A30

05

0A8E

00

209

498

0A31

04

0A8F

98

1.4 Разработка и описание алгоритмов

Алгоритм, представленный на рисунке 1, составлен так, чтобы счет во время запуска программы начинался не с времени запуска, а с первого положительного импульса. Иначе, при счете с момента запуска программы, если он не совпадет с началом положительного импульса, микропроцессор сосчитает меньшее количество опросов порта и в следствии этого обратится не к той ячейке. Это приведет к выводу ложного результата.

Таким образом алгоритм состоит из четырех частей: установка начальных условий, определение начала положительного импульса, определение длины импульса, вывод полученной информации.

Описание алгоритма:

Задание значения регистровой пары BC.

Задание значения регистровой пары HL.

Чтение порта В5.

Сравнение содержимого аккумулятора с нулем. Если значения равны, то программа возвращается к блоку 3; если не равны, то выполняется следующая команда.

Инкремент счетчика.

Чтение порта В5.

Сравнение содержимого аккумулятора с нулем. Если значения не равны, то программа возвращается к блоку 5; если не равны, то выполняется следующая команда.

Запись в аккумулятор данных с ячейки, адрес которой указан в регистровой паре HL и их вывод через порт B6.

Двойное сложение регистровых пар HL и BC.

Запись в аккумулятор данных с ячейки, адрес которой указан в регистровой паре HL и их вывод через порт B7. Далее программа зацикливается для постоянного вывода актуального значения скорости.

/

/

Заключение

Реализовать поставленную задачу невозможно, если не модернизировать аппаратное обеспечение. Таким образом, я спроектировал работу измерителя скорости с условием, что будет установлен вал с меньшим числом шестерней, это уменьшит количество импульсов на входе, увеличив при этом их протяженность, значит уменьшится погрешность, которая возникает на начале и в конце импульса, просто потому, что уменьшится количество этих проблемных участков. При этом возникла проблема вывода информации, ведь подсчеты длин импульсов нельзя назвать значениями скорости. Для того, чтобы вывести значение скорости в об. /мин., была составлена таблица, в которой указаны соответствия скоростей и ячеек памяти, то есть после того, как микропроцессор подсчитает количество опросов за положительный полупериод, он обратится к ячейке памяти, в которой указано значение скорости для данного количества опросов и выведет ее. Но тут возникает еще одна проблема, значения скорости по варианту колеблются от 500 до 1000, а вывести такое число один порт не может, поэтому я ввел дополнительный порт вывода B7, который будет выводить младшие разряды значений скорости.

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

1. www.

ПоказатьСвернуть
Заполнить форму текущей работой