Страница 1 из 1

Не могу разобраться с исходником к апноуту на at90pwm3

Добавлено: Сб июн 06, 2009 20:58:40
mokrosoft
Здравствуйте, разрабатываю систему управления асинхронным двигателем на AT90PWM3, посмотрел апноут 494, отсюда: http://www.gaw.ru/html.cgi/txt/app/micr ... AVR494.htm , но немогу разобраться в исходниках, а в частности вот в этом месте:

while(1)
{
if (Flag_IT_timer0) /* 1 mS */
{

ADC_start_conv();
Flag_IT_timer0 = 0;

// generates speed reference steps in the software
Softcounter += 1 ;
if (Softcounter == 2500) {
Omega_ref = -320 ;
} //-128; }
if (Softcounter == 5000)
{
Omega_ref= -160 ;
}
if (Softcounter == 7500)
{
Omega_ref= 160 ;
}
if (Softcounter == 10000)
{
Omega_ref= 320 ;
Softcounter = 0 ;
}

}

if (Flag_IT_ADC)
{
// get the measured speed from the ADC
Omega_meas = read_acquisition();

// compute the stator frequency (PI controller)
// Command = mc_control_speed_16b(Omega_ref,Omega_meas);
Command = Omega_ref ; // for use in open loop

// direction management : extract sign and absolute value
if (Command > (S16)(0) ) {
direction = 0 ;
OmegaTe = Command;
}
else {
direction = 1 ;
OmegaTe = (~Command) + 1;
}

//direction = 0 ;

if ( OmegaTe > K_scal )
{
// ------------------------ V/f law --------------------------
amplitude = controlVF(OmegaTe);


Немогу понять: ведь прерывание срабатывает, каждую 1миллисекунду, и если так, то Omega_ref, будет равнятся одному из 4-х значений, которые генерятся, каждые 2,5 секунды...., и зачем тогда Omega_ref использовать при вычислении амплитуды, ведь для ее получения нам необходимо частоту вращения умножить на некую константку????

Добавлено: Ср июн 10, 2009 19:07:44
mokrosoft
Господа, ну неужели никто не может помочь, или я неправильно сформулировал вопрос?

Добавлено: Ср июн 10, 2009 21:57:46
pomidor
ни разу не специалист в этом деле, но форумов много, спросите на электрониксе, мож помогут (если не были там уже)
http://electronix.ru/forum/index.php