контроль внешней частоты (обороьов)
- Войдите на сайт для отправки комментариев
Втр, 30/01/2018 - 20:44
Кто нибудь сталкивался с задачей контоля частоты с формированием на выходе дискретного сигнала. Заранее благодарен
Кто нибудь сталкивался с задачей контоля частоты с формированием на выходе дискретного сигнала. Заранее благодарен
почитайте про энкодер
Просто перевести на страницу с материалом, вопрос по существу: нужно запрограммировать Arduini uno
1.частота 1000Гц до 2000Гц то на выходе №1 +5вольт
2.частота 5000Гц до 30000Гц то на выходе №2 +5вольт
и т.д.
А про энкодерное преобразование и контроль угла мне не важно. С огромным уважением Sergi65
Сигнал какой формы? Синус, треугольник, ступенчатый, меандр и т.д.? От этого и будет зависеть ответ.
А так яндекс найдет все. А еще можно загуглить. :) Кому что нравится.
nevkon, бессмысленно автору ответ нужен, а не путь решения.
Сигнал синус, суть мерить период , можно по макушкам
Тогда вам нужно аппаратно-программное решение. В зависимости от уровня сигнала думаю нужно будет применить диодный мост (можно даже парой диодов обойтись - полуволны будет достаточно), затем если уровень сигнала превышает 5В прогнать через оптопару, затем поставить триггер Шмидта - 74HC14 или к155тл2 ну и на вход МК. Это аппаратная часть.
С программной все проще - в зависимости от требуемой отзывчивости системы есть 2 пути решения:
1. Настроить счетчик импульсов, их будет достаточно около 10. Смотрим за какое время прошли импульсы, считаем частоту. Решение требует заведение сигнала на строго определенный тип порта.
2. Берем отрезок времени в 1с (например), считаем количество прошедших импульсов, считаем частоту. Порт любой. Самый простой метод, но скорость реакции очень низкая и точность немного хромает.
Да время реакции не соизмеримо большая в районе 30 сек. я проверял в протеусе на ТТЛ логике. Мне нужна программа, а уровень и вид сигнала не важен (понятие есть).
Тогда вам нужно аппаратно-программное решение. В зависимости от уровня сигнала думаю нужно будет применить диодный мост (можно даже парой диодов обойтись - полуволны будет достаточно), затем если уровень сигнала превышает 5В прогнать через оптопару, затем поставить триггер Шмидта - 74HC14 или к155тл2 ну и на вход МК. Это аппаратная часть.
A Вы знаете что 328 MEGE встроен компаратор напряжения (да и не только в ней),
и зачем ваш огород 74HC или 155 и всего прочего.
Функция http://arduino.ru/Reference/PulseIn достаточна для поставленной задачи.
Да согласен. стоящий совет. Буду пробовать если устроит точность. Спасибо!!!
Пробовал на LM331 и далее комператор. большой огород получается, да и точность хромает, по температуре не проверял. Но всё равно спасибо.
ТС ведь не все условия указывает. У него как и у всех секретный проект. Может у него синус 1000В? Предлагаете напрямую на 328 МК подавать? Скажете делителем воспользоваться можно? Ну попробуйте - я например предпочитаю чтобы меня не било током из-за неправильно сделанной схемы.
Дело в том чно уровень сигнала для меня не принципиально. Допустим синус 5вольт. для частоты эксперимента. Программа вопрос. Я вней сильно буксую. Кто может помочь буду весьма признателен.
Sergi65, что тут буксовать? Берёте стандартную библу частотометра, схема входного каскада там дана. Затем в зависимости от результата шевелить нужные ноги. Делов на полчаса вместе с пайкой всех компонентов на макетке.
Спасибо. первый раз в руки контроллер взял. Буду пробовать.
Если как вы пишите "синус 5В", то его ни в коем случае нельзя подавать на вход МК, спалите порт.
dimax. Не могу найти по вашей подсказке : Откройте из меню: Файл> Примеры> FreqCount> Serial_Output. По этому пути ничего нет
Сначала нужно установить библиотеку https://github.com/PaulStoffregen/FreqCount/archive/master.zip
Большое спасибо. вразумили!!! Но ясности не добавилось Эти библиотеки вставлять в свой проект надо? Пробовал без изменения в протеусе ругается, а в Arduino нет. Да и в библе 2 примера, тоже вопрос.
Подскажите Dimax
трудно понять, что там вообще должно быть т.к. if (count>100) включает в себя if (count>200), та-же проблема с обоими else
тут требуются полноценные if(a< 100){}... if(a>=101 && a < 200) {}.... if (a>=201){}
PS точно не помню, кажется в седьмом классе сын рисовал по математике нечто подобное - пересечение условий...
ЗЗЫ Презентация по математике на тему "Круги Эйлера"(6 класс)
ЗЗЗЫ без обид, чтоб мозг работал его требуется нужным образом тренировать, многое чего из школы вспоминать...
Пусть это код оленя. Но я с ним худо бедно разобрался, Вопрос включения выхода по времени 15 сек в протеусе, в железе ещё не пробовал. Что подскажите, может в другой функции контроль частоты по быстрее.
Что подскажите, может в другой функции контроль частоты по быстрее.
Два варианта, поднять частоту проца (взять "побыстрее") или поделить частоту на входе.
ИМХО поделить на входе несколько проще, двоичный (бинарный) счетчик что-то типа 74HC393 или парочка триггеров. Если у вас сигнал типа синуса, низ запросто режется диодом , на выходе близкое к меандру. Ну и следует учесть тайминги связанные с изменением частоты.
Гриша, там время измерения 1 сек. Чел даже не удосужился в железе проверить.
Гриша, там время измерения 1 сек.
я чет вообще не понял... после поста 2 кинул это гиблое дело, а оно все еще не загнулось. Через месяц-другой дойдем до micros и его точности... может быть...
Чел даже не удосужился в железе проверить.
я так понял, он еще учится. Вот и пусть, а после поста 22, как я думаю, не все еще потеряно...
Всем привет. В железе время меня устраивает. Уставки корректно работают. Почему в протеусе тормозит, видимо в реальном времени быстродействия проца компа не хватает, хоть показывает 75%. Особое спасибо dimax. буду дальше разбираться с новой темой.