murmur 0 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Не стартует. К слову, ШИМ у меня сейчас пока нет, обмотки коммутируются максимальным током. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Не стартует. Попробуйте сначала коммутировать ключи с фиксированной частотой. 1 Гц например. Без всяких ADC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Попробуйте сначала коммутировать ключи с фиксированной частотой. 1 Гц например Этот этап пройден. Работает, пыхтит, греется, но крутит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Этот этап пройден. Работает, пыхтит, греется, но крутит. значит теперь смещайте угол пока не закрутится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 10 июня, 2018 Опубликовано 10 июня, 2018 (изменено) · Жалоба Поигралась с настройками - увеличила таймаут, по которому обычный режим переключается в режим с контролем ЭДС. Программа не дожидалась и сбрасывала сччетчик в ноль. И доходило до этого, в том числе, из-за отсутсвия ШИМ и инерции мотора. Сейчас заработало. Дергается, но через некоторое время раскручивается. Попробую реализовать программный ШИМ. Мда... с ШИМом он почему-то вообще не стартует, только дергается. Будем искать... значит теперь смещайте угол пока не закрутится. Это что-то вроде угла опережения зажигания? Где-то здесь задержку ставить надо? switch (commutation_step) { case (0): if(!SENSE_UVW || startup) { UH_ON; // На фазе U - ШИМ WH_OFF; // Фаза W отключена SENSE_W; // Активируем вход фазы W commutation_step = 1; // Следующий шаг TCNT0 = 0; // Обнуляем счетчик T0 } break; case (1): if(SENSE_UVW || startup) { VL_OFF; // На фазе V - лог. 0 WL_ON; // На Фазе W - лог. 1 SENSE_V; // Активируем вход фазы V commutation_step = 2; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (2): if(!SENSE_UVW || startup) { UH_OFF; // Фаза U отключена VH_ON; // На фазе V - ШИМ SENSE_U; // Активируем вход фазы U commutation_step = 3; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (3): if(SENSE_UVW || startup) { UL_ON; // На фазе U - лог. 1 WL_OFF; // На Фаза W - лог. 0 SENSE_W; // Активируем вход фазы W commutation_step = 4; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (4): if(!SENSE_UVW || startup) { VH_OFF; // Фаза V отключена WH_ON; // На фазе W - ШИМ SENSE_V; // Активируем вход фазы V commutation_step = 5; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (5): if(SENSE_UVW || startup) { UL_OFF; // На фазе U - лог. 0 VL_ON; // На Фазе V - лог. 1 SENSE_U; // Активируем вход фазы U commutation_step = 0; TCNT0 = 0; // Обнуляем счетчик T0 } break; } Изменено 10 июня, 2018 пользователем murmur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Все пока хорошо, но вот почему то запускается двигатель с дерганьем. Непредсказуемым по времени. Поможешь рукой - крутится. Посмотрела на управляющие импульсы на фазах - они какие-то неодинаковые по ширине. Что-то мне подсказывает, что сигнал обратной ЭДС кривой. Посмотрите на эту ЭКГ - что с ней не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба С ней всё не так. Вообще непонятно, что это: может, и вправду ЭКГ подопытного мышонка из ближайшей биолаборатории? Ни шкал, ни легенды, ни пояснений... Ток? ЭДС? Где снято, при каких условиях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
варп 22 11 июня, 2018 Опубликовано 11 июня, 2018 (изменено) · Жалоба .... но вот почему то запускается двигатель с дерганьем. Непредсказуемым по времени. ...именно в этом главный недостаток работы по сигналу ЭДС (в отличие от Холлов)... Ведь вот что происходит - при старте, вращение отсутствует, и сигнала ЭДС нет ВООБЩЕ..., а для уверенного старта, контроллер должен точно знать в каком положении ротор в ДАННЫЙ момент, чтобы подключить нужные фазы... А информации о положении ротора у контроллера нет... Вот контроллер и подключает СЛУЧАЙНЫМ образом фазы (или перебирает по очереди все шесть возможных комбинаций..., не знаю, как там реально программно организовано...), чтобы хоть как то заставить ротор вращаться и выдать сигнал ЭДС (очень слабый при старте, надо отметить...) и только потом станет ясно, в каком положении ротор, и в нужную ли сторону вращается... Изменено 11 июня, 2018 пользователем варп Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 11 июня, 2018 Опубликовано 11 июня, 2018 · Жалоба Это что-то вроде угла опережения зажигания? Управление вашим двигателем сводится к одной простой вещи: "держать магнитное поле статора к магнитному полю ротора под 90 градусов!" И всё будет ок. Под +90 или под -90 - в зависимости от требуемого направления вращения. А значит: нужно знать угловое положение м.поля статора и м.поля ротора. Для формирования поля статора у Вас есть ключи (грубое задание углового положения поля, с большой дискретностью - просто коммутацией; и более точное - с помощью ШИМ). А для того, чтобы определить положение ротора (и его магнитного поля), используют датчики угла разных типов (д.Холла, ресольверы, синус-косинусные датчики, энкодеры и т.п.). Также в самых дешёвых случаях используют бездатчиковое определение: по ЭДС на неиспользуемых обмотках. Естественно это и самый плохой случай. О недостатках полно инфы в инете. Например хотя-бы то, что не завращав ротор (а без вращения не получить эту самую ЭДС) не получить и показаний угла. Да и на малых скоростях ЭДС мала и определять угол по ней сложно. Наилучшие варианты: ресольвер или синус-косинусный датчик. Но дорого и громоздко. Вот измерили Вы угловое положение поля ротора и можете задать угловое положение поля статора, но остаётся вопрос: каков угол между началом координат (точкой 0 градусов) статора и началом координат ротора? А они естественно обычно не совпадают. А чтобы выставить поле под 90 градусов эту угловую разницу нужно знать. Обычно её измеряют. Или задают конструктивно. Ну или в крайнем случае грубо можно определить методом тыка. Вот про этот угол (угловую разницу) я и говорю. Обычно, когда я неверно выставлю этот угол, то у меня как раз такая картина и наблюдается: моторчик гудит, свистит, но не едет. Это если заданная угловая разница далека от истинной. Если ошибка не очень большая, то едет, но с гораздо бОльшим током по обмоткам (греется). Примерно так. в отличие от Холлов Не вводите в заблуждение! д.Холла - это всего лишь частный случай датчиков положения ротора. Не самый лучший кстати. Их много разных бывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 11 июня, 2018 Опубликовано 11 июня, 2018 · Жалоба Примерно так. Вообще-то есть способы определения угла поворота ротора с помощью измерения напряжений даже в статическом состоянии. Они описаны в апнотах у TI, Microchip, ST и прочих Обратная ЭДС достаточная для синхронизации в модельных моторчиках возникает уже со второго импульса. Надо только применять не компаратор, а АЦП этак на сотню килогерц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 11 июня, 2018 Опубликовано 11 июня, 2018 · Жалоба Вообще-то есть способы определения угла поворота ротора с помощью измерения напряжений даже в статическом состоянии. Они описаны в апнотах у TI, Microchip, ST и прочих Обратная ЭДС достаточная для синхронизации в модельных моторчиках возникает уже со второго импульса. Надо только применять не компаратор, а АЦП этак на сотню килогерц. Речь про это документ? SENSORLESS BLDC MOTOR CONTROL AND BEMF SAMPLING METHODS WITH ST7MC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 11 июня, 2018 Опубликовано 11 июня, 2018 · Жалоба Речь про это документ? SENSORLESS BLDC MOTOR CONTROL AND BEMF SAMPLING METHODS WITH ST7MC Нет не это. Что-то вроде этого - https://www.researchgate.net/publication/43...hless_DC_Drives Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 12 июня, 2018 Опубликовано 12 июня, 2018 · Жалоба Что-то вроде этого - https://www.researchgate.net/publication/43...hless_DC_Drives Измерять индуктивность обмоток в зависимости от углового положений ротора конечно можно, но только если нет никаких других возможностей определить начальное положение ротора. Да и калибровать надо под каждый двигатель. А в многополюсном двигателе угловая зависимость индуктивности вообще слабая очень. Гораздо проше использовать датчики холла в аналоговом режиме. Кстати, нет ли где примеров такого кода, чтобы на удержании и низких оборотах использовались холлы аналогово, а на больших оборотах- через таймера. Интересует вопрос плавного перехода из первого режима во второй и отратно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 13 июня, 2018 Опубликовано 13 июня, 2018 · Жалоба Измерять индуктивность обмоток в зависимости от углового положений ротора конечно можно, но только если нет никаких других возможностей определить начальное положение ротора. Да и калибровать надо под каждый двигатель. А в многополюсном двигателе угловая зависимость индуктивности вообще слабая очень. Гораздо проше использовать датчики холла в аналоговом режиме. Кстати, нет ли где примеров такого кода, чтобы на удержании и низких оборотах использовались холлы аналогово, а на больших оборотах- через таймера. Интересует вопрос плавного перехода из первого режима во второй и отратно. Бьюсь над похожей задачей. В моторе стоят цифровые холлы, на плате управления цифровой магнитометр, который ловит поле от дверной петли. Задача максимально плавно, бесшумно и с максимальным моментом закрывать и открывать дверь. Пока ничего лучше чем слияние Калмана не придумал, но еще не реализовал. Кстати в этом моторе 8-мь полюсов, но определение позиции ротора по индуктивности вполне четкое. Калибровка не требуется ибо определение идет по разнице. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexvu 5 13 июня, 2018 Опубликовано 13 июня, 2018 · Жалоба Не касаясь особенностей ШИМ (я в этом не профи), 1) AlexandrY про дверь (извините, если не для этой темы) - лучше переделать систему рычагов так, чтобы в начале и в конце открывания двери тоже было максимальное передаточное число, т.е. медленный поворот двери при одинаковой скорости двигателя. А в середине открывания чтоб было побыстрее. 2) про вентиляторный момент: это когда нагрузка пропорциональна квадрату скорости. В частности, при 0 скорости и нагрузка почти 0. Поэтому авиа-мотор стартует как-нибудь без нагрузки, а потом уже и ЭДС появляется. В автомобиле при 0 скорости момент максимальный, а при разгоне уменьшается. А также возможна длительная работа с низкими оборотами и большим моментом. Т.е. кое-как старт и низкие обороты нельзя реализовывать, а скорее всего, и двигатели нужны разные. И, например, может понадобиться отдельный вентилятор для охлаждения мотора на низких оборотах, когда собственная крыльчатка не вентилирует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться