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

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    20,6 Кб
  • Опубликовано:
    2012-11-05
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Содержание

Введение

.1 Задание

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

.3 Программа

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

Заключение

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

Введение

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

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

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

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

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

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

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

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

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,000016(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- порты вывода количества импульсов сосчитанных микропроцессором за положительный полупериод;

h - 08FFh - программа;

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

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

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

.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

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

 

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.  

Похожие работы на - Разработка цифрового датчика скорости

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!