нужна помощь для простого низкоскоростного частотомера

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
zvyagaaa
Встал на лапы
Сообщения: 111
Зарегистрирован: Пт янв 01, 2010 07:49:31
Откуда: Барнаул-Новокузнецк
Контактная информация:

нужна помощь для простого низкоскоростного частотомера

Сообщение zvyagaaa »

Сразу хочу предупредить, что в программировании МК - я полный ноль (надеюсь, что только пока), всю обучалку я сделал на ATtiny, но мозгов для самостоятельной работы пока нету. Поэтому и прошу помощи.
В общем, хочу сделать что-то вроде частотомера/тахометра низкочастотного, т.е. интересуют частоты импульсов до 50Гц. Что я имею в виду. На входе мы имеем на двух каналах импульсы с амплитудой около 5 В, и частотой 0-50Гц. Нужно по достижению определенных частот зажигать в определенном порядке по три диода на канал. К примеру, достигла частота от 1 до 10Гц - зажечь один светодиод, от 10 до 15 Гц - другой, от 15 до 23 - первый и второй диод... ну и так далее.
Примерно я понимаю, как сделать такой алгоритм, и на дельфи я аналог писал - там просто:
я завел счетчик в который пишу когда импульс пришел - и по таймеру я сравниваю с теми числами, которые нас интересуют, зажигаю нужные светики и обнуляю счетчик.

Код: Выделить всё

case lcounter of
    1 .. 10:
      begin
        lColor := 1
     end;
    10 .. 15:
      begin
        lColor := 2
      end;
    15 .. 23:
      begin
        lColor := 1+2;
      end;
Здесь я так понимаю, что надо делать то же самое. В наличии есть атмеговский микроконтроллер 90S2313. Помогите реализовать алгоритм.
теплый ламповый кот
Реклама
Аватара пользователя
Pavel V.
Мявтор!
Сообщения: 384
Зарегистрирован: Ср май 17, 2006 18:39:01
Откуда: Москва
Контактная информация:

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение Pavel V. »

Есть несколько методов измерения частоты. Вот два из них:

1. Используем таймер в режиме захвата, в этом случае в прерывании по входящему импульсу считывается значение таймера - по разности двух соседних величин можно вычислить частоту.

2. Подсчитываем кол-во импульсов за единицу времени. Для этого можно использовать внешнее прерывание.

Поищи в сети проекты разных тахометров - это как раз то что нужно.
Реклама
Аватара пользователя
zvyagaaa
Встал на лапы
Сообщения: 111
Зарегистрирован: Пт янв 01, 2010 07:49:31
Откуда: Барнаул-Новокузнецк
Контактная информация:

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение zvyagaaa »

я думаю, что второй вариант мне больше пойдет, в сети я видел реализации, но сложные для понимания, вот если бы кто объяснил бы с примерами кода, вот было бы классно.
теплый ламповый кот
Аватара пользователя
SERJ
Мудрый кот
Сообщения: 1815
Зарегистрирован: Пн янв 12, 2009 01:59:20
Откуда: Россия.

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение SERJ »

zvyagaaa писал(а):я думаю, что второй вариант мне больше пойдет
Для измерения очень низких частот, как в Вашем случае удобнее измерять период, а не частоту, т.е. использовать первый вариант.
При втором варианте будет очень большое время измерения в Вашем случае.
Второй вариант удобен только для измерения довольно высоких частот.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
zvyagaaa
Встал на лапы
Сообщения: 111
Зарегистрирован: Пт янв 01, 2010 07:49:31
Откуда: Барнаул-Новокузнецк
Контактная информация:

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение zvyagaaa »

Для измерения очень низких частот, как в Вашем случае удобнее измерять период, а не частоту, т.е. использовать первый вариант.
почему? ведь второй вариант как работает - если мы поставим скажем период таймера = 1 сек, то количество тиков за эту секунду и будет искомая частота, а как измерять период? Я так понимаю, что мы должны тогда считать например 100 тиков, и замерять время, за которое они насчитаются, потом будет операция деления, так?
теплый ламповый кот
Реклама
Аватара пользователя
zvyagaaa
Встал на лапы
Сообщения: 111
Зарегистрирован: Пт янв 01, 2010 07:49:31
Откуда: Барнаул-Новокузнецк
Контактная информация:

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение zvyagaaa »

Коты, профессионалы, ну помогите начать. Ну нашел я тахометр на аттини - но когда смотрю на исходник целый - то пока что не пойму откуда, что и куда, выручайте. Сердцем чую, что задача для соображающих плёвая.
теплый ламповый кот
Реклама
akl
Друг Кота
Сообщения: 4447
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение akl »

Здравствуйте. Может это подойдет.
http://radiokot.ru/forum/viewtopic.php?p=193610#p193610
Аватара пользователя
Pavel V.
Мявтор!
Сообщения: 384
Зарегистрирован: Ср май 17, 2006 18:39:01
Откуда: Москва
Контактная информация:

Re: нужна помощь для простого низкоскоростного частотомера

Сообщение Pavel V. »

Я уже давно с AVR не работал, поэтому ничего конкретного подсказать не могу.

Общий алгоритм такой:

1. Настраиваем таймер таким образом, чтобы он переполнялся примерно за 1 с (вроде бы есть у АВРов 16-битный таймер?). Это будет соответствовать минимальной измеряемой частоте 1 Гц (можно и расширить при необходимости, обрабатывая переполнение таймера и инкрементируя глобальную переменную).
2. Включаем прерывание при появлении фронта импульса на ножке таймера.
3. В прерывании считываем значение таймера и вычисляем разность с результатом предыдущего захвата.
4. Вычисляем частоту в зависимости от настроек таймера из п.1.

За конкретными примерами надо к местным AVR-специалистам обращаться, например, к ARV.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»