|
|
|
|||||||
| Уголок радиолюбителя Форумы любителей электроники. См. также Железнодорожная связь, Электронная аппаратура ЖАТ |
![]() |
![]() |
|
|
|
|
|
Опции темы | Поиск в этой теме |
|
|
#1 (ссылка) |
|
V.I.P.
Регистрация: 14.05.2015
Сообщений: 255
Поблагодарил: 0 раз(а)
Поблагодарили 8 раз(а)
Фотоальбомы:
не добавлял
Репутация: 0
|
Тема: [07-2015] Микроконтроллеры MSP430. Измеритель RCМикроконтроллеры MSP430. Измеритель RC С. СОКОЛ, г. Мариуполь, Украина Автор продолжает цикл статей о микроконтроллерах MSP430. Он считает, что читатели знакомы со всеми предыдущими статьями цикла [1—6] и имеют достаточно знаний, а за прошедшее время смогли обзавестись и некоторыми умениями. Поэтому, не останавливаясь слишком подробно на особенностях текстов программ, он дал больше информации о прикладном применении отладочной платы MSP-EXP430G2 LaunchPad. В предлагаемой статье будет рассмотрен ещё один модуль микроконтроллера MSP430G2553, о котором в предыдущих статьях речь не шла. Это аналоговый компаратор Comparator_A+. Вот его особенности: 1. Мультиплексоры на инвертирующем и неинвертирующем входах компаратора позволяют подключать эти входы как к внешним выводам микроконтроллера, так и к внутренним источникам образцового напряжения. 2. RC-фильтр на выходе компаратора, подключаемый программно, уменьшает колебания выходного сигнала при близких значениях напряжения на инвертирующем и неинвертирующем входах. 3. Выход компаратора можно подключить к входу захвата Таймера А. Эта возможность очень полезна при использовании компаратора для измерения напряжения, о чём будет рассказано ниже. 4. Можно настроить модуль компаратора на генерацию запросов прерывания либо по нарастающим, либо по спадающим перепадам выходного сигнала. Эти особенности дают возможность использовать модуль компаратора для выполнения точных аналого-цифровых преобразований методом прямого интегрирования, контроля напряжения питания и приёма внешних аналоговых сигналов. Задача, которую предстоит решить в этой статье, формулируется так: Реализовать на базе отладочной платы MSP-EXP430G2 LaunchPad, используя модули Comparator_A+ и Таймер А микроконтроллера, измеритель постоянной времени RC-цепи. Измеренное значение передавать в компьютер через COM-порт для вычисления неизвестного сопротивления или ёмкости. Производить вычисления и выводить их результаты на экран должна специально разработанная компьютерная программа. Для начала рассмотрим регистры управления модулем компаратора Comparator_A+, которые будут использованы в программе микроконтроллера. Их всего три. Регистр CAPD позволяет отключить входные и выходные цифровые буферы от тех выводов микроконтроллера, которые используются для ввода аналоговых сигналов. Это позволяет уменьшить общий ток, потребляемый микроконтроллером. Разряды этого регистра имеют названия CAPDx, где х — цифра от 0 до 7. Запись единиц в эти разряды отключает буферы выводов микроконтроллера, связанных с входами САО— СА7 компаратора. Соответствие между этими входами и физическими выводами приведено в описаниях конкретных микроконтроллеров. Регистр CACTL1 — первый регистр настройки модуля компаратора. Его разряд 7 (САЕХ) позволяет поменять местами входы компаратора, при этом выходной сигнал инвертируется. Разряд 6 (CARSEL) указывает, на какой из входов подано образцовое напряжение от внутреннего источника. При одинаковых значениях разрядов САЕХ и CARSEL образцовое напряжение поступает на неинвертирующий вход, а при разных — на инвертирующий вход. Разряды 5 и 4 (CAREF1 и CAREF0) задают значение образцового напряжения: CAREF1=0 и CAREF0=0 — генератор образцового напряжения выключен; CAREF1=0 и CAREF0=1 — четверть напряжения питания; CAREF1=1 и CAREF0=0 — половина напряжения питания; CAREF1 = 1 hCAREF0=1 — около 0,5 В. Разряд 3 (CAON) включает (CAON=1) или выключает (CAON=0) компаратор. Генератор образцового напряжения включается и выключается независимо от компаратора. Разряд 2 (CAIES) задаёт перепад уровня на выходе компаратора, при котором генерируется запрос прерывания: CAIES=0 — нарастающий, CAIES=1 — спадающий. Разряд 1 (CAIE) разрешает (СА1Е=1) или запрещает (СА1Е=0) запросы прерывания от компаратора. Разряд 0 (CAIFG) — флаг запроса прерывания от компаратора. Снимается автоматически с началом обработки прерывания или может быть снят программно. Регистр CACTL2 — второй регистр настройки модуля компаратора. Его разряд 7 (CASHORT) используют для соединения между собой входов компаратора: CASHORT=1 — входы соединены, CASHORT = 0 — входы не соединены. Разряды 6 и 2 (Р2СА4 и Р2СА0) задают подключение неинвертирующего (при САЕХ=0) или инвертирующего (при САЕХ=1) входа согласно табл. 1. ![]() Разряды 5, 4, 3 (Р2САЗ, Р2СА2, Р2СА1) задают подключение инвертирующего (при САЕХ=0) или неинвертирующего (при САЕХ=1) входа согласно табл. 2. Соответствие между физическими выводами микроконтроллера и входами САх указано в документации на конкретные микроконтроллеры. ![]() Разряд 1 (CAF) включает (CAF=1) или выключает (CAF=0) выходной фильтр компаратора. Разряд 0 (CAOUT) отображает состояние выхода компаратора. Запись в этот разряд не имеет смысла и игнорируется. Для измерения постоянной времени интегрирующей цепи R1C1 подключим её к микроконтроллеру, как показано на рис. 1. На выходе Р2.0 будем программно постоянно поддерживать низкий логический уровень. Применённое подключение обусловлено исключительно близостью выводов Р1.4, Р1.5 и Р2.0 как на корпусе микроконтроллера, так и на разъёме платы LaunchPad. В принципе, вместо вывода Р2.0 нужно было бы использовать общий провод. В начальный момент времени на выводе Р1.5 устанавливают напряжение высокого логического уровня, в результате чего конденсатор С1 начинает заряжаться через резистор R1. Через некоторое время (около 1,5 с) считают, что конденсатор полностью заряжен до напряжения питания микроконтроллера, и на выходе Р1.5 устанавливают напряжение низкого уровня. Конденсатор С1 начинает разряжаться через резистор R1. Таймер А начинает отсчёт длительности разрядки. Напряжение с конденсатора С1 поступает на вывод Р1.4, который в рассматриваемом случае служит неинвертирующим входом СА4 компаратора. На инвертирующий вход компаратора подано образцовое напряжение, равное четверти напряжения питания. Когда напряжение на конденсаторе достигает образцового, уровень на выходе компаратора становится низким, что приводит к срабатыванию блока захвата/ сравнения 1 Таймера А. Определив продолжительность разрядки конденсатора, программа вычисляет постоянную времени R1C1. Конденсатор разряжается по экспоненте ![]() В данном случае t — продолжительность разрядки конденсатора С1 от полного напряжения питания до его четверти. Зная постоянную времени и один из параметров RC-цепи (сопротивление или ёмкость), можно определить другой параметр. Для измерения неизвестной ёмкости конденсатора С1 необходимо использовать резистор R1 известного с возможно большей точностью сопротивления. Соответственно для измерения сопротивления резистора R1 необходим конденсатор С1 известной ёмкости. Поскольку на зарядку конденсатора отведено около 1,5 с, необходимо выбирать конденсатор и резистор так, чтобы постоянная времени не превышала 0,5 с. ![]() Теперь рассмотрим реализующую описанный алгоритм программу (табл. 3). Она сравнительно невелика. Подробно останавливаться на всех выполняемых её действиях не будем, поскольку читатели уже знакомы с большинством используемых конструкций. Остановимся только на работе ![]() Строки 51—53 настраивают модуль компаратора. Отключают цифровой буфер от входа СА4, переключают входы компаратора (теперь СА4 — неинвертирующий вход), включают внутренний источник образцового напряжения 0,251)пи1, включают компаратор и разрешают генерацию запроса прерывания по спадающему перепаду на его выходе, а также включают выходной фильтр. Цикл измерения запускает компьютерная программа, посылая байт 0x00 на вход RXD модуля UART микроконтроллера. После приёма этого байта строка 9 программы микроконтроллера устанавливает на выходе Р1.5 высокий уровень, а строка 10 выдерживает паузу длительностью около 1,5 с, после чего строка 11 устанавливает на выходе Р1.5 низкий уровень. Далее строка 12 обнуляет счётчик таймера А, строка 13 снимает флаг прерывания по переполнению счётчика, а строка 14 — флаг захвата. В строке 15 обнуляется переменная time, в которой будет подсчитываться время разрядки. В строках 16—23 реализован цикл ожидания события захвата Таймера А, которое происходит при спадающем перепаде уровня на выходе компаратора. Внутри этого цикла периодически проверяется флаг TAIFG, устанавиваемый при переполнении Таймера А. Поскольку таймер работает с тактовой частотой 1 МГц, то в течение разрядки конденсатора он может переполниться несколько раз. Каждое переполнение увеличивает переменную time на 65536 единиц (строки 18—22). ![]() Когда захват произошёл, строка 24 добавляет к переменной time содержимое счётного регистра таймера А. Затем строка 25 вычисляет постоянную времени по приведённой ранее формуле. Поскольку в используемом микроконтроллере отсутствует аппаратная возможность работать с дробными числами, операция деления на 1,386 заменена умножением на 1000 и последующим делением на 1386. Затем переменная time, имеющая тип unsigned long длиной 4 байта, разбивается на отдельные байты, которые в строках 26—31 модуль UART поочерёдно передаёт в компьютер. Компьютерная программа RC-meter собирает принятые четыре байта в 32-разрядное слово, вычисляет значение ёмкости или сопротивления и выводит его на экран. Для проверки программы был собран макет, показанный на рис. 2. Конденсатор С1 ёмкостью 0,1 мкФ ±5 % и резистор R1 сопротивлением 10 кОм ±5 % подключены к разъёму Л платы LaunchPad съёмными перемычками из её комплекта. Связь модуля UART микроконтроллера с USB-портом компьютера организована с помощью имеющегося на плате LaunchPad преобразователя интерфейса. Окна программы RC-meter представлены на рис. 3 (измерение сопротивления) и рис. 4 (измерение ёмкости). В первом случае необходимо ввести в соответствующую графу с клавиатуры известную ёмкость конденсатора и нажать на экранную кнопку "Измерить". Через некоторое время в нижней строке появится измеренное значение сопротивления резистора. Аналогично выполняют измерение ёмкости. Если плата не подключена к компьютеру, при нажатии на экранную кнопку "Измерить" будет выдано сообщение об этом, а поле измеренного значения останется пустым. Описанный принцип можно использовать, например, для измерения температуры или влажности с помощью резистивных датчиков, измерения уровня воды ёмкостным датчиком, в общем, работать с любыми датчиками, сопротивление или ёмкость которых изменяется в зависимости от измеряемого параметра. ЛИТЕРАТУРА 1. Сокол С. Микроконтроллеры MSP430. Первые шаги. — Радио, 2012, № 12, с. 43, 44; 2013, № 1, с. 47-49. 2. Сокол С. Микроконтроллеры MSP430. Снижаем энергопотребление. — Радио, 2013, № 2, с. 49-51; № 3, с. 51,52. 3. Сокол С. Микроконтроллеры MSP430. Необычный термометр. — Радио, 2013, № 5, с. 48—50; №6,с.51-53. 4. Сокол С. Микроконтроллеры MSP430. Сенсорный регулятор яркости светодиода. — Радио, 2013, № 7, с. 49, 50; № 8, с. 53, 54. 5. Сокол С. Микроконтроллеры MSP430. Хранение измеряемых параметров во FLASH-памяти. — Радио, 2014, № 3, с. SI-54. 6. Сокол С. Микроконтроллеры MSP430. Регистратор напряжения. — Радио, 2014, № 4, с. 51—54. От редакции Программа микроконтроллера и компьютерная программа RC-meter имеются по адресу ftp:// ftp.radio.ru/pub/2015/07/RC-meter.zip на нашем FTP-сервере. |
|
|
Цитировать 0 |
|
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| [07-2015] Измеритель ёмкости аккумуляторных батарей | poster333 | Уголок радиолюбителя | 0 | 08.10.2015 00:09 |
| Измеритель сопротивления балласта (ИСБ-2) | Алексей Зориев | Курсовое и дипломное проектирование | 14 | 30.06.2014 23:05 |
| Измеритель сопротивления заземления | ШНС КРП | Общие вопросы эксплуатации устройств СЦБ | 14 | 18.11.2012 20:06 |
| ИЗМЕРИТЕЛЬ ПРИЖАТИЯ КЛЕММ АРС-4 | Shnek | Путь, путевое хозяйство | 0 | 08.10.2012 17:18 |
| Измеритель разности фаз ИРФ-1 | Шаэнн | Приборы и напольное оборудование | 0 | 22.10.2010 21:44 |
| Возможно вас заинтересует информация по следующим меткам (темам): |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|