Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Анонсы журнала "Лаборатория электроники и программирования"


8. Программирование на языке С на примере микроконтроллера ATmega168.  Измерение частоты импульсов.

                Для примера измерения частоты импульсов возьмем классический алгоритм – подсчет количества импульсов за 1 секунду. Для измерения частоты будем использовать счетный вход таймера 1 (T1). В результате получим в счетчике таймера значение частоты (дополнительные преобразования не потребуются). Счет будем производить по нарастающему фронту входных импульсов (соответствующим образом настроив биты «CS1x»). В качестве источника тактовых импульсов будем использовать ШИМ генератор на таймере 0. Для демонстрации работы примеров программ можно использовать плату «150A» или аналогичную. Необходимо соединить выход генератора («PD6/OC0A») со входом измерителя («PD5/T1»).

Программы написаны для среды разработки ATMEL Studio® [1].

Результат работы программы 1:

 

Измерение частоты импульсов

Частота - 62500.000000 Гц

Частота - 62500.000000 Гц

                Минус данной программы в том, что она не сможет мерять частоты выше 65535 Гц, т.к. будет происходить переполнение 16-битного счетчика таймера. Для того, чтобы учесть переполнения, можно использовать дополнительный счетчик переполнений и прерывания при переполнении. Второй пример показывает, как это сделать. Добавим дополнительные переменные для организации программного счетчика, перенастроим генератор на более высокую частоту, сделаем разрешение и обработку прерываний переполнения таймера.

Результат работы программы 2:

 

Измерение частоты импульсов

Частота - 800026.000000 Гц

Частота - 800026.000000 Гц

                Погрешность в основном возникает за счет работы прерываний, которые влияют на выполнение функции задержки. При использовании задержки на основе таймера можно получить лучшие результаты.

Результат работы программы 3:

 

Измерение частоты импульсов

Частота - 800004.000000 Гц

Частота - 800001.000000 Гц

Частота - 800000.000000 Гц

 

9. Программирование на языке С на примере микроконтроллера ATmega168.  Определение длительности импульсов с широким диапазоном значений.

                В выпуске журнала №22 (статья 3) был рассмотрен пример автоматического выбора диапазона измерения. Однако количество разных делителей в микроконтроллере невелико и за счет переключения делителей процесс определения длительности увеличивается. Другим вариантом определения длительности в широком диапазоне является создание дополнительного программного счетчика времени(«TCNT1_Hi») и использование прерываний переполнения таймера для его счета.

Программа написана для среды разработки ATMEL Studio® [1].

Результат работы программы:

 

Измерение длительности импульса в широком диапазоне

Длительность - 8576.000000 мкс

Длительность - 8576.000000 мкс

 

 

10. Программирование на языке С на примере микроконтроллера ATmega16.  Работа с датчиками газов.

                В настоящее время выпускается много различных датчиков газов. Отметим основные особенности их использования.

1. Для аналоговых датчиков обычно требуется достаточно точное напряжение питания (обычно +- 2%).

2. В датчике находится нагреватель, который потребляет ток порядка 150 мА.

3. Для получения стабильных показаний датчики необходимо «прогреть» (оставить постоянно включенными) на 24 часа (значение может быть и другим, уточняйте в документации на датчик).

4. Основным измеряемым значением является сопротивление датчика, которое пересчитывается в концентрацию газа. Разные датчики могут иметь разный диапазон измерения концентрации.

5. Датчики в основном реагируют на несколько газов. Поэтому, если необходимо детектировать какой-то один газ, то следует поискать датчик с минимальным влиянием на показания другими  возможными газами.

6. Датчик часто требует подстройки чувствительности для обеспечения оптимального согласования с АЦП.

Рассмотрим пример работы с датчиком «MQ-3» [9].

http://journal.electroniclab.ru/journal_content_023.htm 


В избранное