Схема\прошивка\алгоритм частотомера пром.сети 50 Гц

Что-то потеряли? Заходите, будем искать, что ж поделать...
Ответить
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

Доброго всем дня
Ищу проверенную схему и прошивку частотомера промышленной сети 50 Гц. С индикацией процента, т.е., 50.00 гц

была схема на диске на каком-то ходовом Мк, перерыл всё, не могу найти!

или проверенный алгоритм, а то голову сломал, как обеспечить такую точность (аппаратные особенности типа "кварца" и его термостабильности не учитываем пока)

у меня есть высокостабильные кварцы на 1, 4 и 10 мгц
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):проверенный алгоритм, а то голову сломал, как обеспечить такую точность (аппаратные особенности типа "кварца" и его термостабильности не учитываем пока)
Обычно на НЧ измеряется не частота, а период, и потом пересчитывается в частоту. Только брать нужно не один период, а несколько, например 50-100, измерять их длительность, ну а дальше думаю понятно
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

koyodza писал(а):
aleksandr-zh писал(а):проверенный алгоритм, а то голову сломал, как обеспечить такую точность (аппаратные особенности типа "кварца" и его термостабильности не учитываем пока)
Обычно на НЧ измеряется не частота, а период, и потом пересчитывается в частоту. Только брать нужно не один период, а несколько, например 50-100, измерять их длительность, ну а дальше думаю понятно
это я понимаю

я как думаю (как я бы сделал аппаратно):
генератор
делитель
входная цепь=ключ запуска счета
ждем 1 секунду, остановка счета
выдача на индикаторы

как аппаратно - понимаю, а вот как сделать предделители и кварц с оптимальной частотой - не могу въехать...
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):я как думаю (как я бы сделал аппаратно):
генератор
делитель
входная цепь=ключ запуска счета
ждем 1 секунду, остановка счета
выдача на индикаторы
Не совсем: насчёт "ждём 1 секунду" непонятно к чему она у Вас привязана.

Нужно измерить длительность некоторого количества периодов входной частоты. Т.е. счётчиков нужно два: один считает периоды входного сигнала до некоторого фиксированного значения N, второй счётчик (СТ2) считает количество импульсов образцового генератора f0 (тут частота нужна хотя бы 1МГц, можно и повыше). Первый счётчик при переходе, например, из состояния 0 в 1 разрешает счёт второму счётчику, при переходе из состояния N в N+1 запрещает. После чего получаем f = (f0 * N) / СТ2
Чем больше N (а соответственно и время измерения) и чем выше f0, тем выше разрешающая способность.
Преимущество метода - время измерения может быть относительно небольшим. Например, классический метод измерения числа импульсов за фиксированный интервал времени для получения разрешения в 0,01Гц требует времени измерения не менее 100 секунд.

Учтите, что длительность измерительного интервала будет меняться при изменении входной частоты. Но поскольку частота сети меняется в очень узких пределах, то это изменение будет крайне незначительным
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

спасибо
этот алгоритм я знаю

но запутался в самом алгоритме для МК

инициализация, (например, кварц на 8 мгц, предделитель на 8, жесткая установка таймера на 1)
ждем сигнал датчика. Например, в прерывании от внешнего сигнала
запуск ВЧ-счетчика
второй задействован на подсчет времени
при сигнале датчика снова в процедуре прерывания. Анализ. Преобразование и отображение на индикаторах
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

Какой именно МК хотите использовать?
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

koyodza писал(а):Какой именно МК хотите использовать?
мне был бы удобен Мега8а

PIC'и -раздарил.
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):мне был бы удобен Мега8а
PIC'и -раздарил.
Кроме меги и PIC'ов вообще-то существует масса других семейств. Ну да ладно...

Используем таймер1 для счёта длительности. Счёт периодов будем вести программно (частота низкая, это не сложно).
Настраиваем таймер в режим 0, 16-битный счёт. Входной сигнал (после преобразования в прямоугольную форму, естественно) подаём на вход захвата таймера ICP1 (можно использовать внутренний компаратор).
Разрешаем прерывания от ICF1 (в обработчике прерывания будем вести счёт их количества, это N).
При приходе первого (в измерительном цикле) прерывания ICF1 запоминаем ICR1
При приходе N+1 запоминаем ещё одно значение ICR1
Вычитая из второго первое получаем длительность (это будет ТС2 в предыдущем посте).
На возможное переполнение таймера плюём, при вычитании 16-разрядных чисел без заимствования всё станет на свои места.

Здесь есть нюансы: тактовая таймера1 (для Вашего случая - когда измеряется частота сети) должна быть 3/N МГц, чтобы не возникало переполнения таймера1. Например, если будем измерять за 50 периодов, то тактовая должна быть не выше 60кГц, желательно в диапазоне 30-60кГц. Т.е. соответствующим образом нужно настроить прескаллер таймера
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

спасибо
завтра-послезавтра займусь

по поводу иных семейств:
меняют МК или когда требует шеф\заказчик, или просто "так надо!"
когда что-то ГОРАЗДО дешевле
когда на что-то есть вкусности типа: бесплатные\дешевые средства разработки, программаторы, отладочные платы...
для домашних поделок выбирать МК с BGA - не резон :)
или оживлять импортные мега-творения без толкового даташита

а тут всё уже есть: и даташиты (даже на русском частично), и средства разработки, и компиляторы вменяемые...

но это уже халивар и не по теме :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

Кроме стоимости есть и другие характеристики. Да и стоимость у атмела тоже не очень хорошая, особенно на более крупные чипы. А на мегах8 не очень-то разгонишься делать серьёзные вещи.
У меня есть и другие причины нелюбить атмел, хотя я и выполнил несколько разработок на их базе, когда это было целесообразно по ряду причин. Однако предпочитаю использовать другие семейства, от других производителей.

Ну а гордиться наличием криво переведеных даташитов - совсем недостойное занятие.
Ладно, холивар устраивать не будем :)
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

всё, сделал. Оказалось всё намного проще :)

ps
про халиварные войны
я делаю простые (или для меня уже простые) поделки.
Еще ни разу не встречался с задачей (видимо, просто не брался), в которой не хватало "мощи" у МК.
да, были мысли: МК не справляется. Но потом оказывалось, что "высокоуровневые" привычки мешали сделать оптимальный для данной задачи алгоритм. Делал иначе и всё работает... И даже остается и память, и "мощности" :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):всё, сделал. Оказалось всё намного проще :)
Интересно. Поделитесь
aleksandr-zh писал(а):ps про халиварные войны
я делаю простые (или для меня уже простые) поделки.
Еще ни разу не встречался с задачей (видимо, просто не брался), в которой не хватало "мощи" у МК.
да, были мысли: МК не справляется. Но потом оказывалось, что "высокоуровневые" привычки мешали сделать оптимальный для данной задачи алгоритм. Делал иначе и всё работает... И даже остается и память, и "мощности" :)
Никакая оптимизация алгоритма не позволит Вам сделать на меге8 ни FAT (полнофункционально), ни USB mass storage. Да и TCP/IP полноценный тоже. Также проблематично будет измерять площадь импульса сложной формы длительностью в милисекунду, одновременно поддерживая работу пары ПИД-регуляторов и коммуникацию по трём интерфейсам. А в остальном согласен :)
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

блин
я ж написал: не приходилось иметь дела с ТАКИМИ задачами :)

прогу выложу, но как сделаю ВСЁ в железе - сейчас всё работает без внешнего формирователя
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):прогу выложу, но как сделаю ВСЁ в железе - сейчас всё работает без внешнего формирователя
Да прога мне не интересна. Мне интересен алгоритм измерения. Использовали мой, усовершенствовали его или совсем какой-то другой взяли?
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

koyodza писал(а):
aleksandr-zh писал(а):прогу выложу, но как сделаю ВСЁ в железе - сейчас всё работает без внешнего формирователя
Да прога мне не интересна. Мне интересен алгоритм измерения. Использовали мой, усовершенствовали его или совсем какой-то другой взяли?

Упрощенно так:
кварц - 4 мгц, предделитель таймера - 8
анализ одного полупериода - 10ms
(планирую сделать усреднение по 10 замерам)

инициализация таймера, портов...
ждем сигнал от датчика
сброс таймера1
ждем сигнал от датчика
читаем таймер
вывод на индикатор (через другой таймер0 организована динамическая индикация). пауза. откл этот тайтмер0
в начало
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):анализ одного полупериода - 10ms
(планирую сделать усреднение по 10 замерам)

ждем сигнал от датчика
сброс таймера1
ждем сигнал от датчика
читаем таймер
Т.е. измеряете длительность одного периода? Это плохо, джиттер фронтов будет гадить. Да и сброс таймера явно ведь программно выполняете, в обработчике прерывания? Латентность входа в прерывание (задержка) тоже колеблется. Точности 0,01Гц таким подходом не достигнуть
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

знаю. поэтому и буду делать усреднение
Собутыльник Кота
Аватара пользователя
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52

Сообщение koyodza »

aleksandr-zh писал(а):знаю. поэтому и буду делать усреднение
А почему не воспользовались алгоритмом выше? http://radiokot.ru/forum/viewtopic.php? ... 3#p1003653
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

koyodza писал(а):
aleksandr-zh писал(а):знаю. поэтому и буду делать усреднение
А почему не воспользовались алгоритмом выше? http://radiokot.ru/forum/viewtopic.php? ... 3#p1003653
не понял нюансов )) сегодня постараюсь разобраться
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

удалил свое сообщение
начинаю понимать Вашу идею
надо сохранить в режиме compare значение регистра захвата
Ответить

Вернуться в «Ищу...»