Страница 1 из 2
Контроллер BLDC на основе ATmega8
Добавлено: Сб май 21, 2011 20:40:41
GRAF
Собираю контроллер для бесколлекторного 3-фазного двигателя постоянного тока. В протеусе всё работает и двигатель медленно набирает обороты. Собрал всё на плате, подключил двигатель от HDD, он дергается в разные стороны. Раскручиваю его вручную, он останавливается и продолжает дергаться
Код: Выделить всё
#include <mega8.h>
#define BLDC_DDR DDRD
#define BLDC_PORT PORTD
#define UH PORTD.0
#define UL PORTC.1
#define VH PORTC.2
#define VL PORTC.3
#define WH PORTC.4
#define WL PORTC.5
unsigned char a=0;
unsigned char b=0;
void main()
{
DDRB.3=1;
PORTB.3=1;
BLDC_DDR|=0x3F;
BLDC_PORT=0x00;
//Настройка TC0
TCCR0=0x04;
TIMSK|=0x01;
TCNT0=0x7F;
TCCR2|=(1<<WGM21)|(1<<CS22)|(1<<CS21); // clock/256, CTC
TIMSK|=(1<<OCIE2);//T/C2 compare match interrupt
OCR2=0xFF;
SREG|=0x90;
ADMUX= 0x20;//ADLAR, ADC0, AREF
//ADCSRA= 0xC8;//ADEN, ADIE
ADCSRA= 0x88;
while (1);
}
interrupt [TIM2_COMP] void TC2_CMP(void)
{
a+=1;
if (a==1)
{
UH=1;
VL=1;
WH=0;
}
else if (a==2)
{
VL=0;
WL=1;
}
else if (a==3)
{
UH=0;
VH=1;
}
else if (a==4)
{
UL=1;
WL=0;
}
else if (a==5)
{
VH=0;
WH=1;
}
else if (a==6)
{
UL=0;
VL=1;
a=0;
}
}
interrupt [TIM0_OVF] void tim0_isr(void)
{
TCNT0=0x7F;
ADCSRA|=0x40;
}
interrupt [ADC_INT] void adc_isr(void)
{
b=ADCH;
OCR2=b;
}
Re: Контроллер BLDC на основе ATmega8
Добавлено: Вс май 22, 2011 22:15:11
romazan
Напильник нужен хорошиий!

Re: Контроллер BLDC на основе ATmega8
Добавлено: Вс май 22, 2011 22:48:06
GRAF
romazan, по существу что-нибудь можешь сказать?
Re: Контроллер BLDC на основе ATmega8
Добавлено: Вс май 22, 2011 23:34:40
Goodefine
По существу разберитесь как все-таки следует работать с bldс motor. Инфы в сети предостаточно. Наводящая подсказка - моменты коммутации должны быть привязаны к положению ротора...
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 00:25:36
Satyr
До неработоспособного упрощенное управление.
Рекомендую полглядеть аппноты на атмеле - там нормальных исходниково управления BLDC моторами куча.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 00:35:26
GRAF
Goodefine писал(а):По существу разберитесь как все-таки следует работать с bldс motor. Инфы в сети предостаточно. Наводящая подсказка - моменты коммутации должны быть привязаны к положению ротора...
Это всё понятно и я это знаю. Но двигатель и без этого будет работать, пока нагрузку на него не повесишь. Ведь его разгоняют по таблице, когда обратная ЭДС мала.
Satyr, AVR444 называется, знаю.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 00:36:58
romazan
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 01:50:52
eufs
Такую работу я делал еще лет 8 назад. Даже плата где-то валяется,еще на 51 МК.
BLDC - разновидность синхронного двигателя, поэтому для него важен именно синхронный режим работы.
Если двигатель без ДПР, слежение за положением ротора (для синхронизма) может происходить двумя методами. Первый-оцифровка значения ЭДС в моменты коммутационных пауз силовых ключей(как в AVR444). Второй - измерение сдвига фазы коммутируемого тока в обмотках. Но даже имея эти данные, управление скоростью такого двигателя-непростая задача. Уж очень громозкие формулы, посмотрите хотя бы ссылку выше. Мало того. Такие двигатели (без ДПР) применяют там, где фиксированная частота вращения, например HDD, тогда хотя бы немного задача упрощается, и то спецконтроллеры стоят. В CD и DVD приводах и в старых флоппи применяются BLDC с ДПР на элементах холла. Тогда все намного проще.
В аннотации к AVR444 сказано, что они не предоставляют теории управления таким двигателем, а фокусируются на теории снятия сигналов для такого управления. Делайте выводы.
Не имея данных о положении ротора запустить такой двигатель можно плавно увеличивая частоту вращения ,чтобы двигатель не выпустить из синхронного режима , но при малейшей нагрузке на вал, произойдет срыв синхронного поля и ротор остановится.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 02:30:54
GRAF
eufs, благодарю. Сделал плавное увеличение частоты и он начал крутиться. Определение положения ротора- это вторая задача.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 15:14:53
clawham
Купите готовый китайский преобразователь на компактной платке с силовыми ключами на 30 ампер!!!! крутит любые моторы блдц хоть с сидюка по трём проводам хоть с винта хоть самодельные хоть авиамодельные....при этом по сути дела эти моторы по принципу работы являются коллекторниками только вместо щёток и колектора применяется контроллер и мосфеты...потому можно сильно задирать мощности при компактных размерах....
китайский контроллер на 30 ампер с доставкой в любую точку мира стоит 5-10 доларов!!!! разве это те деньги изза которых стоит изобретать сложную прошивку и палить кучу мосфетов?
контроллеры эти работаю...нормлаьно уверенно стабильно....и не горят если специально не спалить...
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 16:46:28
GRAF
У меня есть такой контроллер от RC вертолета. На ATmega8 собран.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 16:54:17
clawham
ye и в чём прикол-то? хотите повторить? идите на сайт микрокоптер де там есть прошивка и т.д.
я и сам хотел когдато этим заниматься а потом плюнул ибо даром ненужный кошкин труд.....зачем копать ямки и потом закапывать если есть унитаз?
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 16:56:56
GRAF
Я не спрашиваю, где купить и откуда скачать прошивку. Спасибо за советы.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн май 23, 2011 20:26:25
clawham
там на сайте выложен исходник!!!
разжевана теория и нарисована платка!!!
впрочем я лично просто не понимаю что Вам хочется от этих моторчиков получить?
всякие реживы дополнительные типа гувернеров и таймингов? сомневаюсь что чтото толковое получится...
я просто тоже этим делом горел долго и уныло...и мегу 168 купил...и прогу уже прикинул и платку выходную с драйверами спаял...но...весь ступор в запуске....очень сложно запускать эти моторчики...
а точнее сложно определить момент когда наша система определения положения ротора по эдс начнет уверенно работать ...ведь для низко КВ моторов это очень низкие обороты будут и впринципе переключиться можно на 3-м "шаговом" пинке.....а для мотора с кв 3800 .... да с питанием 25 вольт....нужно очень аккуратно чтоб не спалить подавать "газ" и при этом существенно быстрее клацать в шаговом режиме....в общем я так и не понял как сделать более менее плавный старт и когда запалил 3 мотора и пачку транзисторов....я пришел к тому что купить готовый с плавным стартом, гувернером и контролем тока - гораздо проще решение....я делаю электромопед на блдц двигателе без контроля положения ротора и я пока прекрасно обошелся регулятором НН40А у которого в меню настраивается плавный старт и тайминги...а большего мне и не надо...транзюки силовые вынесены за пределы на радиаторы и...в общем 100 ампер на фазе я выжимал при питании 24 вольта при этом "тянущее" усилие на колесе было 10 килограмм...была попытка поездить без контроля тока...но.....молейший резкий рывок "газа" и силовые транзюки исчезли...остались только кусочки ножек...вот сейчас собрал и контроллер тока и пидрегулятор и т.д. на днях будет попытка номер 2...по крайней мере на моторе 3800 кв 500 ватт в "домашних" условиях ток ограничивает очень четко.....посмотрим что будет на большом моторе...
Re: Контроллер BLDC на основе ATmega8
Добавлено: Вс окт 23, 2011 08:59:07
Jonson77
А прошивочку можно и какие биты конфигурации выставлять на МК?
Re: Контроллер BLDC на основе ATmega8
Добавлено: Вс окт 23, 2011 11:36:41
GRAF
Jonson77, скачайте апноут AVR444, в нем всё пояснено. Если что-то не поймете, спрашивайте здесь.
Я сделал контроллер на основе этого кода, портировал его под CVAVR.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн окт 24, 2011 19:19:26
Jonson77
Что-то я не найду апноут может просто выложите готовый HEX. Я вот нарыл одну схему от авиамодели и хочу использовать ее для раскрутки двигателя от CD-ROMa, но не знаю как ею управлять. Мне нужно что-бы двигатель вращался, а найденые мною схемы серво тестеров подходят только для регулировки позиции двигателя и вращают его в диапазоне одного полуоборота. Помогите со схемой управления, хотел использовать двигатель не для авиамоделей, а просто как двигатель и если можно в управлении просто кнопи запуска, остановки и регуляции скорости оборотов.
Re: Контроллер BLDC на основе ATmega8
Добавлено: Пн окт 24, 2011 20:41:56
clawham
а можно вопрос?
ЗАЧЕМ!?!?
строить свой контроллер убивая пачки тарнзюков и моторов когда самый простой контроллер авиамодельный на 30 ампер чтоит 50 грн....ато и 30 грн....при этом 200% работает с любыми BLDC моторами!!!
а управлять ним очень просто!
при подаче силового питания на контроллер ему на управление нужно давать импульс....длиной 1000 us 20-50 раз в секунду...
потом плаавно нужно наращивать длину импульса при этом будет увеличиваться ШИМ заполнение.....максимум будет 2000 микросекунд(2 миллисекунды)...вот и всё
серво тестер не крутит моторчик на угол...он всего лишь выдаёт сигнал 1-2 миллисекунды в зависимости от положения крутилки!
если к нему сервопривод подключить - то да....тот будет отклонять вал соответственно положению крутилки.....а если к нему контроллер bldc подключить - будет вам счастье...при этом там и контроль перегрева есть ...и слежение за напругой АКБ....и в некоторых - логгирование тока напруги оборотов и т.д. и т.п....в общем....я забросил эту идею гиблую
Re: Контроллер BLDC на основе ATmega8
Добавлено: Вт окт 25, 2011 07:55:49
Jonson77
И где такие цены, я бы купил. А нет ли простой схемы управления для драйвера BLDC, чтобы был старт, стоп и регулятор скорости - ну как на станках ЧПУ?

Re: Контроллер BLDC на основе ATmega8
Добавлено: Вт окт 25, 2011 09:58:58
clawham
неужели сложно собрать на 555 таймере генератор 1-2 миллисекундного сигнала? нет - берите тини13 мегу8 и так далее....но плавный старт очень желателен ибо щетки выдерживают перетоки просто искря а вот транзисторы ..... они не щетки...и искры в транзисторах обычно очень быстро заканчиваются

такие цены ВЕЗДЕ ...в китае на руках в авиамодельных магазинах....
НЕ РЕКЛАМА...ну раз спросили - вот
http://forum.modelka.com.ua/index.php?showtopic=26157
там есть что выбрать....обычно у регулей до 30 ампер включительно нет драйверов у ключей - ключи от МК напрямую и используются N канальные внизу и P канальные вверху(3 плечевой мост)...у регулей на 40 ампер и выше - уже драйвера и все транзюки N канальные следовательно можно нарастить хоть IRF3205 до 100 - 200 - 300 ампер
аналогично могу подсказать и по моторам....
сам делаю электромопед...точнее уже сделал на 95% авиамотор на полтора киловатта.....
в общем обращайтесь....а....создавать свои регуляторы...это....ну....сложно и практически невозможно если Вам проблема апноут соответствующий скачать-то
