Она у на работе, в понедельник поделюсь. Схемка очень простая) Долго не мог подобрать транзисторы, одни сразу горели, вторые через пару минут под нагрузкой. Остановился на IRF640B, в понедельник выложу, будет все понятно.
Нарастание оборотов очень медленное пришлось изменить с 1000 на 1, и как только не игрался с параметрами, не хочет крутится постоянно. Только дергается.
А вы минимальные значени ШИМ для старта установили? Какое? С 1000 на 1 это слишком круто, все равно что и без плавного пуска, попробуйте 500, меньше 300 не советую, лучше увеличте минимальные значени ШИМ для старта т.е. сначала он будет быстро раскручиваться, а потом медленно. Как раз первая причина того, что дергается это резкий старт.
1.Обязательно добейтесь плавного нарастания оборотов, иначе никак.
2.Далее нужно настроить пропорциональную составляющую, для этого нужно отключить интегральную - Ki = 0.0 . При отключенной интегр. составляющей добейтесь стабильной работы двигателя не обращая внимания на статическую ошибку. Если двигатель дергается значит Kp сликом большой, уменьшайте его, пробуйте 0.1, 0.07, 0.04, 0.01, 0.007, 0.004, 0.001 и т.д., но пока двигатель не начнет стабильно работать дальше настраивать нет смысла.
Отпишитесь какие установили значения: заданные обороты, минимальные значени ШИМ для старта, время нарастания ШИМ и Кр.
Наврядли дело в ардуине. Просто я проверяю на небольшом двигателе и задаю средние обороты. Вы, кстати, так и не отписались какие обороты хотите поддерживать?
Минимальные гдето 800-1000. Дома на месте проверяю тоже на маленьком двигателе. Еще хочу попробовать на оптическом датчике, думаю как к двигателю его прикрутить.
Сейчас добился пока того что, пока обороты не достигли заданых (регулирую напряжение двигателя) крутится равномерно, как только доходит до заданого значения (1000), начинает дергатся
У меня получается такое:
RPM = 1525 PWM = 255 P = 0 I = 396
RPM = 1527 PWM = 255 P = 0 I = 396
RPM = 1527 PWM = 255 P = 0 I = 396
RPM = 1526 PWM = 255 P = 0 I = 343
RPM = 1528 PWM = 255 P = 0 I = 343
RPM = 1529 PWM = 255 P = 0 I = 343
RPM = 1528 PWM = 255 P = 0 I = 290
RPM = 1527 PWM = 255 P = 0 I = 290
RPM = 1525 PWM = 255 P = 0 I = 290
RPM = 1522 PWM = 237 P = 0 I = 237
RPM = 1522 PWM = 237 P = 0 I = 237
RPM = 9881 PWM = 237 P = 0 I = 237
RPM = 7396 PWM = 0 P = 0 I = 0
RPM = 2764 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 1030 PWM = 0 P = 0 I = 0
RPM = 0 PWM = 200 P = 200 I = 0
RPM = 106 PWM = 255 P = 200 I = 100
RPM = 7132 PWM = 100 P = 0 I = 100
RPM = 4921 PWM = 100 P = 0 I = 100
RPM = 4217 PWM = 0 P = 0 I = 0
постоянно дергается.
Завтра попробую с библиотекой PID http://arduino.cc/playground/Code/PIDLibrary
Значит не правильно подобраны параметры регулирования
Попробую уже завтра покрутить параметры.
а как выглядит управление двигателем?
И если будете использовать мой код ПИ-ругулятора, перекопируйте его снова, я там внес изменения.
Управление двигателем, после arduinы стоит драйвер ir2110 и 9 шт IRF640
Управление двигателем, после arduinы стоит драйвер ir2110 и 9 шт IRF640
схемкой не поделитесь?
Она у на работе, в понедельник поделюсь. Схемка очень простая) Долго не мог подобрать транзисторы, одни сразу горели, вторые через пару минут под нагрузкой. Остановился на IRF640B, в понедельник выложу, будет все понятно.
Вам спасибо за помощь.
Дописал плавный пуск и начальную компансацию статической ошибки.
Чтобы получить минимальное значение ШИМ для старта, можно использовать код:
При каком значении начнет вращаться двигатель, то значение и есть минимальное.
Установите его в 21 и 22 строки и подберите время нарастания значения ШИМ в 26 строке, чтобы двигатель запускался плано.
RPM = 0
RPM = 762
RPM = 1221
RPM = 1458
RPM = 1649
RPM = 1835
RPM = 2028
RPM = 2231
RPM = 2439
RPM = 2654
RPM = 2855
RPM = 3029
NORM = 37
RPM = 3030 PWM = 33 P = 34 I = -1
RPM = 3013 PWM = 33 P = 34 I = -1
RPM = 2992 PWM = 35 P = 36 I = -1
RPM = 2986 PWM = 38 P = 38 I = 0
RPM = 2994 PWM = 37 P = 37 I = 0
RPM = 3010 PWM = 36 P = 36 I = 0
RPM = 3019 PWM = 35 P = 35 I = 0
RPM = 3017 PWM = 35 P = 35 I = 0
RPM = 3012 PWM = 35 P = 35 I = 0
RPM = 3007 PWM = 36 P = 36 I = 0
RPM = 3009 PWM = 36 P = 36 I = 0
RPM = 3013 PWM = 35 P = 35 I = 0
RPM = 3011 PWM = 35 P = 35 I = 0
RPM = 3006 PWM = 36 P = 36 I = 0
RPM = 3006 PWM = 36 P = 36 I = 0
Загрузил програмку, но что то у меня никак.
Нарастание оборотов очень медленное пришлось изменить с 1000 на 1, и как только не игрался с параметрами, не хочет крутится постоянно. Только дергается.
А вы минимальные значени ШИМ для старта установили? Какое? С 1000 на 1 это слишком круто, все равно что и без плавного пуска, попробуйте 500, меньше 300 не советую, лучше увеличте минимальные значени ШИМ для старта т.е. сначала он будет быстро раскручиваться, а потом медленно. Как раз первая причина того, что дергается это резкий старт.
1.Обязательно добейтесь плавного нарастания оборотов, иначе никак.
2.Далее нужно настроить пропорциональную составляющую, для этого нужно отключить интегральную - Ki = 0.0 . При отключенной интегр. составляющей добейтесь стабильной работы двигателя не обращая внимания на статическую ошибку. Если двигатель дергается значит Kp сликом большой, уменьшайте его, пробуйте 0.1, 0.07, 0.04, 0.01, 0.007, 0.004, 0.001 и т.д., но пока двигатель не начнет стабильно работать дальше настраивать нет смысла.
Отпишитесь какие установили значения: заданные обороты, минимальные значени ШИМ для старта, время нарастания ШИМ и Кр.
Вот попробовал с библиотекой PID :
Сириал:
Как у вас все красиво.) А у меня что то ни как. Может связано с arduino-й.?
Наврядли дело в ардуине. Просто я проверяю на небольшом двигателе и задаю средние обороты. Вы, кстати, так и не отписались какие обороты хотите поддерживать?
Минимальные гдето 800-1000. Дома на месте проверяю тоже на маленьком двигателе. Еще хочу попробовать на оптическом датчике, думаю как к двигателю его прикрутить.
А чем датчик холла не устраивает?
Вроде бы устраивает, и понадежнее чем оптический.
Я кстати, там где скачал библиотеку PID, видил библиотеку для автоматической настройки этого регулятора. Пробовали?
Нет, не видел. Есть что то интересное?
github.com/br3ttb/Arduino-PID-AutoTune-Library/zipball/master
Сейчас добился пока того что, пока обороты не достигли заданых (регулирую напряжение двигателя) крутится равномерно, как только доходит до заданого значения (1000), начинает дергатся
Какие параметры Kp, Ki, Kd?
0.3 0.3 0.06 При разных Kp Ki, изменений не замечал.
И если будете использовать мой код ПИ-ругулятора, перекопируйте его снова, я там внес изменения.
здравствуйте!
у меня похожая проблема. нужен код или библиотека ПИ, ПД, или ПИД регулятора, с обратной связью по импульсному сигналу от датчика Холла.
не могли бы вы поделится своим кодом ПИ регулятора?
Код в сообщении #63, библиотеку качать отсюда.
Код в сообщении #63, библиотеку качать отсюда.
спасибо! буду разбираться.
при установке библиотеки PID:
А как код ПИ регулятора переделать, если у меня датчик выдает 60 импульсов за один оборот вала?