Страница 4 из 5
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вс апр 14, 2013 12:44:43
sa-ta
Krot писал(а):
Это финальная версия, или где-то кто-то доработал?
ну это, то , что есть.
я выкладывал п. платки реально работающих контроллеров.
появилось еще мнение, что имеет смысл уменьшить частоту внутреннего генератора меги до 4МГц.
первоисточником инфы для меня была линка -
http://cncmasterkit.ru/viewtopic.php?f=8&t=785
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вс апр 14, 2013 14:16:23
Krot
Просто хочу заказать человеку на форуме плату, с возможностью заказывать остальным.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вс апр 14, 2013 17:38:28
sa-ta
Krot писал(а):Просто хочу заказать человеку на форуме плату, с возможностью заказывать остальным.
я конечно понимаю, что лень родилась раньше вас...но, все же
http://www.radiokot.ru/forum/viewtopic. ... 3#p1626143
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Пн апр 15, 2013 12:52:26
Krot
Вот я дурень, незаметил вторую страничку спринт лаута, спасибо что носом ткнули.
Всегда на мелочах горю

.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Пн мар 02, 2015 21:43:17
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) инициализировать АЦП , и нужно где то включить преобразование что бы не мешало работе двигателя и не создавало задержек, кто в программировании силен помогите.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Пн мар 30, 2015 13:57:58
Ankov82
Я прилепил к этому коду энкодер и пользую.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вт апр 28, 2015 21:24:06
Gray64
Монстр вполне работоспособен. Но фьюзы надо ставить на внутренний 4мГц. Тут вот небольшое видео, с самодельным движком. Просто спортивный интерес был.
https://www.youtube.com/watch?v=9a94Ojw_8v4
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вт апр 28, 2015 23:15:16
m.ix
промоснстра есть схема?
И как там регулировка скорости происходит.
Как одвигун вообще из тисков не вылетел

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср апр 29, 2015 06:41:46
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% что погорит силовая часть.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср апр 29, 2015 06:56:42
m.ix
Gray64 писал(а): Убираем на минимум, мотор пиликает мелодию
Я к сожалению этого не услышу.
Сними видео с этим пиликанием.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср апр 29, 2015 12:51:06
Gray64
Не знаю насколько удачно, одной рукой снимать, другой провода соединять. Вот:
https://youtu.be/-uYIUJ8SPdY
А почему "не услышу"?
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср апр 29, 2015 12:57:26
m.ix
Спойлер
слух посажен
акклиматизация армейская сказалась.
сначала в германию потом в сибирь потом домой.
год за годом всё хуже и хуже.
в германии один день помню вообще не слышал
в сибири ухи гнили
Вот по этому то и бедово слышу.
В мастерской работал
была у нас там приёмщица и фотоаппаратист
когда они между собой разговаривали и я стоял в метре от них, я вообще ни чего не слышал.
Я по рынку не могу ходить без музыки в ушах, хреново когда тишина долбит в ушах.
Апалтеть ну и напиликал

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср июн 03, 2015 01:45:21
eduardo
Здравствуйте. Народ,подскажите,кто знает как правильно организовать алгоритм работы безколлекторного движка от видика. Я тут набросал схемку с программкой(написана по простонародному без всяких ШИМ и обратных связей). Вообще возможна ли работа этого моторчика без датчиков Холла?В схеме использовал светодиоды--это для наглядного изучения прохождения импульсов при замедленной работе программы. В схеме есть ещё переменный резюк(регулировка скорости),но он пока не задействован.С этой прогой движок при включении гудит и при придании валу крутящего момента как-бы входит в резонанс и вращается только медленно очень.Реверс выполняется.Импульсы состряпаны как при динамической индикации семисегментного индикатора. Спасибо...
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср июн 03, 2015 01:55:54
eduardo
Фотки движка.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср июн 03, 2015 17:59:16
sa-ta
Ankov82 писал(а):Я прилепил к этому коду энкодер и пользую.
а есть готовая прошивка, модифицированная схема включения ?
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Ср июн 03, 2015 19:10:07
leonisio
Присоединюсь к вопросу по наличию прошивки с энкодером

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вс июн 07, 2015 20:52:55
eduardo
Чтож,походу никто ничего не знает,не подскажет,писем не напишет и вряд-ли позвонит???? Жаль... А я так надеялся....

Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вт июн 09, 2015 12:30:44
m.ix
Попробуй у них на форуме спросить.
А то моя фамилия не правильная там стала позавчера за три года.
Именно там я про этот BLDC спрашивал.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вт июн 09, 2015 21:46:29
eduardo
Спасибо за совет.Сегодня сделал регулировку скорости на переменном резисторе,но... Запускается только на самых низких оборотах и при этом надо всё равно пальцем толкать.С увеличением частоты скорость увеличивается примерно до 300-400 об/мин,а дальше срывается.Видимо без Холла никак.Да и движок сам похоже низкооборотистый--24 полюса,по 8 на каждую обмотку.
Re: BLMC Bldc Запуск трёхфазных без колекторных двигателей и
Добавлено: Вт июн 09, 2015 23:34:26
korob
eduardo писал(а):Видимо без Холла никак.
Ну почему же так категорично? BLDC в HDD вполне успешно работают без датчиков холла, используя противо-ЭДС с обмоток. Заводите сигнал с концов обмоток через делители-ограничители на входы АЦП, и отслеживайте противо-ЭДС на каждой из обмоток в момент когда обмотка не задействована.