Особенно сильно интересуют низкие обороты (пол-оборота в секунду - оборот за несколько секунд). Есть датчик угла, выдающий синусоиду средней паршивости (в плане искажений), это дело цифруется и раз десять в секунду надо бы отдавать обновления. Датчик только один (не квадратура).
Магнитные датчики со встроенной компенсацией (а ля как у AMS). Там разрешение до 14 бит и есть квадратурный выход (при известном направлении поворота можешь считать его за частотный).
а в чем именно проблема? Навскидку - брать Н отчетов и скользящим средним считать
зависит от задачи же, вас надо усреднённую скорость - тогда суммируйте за 10секунд , если моментальное - засекайте время на Н тактов
Аппаратная часть уже не поменяется) Что имеем)
Проблема в том, что выдавать обновления частоты надо чаще, чем пересекается нуль.
На малых оборотах мгновенное значение считается как-то уж больно не очень. Или тянуть последнее значение неизвестно сколько, но это тоже так себе.
а че не очень? тикнул - включил таймер, оттикакал 20 шагов - выключил таймер поделил одно на второе - вот условная скорость, чем меньше тиков - тем "мгновенние" скорость, но тем больше оно подвергнуто всяким помехам, чем больше окно, тем более плавную скорость оно даст, но с задержкой
вашего датчика
Там аналоговая синусоида. Идёт на ацп.
ну окей, говорите что измеряете за сколько оно пройдёт 180 градусов, это для большого окна с очень средней скорости, или наоборот за сколько оно пройдёт один градус, для максимально моментальной скорости
Проходить пол-оборота может долго, несколько секунд или более. А один градус определить из такого сигнала не то что бы невозможно, но мне не видится разрешимым.
почему не разрешимо? он типа шумный или что? ну возьмите 10 градусов налепите кондеев
Амплитуда плавает от частоты, среднее тоже слегка.
постройте функцию линеаризации
Не очень улавливаю, что именно линеаризовывать(
да, согласен, так не выйдет, не подумал, для это сперва частоту надо знать
а туда ну совсем-совсем нельзя влепить енкодер?
Места мало самого по себе в железке, плюс это не новая разработка, а допиливание старой, с одним датчиком. Меня бы просто квадратура устроила. Но не нету.
ладно, окей, верхушки и нули ты можешь обнаружить, считай время между верхушками и нулями
Экстремумы на синусоиде детектить не слишком прикольно.
да нормально чего уж, не в ручную, машина все считает
Да, но машина считает по алгоритму, который надо придумать) Чтоб врал поменьше.
ну если вы покажите форму сигнала то можно будет сказать надо там морочить себе голову или нет
Под рукой нет, но в принципе не сильно от синусоиды отличается. Просто пересечение нуля можно найти легко и быстро, а с экстремумом всё немного сложнее.
Чё сложнее то, тут просто вопрос у вас чистый сигнал типа такого
Небольшой уровень шума есть, численно сейчас не скажу.
за время полного оборота скорость может меняться?
Да, причем сложно угадать величину. Инертность ротора мала.
просто берёте себе окно с определёным шагом, успредняете значения и сравниваете со слудующим, если следующее меньше - значит там был пик, чем меньше окно тем точнее вы наёдете пик, но тем больше влияние помех, уточнить более точно когда именно был пик можно сравнив абсолютные значения
датчиков дополнительных никаких нет?
Сельсин что-ли используете?
Не сельсин, но выход похож, да.
А что за датчик такой? Можете сказать как тогда у вас должен определяться угол?
Мне сложно сказать, я не аппаратчик. Датчик реагирует на магнитное поле (магнит на роторе). На выходе имеем период синусоиды за оборот. Нужна скорость вращения ротора. Поскольку она часто низкая, а достаточно точно мы можем определить лишь пересечение с нулём, то обновление происходит слишком медленно. Желательно чаще в несколько раз.
А вы пробовали использовать пид регулятор для фапча?
Эм, нет, не пробовал. Есть ощущение, что запаздывание может быть великовато.
Смотря как щучить. У вас есть заданный синус, а вы регулирует либо частоту, либо фазу, а там уже ошибка по двум сигналам регулирует искомую величину
Надо читать и пробовать. Хотел найти самый простой вариант.
Если у вас сигнал по амплитуде примерно постоянен, то у вас 2 выражения есть A = am*sin(fi) Соответственно вы регулирует fi
Спасибо, подумаю в этом направлении.
В нормальных местах используют много импульсов за оборот Типичный энкодеры/резольвер 1-8 тысяч импульсов на оборот
Третья обмотка в роли датчика ) сама по себе :D BEMF
Энкодер на тысячи импульсов не подходит ни по габаритам, ни по условиям работы.
Обсуждают сегодня