контроль внешней частоты (обороьов)

Sergi65
Offline
Зарегистрирован: 30.01.2018

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

Гриша
Offline
Зарегистрирован: 27.04.2014

почитайте про энкодер

Sergi65
Offline
Зарегистрирован: 30.01.2018

Просто перевести на страницу с материалом, вопрос по существу: нужно запрограммировать Arduini uno 

1.частота 1000Гц до 2000Гц то на  выходе №1 +5вольт

2.частота 5000Гц до 30000Гц то на  выходе №2 +5вольт

и т.д.

А про энкодерное преобразование и контроль угла мне не важно. С огромным уважением Sergi65

nevkon
Offline
Зарегистрирован: 20.01.2015

Сигнал какой формы? Синус, треугольник, ступенчатый, меандр и т.д.? От этого и будет зависеть ответ.

А так яндекс найдет все. А еще можно загуглить. :) Кому что нравится.

Гриша
Offline
Зарегистрирован: 27.04.2014

nevkon, бессмысленно автору ответ нужен, а не путь решения.

Sergi65
Offline
Зарегистрирован: 30.01.2018

Сигнал синус, суть мерить период , можно по макушкам

nevkon
Offline
Зарегистрирован: 20.01.2015

Тогда вам нужно аппаратно-программное решение. В зависимости от уровня сигнала думаю нужно будет применить диодный мост (можно даже парой диодов обойтись - полуволны будет достаточно), затем если уровень сигнала превышает 5В прогнать через оптопару, затем поставить триггер Шмидта - 74HC14 или к155тл2 ну и на вход МК. Это аппаратная часть.

С программной все проще - в зависимости от требуемой отзывчивости системы есть 2 пути решения:

1. Настроить счетчик импульсов, их будет достаточно около 10. Смотрим за какое время прошли импульсы, считаем частоту. Решение требует заведение сигнала на строго определенный тип порта.

2. Берем отрезок времени в 1с (например), считаем количество прошедших импульсов, считаем частоту. Порт любой. Самый простой метод, но скорость реакции очень низкая и точность немного хромает.

Sergi65
Offline
Зарегистрирован: 30.01.2018

Да время реакции не соизмеримо большая в районе 30 сек. я проверял в протеусе на ТТЛ логике. Мне нужна программа, а уровень и вид сигнала не важен (понятие есть).

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

nevkon пишет:

Тогда вам нужно аппаратно-программное решение. В зависимости от уровня сигнала думаю нужно будет применить диодный мост (можно даже парой диодов обойтись - полуволны будет достаточно), затем если уровень сигнала превышает 5В прогнать через оптопару, затем поставить триггер Шмидта - 74HC14 или к155тл2 ну и на вход МК. Это аппаратная часть.

A Вы знаете что 328 MEGE встроен компаратор напряжения (да и не только в ней),

и зачем ваш огород 74HC или 155 и всего прочего.

 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Функция http://arduino.ru/Reference/PulseIn достаточна для поставленной задачи.

Sergi65
Offline
Зарегистрирован: 30.01.2018

Да согласен. стоящий совет. Буду пробовать если устроит точность. Спасибо!!!

Sergi65
Offline
Зарегистрирован: 30.01.2018

Пробовал на LM331 и далее комператор. большой огород получается, да и точность хромает, по температуре не проверял. Но всё равно спасибо.

nevkon
Offline
Зарегистрирован: 20.01.2015

ТС ведь не все условия указывает. У него как и у всех секретный проект. Может у него синус 1000В? Предлагаете напрямую на 328 МК подавать? Скажете делителем воспользоваться можно? Ну попробуйте - я например предпочитаю чтобы меня не било током из-за неправильно сделанной схемы.

Sergi65
Offline
Зарегистрирован: 30.01.2018

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Sergi65, что тут буксовать? Берёте стандартную библу частотометра, схема входного каскада там дана. Затем в зависимости от результата шевелить нужные ноги. Делов на полчаса вместе с пайкой всех компонентов на макетке.

Sergi65
Offline
Зарегистрирован: 30.01.2018

Спасибо. первый раз в руки контроллер взял. Буду пробовать.

nevkon
Offline
Зарегистрирован: 20.01.2015

Если как вы пишите "синус 5В", то его ни в коем случае нельзя подавать на вход МК, спалите порт.

Sergi65
Offline
Зарегистрирован: 30.01.2018

dimax. Не могу найти по вашей подсказке : Откройте из меню: Файл> Примеры> FreqCount> Serial_Output. По этому пути ничего нет

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Сначала нужно установить библиотеку https://github.com/PaulStoffregen/FreqCount/archive/master.zip

Sergi65
Offline
Зарегистрирован: 30.01.2018

Большое спасибо. вразумили!!! Но ясности не добавилось Эти библиотеки вставлять в свой проект надо? Пробовал без изменения в протеусе ругается, а в Arduino нет. Да и в библе 2 примера, тоже вопрос.

Sergi65
Offline
Зарегистрирован: 30.01.2018

Подскажите Dimax

if (count>100){
    digitalWrite (MIN, HIGH);
    }
    else
    {
    digitalWrite (MIN, LOW);}
    }
    if (count>200){
    digitalWrite (NOM, HIGH);
    }
    else
    {
    digitalWrite (NOM, LOW);}
Почему второе условие     if (count>200){ в теле цикла FreqCoint не хочет работать
С уважением 
Гриша
Offline
Зарегистрирован: 27.04.2014

трудно понять, что там вообще должно быть т.к. if (count>100) включает в себя if (count>200), та-же проблема с обоими     else

тут требуются полноценные if(a< 100){}... if(a>=101 && a < 200) {}.... if (a>=201){}

PS точно не помню, кажется в седьмом классе сын рисовал по математике нечто подобное - пересечение условий...

ЗЗЫ  Презентация по математике на тему "Круги Эйлера"(6 класс)

ЗЗЗЫ без обид, чтоб мозг работал его требуется нужным образом тренировать, многое чего из школы вспоминать...

Sergi65
Offline
Зарегистрирован: 30.01.2018

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

Гриша
Offline
Зарегистрирован: 27.04.2014

 

Sergi65 пишет:

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

Два варианта, поднять частоту проца (взять "побыстрее") или поделить частоту на входе.

ИМХО поделить на входе несколько проще, двоичный (бинарный) счетчик что-то типа 74HC393 или парочка триггеров. Если у вас сигнал  типа синуса, низ запросто режется диодом , на выходе близкое к меандру. Ну и следует учесть тайминги связанные с изменением частоты.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Гриша, там время измерения 1 сек.  Чел даже не удосужился в железе проверить.

Гриша
Offline
Зарегистрирован: 27.04.2014

dimax пишет:

Гриша, там время измерения 1 сек.

я чет вообще не понял... после поста 2 кинул это гиблое дело, а оно все еще не загнулось. Через месяц-другой дойдем до micros и его точности... может быть...

dimax пишет:

 Чел даже не удосужился в железе проверить.

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

Sergi65
Offline
Зарегистрирован: 30.01.2018

Всем привет. В железе время меня устраивает. Уставки корректно работают. Почему в протеусе тормозит, видимо  в реальном времени быстродействия проца компа не хватает, хоть показывает 75%. Особое спасибо  dimax. буду дальше разбираться с новой темой.