реклама на сайте
подробности

 
 
> Как сделать компенсацию dead time, lpc2103
Hellper
сообщение Jun 9 2011, 12:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 13-08-07
Из: Санкт-Петербург
Пользователь №: 29 745



Есть микроконтроллер LPC2103 и необходима программа для управления 3-х фазным BLDC двигателем( драйверы ir2101 ). Требуется генерировать ШИМ сигналы один из которых инверсный по отношению к другому. Инверсный сигнал должен переходить в высокий логический уровень во время низкого на неинверсном выводе с временной задержкой начала и окончания.

Суть процесса в теме

Рисунок от пользователя mpr.

Подскажите как лучше реализовать, тк я новичек в арм-х.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
kovigor
сообщение Jun 9 2011, 15:14
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Hellper @ Jun 9 2011, 15:22) *
Подскажите как лучше реализовать, тк я новичек в арм-х.


Видел у NXP апп.ноут как раз по управлению BLDC. Например:

http://www.nxp.com/#/search/params=[q=bldc,p=1,l=en]|filters=[]


Сообщение отредактировал kovigor - Jun 9 2011, 15:15
Go to the top of the page
 
+Quote Post
Hellper
сообщение Jun 9 2011, 16:24
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 13-08-07
Из: Санкт-Петербург
Пользователь №: 29 745



судя по этому коду:
Код
__irq void T0_Isr( void )
{
    T0TC = 0;                                  // Reset timer
    
    switch ( ( IO0PIN >> 18 ) & 7 )            // read Hall sensor inputs P0.18, P0.19 and P0.20
    {            
        case 1:                              // phase 6: 001
            PWMMR1 = actualSpeed;  
            PWMMR2 = 0;
            PWMMR3 = 0;
            PWMMR4 = 0;
            PWMMR5 = 0;
            PWMMR6 = actualSpeed;
        break;
        case 2:                               // phase 4: 010
            PWMMR1 = 0;            
            PWMMR2 = actualSpeed;
            PWMMR3 = 0;
            PWMMR4 = actualSpeed;
            PWMMR5 = 0;
            PWMMR6 = 0;
        break;
        case 3:                                 // phase 5: 011
            PWMMR1 = 0;            
            PWMMR2 = actualSpeed;
            PWMMR3 = 0;
            PWMMR4 = 0;
            PWMMR5 = 0;
            PWMMR6 = actualSpeed;
        break;
        case 4:                                 // phase 2: 100
            PWMMR1 = 0;            
            PWMMR2 = 0;
            PWMMR3 = actualSpeed;
            PWMMR4 = 0;
            PWMMR5 = actualSpeed;
            PWMMR6 = 0;
        break;
        case 5:                               // phase 1: 101
            PWMMR1 = actualSpeed;       
            PWMMR2 = 0;
            PWMMR3 = 0;
            PWMMR4 = 0;
            PWMMR5 = actualSpeed;
            PWMMR6 = 0;
        break;
        case 6:                                // phase 3: 110  
            PWMMR1 = 0;
            PWMMR2 = 0;
            PWMMR3 = actualSpeed;
            PWMMR4 = actualSpeed;
            PWMMR5 = 0;
            PWMMR6 = 0;
            break;
        default:
        break;                              // invalid
    }
    
    T0IR = 0xFF;                               // reset flags
    PWMLER = 0x7F;                             // enable PWM0 - PWM6 match latch (reload)
    VICVectAddr = 0;                           // Acknowledge interrupt by reseting VIC
}

они не уделяют этому внимание.

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

как решить эту проблему ?:

или будут ?

Сообщение отредактировал Hellper - Jun 9 2011, 16:22


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016