Полезная информация


асинхронный двигатель и контроллер

Автор Dtolok, 26 Дек. 2015 в 00:34

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Dtolok

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



Dtolok

вроде как и проблемы с напряжением нет 50в на деление -4 деления 220в

on4ip

Ну во первых, что то мне слабо верится в двигатель на 7 квт с постоянной времени 2.4 сек, скорее уж 0.24.
Во вторых почему у вас на картинке разная частота? Мне лично не фига не понятно что там и откуда. У вас двигатель на 220 вольт или 380 и какое напряжение на ДС шине?
В третьих для нормировки тока есть диапазон АЦП 4096 на полу волну приходится 2043 тогда на амплитуду тока( если у вас амплитуда 30А  0.0145А\бит, формула пересчетам напряжения на АЦП Ia=(ADC-2043)*0.0145 но как я понимаю у вас процессор не с float вычислениями тогда не понятно по какому IQ у вас идет работа.
В жизни все не так, как на самом деле.

Dtolok

напряжение 220в. по какой то причине - пока еще не выяснил - 10 битное ацп в буфер шлет значение от 32768 до - 32768 ??!! хотя я с вами согласен что должно быть 4096. датчик тока - ACS758 -050B т.е у него +-50А. все значения в МК считаются в формате 1.15 ... т.е все делится на Х/32768 а по точнее
// This is a macro used to convert a floating point value to a
// fixed point fractional value.
#define Q15(X) \
   ((X < 0.0) ? (int)(32768*(X) - 0.5) : (int)(32767*(X) + 0.5)) ;


вот это меня и вводит в ступор

Dtolok

0,9999 = 32768
-0.9999 = -32768
вот как то так... и что с этим делать? из буфера после выборок ацп ловлю значения с датчиков 1 и 2 дальше преобразование
/* get the current from ADC bufs */
                MeasCompCurr2();
                flag_IErr = 0;
                tempI1 = ADC1BUF1;
                if (ADC1BUF1 < 0) tempI1 = - ADC1BUF1;
                tempI2 = ADC1BUF2;
                if (ADC1BUF2 < 0) tempI2 = - ADC1BUF2;
                if ( tempI1 > IErr || tempI2 > IErr )
                {
//                    PTCON = 0x0000;         // Disable PWM for center aligned operation - это мой кусок
//                    LATB  = LATB & 0x03FF;
//                    flag_IErr = 1;
                }               
             
                                   
                /* Clarke and Park */                                       
                ClarkePark();
               
                /* estimate speed & angle */
                Estim();
                               
                // Calculate control values
                DoControl();


Добавлено 29 Апр 2016 в 19:20:39

вот по какому принципу идет пересчет

;  Read Channels 1 & 2 of ADC, scale them as signed fractional values
;  using qKa, qKb and put the results qIa and qIb of ParkParm.
;  Running average value of ADC-Ave is maintained and subtracted from
;  ADC value before scaling.
;
;  Specifically the offset is accumulated as a 32 bit signed integer       
;         iOffset += (ADC-Offset)
;  and is used to correct the raw ADC by
;         CorrADC = ADCBUFn - iOffset/2^16
;  which gives an offset time constant of ~ MeasurementPeriod*2^16
;
;  Do not call this routine until conversion is completed.
;
;  Scaling constant, qKa and qKb, must be set elsewhere such that
;         qIa = 2 * qKa * CorrADC1
;         qIb = 2 * qKb * CorrADC2
;  The factor of 2 is designed to allow qKa & qKb to be given in 1.15.


Добавлено 29 Апр. 2016 в 19:22

константы вот
//************** ADC Scaling **************
// Scaling constants: Determined by calibration or hardware design.

#define     dqK             Q15(0.5); //0.5
#define     dqKa            Q15(-0.5); // 0.5 means 1:1 current gain
#define     dqKb            Q15(-0.5); // 0.5 means 1:1 current gain

Dtolok

все правильно - вот формат вывода АЦП - Signed fractional (DOUT = sddd dddd dd00 0000)

Добавлено 29 Апр. 2016 в 19:32

так и есть первоначально значение в пределах 128-64 (с шумами наверное) десятичное

Dtolok

и больше всего меня смущает последняя строка
//************** PI Coefficients **************
//******** D Control Loop Coefficients *******
#define     dDqKp           Q15(0.1);
#define     dDqKi           Q15(0.01);       
#define     dDqKc           Q15(0.9999);
#define     dDqOutMax       Q15(0.7071);

//******** Q Control Loop Coefficients *******
#define     dQqKp           Q15(0.1);
#define     dQqKi           Q15(0.01);
#define     dQqKc           Q15(0.9999);
#define     dQqOutMax       Q15(0.7071);

//*** Velocity Control Loop Coefficients *****
#define     dQrefqKp        Q15(0.05);
#define     dQrefqKi        Q15(0.005);
#define     dQrefqKc        Q15(0.9999);
#define     dQrefqOutMax    Q15(0.045);        // limit to 0.24A rms (0.00023 A/bit)


как мне рассчитать свое значение dQrefqOutMax ?

Dtolok

мысль посетила - исходя из показаний осциллографа -напряжение уже достигло максимума а частота еще нет! куда копать? спасибо кто ответит...

on4ip

Если напряжение достигло максимума, то 2 варианта либо у вас очень высокий ток намагничивания и следовательно поле превышает номинальное, либо у вас двигатель такой=) и больше с него вы не получите.
Я так понял что в программе токи а относительных величинах ане в  реальных.
Позже вгляну повнимательнее.
В жизни все не так, как на самом деле.

Dtolok

скорее всего первый вариант - т.к. в ходе экспериментов у меня получилось разогнать двигатель до 1400 об с током 11а ... до этого был 20а

Dtolok

что можно сделать с напряжением? по всей видимости у меня напряжение растет до номинального значения оборотов - дальше только частота! отсюда и падение момента. может можно как то это изменить?

dimad63

у меня есть 2 двигателя они почему-то не особо крутятся быстрей 50 герц  .
пребывал от 4 разных инверторов  начинают гудеть пищать но быстрей не крутятся . почему так и не понял и во всех при попытках раскрутить задымилась смазка подшипников  сам мотор холодный  а выходной вал градусов 200-250.от сети такого эффекта нет

срываются гдето 58-60 герц

Dtolok

#462
у вас ток начинает течь через вал. значит промерял напряжение перед частотником -старт 220 - работа при росте тока 199в. дальше по проводам пошел - при старте на конденсаторах -300в при росте тока -240в???!!! может в этом вся проблема?нехватка 60В как раз и сказывается что двигатель больше не разгоняется. а кто какую шину использует для конденсаторов? я имею ввиду толщину - у меня 1мм может не достаточно?может быть недостаточно 2х конденсаторов по 4700мкФ надо добавить?

Dtolok

подключение еще одного конденсатора на 4700мкФ привело к увеличению напряжения на 15в  :-D и составляет теперь аж 260В!!! это что для того чтобы получить 300в надо еще 3 штуки поставить? это будет 6шт х 4700мкФ ???!!! насколько это правильно? может проблема в чем то другом?

on4ip

Так я вам скажу почему ВАЛ ГОРЯЧИЙ.
У вас Тр двигателя не к силу не к городу, скольжение блягодрая этому тоже а из за скольжения потери сосредоточены в роторе=) И вуаля дым из подшипников.

Добавлено 30 Апр. 2016 в 18:33

И падение напряжения какое то фантастическое.
В жизни все не так, как на самом деле.

Dtolok


Vichkins

[user]Dtolok[/user], тут только несколько вариантов, падение на диоднлм мосте, проводах, и в розетке. И еще не вы не сказали что такое 240 вольт, усреднённое напряжение или импульсами просаживается до 240. Если импульсами то кондёры говно, если среднее, то то что я в начале написал.

Dtolok

импульсов нет - просто идет планомерное уменьшение напряжения с повышением тока .... при 30А на диодном мосте при 30А - 245в правда есть небольшие пульсации когда падает до 245В. диодный мост на 100А. на входе 214В переменки

Добавлено 01 Май 2016 в 10:54:45

может еще 3 конденсатора повесить к 3м подключенным???!!! емкость каждого 4700мкФ х 400в

Добавлено 01 Май 2016 в 10:55

диодный мост MDS100-16