Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

Глава 1 1 . Аналоговый компаратор и АЦП 31 1 Мы все-таки будем рассматривать вариант ATmega8535 , как наиболее универсаль­ ный, но учтите, что созданная нами программа без изменений (кроме, возможно, наименования регистров) перенесется на АTmega8, АTmega 1 6 и ряд других мо­ делей . При выборе контроллера следует учесть еще и нюанс с опорным напряжением. У датчика ТМР36 выходной сигнал при О 0С равен 500 мВ и имеет крутизну 1 О мВ/0С (с достаточно большим разбросом, соответствующим ошибке примерно 2-3 °, т. е. датчик все равно необходимо калибровать) . Таким образом, в диапазоне от -40 до + 1 00 °С (ниже -40 °С датчик не работает, но не больно-то и хотелось) напряжение будет меняться от 0, 1 до 1 ,5 В, при О 0С оно будет равно -0, 5 В. Чтобы не терять в разрешении, нам удобно выбрать встроенный источник, напря­ жение которого у ATmega8 и ATmega8535 равно примерно 2,56 вольта. Тогда диа­ пазон датчика будет соответствовать изменению выходного кода в пределах от -40 до -600 с крутизной около 4 единиц кода на 1 °С и значением при О 0С примерно 200 . При таком выборе вы ограничены моделями АVR с таким же напряжением ИОН и не сможете без изменений перенести код на значительное число других мо­ делей, у которых напряжение ИОН равно 1 , 1 - 1 ,2 вольта (включая «ардуиновские» АТmеgа88/ 1 68/328) - там либо будет ограничен диапазон сверху (значением при­ мерно +60°), либо вы потеряете в разрешении вдвое, вынужденно переключив опорное напряжение на АVCC. ПОДРОБНОСТИ Если вам все-таки придется переносить нашу методику на контроллеры с напряжени­ ем ИОН , равным 1 , 1 -1 ,2 вольта , то проще взять внешний опорный источник с нужным напряжением . В качестве внешнего ИОН подойдут микромощные источники опорного напряжения REF1 91 или REF 1 92 (фирма Aпalog Devices) с номинальным напряжени­ ем 2 ,048 или 2 , 5 В соответственно. Источники очень точные (±2 мВ отклонения при изменениях питающего напряжения в пределах 3-1 5 вольт, в том же порядке цифры отклонения при изменении температуры) и потребляют всего 45 мкА даже без вклю­ чения имеющегося у них режима Sleep. Потому, хотя REF 1 92 в корпусе D I P-8 и отно­ сительно дорог (а REF1 91 в таком корпусе еще и трудно найти) , но так будет лучше, чем терять разрешение вдвое, подгоняя диапазон под 5-вольтовое Иret. В том числе такой прием может пригодиться и в Aгduiпo. На платах Uпо и Nапо есть вывод AREF, а в арсенале языка есть функция analogRe ference ( ) . Плохо там только то, что в самой подходящей для подобных конструкций плате Aгduiпo Mi п i почему-то AREF забыли вывести (хотя контактов платы хватает - там есть лишний Reset) . В од­ ном из своих проектов мне пришлось подпаиваться непосредственно к контактной площадке - выводу конденсатора, подключенного к AREF ATmega328, но это, согла­ ситесь, и неудобно, и ненадежно . Схема для такого применения АЦП в контроллере ATmega8535 приведена на рис . 1 1 .4 . От дребезга значений, которые получаются с АЦП, ни аппаратными методами, ни даже с помощью режима ADC Noise Reduction полностью не избавишься, потому придется усреднять значения за какой-то промежуток времени. Его надо выбирать достаточно тщательно - не слишком маленьким, чтобы уйти от дребезга по мак­ симуму, и не настолько большим, чтобы он превысил постоянную времени датчи-

RkJQdWJsaXNoZXIy MTExODQxMg==