В своей статье я расскажу о том, как я сделал простой частотомер на микроконтроллере STM8LF3P6. Правильнее его назвать счётчик частоты: его принцип работы заключается в том, в течение одной секунды (интервал отмеряется по таймеру) происходит подсчет количества импульсов. Затем это значение отправляется на индикатор, а счётчик сбрасывается. Каждый раз при срабатывании таймера инвертируется пин светодиода, светодиод мигает.
Ниже приведены рисунки принципиальной схемы (рис.1) и печатной платы для устройства (рис.2).
Рисунок 1. Принципиальная схема частотомера
Рисунок 2. Печатная плата для частотомера
Со схемой все просто. Цепочка R2-C3 отсекает постоянную составляющую сигнала, после чего импульсы идут на контроллер. R1 подтягивает пин сброса мк к питанию. Светодиод позволяет контролировать работу прибора, он должен мигать с периодом где-то 2,5 секунды; отсутствие мигания говорит о том, что не запущен тактирующий кварц. Мигание светодиода при отсутствии индикации говорит о проблемах с индикатором или его подключением. Кроме того, по питанию поставлен стабилизатор напряжения на 3,3 В.
В ходе изготовления платы я столкнулся с проблемой нанесения рисунка тонких дорожек. После десятка неудачных попыток с разными материалами я решил изменить тактику. Опыт показывает, что мелкие платы проще делать. Поэтому я решил сделать устройство на двух платах — одна чисто под мк, другая под все остальное ( рис. 3 и 4 соответственно ).
Рисунок 3. Плата мк.
Рисунок 4. Основная плата
В таком варианте изготовление плат не доставило проблем. Платы я соединил с помощью разъема-гребенки. На фотографиях ниже вы можете видеть, как все получилось.
Исходный код прошивки для IAR есть в прикрепленном проекте. В исходном коде достаточно комментариев для его понимания. Дополнительно хотелось бы пояснить следующие моменты. Во-первых остановка таймера на время выполнения прерывания. Это сделано для того, чтобы таймер не считал впустую, так как во время прерывания таймера прерывания от пина не учитываются. Если же изменить приоритеты прерываний, существует риск сбоя при отправке данных на дисплей. Во-вторых поясню принцип работы дисплея TIC33. у него есть 6 выводов — 2 на питание, вывод DIN, с которого считываются биты (каждый бит соответствует сегменту дисплея), DCLK — по фронту на этом пине данные с DIN пропихиваются в память дисплея, LOAD — по фронту этого пина происходит обновление данных на экране и LCLK — тактирование.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
IC1 | МК STM8 | STM8L051F3 | 1 | |||
U1 | Микросхема | KIA1117BP | 1 | |||
C1, C2 | Конденсатор | 33 пФ | 2 | |||
C3 | Конденсатор | 10 мкФ | 1 | |||
R1 | Резистор | 1 кОм | 1 | |||
R2 | Резистор | 30 кОм | 1 | |||
HL1 | Светодиод | 1 | I < 20 mA | |||
Display1 | Дисплей | TIC-33 | 1 | |||
XTAL1 | Кварц | 12 МГц | 1 | |||