Зарегистрирован: Вс мар 27, 2022 09:38:17 Сообщений: 160
Рейтинг сообщения:0
Добрые день всем радилюбителям!
Вопрос такой. Нужно измерить частоту вращения вала,вал крутится медленно. Диапазон вращения всего от 60 до 250 об/мин. Я настроил Timer_1 по прерыванию и захвату. ( речь идёт от МК Atmega8 ) И могу сказать что всё отлично работает,оброты считываютя ( ИК датчик ) но, приходится использовать 32 битные типы, ( uint_32 ) а памяти и так мало. А задача простая мне нужно менять обороты вала в диапазоне вышесказанном но при этом нужно измерения пристегнуть к ШИМ,если обороты упадут чтоб МК добавил мощности и наоборот. А с помощью тех измерения у меня ну ни как не получится измерить обороты с шагом 10 об/мин. Выходит так что если пересчитывать в минуты тогда выходит 60,120,180,240... об/мин. Нужен другой метод. Прошу кто делал и знает скажите что лучше считать и как? Спасибо!
Карма: 54
Рейтинг сообщений: 637
Зарегистрирован: Вт сен 25, 2012 23:13:41 Сообщений: 4422 Откуда: г.Дзержинск Нижегородской обл.
Рейтинг сообщения:3
Существует всего два метода измерения частоты вращения: - посчитать количество оборотов в единицу времени; - посчитать количество времени за которое происходит один оборот и взять его обратное значение. Если не получается воспользоваться первым, используйте второй. Фактически он измеряет период (интервал) времени за который вал двигателя совершает один оборот. Для более точного измерения частоты/периода на валу можно разместить зубчатое колесо. Тогда частота вращения будет обратно пропорциональна количеству зубьев на колесе. Можно даже не ждать полного оборота вала.
_________________ Спасение утопающих дело рук самих утопающих.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Так может вообще энкодер присобачить, хоть советский типа ве- 178, 1тыс - 2.5 тыс.импульсов на оборот, три выхода со сдвигом. По факту можно получить 4- 10 тыс импульсов на оборот
Не - из пушки по воробьям. Чересчур. Я бы поставил на валу в торце (если есть доступ) продолговатый магнит, а рядом с ним - 2 геркона взаимно перпендикулярных. Получаем 4 импульса на оборот.
магнит и линейный датчик холла... с линейным можно будет видеть положение, как будто переменный резистор стоит, то есть, узнать некую дельту значительно раньше, чем ипульс-два на оборот
Возьмите энкодерной диск и считайте импульсы оптически. Есть механизм крепления, много видов как по количеству секторов, так и по диаметру для вала и диаметру диска.
толи я не понял всей глубины и сложности толи вы зачемто усложняете:
берем 16bit счетчик и тактируем его от таймера с периодом скажем 100uS тогда если его зачитывть и ресетить по датчику полного оборота то 60об/мин соответствует 10000 в счетчике а 250 об/мин --> 2400 если скорость снаружи задается в оборотах в минуту и мы хотим минимизировать операции деления то единажды на новую заданную скорость вычисляем нужный период в наших 100uS интервалах и получаем 16битное число которое и будем сравнивать (вычитать) с нашим измеренным счетчиком периодом, получая вектор расхождения который и сводим пид регулятором к 0.
c указанными величинами измерительное разрешение получаем не хуже 1/2400 об/мин
разрешение по управлению током скажем 1/65k c 16bit pwm (если недостаточно 1/256 на 8 битном)
ну а скорость регулирования зависит от того насколько вы в ладах с численными методами и насколько качественно вы сняли нагрузочную характеристику мотора.
не помню сколько 16bit таймеров в atmega8, если нехватает то измерительный счетчик делаем из 8бит таймера-счетчика и расширяем его 1байтным софтовым счетчиком (прерывание с одним только инкрементом статической переменной uchar запускаемое от переполнения нашего 8битного таймера-счетчика)
У меня был сделан "тахометр", точнее- счётчик ходов в минуту поршня гидроцилиндра. Измерял от 5 до 500 (примерно) ходов в минуту. А сделано было именно через измерение периода хода, и всё это, вместе с выводом на семисегментный индикатор (примерно 90~95% кода), спокойно поместилось в Тини2313..
я тоже делал тахометр с широким диапазоном, высокой точностью и быстродействием.. чтобы не прибегать к высокоразрядной арифметике, на малых оборотах измерял время между соседними сигналами, а при увеличении оборотов - через 1, 2.. до 15... (понятно, что при вычислении оборотов количество пропускаемых импульсов учитывалось) условие пропуска импульса - малый насчёт времени в аккумуляторе времени, тоже код в тини2313 влез влегкую...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
тож делал тахометр с логированием моторесурса на 89с2051 +24c65 а потом редизайнил его какраз на 2313
но я так понимаю скоро stm64 выпустят с процессорной командой тахометрирования и дело пойдет 32бита переменные для точности +-10 оборотов, ram мало у меги ...
во первых у меги 328 (ардуино) RAM = 2048 байт... этого более чем достаточно для любого тахометра... во вторых для тахометра RAM вообще не нужна )) в третьих посмотри как я сделал... опрос датчика холла на высокой частоте в прерывании таймера 8 бит с фильтром-гистерезис (чтоб показания не прыгали)... показания линейные во всем диапазоне скоростей... с кварцевой точностью... 0...8000 об/мин прекрасно работает.
- посчитать количество оборотов в единицу времени;
Вот этот метод самый простой. Инкриминируешь секунду. заряжаешь обратный отсчёт минуты. на порт подаёшь сигнал счёта. На порту прописываешь счёт при переключении с нуля на единицу без задержек delay и на индикатор. Единственное не регулирует мощность при нагрузке, но количество оборотов считает. а если надо регулировка оборотов в зависимости от нагрузки, то за основу можно взять кухонный комбайн с магнитом на валу и дросселем.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения