Например TDA7294

Форум РадиоКот • Просмотр темы - Управление BLDC на Atmega8
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 09:04:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Управление BLDC на Atmega8
СообщениеДобавлено: Вс май 05, 2013 21:32:17 
Родился

Зарегистрирован: Пн апр 01, 2013 15:40:59
Сообщений: 7
Рейтинг сообщения: 0
Доброго времени суток
Пишу в связке CodeVisionAVR + Proteus 7 программу для вентильного двигателя (он же BLDC). С датчиками Холла, с прерываниями, с даташитом avr492.
В качестве контроллера выбрал Atmega8.
Суть проблемы:Никак не получается приручить switch (да и порты, судя по всему). Если раскомментировать присваивание PORTD=PINC (и закомментировать switch), то привод вращается. Не так, как хотелось бы, но вращается.
А через свитч - не получается. Привод стоит. Хотелось бы выяснить, в чем проблема и что я сделал не так.
Код:
Спойлер
Код:
#include <mega8.h>
#define UH        PORTD.0
#define UL        PORTD.1
#define VL        PORTD.2
#define WL        PORTD.3
#define VH        PORTD.4
#define WH        PORTD.5
#define START     PINB.2
#define STOP      PINB.0
#define REVERS    PINB.1
#define HALL1     PINC.0
#define HALL2     PINC.1
#define HALL3     PINC.2

//unsigned char tmp=0;
//  char flag=1; 
 
void port_init()
{
//PORTD=0x01;
DDRD=0b11111111;
DDRC=0;
PORTC=0xFF;
DDRB=0;
PORTB=0xFF;
}

void timer_init()
{   
TCCR2=0x01;
TIMSK=0x40;
TCNT2=0x30;
}

void pwm_init()
{   OCR2=0x00;
 // TCCR2=(1<<COM21)|(1<<WGM20)|(1<<WGM21)|(1<<CS20);
};

interrupt [TIM2_OVF] void overflow_timer2 (void)
{
char tmp;
tmp = PINC;
//PORTD = PINC;

switch (tmp)
{
case 0b00000101: PORTD=0b00000101; break;   
case 0b00000001: PORTD=0b00001001; break;
case 0b00000011: PORTD=0b00011000; break;
case 0b00000010: PORTD=0b00010010; break;
case 0b00000110: PORTD=0b00100010; break;
case 0b00000100: PORTD=0b00100001; break;
}

 #asm("sei")
}   


void main()
{

port_init();
timer_init();
pwm_init();
#asm("sei")
while (1)
{};
}


Сам проект+схема в протеусе:


Вложения:
BLDC.zip [66.78 KiB]
Скачиваний: 455
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Вс май 05, 2013 22:59:09 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1244
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
1. Попробуйте объявить tmp как volatile.

2. Что приходит на PINC? Не может ли быть так, что там стоят и какие-то верхние биты, портящие сравнение? Попробуйте добавить в switch конструкцию default и посмотрите, срабатывает ли (н-р повесьте светодиод). Если срабатывает - непорядок со значением PINC.

Перед сравнением целесообразно очищать верхние биты - tmp=PINC & 0x07.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Пн май 06, 2013 16:36:50 
Родился

Зарегистрирован: Пн апр 01, 2013 15:40:59
Сообщений: 7
Рейтинг сообщения: 0
Да, вы оказались абсолютно правы - после добавления очистки верхних битов все заработало как надо. :))
Мне осталось только добавить управление с кнопок - и готовый проект я выложу здесь (а ну как кому понадобится, как понадобилось мне?)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Пн май 06, 2013 20:43:25 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1244
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Цитата:
вы оказались абсолютно правы


Yeah, я еще раз прокачал скилл телепатии. :)))

На будущее - если из порта что-то читается, ни в коем случае нельзя оставлять часть его пинов висящими в воздухе и настроенными на вход - из них может читаться мусор. Надо либо настроить их на выход, либо подтянуть (можно внутренним подтягивающим резистором) к известному потенциалу и учесть это. Вообще, если ножка настроена на вход, нельзя оставлять ее в воздухе - будут наводиться помехи, т.к. сопротивление входа МК очень велико. А из-за возможных частых переключений (или перехода в линейный режим) она еще и повышенный ток потреблять будет.

Цитата:
готовый проект я выложу здесь


Лучше запилите статью.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Вт май 14, 2013 17:26:01 
Родился

Зарегистрирован: Пн апр 01, 2013 15:40:59
Сообщений: 7
Рейтинг сообщения: 0
Ха, теперь еще вопрос со сменой направления вращения ротора.

Порядок переключения обмоток для вращения по часовой есть и в аппноуте, и даже на форуме лежит.
http://www.gaw.ru/im/doc/micros/avr/avr443/avr443_pic2_2.gif
А вот порядок вращения против часовой? Нашел только такой, http://electrosales.com/hurst/hurst_brushless_intro.html,
но тут меня смущает, что изменяется порядок датчиков Холла и что он не работает (как ни печально).
Правильно ли я понимаю, что для смены направления вращения нужно поменять направление тока во всех обмотках? Или это делается по-другому?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Вс мар 22, 2015 22:06:06 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
достаточно передефайнить две фазы. или читать вашу табличку состояний задом-наперед. ничего такого.

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Вт окт 31, 2017 07:46:57 
Родился

Зарегистрирован: Вт окт 31, 2017 07:44:36
Сообщений: 1
Рейтинг сообщения: 0
готовый проект я выложу здесь (а ну как кому понадобится, как понадобилось мне?)

Здравствуйте! А можно посмотреть на готовый проект?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление BLDC на Atmega8
СообщениеДобавлено: Вт окт 31, 2017 17:54:47 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
смотрите


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y