Легкое программирование 8-битного микроконтроллера с помощью простой формулы для вычисления шестнадцатеричного выходного значения АЦП.
Данная идея конструкции предназначена для недорогих, 8-выводных 8-битных микроконтроллеров с Flash-памятью, таких как MC68HC908QT4A компании Freescale, но может быть использована в любом другом 8-битном микроконтроллере, работающем с АЦП. Внутри АЦП, величина входного аналогового напряжения преобразуется в цифровой формат. Цифровой формат имеет 8-битное шестнадцатеричное значение, например $00. Микроконтроллер «видит» уровень входного аналогового напряжения от порта своего АЦП в диапазоне от $00 при VSS до $FF при VDD. Опираясь на этот интервал получаем всего 256 отсчетов. Входное напряжение в диапазоне от VSS до VDD подвергается прямому линейному преобразованию. Другими словами, чем выше входное напряжение, тем больше соответствующее шестнадцатеричное значение.
Трудность состоит в том, что программист, которому надо написать ассемблерный код, для программирования алгоритма должен знать например, какое шестнадцатеричное значение соответствует уровню 1,6 В дифференциального входного аналогового напряжения. Обращение к документации микроконтроллера или к производителю часто не дает удовлетворительного ответа.
Однако, данная идея конструкции представляет решение этой проблемы. Используя заданное напряжение источника питания микроконтроллера, VDD и следующую простую формулу можно получить шестнадцатеричное значение соответствующее заданному входному аналоговому напряжению: искомая величина = шестнадцатеричный код = VIN/(VDD/255), см. Editors note. Для получения большей точности необходимо округлить полученную величину до преобразования в шестнадцатеричный код. В следующем примере вычисления приведен расчет шестнадцатеричного кода для входного аналогового напряжения 1,6 В при использовании известного напряжения питания микроконтроллера 5 В: 1,6V/(5V/255) = 81,6 = 82, или $ 52.