Схема счетчика импульсов на микроконтроллере. Счетчик импульсов на ЖКИ

В данном примере применения описывается, как реализовать электронный счетчик электроэнергии на микроконтроллере серии MSP430FE42x. Документ содержит описание некоторых основополагающих принципов и рекомендации по использованию микроконтроллеров серии MSP430FE42x, а также рисунки печатных плат и демонстрационные версии программ.

1 Введение

В данном примере применения описаны схема электрическая принципиальная и программное обеспечение электронного счетчика электроэнергии на микроконтроллере семейства MSP430FE42x. В качестве дополнения предполагается использовать руководство пользователя модуля ESP430CE1.

Микроконтроллеры семейства MSP430FE42x со встроенным сигнальным процессором ESP430CE1 для однофазного счетчика электроэнергии со встроенным аналоговым входным терминалом и температурным датчиком были разработаны специально для использования в устройствах измерения потребляемой мощности. ESP430CE1 выполняет большинство действий по измерению потребления электроэнергии автоматически, не используя ресурсы вычислительного ядра. Это позволяет сохранить ресурсы вычислительного ядра для использования их в других задачах, например для осуществления связи с другими устройствами. ESP430CE1 может работать с различными токовыми датчиками. В качестве токового датчика он может использовать Роговского без дополнительных внешних компонентов шунт, токовые трансформаторы (СТ), включая трансформаторы со связью по постоянному току и большим фазовым сдвигом, или катушки индуктивности. Все параметры могут быть настроены программно, а калибровочные константы могут быть сохранены во Flash памяти микроконтроллера MSP430 и переданы ESP430CE1 при инициации системы.

2 Аппаратная часть

Схема монтажной платы и блок-схема устройства приведены в приложении А и описываются в нижеследующих разделах данного примера применения. Монтажная плата может использоваться с токовыми трансформаторами или шунтами и может быть перестроена. Такая монтажная плата выпускается компанией Softbaugh и имеет серийный номер для заказа DE427. Заказать ее можно на сайте компании Softbaugh, адрес которого в интерненте www.softbaugh.com .

Подключение каналов V1, I1 и I2 показаны на схеме, приведенной в приложении А.

2.1 Использование шунта в качестве преобразователя тока

Рисунок 1. Блок-схема подключения шунта к двухпроводной однофазной сети

2.2 Использование CT в качестве преобразователя тока


Рисунок 2. Блок-схема подключения CT к двухпроводной однофазной сети

2.3 Подключение CT и шунта в качестве преобразователя тока, позволяющее обнаруживать несанкционированного подключения


Рисунок 3. Блок-схема подключения шунта и CT к двухпроводной однофазной сети, позволяющее обнаруживать несанкционированное подключение

2.4 Подключение CT для подключения к трехпроводным однофазным сетям, применяемым в США


Рисунок 4. Блок-схема ANSI электросчетчика, использующегося в трехпроводных однофазных сетях

2.5 Подключение входов датчиков напряжения

Печатная плата оснащена делителем напряжения, рассчитанным на работу в сетях со среднеквадратическим значением напряжения 230 В. Также она содержит схему защиты, рассчитанную на это напряжение.

Емкостной источник питания способен обеспечивать ток потребления до 4 мА. Необходимо обеспечить, чтобы ток потребления не превысил это допустимое значение. Для этого в демонстрационной схеме был использован светодиод с низким током свечения.

2.6 Подключение входов датчиков тока

На печатной плате имеется место для монтажа SMD резистора, используемого в качестве нагрузки для токового трансформатора, но этот резистор не установлен в поставляемой плате. Замечание: нагрузочный резистор для СТ не установлен, но при подключении СТ его необходимо установить, иначе MSP430 будет поврежден.

2.7 Сглаживающий фильтр

В качестве сглаживающего фильтра рекомендуется использовать резистор номиналом 1 кОм, подключенный последовательно ко входу АЦП, и конденсатор номиналом 33 нФ, подключенный между входом преобразователя и землей. Для исключения влияния синфазных помех рекомендуется использовать сглаживающие фильтры в обоих каналах токового преобразователя.

2.8 Неиспользуемые каналы АЦП

Неиспользуемые каналы АЦП не должны быть ни к чему подключены.

3 Расчет констант для измерителя ESP430CE1

Измерителю необходимы константы, соответствующие примененным трансформаторам и/или шунтам. В данном разделе показан расчет констант для измерителя ESP430CE1.

3.1 Коэффициент преобразования по напряжению

Коэффициент преобразования по напряжению, в соответствии с которым пересчитывается реальное входное напряжение во входное напряжение модуля ESP430CE1 рассчитывается по приведенным ниже формулам:

    V(inp.max) = VoltageGain x V (Line, Nom.) x sqrt(2) x R2 /(R1 + R2)
    kV1 = Voltage (Line, nominal) x 2 x sqrt(2) / (2 15 x (1- (Vref – V(inp.max) x 2)/Vref))

3.2 Коэффициент преобразования по току для шунта

Коэффициент преобразования по току для шунта, в соответствии с которым пересчитывается реальный входной ток в ток модуля ESP430CE1 рассчитывается по приведенным ниже формулам:

    V(I, inp.max) = CurrentGain x Imax x R(Shunt) x sqrt(2)

3.3 Коэффициент преобразования по току для трансформатора тока

Коэффициент преобразования по току для трансформатора тока, в соответствии с которым пересчитывается реальный входной ток в ток модуля ESP430CE1 рассчитывается по приведенным ниже формулам:

    V(I, inp.max) = CurrentGain x Imax / CTRatio x R(Burden) x sqrt(2)
    kI1 = Current (Line, nominal) x 2 x sqrt(2) / (2 15 x (1- (Vref – V(I, inp.max) x 2)/Vref))

3.4 Уровень прерывания по мощности

Уровень прерывания по мощности ESP430CE1 рассчитывается по следующей формуле:

    InterruptLevel = Pulses/kWh x (1000 / 3600) x fADC / (kV1 x kI1 x 4096)

Pulses/kWh определяет сколько прерываний на каждый кВт*ч будет сформировано.

4 Калибровка измерителя

Калибровка электронного счетчика электроэнергии на базе микроконтроллера семейства MSP430 при помощи обычной калибровочной аппаратуры, используемой для калибровки обычных электросчетчиков, возможна, но неэффективна. Вычислительная мощность MSP430 позволяет делать это другими методами, которые приведены ниже.

Основная калибровка может быть инициализирована при помощи команды с0, переданной через UART. Для выполнения этой команды необходимо в файле parameter.h определить входные значения следующих параметров:

    - calVoltage
    - calCurrent
    - calPhi
    - calCosPhi
    - calFreq

Калибровка фазового сдвига между током и напряжением должна быть выполнена с точностью 0.5 градуса, так как ошибка фазового сдвига, возникающая в датчиках, превышает это значение, поэтому более высокая точность не может быть достигнута.

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


Рисунок 5. Электронный счетчик электроэнергии на MSP430 с внешними терминалами

4.1 Калибровка при непрерывном измерении

Нормальный рабочий режим ESP430CE1 устанавливается путем посылки вычислительным ядром команды SetMode. Величина измеренной мощности, записанная после каждого измерения в регистр ActEnSPer1 (и в регистр ActEnSPer2 для систем с двумя датчиками), преобразуется вычислительным ядром в сигнал с постоянной частотой, пропорциональный измеренной мощности. Для формирования сигнала с постоянной частотой может быть использован модуль таймера Timer_A.

При калибровке выполняются следующие действия:

  • Вычислительное ядро устанавливает в нулевом контрольном регистре ESP430CE1 флаги Curr_I1, Curr_I2, соответствующие режиму измерения.
  • Регистры параметров инициализируются для измерения мощности в нагрузке. Выполняется это при помощи команды SET_PARAM.
  • После получения команды mSet_Mode ESP430CE1 переходит в режим измерения электроэнергии.
  • Первый результат измерения, находящийся ActEnSPer1 (и ActEnSPer2 в системах с двумя датчиками), не используется, так как неизвестна точка начала.
  • Следующие результаты измерений, находящиеся в ActEnSPer1 (и ActEnSPer2 в системах с двумя датчиками) являются правильными и используются для вычислений.
  • Флаг St_ZCld в нулевом регистре состояния указывает, что при следующей доступной выборке (флаг St_NEVal установлен), новые результаты измерения за прошлый период доступны в регистрах ActEnSPer1 и ActEnSPer2.
  • Вычислительное ядро сбрасывает флаг St_NEVal при помощи команды mCLR_EVENT и выполняет считывание данных (см. описание алгоритма считывания ниже).
  • Если необходимо, например, для вычисления результата за больший период, последние четыре пункта повторяются.

Вышеупомянутые шаги повторяются и во второй калибровочной точке.

Калибровка обоих датчиков должна быть выполнена независимо. При калибровке одного датчика измерителя ток через второй датчик должен быть нулевым. И наоборот.

4.1.1 Формулы

Калибровка производится за один основной период (или за nper основных периодов) при двух токах нагрузки I1HI и I1LO. Номинальная вычисленная мощность для двух точек калибровки:

    nHIcalc = Cz1 x I1HI x V1 x cos?1 x (nper / fmains) x (fADC / 4096) [шаги 2 ]
    nLOcalc = Cz1 x I1LO x V1 x cos?1 x (nper / fmains) x (fADC / 4096) [шаги 2 ]

Результирующие значения для наклона и смещения:

    Наклон: GainCorr1 = ((nHIcalc – nLOcalc) / (nHImeas – nLOmeas)) x 2 14
    Смещение: Poffset = (((nHImeas x nLOcalc) – (nLOmes – nHIcalc)) / (nHImeas – nLOmeas)) x (fmains / nper) x (4096 / fADC),

где fmains – основная частота в Гц;

    fADC – частота дискретизации АЦП в Гц (обычно 4096 Гц);
    nper – количество основных периодов, использованных при калибровке;
    nHIclac – вычисленная мощность в точке калибровки с высоким током в шагах в квадрате;
    nHImaes – измеренная мощность в точке калибровки с высоким током в шагах в квадрате;
    nLOclac – вычисленная мощность в точке калибровки с низким током в шагах в квадрате;
    nLOmaes – измеренная мощность в точке калибровки с низким током в шагах в квадрате;

4.1.2 Пример калибровки

Для схемы, показанной на рисунке 1, калибровка производится при следующих условиях:

    V1 = 230 В, I1HI= 20 A, I1LO = 1 A, cos?1 = 1, nper = 1, fADC = 2048 Гц, fmains = 50 Гц.
    nHIcalc = Cz1 x I1HI x V1 x cos?1 x (nper / fmains) x (fADC / 4096) = 29,322.80806 x 20 х 230 х 1 х (1 / 50) х (2048 / 4096) = 1,348,849.171 = 14,94F1h [шагов 2 ]
    nLOcalc = Cz1 x I1LO x V1 x cos?1 x (nper / fmains) x (fADC / 4096) = 29,322.80806 x 1 х 230 х 1 х (1 / 50) х (2048 / 4096) = 67,422.458 = 1,0772h [шагов 2 ]

Результат измерения в обеих точках:

    n1Himeas = 14,6040h (ошибка -1 % по сравнению с n1Hicalc = 14,94F1h)
    n1Lomeas = 1,0CB7h (ошибка +2 % по сравнению с n1Localc = 1,0772h)
    GainCorr1 = ((nHIcalc – nLOcalc) / (nHImeas – nLOmeas)) x 2 14 = ((14,94F1h – 1,0772h) / (14,6040h – 1,0CB7h)) x 2 14 = 40С0h

    Poffset = (((nHImeas x nLOcalc) – (nLOmes – nHIcalc)) / (nHImeas – nLOmeas)) x (fmeins / nper) x (4096 / fADC) = (((14,6040h x 1,0772h) – (1,0CB7h – 14,94F1h)) / (14,6040h – 1,0CB7h)) x (50 / 1) x (4096 / 2048) = -215,489 = FFFC,B63Fh

Если точки калибровки исправить с учетом наклона и смещения, тогда:

    ncorr = (nmeas x GainCorr1)) x 2-14 + (Poffset1) x (nper / fmains) x (fADC / 4096) nHIcorr = 14,6040h x 40C0h x 2-14 +FFFC,B63Fh x ((1 x 2048) / (50 x 4096)) = 1,348,890 = 14,951Ah nLOcorr = 1,0CB7h x 40C0h x 2-14 +FFFC,B63Fh x ((1 x 2048) / (50 x 4096)) = 67,441 = 1,0771h

Результирующая ошибка при обеих коррекциях равняется +3.1 Е-5, т.е. 31 ppm.

4.2 Калибровка при помощи ПК

На рисунке 6 показан один из возможных вариантов установки для калибровки электронных счетчиков электроэнергии. Электросчетчики подключены к последовательному порту ПК через последовательный порт USART0, работающий в режиме UART или SPI. Все необходимые для калибровки вычисления выполняются ПК, а MSP430 каждого электросчетчика только запоминает полученные корректировочные величины во встроенной памяти данных или внешней EEPROM памяти.

ПК управляет калибровочной установкой, состоящим из генератора напряжения, генератора тока и фазовращателя, через коммуникационный интерфейс. ПК считывает результаты умножения напряжения и тока, вычисленные встроенными АЦП (или количество импульсов Ws на выходе каждого электросчетчика) и сравнивает это значение со значением, полученным эталонным электросчетчиком, который является частью калибровочной аппаратуры. ПК вычисляет ошибку электросчетчика в одной (например, при номинальном токе) или двух (например, при максимальном и номинальном токе потребления) точках калибровки. По результатам этих ошибок вычисляются индивидуальные корректировочные коэффициенты для наклона и угла смещения и передаются в конкретный электросчетчик, в котором микроконтроллер MSP430 сохраняет эти значения.


Рисунок 6. Калибровка электронных электросчетчиков при помощи ПК

Формулы для вычисления значений калибровочных констант приведены в руководстве пользователя модуля ESP430CE1.

4.3 Самокалибровка

Другой метод калибровки использует способность MSP430 выполнять сложные вычисления. Основное преимущество этого метода калибровки - это простота: Для передачи данных при этом методе не требуется никаких проводных соединений (см. рисунок 7). Уравнения исправления ошибок, используемые измерителем во время теста, такие же, как и приведенные в приведенном выше разделе "Калибровка при непрерывном измерении".

  • Измеритеи, которые будут калиброваться, переводятся в режим калибровки при помощи скрытого переключателя, UART, ключа, входного импульса и т.д.
  • ПК включает калибровочную аппаратуру, которая отдает определенное количество энергии, измеряемое при помощи эталонного измерителя, калибруемым электросчетчикам..
  • Электросчетчики измеряют выданное количество энергии и вычисляют значение электропотребления WEM1 для 100 % номинального тока Inom.
  • После этого калибровочная аппаратура отключается (I = 0, U = 0). Это позволяет при необходимости вычислить и измерить смещение самого АЦП.
  • ПК включает калибровочную аппаратуру, которая снова отдает электросчетчикам определенное количество электроэнергии (например 5 % Inom, 100 % Vnom, cos?=1). После этого аппаратура снова отключается (i = 0, U = 0).
  • Счетчики снова измеряют электроэнергию и вычисляют значение WEM0 для 5 % номинального тока Inom.
  • По двум значениям WEM1 и WEM0, найденным для 100 % и 5 % номинального тока Inom, электросчетчики вычисляют индивидуальные величины смещения и наклона.
  • После калибровки можно провести простой визуальный тест:
    - для обнуления индикаторов электросчетчики сбрасываются - калибровочная аппаратура выдает точно определенное количество энергии (при различных значениях тока, напряжения и cos?) - Визуально проверяется, чтобы на всех электросчетчиках отображалось одинаковая величина измеренного значения потребленной энергии - По показаниям ЖКИ можно определить, что рассчитанные коэффициент наклона и смещения выходят за допустимые пределы.

Пример: если провести калибровку при следующих параметра:

  • 10 000 Ws (100 % Inom, 100 % Vnom, cos? = 1)
  • 5 000 Ws (100 % Inom, 100 % Vnom, cos? = 0.5)

калибруемые электросчетчики должны показать значение Ws, равное 15 900 ± допустимая точность. Если вычисленное значение выходит за допустимые пределы, то электросчетчик признается не прошедшим калибровку.


Рисунок 7. Самокалибровка электросчетчиков

5 Емкостной источник питания

На рисунке 8 показан емкостной источник питания, формирующий одно напряжение Vcc = +3 В. Если его выходного тока недостаточно, то можно использовать выходной буфер на базе NPN транзистора.

Уравнения для разработки приведенных ниже источников питания приводятся в разделе 3.8.3.2 "Емкостной источник питания" примера применения SLAA024. В данной главе описываются другие источники питания и уравнения для их расчета.


Рисунок 8. Емкостной источник питания

5.1 Детектор обнаружения отключения/включения линейного напряжения

Так как детектор падения напряжения ESP430CE1 объединен со счетчиком циклов линейного напряжения, то при пропадании линейного напряжения он не работает. Для обнаружения этого можно отслеживать нахождение VRMS в течение определенного интервала времени ниже заданного порога или использовать внешнюю цепь для детектирования отключения линейного питания. При использовании внешней цепи для снижения потребления можно отключать модуль ESP430CE1.


Рисунок 9. Детектирование наличия линейного напряжения

6.1 Заземление

Правильная трассировка печатной платы очень важна для систем, использующих АЦП с высоким разрешением. Ниже приведены основные рекомендации по трассировке плат.

1. Использование, по возможности, отдельных шин аналоговой и цифровой "земли".

2. Максимально толстые дорожки от источника питания до выводов DVSS, AVSS, DVCC, и AVCC.

3. Установка конденсатора в точке схождения всех линий аналоговой "земли". Установка конденсатора в точке схождения всех цифровых "земель".

4. Конденсатор Cb следует расположить в точке схождения всех шин питания. Это необходимо для обеспечения низкого полного сопротивлению этого конденсатора.

5. AVSS и DVSS терминалы должны быть внешне соединены вместе.

6. AVCC и DVCC терминалы должны быть внешне соединены вместе.

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

8. Для развязки шин аналогового и цифрового питания необходимо использовать катушку индуктивности L. Также можно использовать и резистор, но при использовании катушки индуктивности обеспечивается лучшая фильтрация высоких частот.

9. Если по периметру печатной платы проходит дорожка, то она должна быть подключена к заземляющей шине платы.


Рисунок 10. Заземление аналого-цифрового преобразователя

6.2 Чувствительность к ЭМИ

На рисунке 11 упрощенно показана не оптимальная трассировка: серым выделены участки, способные принимать внешние наводки от внешних источников ЭМИ. Для снижения влияния внешних источников ЭМИ эти участи по площади должны быть минимальными.


Рисунок 11. Трассировка платы, чувствительной к внешним ЭМИ

На рисунке 12 показана печатная плата, имеющая оптимальную трассировку. Участки, являющиеся приемниками ЭМИ, имеют минимальную площадь.


Рисунок 12. Трассировка печатной платы, имеющей минимальную чувствительность к ЭМИ

7 Демонстрационная программа

7.1 Инициализация аналогового терминала

При отключенном модуле ESP430CE1, Вычислительное ядро MSP430 имеет доступ к модулю SD16 модулю. Сначала вычислительное ядро MSP430 должно сделать инициацию входного аналогового терминала. При этом производится установка коэффициента усиления, частоты дискретизации и частоты генератора синхроимпульсов для SD16:

//==================================================================== /** * Подпрограмма инициализации аналогового терминала. * * Настройка модуля сигма-дельта АЦП в качестве аналогового терминала для * резистивного счетчика, определяющего несанкционированное подключение, * использующего токовый трансформатор и шунт в качестве токового датчика * (см. настройку каналов 0 и 1). */ void init_analog_front_end(void) { /** * Сначала проверяется, что встроенный сигнальный процессор отключен, * в противном случае будет невозможно изменить данные в регистре SD16. * */ ESPCTL &= ~ESPEN; /** * После этого выполняются основные настройки аналогового терминала, * которые относятся ко всем каналам: выбор синхроимпульсов (SMCLK), * параметров делителя (в зависимости от частоты SMCLK) и опорного * напряжения. */ SD16CTL= SD16SSEL_1 // Выбор синхроимпульсов: SMCLK // SD16CTL = 0x800 + SD16SSEL_1 // Clock Выбор синхроимпульсов: SMCLK + (Amp:) #if (MCLK_FREQ == 2) | SD16DIV_1 // деление на 2 => Частота синхроимпульсов АЦП: 1.094 МГц #endif #if (MCLK_FREQ == 4) | SD16DIV_2 // деление на 4 => Частота синхроимпульсов АЦП: 1.094 МГц #endif #if (MCLK_FREQ == 8) | SD16DIV_3 // деление на 8 => Частота синхроимпульсов АЦП: 1.094 МГц #endif | SD16REFON; // Использование встроенного ИОН SD16CCTL0 = SD16INCH_0; // I1 SD16CCTL1 = SD16INCH_0; // I2 SD16CCTL2 = SD16INCH_0; // V SD16CONF0 |= 0x70; // SD16CONF1 |= 0x68; // Задержка синхроимпульсов АЦП 40 нс // =================================================================== /** * - Выбор коэффициента усиления АЦП: * - VIN,MAX(GAIN = 1) = 0.5V > VCT(пиковое) * - VIN,MAX(GAIN = 2) = 0.25V < VCT(пиковое) * - VIN,MAX(GAIN = 16) = 0.031V > VShunt(пиковое) * - VIN,MAX(GAIN = 32) = 0.015V < VShunt(пиковое) */ // =================================================================== // Настройка нулевого канала аналогового терминала - Ток 1 SD16INCTL0= I1_Gain; // Установка коэффициента усиления для нулевого канала (I1) SD16CCTL0 |= SD16OSR_256; // Установка коэффициента дискретизации = 256 (по умолчанию) // =================================================================== // Настройка первого канала - Ток 2 SD16INCTL1= I2_Gain; // Установка коэффициента усиления первого канала (I2) SD16CCTL1 |= SD16OSR_256; // Установка коэффициента дискретизации = 256 (по умолчанию) // =================================================================== // Настройка второго канала - Напряжение SD16INCTL2= V_Gain; // Установка коэффициента (V) SD16CCTL2 |= SD16OSR_256; // Установка коэффициента дискретизации = 256 (по умолчанию) /** * \Замечание * Пожалуйста запомните, что коэффициент дискретизации для всех каналов должен * быть идентичным. По умолчанию он равен 256. */ } // Конец init_analog_front_end()

7.2 Инициализация электросчетчика

Перед использованием ESP430CE1 надо настроить. Пример подпрограммы настройки модуля:

//==================================================================== /** * Инициализация ESP430CE1. * */ void init_esp_parameter(unsigned char flashvars) { volatile unsigned int timeout; // /\ Предотвращение "оптимизации" переменных. // Копирование значений инициализации в ОЗУ if (flashvars) s_parameters = s_parameters_flash; /** * Проверяем, что встроенный сигнальный процессор * активизирован, */ ESPCTL |= ESPEN; MBCTL = 0; /** * и не находится в режиме измерения или калибровки, */ if ((RET0 & 0x8000) != 0) { // Перевод встроенного сигнального процессора в режим ”Idle” MBOUT1= modeIDLE; // ESP_IDLE; MBOUT0= mSET_MODE; timeout= 0xffff; while (((RET0 & 0x8000) != 0) && (timeout?? > 0)) ; } /** * и готов принять сообщение, запрашивающее * версию программного обеспечения. */ MBOUT0= mSWVERSION; timeout= 0xffff; do { while (((MBCTL & IN0IFG) == 0) && (timeout?? > 0)) ; if (timeout == 0) { display_error(); return; } } while (MBIN0 != mSWRDY); firmware_version= MBIN1; // Запись версии программы. /** * После этого производится инициализация параметров. * * Control 0: выполняется установка для: * - Канал измерения тока I2 ? детектирования несанкционированного подключения * - Расчет абсолютного значения активной энергии * (отрицательная энергия расценивается как несанкционированное подключение) * - Переключение алгоритма для удаления постоянной составляющей тока I1 * - Переключение алгоритма для удаления постоянной составляющей тока I2 */ set_parameter(mSET_CTRL0, defSET_CTRL0); /** * \установка номера измерения: * т.е. 4096 * 50Hz. => прерывание раз в секунду */ set_parameter(mSET_INTRPTLEVL_LO, s_parameters.pSET_INTRPTLEVL.w); set_parameter(mSET_INTRPTLEVL_HI, s_parameters.pSET_INTRPTLEVL.w); /** * Номинальная основная частота: * т.е. 50 Гц. */ set_parameter(mSET_NOMFREQ, defSET_NOMFREQ); /** * Коррекция фазовой ошибки: * Установка фазовой ошибки для тока 1/2 от номинальной основной частоты для * токового трансформатора по его техническим характеристикам * Фазовая ошибка шунта равна нулю. */ set_parameter(mSET_PHASECORR1, (int)s_parameters.pSET_PHASECORR1); set_parameter(mSET_PHASECORR2, (int)s_parameters.pSET_PHASECORR2); /** Настройка параметров для двух токов: * Токовый трансформатор: * * Имеется две возможности настройки значений двух * токов: */ set_parameter(mSET_ADAPTI1, defSET_ADAPTI1); // = 1 * POW_2_14 = 16384 set_parameter(mSET_ADAPTI2, defSET_ADAPTI2); // = 1 * POW_2_14 = 16384 /** Установка настроенного коэффициента усиления: */ set_parameter(mSET_GAINCORR1, s_parameters.pSET_GAINCORR1); set_parameter(mSET_GAINCORR2, s_parameters.pSET_GAINCORR2); /** Установка настроенного смещения: */ set_parameter(mSET_V1OFFSET, s_parameters.pSET_V1OFFSET); set_parameter(mSET_I1OFFSET, s_parameters.pSET_I1OFFSET); set_parameter(mSET_I2OFFSET, s_parameters.pSET_I2OFFSET); // set_parameter(mSET_POFFSET1_LO, s_parameters.pSET_POFFSET1_LO); // set_parameter(mSET_POFFSET1_HI, s_parameters.pSET_POFFSET1_LO); /** Настроенные параметры становятся текущими: */ #if withStartCurrent == 1 set_parameter(mSET_STARTCURR_INT, s_parameters.pSET_STARTCURR_INT); set_parameter(mSET_STARTCURR_FRAC, s_parameters.pSET_STARTCURR_FRAC); #else set_parameter(mSET_STARTCURR_INT, 0); set_parameter(mSET_STARTCURR_FRAC, 0); #endif /** Параметры регулировки для периода удаления постоянной составляющей: */ set_parameter(mSET_DCREMPER, defSET_DCREMPER); } // End of init_esp_parameter()} // Конец подпрограммы init_esp_parameter()

7.3 Программа Demo 1

Demo 1 – простая демонстрационная программа, которая инициализирует ESP430CE1 для измерения электрической энергии и вывода результата на индикатор. При этом происходит мигание светодиода. Эта программа может работать с отладочным комплектом Kickstart производства компании IAR.

Ниже приведены файлы демонстрационной программы их назначение:

Файл Назначение и функции
Main.c Управляет инициализаций системы и вызывает функции для индикации обновленного значения, запрашиваемого подпрограммами обработки прерывания:
  • Init FLL and System Clock
  • Init Basic Timer and Real time Clock
  • Init LCD
  • Init analog front end
  • Init ESP430CE1 Parameters
  • Start Measurement
FET4xx_RTCwLCD.s43 Основная подпрограмма для обслуживания ЖКИ и RTC
Display.c Подпрограмма высокого уровня для ЖКИ
FLL.c Подпрограмма установки ФАПЧ и системы синхронизации
PortFunc.c Подпрограмма обработки прерывания по порту Port1
TimerA.c Подпрограмма инициализации и обслуживания таймера Timer_A. Timer_A используется для формирования импульсов
EMeter.c EMeter.c Содержит подпрограмму инициализации и подпрограмму обслуживания аналогового терминала, ESP430CE1 и прерывания от ESP430CE1
FE427_Measure_v3.ewp
FE427_Measure_v3.eww
Файлы проектов для программы Workbench версии 3 производства компании IAR
FE427_Measure.ewp
FE427_Measure.eww
Файлы проектов для программы Workbench версии 2 производства компании IAR
FE427_Measure.hzp
FE427_Measure.hzs
Файлы проектов для программы CrossStudio производства компании Rowley

Блок – схема демонстрационной программы приведена на рисунке 13.


Рисунок 13. Блок – схема демонстрационной программы

7.4 Генерация импульса электропотребления

Этот импульс может быть использован для индикации определенного уровня потребленной энергии. Для формирования этого выходного сигнала может использоваться три метода.

7.4.1 Непосредственное использование выхода сигнала прерывания по уровню

В первом методе непосредственно используется выход источника прерывания модуля ESP430 по заданному уровню. Реализация этого метода весьма проста и не требует задействования дополнительных аппаратных или программных ресурсов. Но ввиду того, что измеряется энергия синусоидальных колебаний, этот сигнал может иметь некоторые переходные колебания.

Активизируется этого метода:

    // *define TIMERA_PULSE_OUTPUT
    // *define WITH_AVERAGING

7.4.2 Использование выхода модуля таймера Timer_A

Во втором методе для удаления переходных колебаний используется модуль таймера Timer_A. Этот метод приемлем для формирования импульсов с частотой до 30 Гц. Перед использованием этого метода в файле parameter.h необходимо сделать следующие установки.

    *define TimerAClock TASSEL_1/* ACLK = 32 кГц
    *define TACLOCK 32768ul
    *define CLOCKSPERPERIOD (TACLOCK/defSET_NOMFREQ)

Активизация метода производится следующим образом:

    *define TIMERA_PULSE_OUTPUT
    // *define WITH_AVERAGING

7.4.3 Использование выхода модуля таймера Timer_A при усреднении

В третьем методе используется только модуль таймера Timer_A для усреднения по времени и формирования импульсов несущей частоты.

Активизация этого метода производится следующим образом:

    *define TIMERA_PULSE_OUTPUT
    *define WITH_AVERAGING

7.5 Управление

Имеется две кнопки, которые используются для выполнения следующих функций:

  • S_A: Выключение модуля ESP430CE1 и перевод MSP430 в режим пониженного потребления. Часы реального времени при этом продолжают работать.
  • S_B: Переключение между режимами индикации.

7.5.1 Файл Parameter.h

Все конфигурационные настройки выполняются в файле parameter.h. К ним относятся:

  • Уровень выходного импульса.
  • Коэффициенты передачи по напряжению и току
  • Конфигурационные параметры для модуля ESP430CE1

#define для withDisplay позволяет масштабировать код для различных функций и размеров. Код использует функции с плавающей точкой для выхода UART и калибровки. Включение одной из этих двух частей увеличит размер кода.

Определение шунта, *define shunt, позволяет выбрать к чему будет подключен вход I1 - к шунту или трансформатору тока.

Для упрощения расчета основных параметров, используемых в файле parameter.h, можно использовать файл для Excel FE427_Settings.xls. После ввода требуемой информации в белые поля все параметры будут рассчитаны и отображены. По нажатию кнопки "Save Parameter to File" все параметры будут сохранены в файл ‘Test_Parameter.h’.

Этот файл с рассчитанными параметрами будет включен в исходный код вместо заданных по умолчанию в файле ‘Parameter.h’ параметров если снять ремаркирование со строки ‘#define Test’ в самом файле ‘Parameter.h’.

7.6 Демонстрационная программа Demo 2

Демонстрационная программа Demo 2 устанавливается как комплексное приложение, включающее в себя UART и некоторые подпрограммы автокалибровки, которые сохраняют параметры во flash память. Для вычисления электропотребления вместо функции формирования потребления по превышению заданного уровня используются возвращаемые модулем ESP430CE1 значения. Программа Demo 1 выполняет инициализацию модуля ESP430CE1, вывод данных на индикатор и осуществляет управление светодиодом индикации включения. Эта демонстрационная программа слишком большая, чтобы использоваться при помощи комплекта Kickstart компании IAR.

Демонстрационная программа Demo 2 включает в себя все файлы, содержащиеся в программе Demo 1, и файлы, приведенные в нижеследующей таблице:

7.6.1 Связь по UART

    Формат передаваемых данных: 57600 / 8 N 1
    Каждая команда должна заканчиваться символом "CR".
    Команда ’h’ выводит в окне терминала приведенный ниже текст помощи:

    Версия программного обеспечения MSP430FE427: 0114
    Команды UART:

      SHxx: Установка часов
      SMxx: Установка минут
      SSxx: Установка секунд
      SDxx: Установка дня
      SOxx: Установка месяца
      SYxx: Установка года
      Dx: Установка режима индикатора
      D1: Отключение
      D2: Время
      D3: Дата
      D4: Напряжение (В)
      D5: Ток (A)
      D6: Пиковое напряжение (В)
      D7: Пиковое значение тока (A)
      D8: Частота (Гц)
      D9: CosPhi
      DA: Температура
      DB: Мощность (кВт)
      DC: Электропотребление (кВт * ч)
      H: показать текст помощи
      Tx: установка тестового режима
      R: сброс системы
      Mx: Выполнение тестовых измерений в течение x*50 циклов
      I: Инициализация
      C0: Автокалибровка U / I / P / фазового сдвига
      C1: Калибровка уровня прерывания
      C2: Калибровка фазовой коррекции 1
      C3: Калибровка фазовой коррекции 2
      C4: Калибровка смещения V1
      C5: Калибровка смещения I1
      C6: Калибровка смещения I2
      C9: Сохранение параметров во flash памяти
      СА: Калибровка коэффициента передачи по напряжению
      СВ: Калибровка коэффициента передачи по току
      СС: Калибровка коэффициента передачи по мощности
      +: Увеличение калибровочного значения
      -: Уменьшение калибровочного значения

7.6.2 Калибровка

Основная часть процесса калибровки может быть выполнена при помощи UART команды "C0".

Для выполнения этой команды в файле parameter.h должны быть определены входные параметры:

  • calVoltage
  • calCurrent
  • calPhi
  • calCosPhi
  • calFreq

По UART команде "C9" рассчитанные значения могут быть сохранены во flash памяти.

7.6.3 Файл Parameter.h

Все конфигурационные настройки выполняются в файле parameter.h:

  • Установка уровня выходного импульса
  • Коэффициенты по напряжению и току
  • Параметры настройки модуля ESP430CE1

#defines для withUARTComm, withCalibration, withDisplay позволяют изменять код для различных функций и размеров. Включение одной из этих двух частей увеличит размер кода.

Это устройство предназначено для подсчета числа оборотов вала механического устройства. Кроме простого подсчета с индикацией на светодиодном табло в десятичных числах, счетчик выдает информацию о числе оборотов в двоичном десятиразрядном коде, что может быть использовано при конструировании автоматического устройства. Счетчик состоит из оптического датчика оборотов, представляющего собой оптопару из постоянно светящегося ИК-светодиода и фотодиода, между которыми расположен диск из непрозрачного материала, в котором вырезан сектор. Диск закреплен на валу механического устройства, количество оборотов которого нужно считать. И, комбинации из двух счетчиков, - десятичного трехразрядного с выводом на светодиодные семисегментные индикаторы, и двоичного десятиразрядного. Счетчики работают синхронно, но независимо друг от друга. Светодиод HL1 излучает непрерывный световой поток, которые поступает на фотодиод через прорезь в измерительном диске. При вращении диска получаются импульсы, а поскольку, прорезь в диске одна, то число этих импульсов равно числу оборотов диска. Триггер Шмитта на D1.1 и D1.2 преобразует импульсы напряжения на R2, вызванные изменением фототока через фотодиод, в импульсы логического уровня, пригодные для восприятия счетчиками серии К176 и К561. Число импульсов (число оборотов диска) одновременно подсчитывает двумя счетчиками - трехдекадным десятичным на микросхемах D2-D4 и двоичным на D5. Информация о числе оборотов выводится на цифровое табло, составленное из трех семисегментных светодиодных индикаторов Н1-Н3, и в виде десятиразрядного двоичного кода, который снимается с выходов счетчика D5. Обнуление всех счетчиков в момент включения питания происходит одновременно, чему способствует наличие элемента D1.3. При потребности в кнопке обнуления, её можно подключить параллельно конденсатору С1. Если нужно, чтобы сигнал обнуления поступал от внешнего устройства или логической схемы, нужно микросхему К561ЛЕ5 заменить на К561ЛА7, и отсоединить её вывод 13 от вывода 12 и С1. Теперь обнуление можно будет сделать, подав, от внешнего логического узла, логический ноль на вывод 13 D1.3. В схеме можно использовать другие светодиодные семисегментные индикаторы, аналогичные АЛС324. Если индикаторы с общим катодом, - нужно на выводы 6 D2-D4 подать не единицу, а ноль. Микросхемы К561 можно заменить аналогами серий К176, К1561 или импортными аналогами. Светодиод - любой ИК-светодиод (от пульта ДУ аппаратуры). Фотодиод - любой из тех, что использовался в системах ДУ телевизоров типа УСЦТ. Настройка состоит в установке чувствительности фотодиода подбором номинала R2.

Радиоконструктор №2 2003г стр. 24

Конструкция выполнена только на одной микросхеме К561ИЕ16. Так как, для его правильной работы нужен внешний генератор тактовых импульсов, то в нашем случае мы его заменим простым мигающим светодиодом. Как только подадим напряжение питание на схему таймера, емкость С1 начнет заряжаться через резистор R2 поэтому на выводе 11 кратковременно появится логическая единица, сбрасывающая счетчик. Транзистор, подсоединенный к выходу счетчика, откроется и включит реле, которое через свои контакты подключит нагрузку.


Здесь используется второй триггер микросхемы К561ТМ2, который в первой схеме не задействован. Он включается последовательно первому триггеру образуя двухразрядный двоичный счетчик, отличающийся от «типового» только наличием цепи задержки R3-C2 в первом триггерном звене. Теперь состояние выходов триггеров будет меняться соответственно двоичному коду. При включении питания оба триггера устанавливаются в нулевое состояние, чтобы это происходило вход R второго триггера соединен с таким же входом первого. Теперь цепь C1-R2 действует на оба триггера, обнуляя их при подаче питания. С первым нажатием кнопки в единичное состояние устанавливается триггер D1.1, -включается лампа Н1.

Первый из описываемых далее счетчиков представляет собой генератор случайного числа. Его можно использовать для определения очередности ходов в различных игровых ситуациях, в качестве лототрона и др. В генераторе используются интегральные схемы серии К155. На элементах DD1.1 -DD1.4 интегральной схемы К155ЛН1 собран генератор прямоугольных импульсов с рабочей частотой порядка нескольких килогерц.


При нажатии на тумблер SB1 замыкаются контакты кнопки и импульсы с выхода генератора следуют на вход первого из 4 последовательно соединенных JK- триггеров. Их входы включены так, что JK-триггеры по сути работают в счетном режиме. Вход каждого триггера соединен с инверсным выходом предыдущего, поэтому все они переключаются с достаточно приличной частотой, в соответствие с ней вспыхивают и светодиоды HL1...HL4.

Этот процесс идет до тех пор, пока нажата SB1. Но как только ее отпускают, как все триггеры окажуться в каком-то устойчивом состоянии. При этом будут гореть только те светодиоды, которые подсоединены к выходам триггеров которые окажуться в нулевом состоянии 0.

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

Схема генератора случайного числа настолько проста, что не требует никакой наладки и начинает работать сразу с подачей питания. Вместо JK-триггеров в конструкции можно применить двоичный счетчик К155ИЕ5.

Автомат обладает двумя идентичными каналами, каждый из которых содержит тактовый генератор на элементах DD1.1 -DD1.4 (DD2.1 - DD2.4), четырех разрядный двоичный счетчик DD3, DD5 (DD4, DD6), схемы управления на DD8.1, DD8.2 (DD8.3, DD8.4), узлы индикации DD10.1 (DD10.2).


Объединяет оба канала модуль контроля (DD7), реализующих формулу «исключающее ИЛИ». Логика работы DD7 очень проста: если на вход элемента приходят два одинаковых логических уровня, то на его выходе формируется уровень логического 0, иначе 1.

В момент включения питания и нажатия на кнопку «Сброс» (SB1) триггеры DD3...DD6 переключаются в единичное состояние и светодиоды тухнут. Параллельно на выходах DD8.1 и DD8.3 формируется логическая 1, разрешающая запуск тактовых генераторов. Импульсы с их выходов, следуют на триггеры и провоцируют их синхронное переключение. Вспыхивают и соответствующие светодиоды. Скоростью переключения последних можно упровлять сопротивлениями R1 и R2, расположенными в пультах игроков.

Если играющий, считая, что состояния светодиодов обоих каналов равнозначны, нажимает на кнопку SB2. Тогда на выходе элемента DD8 формируется логический ноль, запирающий генераторы и фиксирующий состояния триггеров. Уровень единицы, формируется на выходе DD8.2 и блокирует переключение триггера на DD8.3, DD8.4 и разрешая работу индикации. Благодаря этому можно выяснить, кто из двух играющих быстрее нажмет на кнопку.

Логические уровни с инверсных выходов триггеров следуют на узел контроля DD7.1 - DD7.4, где происходит сравнение. Если они равнозначны, то на выходах элементов узла контроля появляется уровень логического нуля.

Инвертируясь DD9.1- DD9.4, он вызывает возникновение высокого уровня на выходе схемы ИЛИ (VD1-VD4). Таким образом, обе единицы одновременно будут только на входе DD10.1. На его выходе формируется логический ноль и начинает гореть светодиод HL9 фиксирующей победу игрока, нажавшего на кнопку SB2.

Если при нажатии SB2 логические уровни были разными, то на выходе схемы ИЛИ формируется уровень нуля. При этом единичный уровень поступает только на вход DD10.2, и зажигание соответствуюшего светодиода фиксирующего победу другого игрока.

Аналогично схема будет вести себя и в случае если первой нажать кнопку SB3. Время переключения DD8.1 - DD8.4 достаточно низкое поэтому вероятность сбоя почти исключена.

Схема имеет узел автоматического отключения питания через полчаса, но при желании его можно отсоединить и раньше, коснувшись пальцем сенсора.

Для сборки конструкции необходимо семь транзисторов и три ИМС: К155ЛАЗ, и К155ИЕ8.

Приставка состоит из узла звукового сигнализатора на VT1, VT2 и DD1 - DD3 и узла коммутации питания на VT3-VT7.


Схема звукового сигнализатора состоитиз тактовый генератор на DD1.1, DD1.2 и VT1. Он генерирует прямоугольные импульсы с частотой следования около 1 Гц.

После включения питания тактовый генератор начинает посылать тактирующие импульсы, а импульс сброса, формируемый цепью R4, С2, сбрасывает счетчик и триггер, управляющий коэффициентом деления.

Уровень логической единицы, идет с шестого выхода триггера DD3.1, и блокирует диод VD1, включая тональный генератор на DD1.4 и транзисторе VT2. Параллельно импульсы, следуют на десятый вход элемента DD1.4 с тактового генератора частотой один Гц, включая и в отключая тональный генератор, формирующий прерывистый звуковой сигнал.

Кроме того уровень логической 1, идущий с выхода 6 триггера, задает коэффициент деления счетчика равный шестнадцати. После поступления на вход счетчика 17-го импульса на выходе шесть DD2 формируется положительный импульс, переключающий DD3.1 в единичное состояние. С выхода 6 низкий уровень этого триггера блокирует работу тонального генератора и устанавливает коэффициент деления счетчика 64. После прихода следующих 64 импульсов на выходе счетчика генерируется положительный импульс, переключающий триггер DD3.1 в нулевое состояние. Выходной сигнал триггера разрешает работу тонального генератора и устанавливает коэффициент деления равный шестнадцати. Таким образом, приставка через каждые 64 секунды генерирует прерывистый тональный звуковой сигнал длительностью 16 секунд. В таком режиме приставка может работать до выключения питания.

Питание схемы звуковой сигнализации происходит через «электронный выключатель» и устройство автоматической коммутации питания, на транзисторах VT3-VT7. Кроме того этот модуль, ограничивает ток, потребления приставки в дежурном режиме на уровне микроампер, что позволяет не использовать в конструкции механический выключатель питания.

Для включения приставки кратковременно замыкаем точки А и Б. При этом на базу VT3 через сопротивление R9 идет положительный потенциал напряжения и составной транзистор образованный на VT4-VT5 отпирается, обеспечивая ток делителя напряжения на резисторах R10, R11. Падение напряжения на R10 и участке коллектор - эмиттер VT5 отпирает составной транзистор VT6- VT7.

Напряжение питания через VT7 проходит на узел звуковой сигнализации. Параллельно через R6, R7 и участок коллектор - эмиттер VT3 заряжается емкость С4. За счет падения напряжения в цепи заряда емкости составной транзистор VT4-VT5 поддерживается открытым, обеспечивая работу составного транзистора VT6-VT7.

По мере заряда емкости С4 потенциал в точке R6, VD2, С4, R7 падает и при определенной величине составной транзистор VT4- VT5 запирается, заним и закрывается VT6-VT7, отключая цепь питания звуковой сигнализации.

Емкость С4 быстро разряжается и приставка переходит в спящий режим. Время работы задается сопротивлением R6 и емкостью С4 и для указанных номиналов время составляет 30 мин. Можно отключить питание и вручную, коснувшись сенсорных контактов E1, Е2.

Отрицательный потенциал напряжения через сопротивление поверхности кожи и R8 попадает на базу транзистора VT3, отпирая его. Напряжение на коллекторе резко падает и запирает составной транзистор VT4-VT5, который закрывает VT6, VT7.

Счётчик на микроконтроллере довольно прост для повторения и собран на популярном МК PIC16F628A с выводом индикации на 4 семисегментных светодиодных индикатора. Счётчик имеет два входа управления: «+1» и «-1», а также кнопку «Reset». Управление схемой нового счётчика реализовано таким образом, что как бы долго или коротко не была нажата кнопка входа, счёт продолжится только при её отпускании и очередном нажатии. Максимальное количество поступивших импульсов и соответственно показания АЛС - 9999. При управлении на входе «-1» счёт ведётся в обратном порядке до значения 0000. Показания счётчика сохраняются в памяти контроллера и при отключении питания, что сохранит данные при случайных перебоях питающего напряжения сети.

Принципиальная схема реверсивного счётчика на микроконтроллере PIC16F628A:

Сброс показаний счётчика и одновременно состояния памяти в 0, осуществляется кнопкой «Reset». Следует помнить, что при первом включении реверсивного счётчика на микроконтроллере, на индикаторе АЛС может высветиться непредсказуемая информация. Но при первом же нажатии на любую из кнопок информация нормализируется. Где и как можно использовать эту схему - зависит от конкретных нужд, например установить в магазин или офис для подсчёта посетителей или как индикатор намоточного станка. В общем думаю, что этот счётчик на микроконтроллере кому-нибудь принесёт пользу.

Если у кого-то под рукой не окажется нужного индикатора АЛС, а будет какой-нибудь другой (или даже 4 отдельных одинаковых индикатора), я готов помочь перерисовать печатку и переделать прошивку. В архиве на форуме схема, плата и прошивки под индикаторы с общим анодом и общим катодом. Печатная плата показана на рисунке ниже:

Имеется также новая версия прошивки для счётчика на микроконтроллере PIC16F628A. при этом схема и плата счётчика остались прежними, но поменялось назначение кнопок: кнопка 1 - вход импульсов (например, от геркона), 2 кнопка включает счёт на вычитание входных импульсов, при этом на индикаторе светится самая левая точка, 3 кнопка - сложение импульсов - светится самая правая точка. Кнопка 4 - сброс. В таком варианте схему счётчика на микроконтроллере можно легко применить на намоточном станке. Только перед намоткой или отмоткой витков нужно сначала нажать кнопку "+" или "-". Питается счётчик от стабилизированного источника напряжением 5В и током 50мА. При необходимости можно питать от батареек. Корпус зависит от ваших вкусов и возможностей. Схему предоставил - Samopalkin

Принцип действия

В качестве исходного состояния принят нулевой уровень на всех выходах триггеров (Q 1 – Q 3), т. е. цифровой код 000. При этом старшим разрядом является выход Q 3 . Для перевода всех триггеров в нулевое состояние входы R триггеров объединены и на них подается необходимый уровень напряжения (т. е. импульс, обнуляющий триггеры). По сути это сброс. На вход С поступают тактовые импульсы, которые увеличивают цифровой код на единицу, т. е. после прихода первого импульса первый триггер переключается в состояние 1 (код 001), после прихода второго импульса второй триггер переключается в состояние 1, а первый – в состояние 0 (код 010), потом третий и т. д. В результате подобное устройство может досчитать до 7 (код 111), поскольку 2 3 – 1 = 7. Когда на всех выходах триггеров установились единицы, говорят, что счетчик переполнен. После прихода следующего (девятого) импульса счетчик обнулится и начнется все с начала. На графиках изменение состояний триггеров происходит с некоторой задержкой t з. На третьем разряде задержка уже утроенная. Увеличивающаяся с увеличением числа разрядов задержка является недостатком счетчиков с последовательным переносом, что, несмотря на простоту, ограничивает их применение в устройствах с небольшим числом разрядов.

Классификация счётчиков

Счетчиками называют устройства для подсчёта числа поступивших на их вход импульсов (команд), запоминания и хранения результата счёта и выдачи этого результата. Основным параметром счётчика является модуль счёта(емкость) Kс. Эта величина равна числу устойчивых состояний счётчика. После поступления импульсов Kс счётчик возвращается в исходное состояние. Для двоичных счётчиков Kс = 2 m, где m – число разрядов счётчика.

Кроме Kс важными характеристиками счётчика являются максимальная частота счёта fmax и время установления tуст, которые характеризуют быстродействие счётчика.

Tуст – длительность переходного процесса переключения счётчика в новое состояние: tуст = mtтр, где m – число разрядов, а tтр – время переключения триггера.

Fmax – максимальная частота входных импульсов, при которой не происходит потери импульсов.

По типу функционирования:

– Суммирующие;

– Вычитающие;

– Реверсивные.

В суммирующем счётчике приход каждого входного импульса увеличивает результат счёта на единицу, в вычитающем – уменьшает на единицу; в реверсивных счётчиках может происходить как суммирование, так и вычитание.

По структурной организации:

– последовательными;

– параллельными;

– последовательно-параллельными.

В последовательном счётчике входной импульс подаётся только на вход первого разряда, на входы каждого последующего разряда подаётся выходной импульс предшествующего ему разряда.

В параллельном счётчике с приходом очередного счётного импульса переключение триггеров при переходе в новое состояние происходит одновременно.

Последовательно-параллельная схема включает в себя оба предыдущих варианта.

По порядку изменения состояний:

– с естественным порядком счёта;

– с произвольным порядком счёта.

По модулю счёта:

– двоичные;

– недвоичные.

Модуль счёта двоичного счётчика Kc=2, а модуль счёта недвоичного счётчика Kc= 2m, где m – число разрядов счётчика.

Суммирующий последовательный счётчик

Рис.1. Суммирующий последовательный 3х разрядный счётчик.

Триггеры данного счетчика срабатывают по заднему фронту счетного импульса. Вход старшего разряда счетчика связан с прямым выходом (Q) младшего соседнего разряда. Временная диаграмма работы такого счетчика приведена на рис.2. В начальный момент времени состояния всех триггеров равны лог.0, соответственно на их прямых выходах лог.0. Это достигается посредством кратковременного лог.0, поданного на входы асинхронной установки триггеров в лог.0. Общее состояние счетчика можно охарактеризовать двоичным числом (000). Во время счёта на входах асинхронной установки триггеров в лог.1 поддерживается лог.1. После прихода заднего фронта первого импульса 0-разряд переключается в противоположное состояние – лог.1. На входе 1-разряда появляется передний фронт счетного импульса. Состояние счетчика (001). После прихода на вход счетчика заднего фронта второго импульса 0-разряд переключается в противоположное состояние – лог.0, на входе 1-разряда появляется задний фронт счетного импульса, который переключает 1-разряд в лог.1. Общее состояние счетчика – (010). Следующий задний фронт на входе 0-разряда установит его в лог.1 (011) и т.д. Таким образом, счетчик накапливает число входных импульсов, поступающих на его вход. При поступлении 8-ми импульсов на его вход счетчик возвращается в исходное состояние (000), значит коэффициент счета (КСЧ) данного счетчика равен 8.

Рис. 2. Временная диаграмма последовательного суммирующего счетчика.

Вычитающий последовательный счётчик

Триггеры данного счетчика срабатывают по заднему фронту. Для реализации операции вычитания счетный вход старшего разряда подключается к инверсному выходу соседнего младшего разряда. Предварительно триггеры устанавливают в состояние лог.1 (111). Работу данного счетчика показывает временная диаграмма на рис. 4.

Рис. 1 Последовательный вычитающий счетчик

Рис. 2 Временная диаграмма последовательного вычитающего счетчика

Реверсивный последовательный счётчик

Для реализации реверсивного счетчика необходимо объединить функции суммирующего счетчика и функции вычитающего счетчика. Схема данного счетчика приведена на рис. 5. Для управления режимом счета служат сигналы «сумма» и «разность». Для режима суммирования «сумма»=лог.1, «0»-кратковременный лог.0; «разность»=лог.0, «1»-кратковременный лог.0. При этом элементы DD4.1 и DD4.3 разрешают подачу на тактовые входы триггеров DD1.2, DD2.1 через элементы DD5.1 и DD5.2 сигналов с прямых выходов триггеров DD1.1, DD1.2 соответственно. При этом элементы DD4.2 и DD4.4 закрыты, на их выходах присутствует лог.0, поэтому действие инверсных выходов никак не отражается на счетных входах триггеров DD1.2, DD2.1. Таким образом, реализуется операция суммирования. Для реализации операции вычитания на вход «сумма» подается лог.0, на вход «разность» лог.1. При этом элементы DD4.2, DD4.4 разрешают подачу на входы элементов DD5.1, DD5.2, а соответственно и на счетные входы триггеров DD1.2, DD2.1 сигналов с инверсных выходов триггеров DD1.1, DD1.2. При этом элементы DD4.1, DD4.3 закрыты и сигналы с прямых выходов триггеров DD1.1, DD1.2 никак не воздействуют на счетные входы триггеров DD1.2, DD2.1. Таким образом, реализуется операция вычитания.

Рис. 3 Последовательный реверсивный 3-х разрядный счетчик

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

Недостаток последовательного счетчика – при увеличении разрядности пропорционально увеличивается время установки (tуст) данного счетчика. Достоинством является простота реализации.

Рис. 3 – Реверсивный счетчик

Для счетных импульсов предусмотрены два входа: “+1” – на увеличение, “-1” – на уменьшение. Соответствующий вход (+1 или -1) подключается ко входу С. Это можно сделать схемой ИЛИ, если влепить ее перед первым триггером (выход элемента ко входу первого триггера, входы – к шинам +1 и -1). Непонятная фигня между триггерами (DD2 и DD4) называется элементом И-ИЛИ. Этот элемент составлен из двух элементов И и одного элемента ИЛИ, объединенных в одном корпусе. Сначала входные сигналы на этом элементе логически перемножаются, потом результат логически складывается.

Число входов элемента И-ИЛИ соответствует номеру разряда, т. е. если третий разряд, то три входа, четвертый – четыре и т. д. Логическая схема является двухпозиционным переключателем, управляемым прямым или инверсным выходом предыдущего триггера. При лог. 1 на прямом выходе счетчик отсчитывает импульсы с шины “+1” (если они, конечно, поступает), при лог. 1 на инверсном выходе – с шины “-1”. Элементы И (DD6.1 и DD6.2) формируют сигналы переноса. На выходе >7 сигнал формируется при коде 111 (число 7) и наличии тактового импульса на шине +1, на выходе <0 сигнал формируется при коде 000 и наличии тактового импульса на шине -1.

Все это, конечно, интересно, но красивей смотрится в микросхемном исполнении:

Рис. 4 Четырехразрядный двоичный счетчик

Вот типичный счетчик с предустановкой. СТ2 означает, что счетчик двоичный, если он десятичный, то ставится СТ10, если двоично-десятичный – СТ2/10. Входы D0 – D3 называются информационными входами и служат для записи в счетчик какого-либо двоичного состояния. Это состояние отобразится на его выходах и от него будет производится начало отсчета. Другими словами, это входы предварительной установки или просто предустановки. Вход V служит для разрешения записи кода по входам D0 – D3, или, как говорят, разрешения предустановки. Этот вход может обозначаться и другими буквами. Предварительная запись в счетчик производится при подаче сигнала разрешения записи в момент прихода импульса на вход С. Вход С тактовый. Сюда запихивают импульсы. Треугольник означает, что счетчик срабатывает по спаду импульса. Если треугольник повернут на 180 градусов, т. е. задницей к букве С, значит он срабатывает по фронту импульса. Вход R служит для обнуления счетчика, т. е. при подаче импульса на этот вход на всех выходах счетчика устанавливаются лог. 0. Вход PI называется входом переноса. Выход p называется выходом переноса. На этом выходе формируется сигнал при переполнении счетчика (когда на всех выходах устанавливаются лог. 1). Этот сигнал можно подать на вход переноса следующего счетчика. Тогда при переполнении первого счетчика второй будет переключаться в следующее состояние. Выходы 1, 2, 4, 8 просто выходы. На них формируется двоичный код, соответствующий числу поступивших на вход счетчика импульсов. Если выводы с кружочками, что бывает намного чаще, значит они инверсные, т. е. вместо лог. 1 подается лог. 0 и наоборот. Более подробно работа счетчиков совместно с другими устройствами будет рассматриваться в дальнейшем.

Параллельный суммирующий счётчик

Принцип действия данного счетчика заключается в том, что входной сигнал, содержащий счетные импульсы, подается одновременно на все разряды данного счетчика. А установкой счетчика в состояние лог.0 или лог.1 управляет схема управления. Схема данного счетчика показана на рис.6

Рис. 4 Суммирующий счетчик параллельного действия

Разряды счетчика – триггеры DD1, DD2, DD3.

Схема управления – элемент DD4.

Достоинство данного счетчика – малое время установки, не зависящее от разрядности счетчика.

Недостаток – сложность схемы при повышении разрядности счетчика.

Счетчики с параллельным переносом

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

Рис. 2 – Счетчик с параллельным переносом и графики, поясняющие его работу

С первым триггером все понятно. На вход второго триггера тактовый импульс пройдет только тогда, когда на выходе первого триггера будет лог. 1 (особенность схемы И), а на вход третьего – когда на выходах первых двух будет лог. 1 и т. д. Задержка срабатывания на третьем триггере такая же, как и на первом. Такой счетчик называется счетчиком с параллельным переносом. Как видно из схемы, с увеличением числа разрядов увеличивается число лог. элементов И, причем чем выше разряд, тем больше входов у элемента. Это является недостатком таких счетчиков.

Разработка принципиальной схемы

Формирователь импульсов

Формирователь импульсов – устройство, необходимое для устранения дребезга контактов, возникающего при замыкании механических контактов, который может привести к неправильной работе схемы.

На рисунке 9 приведены схемы формирователей импульсов от механических контактов.

Рис. 9 Формирователи импульсов от механических контактов.

Блок индикации

Для отображения результата счёта необходимо использовать светодиоды. Чтобы осуществить такой вывод информации можно воспользоваться простейшей схемой. Схема блока индикации на светодиодах приведена на рисунке 10.

Рис. 10 Блок индикации на светодиодах.

Разработка КСУ (комбинационной схемы управления)

Для реализации данного счётчика из серии ТТЛШ микросхем К555 я выбрал:

две микросхемы К555ТВ9 (2 JK-триггера с установкой)

одну микросхему К555ЛА4 (3 элемента 3И-НЕ)

две микросхемы К555ЛА3 (4 элемента 2И-НЕ)

одну микросхему К555ЛН1 (6 инверторов)

Данные микросхемы обеспечивают минимальное количество корпусов на печатной плате.

Составление структурной схемы счётчика

Структурная схема – совокупность блоков счётчика, выполняющих какую-либо функцию и обеспечивающих нормальную работу счётчика. На рисунке 7 показана структурная схема счётчика.

Рис. 7 Структурная схема счётчика

Блок управления выполняет функцию подачи сигнала и управления триггерами.

Блок счёта предназначен для изменения состояния счетчика и сохранения этого состояния.

Блок индикации выводит информацию для зрительного восприятия.

Составление функциональной схемы счётчика

Функциональная схема – внутренняя структура счётчика.

Определим оптимальное количество триггеров для недвоичного счётчика с коэффициентом счёта Кс=10.

M = log 2 (Кс) = 4.

M = 4 значит для реализации двоично-десятичного счётчика необходимо 4 триггера.

Простейшие одноразрядные счетчики импульсов

Простейшим одноразрядным счетчиком импульсов может быть JK-триггер и D-триггер, работающий в счетном режиме. Он считает входные импульсы по модулю 2-каждый импульс переключает триггер в противоположное состояние. Один триггер считает до двух, два соединенных последовательно считают до четырех, п триггеров-до 2n импульсов. Результат счета формируется в заданном коде, который может храниться в памяти счетчика или быть считанным другим устройством цифровой техники-дешифратором.

На рисунке показана схема трехразрядного двоичного счетчика импульсов, построенного на JK-триггер ax K155TB1. Смонтируйте такой счетчик на макетной панели и к прямым выходам триггеров подключите светодиодные (или транзисторные - с лампой накаливания) индикаторы, как это делали ранее. Подайте от испытательного генератора на вход С первого триггера счетчика серию импульсов с частотой следования 1 … 2 Гц и по световым сигналам индикаторов постройте графики работы счетчика.

Если в начальный момент все триггеры счетчика находились в нулевом состоянии (можно установить кнопочным выключателем SB1 «Уст.0», подавая на вход R триггеров напряжение низкого уровня), то по спаду первого же импульса (рис. 45,6) триггер DD1 переключится в единичное состояние-на его прямом выходе появится высокий уровень напряжения (рис. 45,в). Второй импульс переключит триггер DD1 в нулевое состояние, а триггер DD2-B единичное (рис. 45,г). По спаду третьего импульса триггеры DD1 и DD2 окажутся в единичном состоянии, а триггер DD3 все еще будет в нулевом. Четвертый импульс переключит первые два триггера в нулевое состояние, а третий в единичное (рис. 45,д). Восьмой импульс переключит все триггеры в нулевое состояние. По спаду девятого входного импульса начнется следующий цикл работы трехразрядного счетчика импульсов.

Изучая графики, нетрудно заметить, что каждый старший разряд счетчика отличается от младшего удвоенным числом импульсов счета. Так, период импульсов на выходе первого триггера в 2 раза больше периода входных импульсов, на выходе второго триггера - в 4 раза, на выходе третьего триггера - в 8 раз. Говоря языком цифровой техники, такой счетчик работает в весовом коде 1-2-4. Здесь под термином «вес» имеется в виду объем информации, принятой счетчиком после установки его триггеров в нулевое состояние. В устройствах и приборах цифровой техники наибольшее распространение получили четырехразрядные счетчики импульсов, работающие в весовом коде 1-2-4-8. Делители частоты считают входные импульсы до некоторого задаваемого коэффициентом счета состояния, а затем формируют сигнал переключения триггеров я нулевое состояние, вновь начинают счет входных импульсов до задаваемого коэффициента счета и т. д.

На рисунке показаны схема и графики работы делителя с коэффициентом счета 5, построенного на JK-триггерах Здесь уже знакомый вам трехразрядный двоичный счетчик дополнен логическим элементом 2Й-НЕ DD4.1, который и задает коэффициент счета 5. Происходит это так. При первых четырех входных импульсах (после установки триггеров в нулевое состояние кнопкой SB1 «Уст. 0») устройство работает как обычный двоичный счетчик импульсов. При этом на одном или обоих входах элемента DD4.1 действует низкий уровень напряжения, поэтому элемент находится в единичном состоянии.

По спаду же пятого импульса на прямом выходе первого и третьего триггеров, а значит, и на обоих входах элемента DD4.1 появляется высокий уровень напряжения, переключающий этот логический элемент а нулевое состояние. В этот момент на его выходе формируется короткий импульс низкого уровня, который через диод VD1 передается на вход R всех триггеров и переключает их в исходное нулевое состояние.

С этого момента начинается следующий цикл работы счетчика. Резистор R1 и диод VD1, введенные в этот счетчик, необходимы для того, чтобы исключить замыкание выхода элемента DD4.1 на общий провод.

Действие такого делителя частоты можете проверить, подавая на вход С первого его триггера импульсы, следующие с частотой 1… 2 Гц, и подключив к выходу триггера DD3 световой индикатор.

На практике функции счетчиков импульсов и делителей частоты выполняют специально разработанные микросхемы повышенной степени интеграции. В серии К155, например, это счетчики К155ИЕ1, К155ИЕ2, К155ИЕ4 и др.

В радиолюбительских разработках наиболее широко используют микросхемы К155ИЕ1 и К155ИЕ2. Условные графические обозначения этих микросхем-счетчиков с нумерацией их выводов показаны на рис. 47.

Микросхему К155ИЕ1 (рис. 47,а) называют декадным счетчиком импульсов, т. е. счетчиком с коэффициентом счета 10. Он содержит четыре триггера, соединенных между собой последовательно. Выход (вывод 5) микросхемы - выход ее четвертого триггера. Устанавливают все триггеры в нулевое состояние подачей напряжения высокого уровня одновременно на оба входа R (выводы 1 и 2), объединенные по схеме элемента И (условный символ «&»). Счетные импульсы, которые должны иметь низкий уровень, можно подавать на соединенные вместе входы С (выводы 8 и 9), также объединенные по И. или на один из них, если в это время на втором будет высокий уровень напряжения. При каждом десятом входном импульсе на выходе счетчик формирует равный по длительности входному импульс низкого уровня. Микросхема К155ИЕ2 (рис.48,б)

Двоично-десятичный четырехразрядный счетчик. В нем также четыре триггера, но первый из них имеет отдельные вход С1 (вывод 14) и отдельный прямой выход (вывод 12). Три других триггера соединены между собой так, что образуют делитель на 5. При соединении выхода первого триггера (вывод 12) со входом С2 (вывод 1) цепи остальных триггеров микросхема становится делителем на 10 (рис. 48, а), работающем в коде 1-2-4-8, что и символизируют цифры у выходов графического обозначения микросхемы. Для установки триггеров счетчика в нулевое состояние подают на оба входа R0 (выводы 2 и 3) напряжение высокого уровня.

Два объединенных входа R0 и четыре разделительных выхода микросхемы К155ИЕ2 позволяют без дополнительных элементов строить делители частоты с коэффициентами деления от 2 до 10. Так, например, если соединить между собой выводы 12 и 1, 9 и 2, 8 н 3 (рис. 48,6), то коэффициент счета будет 6, а при соединении выводов 12 и 1, 11,. 2 и 3 (рис. 48,в) коэффициент счета станет 8. Эта особенность микросхемы К155ИЕ2 позволяет использовать ее и как двоичный счетчик импульсов, и как делитель частоты.

Цифровой счетчик импульсов – это цифровой узел, который осуществляет счет поступающих на его вход импульсов. Результат счета формируется счетчиком в заданном коде и может храниться требуемое время. Счетчики строятся на триггерах, при этом количество импульсов, которое может подсчитать счетчик определяется из выражения N = 2 n – 1, где n – число триггеров, а минус один, потому что в цифровой технике за начало отсчета принимается 0. Счетчики бывают суммирующие, когда счет идет на увеличение, и вычитающие – счет на уменьшение. Если счетчик может переключаться в процессе работы с суммирования на вычитание и наоборот, то он называется реверсивным.