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

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

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

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

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

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