BLMC Bldc Запуск трёхфазных без колекторных двигателей и HDD

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
sa-ta
Это не хвост, это антенна
Сообщения: 1413
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение sa-ta »

Krot писал(а):
http://www.jetcontrol.de/Bastelstube/Monster.html

Это финальная версия, или где-то кто-то доработал?

ну это, то , что есть.

я выкладывал п. платки реально работающих контроллеров.
появилось еще мнение, что имеет смысл уменьшить частоту внутреннего генератора меги до 4МГц.

первоисточником инфы для меня была линка - http://cncmasterkit.ru/viewtopic.php?f=8&t=785
Krot
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 06, 2011 16:14:00

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение Krot »

Просто хочу заказать человеку на форуме плату, с возможностью заказывать остальным.
sa-ta
Это не хвост, это антенна
Сообщения: 1413
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение sa-ta »

Krot писал(а):Просто хочу заказать человеку на форуме плату, с возможностью заказывать остальным.

я конечно понимаю, что лень родилась раньше вас...но, все же http://www.radiokot.ru/forum/viewtopic. ... 3#p1626143
Krot
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 06, 2011 16:14:00

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение Krot »

Вот я дурень, незаметил вторую страничку спринт лаута, спасибо что носом ткнули.
Всегда на мелочах горю :oops: .
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение yron »

Всем привет, я вот пытаюсь переделать вот этот исходник
Спойлер

Код: Выделить всё

#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/twi.h>

//Motoradresse
#define MOTOR_ADR 0x70

//PHASE1 (U)
#define UH_DDR   DDRB |= (1<<3);
#define UH_ON   TCCR2A |= (1<<COM2A1);
#define UH_OFF   TCCR2A &= ~(1<<COM2A1);

//PHASE1 (U)
#define UL_DDR   DDRB |= (1<<1);
#define UL_ON   PORTB |= (1<<1);
#define UL_OFF   PORTB &= ~(1<<1);


//PHASE2 (V)
#define VH_DDR   DDRD |= (1<<5);
#define VH_ON   TCCR0A |= (1<<COM0B1);
#define VH_OFF   TCCR0A &= ~(1<<COM0B1);

//PHASE2 (V)
#define VL_DDR   DDRB |= (1<<2);
#define VL_ON   PORTB |= (1<<2);
#define VL_OFF   PORTB &= ~(1<<2);


//PHASE3 (W)
#define WH_DDR   DDRD |= (1<<3);
#define WH_ON   TCCR2A |= (1<<COM2B1);
#define WH_OFF   TCCR2A &= ~(1<<COM2B1);

//PHASE3 (W)
#define WL_DDR   DDRC |= (1<<3);
#define WL_ON   PORTC |= (1<<3);
#define WL_OFF   PORTC &= ~(1<<3);


#define PHASE_ALL_OFF   UH_OFF;UL_OFF;VH_OFF;VL_OFF;WH_OFF;WL_OFF;

#define SENSE_U      ADMUX = 0;
#define SENSE_V      ADMUX = 1;
#define SENSE_W      ADMUX = 2;

#define SENSE_H      (ACSR&(1<<ACO))

#define START_PWM   5

volatile unsigned long i2c_timeout = 0;
volatile unsigned char rx_pwm = 0;
volatile unsigned char rotor_state = 0;
volatile unsigned char rotor_run = 0;

//############################################################################
void next_commutate_state (unsigned char startup)
//############################################################################
{
   switch (rotor_state)
   {
      case (0):
         if(!SENSE_H || startup)
         {
            WH_OFF;
            UH_ON;
            SENSE_W;
            rotor_state = 1;
            TCNT1 = 1;
         }
         break;

      case (1):
         if(SENSE_H || startup)
         {
            VL_OFF;
            WL_ON;
            SENSE_V;
            rotor_state = 2;
            TCNT1 = 1;
         }
         break;

      case (2):
         if(!SENSE_H || startup)
         {
            UH_OFF;
            VH_ON;
            SENSE_U;
            rotor_state = 3;
            TCNT1 = 1;
         }
         break;
   
      case (3):
         if(SENSE_H || startup)
         {
            WL_OFF;
            UL_ON;
            SENSE_W;
            rotor_state = 4;
            TCNT1 = 1;
         }
         break;

      case (4):
         if(!SENSE_H || startup)
         {
            VH_OFF;
            WH_ON;
            SENSE_V;
            rotor_state = 5;
            TCNT1 = 1;
         }
         break;

      case (5):
         if(SENSE_H || startup)
         {
            UL_OFF;
            VL_ON;
            SENSE_U;
            rotor_state = 0;
            TCNT1 = 1;
         }
         break;
   }
}

//############################################################################
//back EMF zero crossing detection
ISR (ANALOG_COMP_vect)
//############################################################################
{
   if(rotor_run == 200) next_commutate_state (0);
   
   rotor_run++;
   if(rotor_run > 200)
   {
      rotor_run = 200;
   }
}

//############################################################################
ISR (TIMER1_OVF_vect)
//############################################################################
{   
   next_commutate_state (1);
   rotor_run = 0;
   OCR2A = START_PWM;
   OCR2B = START_PWM;
   OCR0B = START_PWM;
}

//############################################################################
ISR (TWI_vect)
//############################################################################
{   
   switch (TWSR & 0xF8) //TW_STATUS
   { 
      //Adresse empfangen
      case TW_SR_SLA_ACK: 
         TWCR |= (1<<TWINT);
         return;
         
      //Daten empfangen
      case TW_SR_DATA_ACK:
         rx_pwm = TWDR;
         TWCR |= (1<<TWINT);
         i2c_timeout = 0;
         return;

      //Bus-Fehler zurьcksetzen
      case TW_NO_INFO:
         TWCR |=(1<<TWSTO) | (1<<TWINT);

      //Bus-Fehler zurьcksetzen   
      case TW_BUS_ERROR:
         TWCR |=(1<<TWSTO) | (1<<TWINT);
   }
   //Reset TW
   TWCR =(1<<TWEA) | (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}

//############################################################################
//Hauptprogramm
int main (void)
//############################################################################
{
   //Watchdog on
   WDTCSR = (1<<WDCE) | (1<<WDE);
   
   //Motordriver output
   UH_DDR;
   VH_DDR;
   WH_DDR;
   UL_DDR;
   VL_DDR;
   WL_DDR;
     
   //PWM for UH, VH and WH (>32KHz)
   TCCR0A |= (1<<COM0B1|1<<WGM01|1<<WGM00);
   TCCR0B |= (1<<CS00);
   
   TCCR2A |= (1<<COM2A1|1<<COM2B1|1<<WGM21|1<<WGM20);
   TCCR2B |= (1<<CS20);
   
   //TIMER1 for start commutation or Back EMF lost
   TCCR1B |= (1<<CS11);
   TIMSK1 |= (1<<TOIE1);

   PHASE_ALL_OFF;
   
   //Comperator init for back EMF
   ADCSRB   |= (1<<ACME);
   DIDR1   |= (1<<AIN0D);
   ACSR   |= (1<<ACIE);
     
   //I2C Init
   TWAR = MOTOR_ADR & 0xFE;
    TWCR = (1<<TWINT)|(1<<TWEA)|(1<<TWEN)|(1<<TWIE);
   
   //Interrupts enabel
   sei();
   

   while(1)
   {   
      asm("wdr");
      if(rx_pwm > START_PWM)
      {
         ACSR |= (1<<ACIE);
         TIMSK1 |= (1<<TOIE1);
         
         if(rotor_run == 200)
         {
            OCR2A = rx_pwm;
            OCR2B = rx_pwm;
            OCR0B = rx_pwm;
         }
         i2c_timeout++;
         
         if(i2c_timeout>100000)
         {
            rx_pwm = 0;
         }
      }
      else
      {
         PHASE_ALL_OFF;
         ACSR&=~(1<<ACIE);
         TIMSK1 &= ~(1<<TOIE1);
      }
   }
}
под управление оборотами переменником. Кому интересно давайте решим эту проблему , думаю многим это пригодится. Я понял что можно в ISR (ANALOG_COMP_vect) инициализировать АЦП , и нужно где то включить преобразование что бы не мешало работе двигателя и не создавало задержек, кто в программировании силен помогите.
Ankov82
Родился
Сообщения: 8
Зарегистрирован: Пн май 12, 2014 14:26:09

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение Ankov82 »

Я прилепил к этому коду энкодер и пользую.
Аватара пользователя
Gray64
Встал на лапы
Сообщения: 96
Зарегистрирован: Вт май 27, 2008 21:15:01
Откуда: Украина
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение Gray64 »

Монстр вполне работоспособен. Но фьюзы надо ставить на внутренний 4мГц. Тут вот небольшое видео, с самодельным движком. Просто спортивный интерес был.
https://www.youtube.com/watch?v=9a94Ojw_8v4
Глаза боятся а руки делают!
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение m.ix »

промоснстра есть схема?
И как там регулировка скорости происходит.

Как одвигун вообще из тисков не вылетел :)))
Лечу лечить WWWашу покалеченную технику.
Аватара пользователя
Gray64
Встал на лапы
Сообщения: 96
Зарегистрирован: Вт май 27, 2008 21:15:01
Откуда: Украина
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение Gray64 »

Схема... Сейчас попробую вставить.
http://img.radiokot.ru/files/6021/medium/mzhdd462k.JPG]Изображение
Да вот тут всё http://www.jetcontrol.de/Bastelstube/Monster.html в игле. Там проц какой-то левый, на самом деле стоит мега 8.
Управление идёт импульсами 50 Гц, длительность меняется в пределах 1-2 мс. Можно собрать сервотестер(в начале темы есть, да и в сети валом) на 555 таймере. Пока обороты не выставлены на минимум схема не включится. Безопасность. Убираем на минимум, мотор пиликает мелодию, всё, можно "газовать" :) .
Забыл: узел формирующий 12 из 5 вольт для IR2101 я не ставил, запитаны прямо от 12 вольт. Это при питании от БП. От аккума, при просадке до 8 вольт 90% что погорит силовая часть.
Глаза боятся а руки делают!
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение m.ix »

Gray64 писал(а): Убираем на минимум, мотор пиликает мелодию
Я к сожалению этого не услышу.
Сними видео с этим пиликанием.
Лечу лечить WWWашу покалеченную технику.
Аватара пользователя
Gray64
Встал на лапы
Сообщения: 96
Зарегистрирован: Вт май 27, 2008 21:15:01
Откуда: Украина
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение Gray64 »

Не знаю насколько удачно, одной рукой снимать, другой провода соединять. Вот:
https://youtu.be/-uYIUJ8SPdY
А почему "не услышу"?
Глаза боятся а руки делают!
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение m.ix »

Спойлерслух посажен
акклиматизация армейская сказалась.
сначала в германию потом в сибирь потом домой.
год за годом всё хуже и хуже.
в германии один день помню вообще не слышал
в сибири ухи гнили
Вот по этому то и бедово слышу.

В мастерской работал
была у нас там приёмщица и фотоаппаратист
когда они между собой разговаривали и я стоял в метре от них, я вообще ни чего не слышал.

Я по рынку не могу ходить без музыки в ушах, хреново когда тишина долбит в ушах.


Апалтеть ну и напиликал :)))
Лечу лечить WWWашу покалеченную технику.
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение eduardo »

Здравствуйте. Народ,подскажите,кто знает как правильно организовать алгоритм работы безколлекторного движка от видика. Я тут набросал схемку с программкой(написана по простонародному без всяких ШИМ и обратных связей). Вообще возможна ли работа этого моторчика без датчиков Холла?В схеме использовал светодиоды--это для наглядного изучения прохождения импульсов при замедленной работе программы. В схеме есть ещё переменный резюк(регулировка скорости),но он пока не задействован.С этой прогой движок при включении гудит и при придании валу крутящего момента как-бы входит в резонанс и вращается только медленно очень.Реверс выполняется.Импульсы состряпаны как при динамической индикации семисегментного индикатора. Спасибо...
Вложения
ВД.rar
(333.45 КБ) 227 скачиваний
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение eduardo »

Фотки движка.
Вложения
Фото ВД.rar
(902.7 КБ) 247 скачиваний
sa-ta
Это не хвост, это антенна
Сообщения: 1413
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение sa-ta »

Ankov82 писал(а):Я прилепил к этому коду энкодер и пользую.


а есть готовая прошивка, модифицированная схема включения ?
leonisio
Прорезались зубы
Сообщения: 213
Зарегистрирован: Пт мар 22, 2013 14:16:57
Откуда: Спб

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение leonisio »

Присоединюсь к вопросу по наличию прошивки с энкодером :)
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение eduardo »

Чтож,походу никто ничего не знает,не подскажет,писем не напишет и вряд-ли позвонит???? Жаль... А я так надеялся.... :cry:
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение m.ix »

Попробуй у них на форуме спросить.
Изображение

Изображение

А то моя фамилия не правильная там стала позавчера за три года.
Именно там я про этот BLDC спрашивал.
Лечу лечить WWWашу покалеченную технику.
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение eduardo »

Спасибо за совет.Сегодня сделал регулировку скорости на переменном резисторе,но... Запускается только на самых низких оборотах и при этом надо всё равно пальцем толкать.С увеличением частоты скорость увеличивается примерно до 300-400 об/мин,а дальше срывается.Видимо без Холла никак.Да и движок сам похоже низкооборотистый--24 полюса,по 8 на каждую обмотку.
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и

Сообщение korob »

eduardo писал(а):Видимо без Холла никак.
Ну почему же так категорично? BLDC в HDD вполне успешно работают без датчиков холла, используя противо-ЭДС с обмоток. Заводите сигнал с концов обмоток через делители-ограничители на входы АЦП, и отслеживайте противо-ЭДС на каждой из обмоток в момент когда обмотка не задействована.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Ответить

Вернуться в «Периферия»