Перейти к содержанию
    

Управление трехфазным бесколлекторным электродвигателем

Всем привет !

 

Вот уже пару дней упорно бьюсь в управлении двигателем и никак не могу запустить его :(.

Сосояние выводов на момент переключения брал из аппнота AVR443.

Вот код переключения.

 

 

main:                  //  
cbi    motor,wh_e      // 
cbi    motor,wl_e      //  1
rcall  off             //  
sbi    motor,ul_e      // 
sbi    motor,vh_e      // 
rcall  wait_m          //  

cbi    motor,vl_e      // 
cbi    motor,vh_e      //  2
rcall  off
sbi    motor,wh_e      // 
rcall  wait_m          // 

cbi    motor,uh_e      // 
cbi    motor,ul_e      //  3
rcall  off
sbi    motor,vl_e      // 
rcall  wait_m          // 

cbi    motor,wl_e      // 
cbi    motor,wh_e      //  4 
rcall  off
sbi    motor,uh_e      // 
rcall  wait_m          // 

cbi    motor,vh_e
cbi    motor,vl_e      //  5
rcall  off
sbi    motor,wl_e      // 
rcall  wait_m          // 

cbi    motor,ul_e      // 
cbi    motor,uh_e      //  6
rcall  off 
sbi    motor,vh_e      // 
rcall  wait_m          // 
rjmp   main            //


off:                 // закрытие полевиков
ldi   zl,0x10
dfg:
dec   zl
brne  dfg 
ret 


wait_m:                // 
ldi    xl, low(0x1FFF)  // 
ldi    xh,high(0x1FFF)  // 
wt_2:                  // 
sbiw   xl,1            //   
brne   wt_2            //   
nop                    //  
ret                    // 


 

 

 

Получаю только дерганье двигателем , если поигратся с задержками то иногда можно крутнувши рукой получить рывками вращение.

Никак не могу вьехать толи я что-то неверно делаю , толи еще чего -то....

 

И еще вопрос : Можно ли управлять этим мотором в наглую без опроса датчиков холла ? Их в данном моторе стоит 3шт . Всего мотор имеет 7 магнитов 12 обмоток.

 

Схема переключения прикреплена ниже.

post-33716-1250941060_thumb.png

Изменено пользователем Павлик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то у вас неправильно таблица задана... Конечно, лучше бы было, если бы обмотки двигателя были бы соединены "звездой" с общей точкой, тогда бы можно было подвесить общую точку на "плюс" и обойтись всего тремя "нижними" ключами, и включать их поочередно. Здесь же нужно сделать три сигнала, сдвинутые на 120 градусов. Предлагаю такую таблицу (в файле).

Дальше. Так, как вы делаете - установкой и сбросом отдельных битов - есть вероятность, что забудете сбросить поднятый бит и спалить выходные транзисторы. Лучше сформировать 6 констант, по количеству шагов, и отсылать их.

const step1:=001001b;
step2:=100100b;
...

while true do begin
motor:=step1;
delay_us(antispeed);
motor:=step2;
delay_us(antispeed);
...
end;

.

post-48875-1250955475_thumb.png

Изменено пользователем AntonSor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо , завтра попробую по таблице сделать. И еще интерестно кто какую логику ставит после датчиков холла чтобы уже получать готовые логическиеуровни для мк. ?

 

И насколько я понял судя по таблице :

UH - 1

UL - 2

VH - 3

VL - 4

WH - 5

WL - 6

Правильно я понял ?

 

Сегодня все таки запустил его , пошагово он шагает с маленькими оборотами нормально. 1 цикл переключения = 90 градусов , то есть для получения 1 оборота двигателя нужно сделать 4 цыкла.

Изменено пользователем Павлик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По столбцам - номер шага, строки - название сигнала, так, как на схеме. Т.е. на шаге номер один включены выходы VH и WL, выключены все остальные. На шаге номер два включены UH и WL и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

из аппнота AVR443.

 

А вы возьмите исходники из апноута AVR447 для IAR - все работает чудненько.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы возьмите исходники из апноута AVR447 для IAR - все работает чудненько.

 

Собрал AVR447 , увы IAR ом не пользуюсь :( . Тут постают 2 вопроса :

кто поможет откомпилировать проэкт под ATmega88 ?

Выводы датчиков холла кто как подключает

а)

H1 - U

H2 - V

H3 - W

 

б)

H1 - W

H2 - V

H3 - U

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще интерестно кто какую логику ставит после датчиков холла чтобы уже получать готовые логическиеуровни для мк. ?

А зачем она там, проще датчик подобрать с логическим выходом :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С датчиками разобрался , логические уровни идут. Только осталось дело за прошивкой. Может кто-то компилировал и есть дамп ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пару лет назад тоже делал плату управления для бесколлекторного двигателя. Сначала тоже были подобные проблемы. Но потом нашел статью на каком-то форуме по ремонту бытовой технике. Там расказывалось как запустить двигатель стиральной машины. Идею взял от туда, только вместо логики поставил контроллер. А идея такая. Сначало пишется тестовая программа. Создается 6 фазная таблица переключения обмоток двигателя (как я думаю не сложно догодаться). Затем двигатель тупо устанавливается в каждое из 6 положений и снимается значения датчиков хола для каждого положения. Создается таблица соответствия включенных обмоток каждой комбинации датчиков хола. На основе этой таблицы пишется уже рабочая программа. В ней в зависимости от значения датчиков из таблицы берется соответствующая комбинация включения обмоток. Этого достаточно для изготовления просто тупой вращалки. А потом можно добавить сервис. Еще в начале нужно крутануть двигатель в нужную сторону програмно без учета датчиков хола. Если датчики аналоговые, то ставлю компоратор на LM339. По такому принципу разгонял двигатель от HDD более 30т. об. Первую программу вообще писал, тока не смейтесь, на бейсике - Баскоме. Потом уже на асемблер переводил. Так быстрей получается. Аналагично запускается двигатель без датчиков хола. Только добовляется схема на компораторах для определения положения ротора. А принцип управления после разгона тот же. И еще. Вращать бесколлекторный двигатель не зная положения ротора не получится. Это не шаговый двигатель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципи все понятно , эксперементами я тоже много чего нового узнал для себя с этим двигателем.

Схему доработал , таблицу датчиков записал себе.

 

Лучше поработать и разобратся самому , чем слизать готовое и непонятное :rolleyes: . Взял двигатель поменьше мощности , ибо мой 850W 13V , даже под тестами провода от компьютерного АТХ стают мягкие и очень горячие. :biggrin: .

 

О результатах отпишусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос номер раз. За один оборот сколько раз датчик Холла (любой из них) меняет состояние?

В AVR443 рассмотрен случай, когда у мотора 3 обмотки и 1 магнит (2 полюса); датчик Холла меняет состояние за оборот 2 раза (0->1, 1->0) = 1 период. В этом случае на 1 оборот приходится 1 период управляющих сигналов, и они привязаны к сигналам ДХ. В Вашем случае на 1 оборот д.б. 7*4=28 периодов управляющих сигналов, а вот каждый ДХ, могет оказаться, за оборот дает 7 периодов (14 смен).

 

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

Для тупой вращалки достаточно, а вот для нетупой, ИМХО, нет.

Комбинация включения обмоток должна соответствовать не тому положению ротора, которое он стремится занять при данной комбинации (т.е. где вращающий момент обращается в 0), а тому, где вращающий момент максимален. Для простейшего случая (3-обмоточный 2-полюсник) это значит с опережением на 90 градусов (по положению ротора) от той таблицы.

Изменено пользователем Diusha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня такой двигатель. У него на датчики хола свой магнит с одной парой полюсов. Датчики хола смещены относительно друг друга на 60градусов. Бывает еще на 120. А на роторе две пары полюсов (приклеено 4 магнита). В статоре 9 обмоток, а фаз три (обмотки соеденены по три). Получается 6 комбинаций датчиков хола.

 

 

http://www.iit.edu/~ipro342f06/bldcmotor.php

Интересные картинки про BLDC.

post-21288-1251434224_thumb.jpg

post-21288-1251434234_thumb.jpg

post-21288-1251434244_thumb.jpg

post-21288-1251434251_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня состояние датчиков холла полностью совпадает с таблицей AVR447 ( Forvard ) , при проходе одного цикла переключения 1 ... 6 двигатель перемещается на 90 градусов , соответственно для получений 1 оборота нужно сделать 4 полных цикла.

Изменено пользователем Павлик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Замечание по схеме (хотя возможно Вы его уже устранили). Как заметил AntonSor, Управлять трехфазным мостом шестью сигналами от проца - занятие опасное. При малейшем сбое сквозной ток и привет выходным транзисторам. Я бы организовал инверсию аппаратно, например перед 74HC08 (верхний ключ - прямой сигнал от проца, нижний - через инвертор от того же вывода). При этом от проца нужны всего три сигнала и таблица комутации проще.

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

Сам такого нахлебался, пока соорудил драйвер для ДШИ-200, правда не от контроллера а от LPT.

Побочное явление при этом - жменя жареных IRF640 и IRF9540.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...