Переключение мультиплексоров с одного терморезистора на другой должно происходить одновременно. Так как напряжение, снимаемое с каждого из резисторов R1-R4 определяется как UA4-UA5, то неодновременное переключение мультиплексоров может привести к неточности измерения.
Управляющие входы мультиплексора подключены через выводы цифровых портов ввода/вывода P0.2-P0.4. Регистр POOUT – 8-миразрядный и предназначен для вывода информации на внешний выход. Устанавливая определенный код в POOUT – транслируем его на PO.0-PO.7. Первоначально в регистре POOUT содержится код: 00100000, который и передается на выводы PO.0-PO.7. Таким образом, после каждого АЦ преобразования в регистр POOUT заносится определенный код, который транслируется на соответствующие выводы. 3 вывода подключены к мультиплексорам и таким образом осуществляется управление переключением каналов через мультиплексоры.
Изначально выводы портов настроены так:
PO.0 |
PO.1 |
PO.2 |
PO.3 |
PO.4 |
PO.5 |
PO.6 |
PO.7 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
чтобы снимать напряжение с R1.
Переключение мультиплексоров происходит по прерыванию от АЦП.
После того как АЦП завершит первое преобразование напряжения, активируется процедура обработчика прерываний, устанавливается флаг ADIFG, который информирует остальную систему о том, что преобразование завершено.
Эта процедура содержит следующее:
1) происходит переключение источника генератора тока с А0 на А1;
В регистр POOUT заносим код: 00101000
выводы цифровых портов перестраиваются:
PO.0 |
PO.1 |
PO.2 |
PO.3 |
PO.4 |
PO.5 |
PO.6 |
PO.7 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
таким образом, происходит переключение мультиплексора на R2.
Это маскируемое прерывание,
Механизм обработки маскируемого прерывания при условии:
§ Программный счетчик, который указывает на следующую команду, заносится в стек (SP);
§ Статусный регистр заносится в стек по текущему указателю стека;
§ Сбрасывается флаг запроса прерываний от АЦП;
§ Запрещаются все прерывания установкой GIE в «0». Флаги N, C, Z – сбрасываются в «0». Биты CPUOFF, OSCOFF, SCG1 сбрасываются в «0».
§ Содержимое вектора прерывания, соответствующего данному событию записывается в программный счетчик (РС).
После обработки прерывания происходит восстановление состояния статусных регистров из стека, программного счетчика и осуществляется возврат к режиму энергопотребления, который был до прерывания – это обеспечивается за счет того, что биты управления, помещаются в стек и восстанавливаются из него после прерывания.
Код на выходе АЦП это еще не напряжение, которое было измерено на R, это количество ступенек поместившихся в диапазон входного напряжения. Чтобы получить значение напряжения умножим этот код на значение ступеньки, то есть ∆U.
Это значение записывается в регистр ADAT, и там хранится до того момента, пока не произошло следующего преобразования. Значение напряжения из регистра ADAT делится на значение тока (генератора тока), с целью получить сопротивление. Далее для получения температуры необходимо решить следующее уравнение:
где: α – квадратичный коэффициент <<1;
β - ∆R, определенное для каждого типа терморезистора (в данном случае 0.4 Ом/◦С);
γ – значение сопротивления при t=0◦С.
Решая уравнение найдем:
Выбираем положительный корень, и именно это значение будет отображаться на индикаторе. Таким образом, проделав данное преобразование, получаем значение температуры.
После того, как произошло измерение напряжения на R2 и его соответствующее преобразование, АЦП вызывает прерывание, по которому происходит:
1. изменение источника генератора тока:
2. В регистр POOUT заносим код: 00110000
выводы цифровых портов перестраиваются:
PO.0 |
PO.1 |
PO.2 |
PO.3 |
PO.4 |
PO.5 |
PO.6 |
PO.7 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
3. выполняется процедура обработки маскируемого прерывания описанная выше;
После того, как произошло измерение напряжения на R3 и его соответствующее преобразование, АЦП вызывает прерывание, по которому происходит:
4. изменение источника генератора тока:
5. В регистр POOUT заносим код:00111000
выводы цифровых портов перестраиваются:
PO.0 |
PO.1 |
PO.2 |
PO.3 |
PO.4 |
PO.5 |
PO.6 |
PO.7 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
6. выполняется процедура обработки маскируемого прерывания описанная выше;
таким образом, происходит последовательное измерение напряжений с терморезисторов R1-R4.
После завершения этого цикла происходит безусловный переход на начало, то есть:
PO.0 |
PO.1 |
PO.2 |
PO.3 |
PO.4 |
PO.5 |
PO.6 |
PO.7 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
По условию задан диапазон значений температуры 0º…150ºС. При таком изменении температур сопротивление терморезисторов будет изменяться в пределах 60 Ом, что вызывает изменение напряжения на 0.276В, что вполне приемлемо.
В данной работе разработан 4-канальный измеритель температуры. Измерения производится постоянно до выключения питания MSP430.
СПЕЦИФИКАЦИЯ
Позиционное обозначение |
Наименование |
Количество |
ZQ1 Rext DD1 DA1,DA2 HL1 |
PK-169 32768 C2-29C 160 Ом MSP430P325 ADG604 LCD T18077 |
1 1 1 2 1 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.