roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 22:29

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: ATmega16 + uln2803 как драйвер для ШД
СообщениеДобавлено: 18 май 2011, 08:18 
Не в сети
Аватара пользователя

Зарегистрирован: 16 май 2011, 23:14
Сообщения: 3
Откуда: Липецк
ФИО: Денис
Здравствуйте! Я всего неделю изучаю программирование mega16 и читал курс avr123, но у меня осталось несколько вопросов. Научил ATmega16 вполне успешно рулить униполярным шаговиком в оба направления с заданным ускорением, программа на Cи в cvavr (1.2.58) получилась вполне красивой, всё вызывается через функцию c параметрами, и мейн занимает пару строк всего... Но задача моя состоит в другом.
Необходимо сделать так, чтобы превратить мегу16 в связке с uln2803(по 2 ножки на вывод каждой фазы ШД для снижения тока на ее ногу) в драйвер для этого движка, то бишь мега будет промежуточным звеном, на которое будет приходить по переднему фронту импульса задание на 1 "шаг" и на "направление". Нет ли у вас материалов с примером подобной программы? Желательно пример кода (ну или хотя бы алгоритм), потому что у меня опыта маловато и не до конца понимаю работу прерываний, хоть прочитал курс avr123 (в т.ч. и про прерывания, немного листал ДШ) и половину книги "codevisionAVR Пособие для начинающих" Лебедева.
Нужно чтобы по фронту импульса на одну из ног порта, например, PORTD, запускалась функция... Сейчас пробую сделать это через прерывание, потому что не знаю пока, как иначе выделить фронт и чтоб МК не проглотил управляющий импульс... Максимальная частота следования импульсов на "шаг" около 50 Гц (даже меньше), поэтому быстродействие тут не критично. Прошу прощения, если подобный вопрос поднимался уже и я свин не сумел нормально нагуглить по форуму... И мне нужно использовать именно МК, а не драйвер готовый для ШД, где уже предусмотрены такие входные сигналы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATmega16 + uln2803 как драйвер для ШД
СообщениеДобавлено: 18 май 2011, 12:23 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Фронт - это изменение уровня сигнала. Уровень сигнала может измениться, например, при нажатии на поключенную к ноге кнопку. Соответственно искать примеры обработки нажатий кнопки и борьбы с дребезгом.

Добавлено спустя 1 минуту 52 секунды:
А, да. Не надо в прерываниях вызывать функции. В прерываниях должен быть самый минимальный код.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATmega16 + uln2803 как драйвер для ШД
СообщениеДобавлено: 18 май 2011, 15:29 
Не в сети
Аватара пользователя

Зарегистрирован: 16 май 2011, 23:14
Сообщения: 3
Откуда: Липецк
ФИО: Денис
dccharacter писал(а):
А, да. Не надо в прерываниях вызывать функции. В прерываниях должен быть самый минимальный код.

Он должен быть минимальным, чтобы успевал обрабатываться до следующего прерывания. Я же указал, что максимальная частота импульсов на ногу не более 50 Гц, написал это не случайно, потому что задание приходит с ПЛК Schneider Electric серии Premium (не спрашивайте почему и зачем), там не скоростной, а обычный дискретный DC-выход 24 В лог. единица, частота его ограничена этими 50 Гц. Поэтому не писал о дребезге и прочих проблемах, сигнал приходит с цифрового задатчика импульсов и проходит через оптопару и RC-фильтр.

Добавлено спустя 10 минут 46 секунд:
Спасибо за совет про банального обработчика нажатия кнопки. Попытаюсь сейчас реализовать, но на всякий случай еще раз спрошу, нет ли у кого-нибудь подобного примера, чтобы ошибок не наворочал вероятных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATmega16 + uln2803 как драйвер для ШД
СообщениеДобавлено: 18 май 2011, 15:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Две кнопки на прерываниях это и есть пример к теме Прерывания в AVR - http://www.proavr.narod.ru/03.htm - с симуляцией в VMLAB.

Похоже не внимательно читали.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATmega16 + uln2803 как драйвер для ШД
СообщениеДобавлено: 22 май 2011, 05:22 
Не в сети
Аватара пользователя

Зарегистрирован: 16 май 2011, 23:14
Сообщения: 3
Откуда: Липецк
ФИО: Денис
Есть ли возможность ввести прерывание по изменению состояния любой из ножек любого порта МК ATmega16? Или только по INTx'ам? Судя по ДШ нету, но спрошу на всякий случай. Видимо придется через циклы делать, а не через прерывания, потому что проверяются первые 2 ноги порта D... Так уж я плату развел и лаком покрыл уже.

Пока сделал через цикл, и всё пашет как надо!
Код:
while(1){
        if(!PIND.0){
                logic = 1;
                };
        if(PIND.0*logic){
                VPERED(40, 40, 1, 5);
                logic = 0;
                };
        };


Вот так он делает 5 шагов по переднему фронту на ноге 0 порта D, исключает дребезг. Всё это уже через гальваническую развязку, даже внешний RC-фильтр НЧ отключил.


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

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO