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

Энкодер + Шаговый Двигатель


motoalex

Рекомендуемые сообщения

Всем привет! Поставил задачу управление шаговым двигателем комбинированными импульсами с помощью энкодера. Двигатель 28byj-48; драйвер ULN2003; компилятор Code Vision Avr.

Значит задача такова: при вращении в определенном направлении программа определяет значение переменной Vol (+... или -...) также ведем подсчет импульсов т.е. если наш энкодер выполнил 30 шагов, значит и шаговый должен сделать 30 циклов импульсов. Написал программу, но вращаю энкодер, двигатель вращается и не останавливается, закинул в цикл for код для вывода инф. на ЛСД переменная (i) скачет, что дурная. Т.е. переменная (Vol) выбила на дисплее 2, а переменная (i) прыгает от 0 до 2. В чем может быть проблема? Спасибо!

menu.rar

Изменено пользователем motoalex
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

переменная (Vol) выбила на дисплее 2, а переменная (i) прыгает от 0 до 2
А почему она не должна прыгать, если у Вас Vol=2, а цикл от 0 до этого значения (Vol) ? Что написали, то и происходит. В чём проблема ?
Ссылка на комментарий
Поделиться на другие сайты

Смотрите, цикл будет выполняться пока значение посередине не станет ложным, т.е., когда будет i=2, цикл for должен завершиться и программа должна выполняться дальше!

Изменено пользователем motoalex
Ссылка на комментарий
Поделиться на другие сайты

так i в while обнуляется. всё правильно. ) точнее не так, у вас весь цикл в while, вот он и будет гонять от 0 до 2 постоянно.

Изменено пользователем __alexander
Ссылка на комментарий
Поделиться на другие сайты

программа должна выполняться дальше!
Дальше - это куда ? Там же у Вас вечный цикл (wile(1)) :)

так i в while обнуляется. всё правильно. )

Ну обнуление тут не причём, for сам вначале цикла её обнулит.
Ссылка на комментарий
Поделиться на другие сайты

Исправил! Ребята а кто может подсказать по таймерам в code wizard

Интересует Timer0:

1. Во вкладке clock source ( есть три параметра: system clock; T1 pin Falling Edge; T1 pin Rising Edge) - в первом случае считает от кварца, со второго и третьего по спаданию или возрастанию значения, где (порт или нога МК) и какая величина должна изменяться?

2. Вкладка MODE, что к чему не пойму?

3. Вкладка OUTPUT: Toggle on compare match - переключение по совпадению; Clear on compare match - Очистить, по совпадению; Set on compare match - Установить по совпадению. Как их можно использовать, точней как они работают?

4. Ну и последнее, есть два окна: Timer Value и Compare, что сделать, чтобы у меня прерывание выполнялось 1 раз за секунду. В Timer2 я брал значение Clock Value и переводил его в 16-ный код, получал 4 числа после их записывал в окно Compare, в timer0 в это окно помещается только два значения.

Спасибо, тем кто откликнулся!

menu.rar

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

С code wizard конечно не работал, но из общих соображений настройки таймеров попробую угадать:

1. Источник тактового сигнала: внутренний (F_CPU деленный на некое число) или внешний, с ножки Тх (для Timer0 - ножка T0, для Timer1 - T1 и т.д.). Обычно это альтернативная функция обычной линии ввода-вывода, в m32: T0=PB0=1 вывод, T1=PB1=2 вывод.

2. Наверное режим таймера. Ну там, Normal, CTC, FastPWM, PhaseCorrectPWM. Если это оно, то оно задает значения битов WGMx3 - WGMx0.

3. В большинстве, если не во всех, режимах, задает поведение выводов OCxy при отработке сравнения или переполнения. В m32 вывод OC0=PB3=4 ; OC1A=PD5=19 ; OC1B=PD4=18 ; OC2=PD7=21. Фактически эта настройка задает биты COMxy, для каждого режима они свои (в fastPWM задают установку линии в 0 или 1 при сравнении или переполнении, что дает прямой или обратный ШИМ, а в CTC - установку или изменение лог. значения, что позволяет задать частоту).

4. Ничего сказать не могу.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

  • 2 недели спустя...

В общем сменил компилятор CVAVR на AVR Studio 6.1 и все заработало. Проблема в том, что код у них отличается и придется все наново лопатить. Всем спасибо!

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...