Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

duron
2024-02-27 02:06:23
dimich пише:

Чи не простіше обмежити швидкість зміни керуючого сигнала з потенціометра?

Хмм, цікава думка, швидка зміна обертів мені і не потрібна. Треба буде спробувати.

dimich
2024-02-27 01:54:43
dimich пише:

обмежити швидкість зміни керуючого сигнала з потенціометра

Доречі, можна спробувати обійтись і чисто хардварним рішенням - RC-ланцюжок після потенціометрів перед АЦП. Можна додати ще діод, щоб зміна "вниз" відбувалась швидше.

dimich
2024-02-27 01:48:07
duron пише:

А зрозумів, частота аналізу виходить 300 гц.

300 Гц має бути теж цілком достатньо, період в 30 разів коротше постійної часу.

duron пише:

Наприклад коли відбувається розгін, то двигун теж працює на цих же 23 амперах, але це відбувається плавно, просто лампочка на момент притухає і все.

Тобто обмежити не тільки струм, а і швидкість зростання струму. І при цьому не погіршити характеристику регулятора обертів. Майже взаємовиключні вимоги.
Чи не простіше обмежити швидкість зміни керуючого сигнала з потенціометра? Якщо показання з потенціометра збільшились, на вхід регулятора подавати не повне значення одразу, а збільшувати його поступово. По суті ФНЧ. Знайти максимальний коефіцієнт, при якому просадка ще допустима, і раз на період множити на нього початкове значення від потенціометра, поки воно не досягне кінцевого значення. Якщо там значення від 0 до 4096, частота оновлення 300 Гц, а час зміни порядку секунд, то коефіцієнт буде нецілим числом зовсім трохи більше одиниці. Але арифметикою з нерухомою крапкою це реалізувати нескладно.

duron
2024-02-26 20:33:24
dimich пише:

Я маю на увазі не частоту роботи самого АЦП, а частоту аналізу отриманного значення програмою.

А зрозумів, частота аналізу виходить 300 гц. Я маю по 2 зовнішні переривання для кожної фази, від детекторів переходу через нуль. І коли спрацьовує переривання, саме в цей момент беруться вибірки з АЦП по струмові, тахогенератору і змінних резисторів, і тут же виконується обчислення PID. До речі, частота дискретизації PID теж дорівнює 300 гц.

dimich пише:

Якщо при 23А лампочка моргає, то вже непорядок з проводкою. Або з лампочкою smile Тоді вибачте, не розумію проблему ще більше. Ви хочете обмежити швидкість обмеження струму?

Ну 23A це не мало не багато а 5кВт навантаження на мережу, а від трансформатора я знаходжусь далеко. Тому різко подавати таке навантаження в мережу не дуже добре (мої сусіди це підтвердять). Наприклад коли відбувається розгін, то двигун теж працює на цих же 23 амперах, але це відбувається плавно, просто лампочка на момент притухає і все.

dimich
2024-02-26 19:52:41
duron пише:

АЦП працює в чотирьох канальному режимі, з частотою 9мГц і DMA, в сумі виходить що кожен канал працює на частоті трохи більше ніж 2мгц, думаю цієї частоти опитування достатньо.

Я маю на увазі не частоту роботи самого АЦП, а частоту аналізу отриманного значення програмою.

duron пише:

Думаю що програмне опитування не працює тому, що в момент коли робиться вибірка, амплітуда сигналу на вході АЦП вже йде на спад, із за невеликої ємності конденсатора (100мкф) після діодного мосту. Вирішить це можна збільшенням ємності, але тоді втратиться швидкість реакції.

Постійна часу там - 100 мкФ * 1 кОм = 100 мс. Навіть при зникненні струму до нуля, через 1 мс (при частоті опитування 1 кГц) напруга зменшиться всього на 1%.

duron пише:

Виходить що двигун працює зі струмом в 5А -> змінюю оберти, відбувається різкий стрибок струму з 5А до 23А -> спрацьовує ватчдог -> струм зменшився -> знову працює регулятор з 5А. Якщо в цей момент дивитись на лампочку, то виглядає так, ніби хтось швидко клацає перемикач що вимикає світло.

Якщо при 23А лампочка моргає, то вже непорядок з проводкою. Або з лампочкою smile Тоді вибачте, не розумію проблему ще більше. Ви хочете обмежити швидкість обмеження струму?

duron
2024-02-26 16:44:33
dimich пише:

Може була недостатня частота опитування АЦП? Інших варіантів, чому би з ватчдогом працювало, а з програмним опитуванням ні, не бачу.

АЦП працює в чотирьох канальному режимі, з частотою 9мГц і DMA, в сумі виходить що кожен канал працює на частоті трохи більше ніж 2мгц, думаю цієї частоти опитування достатньо.
Думаю що програмне опитування не працює тому, що в момент коли робиться вибірка, амплітуда сигналу на вході АЦП вже йде на спад, із за невеликої ємності конденсатора (100мкф) після діодного мосту. Вирішить це можна збільшенням ємності, але тоді втратиться швидкість реакції.

dimich пише:

Змінили оберти -> струм підвищився, перевищив поріг -> спрацював ватчдог -> обмежив струм. Струм зменшився -> перемкнулись на регулятор.

Такий спосіб працює, але не дуже добре. Виходить що двигун працює зі струмом в 5А -> змінюю оберти, відбувається різкий стрибок струму з 5А до 23А -> спрацьовує ватчдог -> струм зменшився -> знову працює регулятор з 5А. Якщо в цей момент дивитись на лампочку, то виглядає так, ніби хтось швидко клацає перемикач що вимикає світло.

dimich
2024-02-26 14:23:14
duron пише:

пробував зчитувати струм просто з АЦП, і перевіряти чи перевищує він встановлений поріг, але добитись нормальної роботи не получилось, двигун стартував з більшим струмом ніж був встановлений поріг. З analog watchdog такого нема.

Може була недостатня частота опитування АЦП? Інших варіантів, чому би з ватчдогом працювало, а з програмним опитуванням ні, не бачу.

duron пише:
dimich пише:

А компоненти I і D у регулятора скидаєте в 0 при його повторному увімкненні?

Ні, при повторному увімкнені регулятора удару струму немає, як і удару після розгону. Удар струму відбувається при зміні обертів змінним резистором в процесі роботи регулятора.

Тоді не дуже зрозумів, чим не влаштував варіант з обмеженням струму і підчас роботи регулятора. Змінили оберти -> струм підвищився, перевищив поріг -> спрацював ватчдог -> обмежив струм. Струм зменшився -> перемкнулись на регулятор.
Щоб запобігти занадто частим перемиканням, на регулятор перемикатись через деякий мінімальний проміжок часу та/або після зниження струму до значення трохи меншого, ніж поріг спрацювання (гістерезис).

duron
2024-02-26 12:58:00
dimich пише:

Тобто перевищення струму при розгоні реєструється тільки по перевищенню порового значення (analog watchdog)?

Саме так, в самому першому варіанті пробував зчитувати струм просто з АЦП, і перевіряти чи перевищує він встановлений поріг, але добитись нормальної роботи не получилось, двигун стартував з більшим струмом ніж був встановлений поріг. З analog watchdog такого нема.



dimich пише:

А компоненти I і D у регулятора скидаєте в 0 при його повторному увімкненні?

Ні, при повторному увімкнені регулятора удару струму немає, як і удару після розгону. Удар струму відбувається при зміні обертів змінним резистором в процесі роботи регулятора.



dimich пише:

Нетривіальна задачка. Для детального аналізу було би цікаво подивитись графіки зміни компонент PID, виміряного струму і вихідного значення регулятора при зміні режимів. Але це, мабуть, вже занадто.

Такого робити я не вмію

dimich
2024-02-26 10:49:41
duron пише:

Схематично все зроблено так.

Ага, зчитується усереднений піковий струм, що є усереднена пікова повна потужність розділити на напругу. Постійне обмеження по цьому значенню буде еквівалентне використанню двигуна меншої потужності, хіба що потужному двигуну "легше" працювати без перевищення номінального струму.

duron пише:

коли при роботі PID регулятора струм перевищував 23А, то регулятор відмикався а замість нього знову починався розгін, а після розгону знову вмикався PID

Тобто перевищення струму при розгоні реєструється тільки по перевищенню порового значення (analog watchdog)? А компоненти I і D у регулятора скидаєте в 0 при його повторному увімкненні? Різкий удар струму може і відбуватись через накопичену інтегральну компоненту.

Нетривіальна задачка. Для детального аналізу було би цікаво подивитись графіки зміни компонент PID, виміряного струму і вихідного значення регулятора при зміні режимів. Але це, мабуть, вже занадто.

duron
2024-02-25 14:47:49
dimich пише:

А як реалізовано вимір струму?

Після АЦП ніякої обробки немає, вимір з АЦП зчитується в момент коли будь яка фаза перейшла через 0.

DSC03954.jpeg
Схематично все зроблено так.

dimich
2024-02-25 03:41:56
duron пише:

А якщо двигун буде обертатися зі струмом більше 10А, то з виходу PID регулятора буде відніматися струм.

По суті це те, що і було запропоновано вище. Обмеження струму не є задачею PID-регулятора обертів, цим має займатись ще один окремий регулятор. В якому вигляді його оптимально реалізувати: пороговий вимикач чи пропорційний регулятор - це інше питання.
Було би корисно для розуміння намалювати повну блок-схему регулювання з усіма зворотніми звʼязками. На вході: задані оберти, наявні оберти, виміряний струм; на виході - час вмикання тиристорів відносно напівперіоду (фаза).

А як реалізовано вимір струму? Є якась пост-обробка після АЦП? Зауважте, якщо струм вимірюється без врахування фази відносно напруги, то це вимір повної потужності, а просадка відбувається в основному через активну складову. Хоча з фазовим методом можуть бути нюанси.

duron
2024-02-24 22:42:46

В голову прийшло ще таке, думаю спробувати поставити на вихід PID Регулятора.


ADC_current - Вихід АЦП після трансформаторів струму, число 1240 рівне 23 амперам. 539 це струм 10А.
Out_PID - це вихід PID регулятора 0-мінімум 4095-максмум.
Константа 5.84 розрахована так, щоб при 1240(23А) на вході ацп, на виході регулятора був приблизно 0.

if(ADC_current>539)    // Якщо струм більший за 10 ампер
Out_PID=Out_PID-((ADC_current-539)*5.84);

Цей шматок коду має працювати так:
Якщо двигун обертається зі струмом до 10А то вихід PID регулятора напряму йде в регістри співпадіння таймерів.

А якщо двигун буде обертатися зі струмом більше 10А, то з виходу PID регулятора буде відніматися струм. Регулятор звісно буде намагатися компенсувати це збільшуючи похибку регулявання але при цьому ростиме і струм компенсуючи регулятор. З рештою система має плавно прийти в баланс працюючи вже на 5 амперах без різких стрибків струму.

Теоретично

duron
2024-02-24 20:16:05

Пробував схожий варіант, коли при роботі PID регулятора струм перевищував 23А, то регулятор відмикався а замість нього знову починався розгін, а після розгону знову вмикався PID, в такому варіанті працює, але тоді виходить неприємний різкий удар струму в мережі

dimich
2024-02-24 16:51:50

А, перечитав уважніше, у вас обмеження струму виконано на тих же елементах, що і регулювання обертів. Так не відмикайте його, нехай працює параллельно з регулятором, але з вищим пріорітетом. Тобто коли струм починає перевищувати задане значення, обмежувач перекриває вихід регулятора.

dimich
2024-02-24 15:47:15
duron пише:

Обмеження струму до 23А працює тільки при розгоні двигуна
...
струм при цьому під навантаженням не перевищує 5А.

Так може просто обмежити струм до 23А незалежно від PID-регулятора? І регулятор вмикати відразу, без окремого режиму розгону.
Чи струм обмежується постійним резистивним баластом?
Тоді знайти, при якому значенні на виході регулятора струм складає 23A при максимальному навантаженні (можна і розрахувати, знаючи потужність двигуна), і програмно обмежити саме вихідне значення регулятора. Якщо регулятор видає значення, що перевищує максимально допустиме, то на керуючий елемент подається саме це максимально допустиме, і не більше.

duron пише:

але лише стоїть повернути резистор для зміни обертів, як струм різко зростає

Чим початковий розгін від нуля до, скажімо, 900 обертів відрізняється від зміни зі 100 обертів до 1000? З фізичної точки зору - нічим.

duron пише:

Потрібно якось на PID регулятор вести ще зворотній зв'язок по струму.

Так вихідне значення PID-регулятора і задає струм, якщо правильно розумію схему. Там же не частотник, а ШІМ, якщо двигун колекторний.
Подавати на вхід PID-регулятора ту ж величину, якою він безпосередньо керує виходом, не бачу сенсу. Це практично рівнозначно просто зменшенню пропорційного коефіцієнта.

Підвал форуму