Движение под контролем датчика



описание

Простое управление вращением с помощью мотор-редуктора с двухфазным энкодером, установленным на валу электродвигателя.. Во время испытаний я сжег 16F84A я имел и для этого я использовал 16F628A. Программа по-прежнему в память о 16F84A, со специальной версией.

проект

Нет гiudico это уже готовый проект, у меня все еще есть несколько идей для место, где я могу использовать его для своих целей. Я сделал это из любопытства, когда читал это обсуждение.

AПродаю начал вид работы аналогичный обсуждению, Мне удалось собрать этот проект обратно. Я был вовлечен в задержкадолжное желая добавить другую функцию.

Соберите компоненты вместе, в видео демонстрирует, как сборка может выполнять свою работу.

Программа разработана с Протон Базовый, но я бы сказал гибридным способом, поскольку он содержит много деталей, написанных на сборке, для экономии места и повышения производительности всего.

Первоначально он был написан для 16F84A. 4 Mhz, с надеждой, что он также может быть адаптирован для других микропинов, совместимых только с вариациями конфигурации. Не уверен, подходит ли он micro из класса ehnanced типа 16F18xx. Сомневаюсь, что по некоторым пунктам сборка могла отличаться.

Со мной случилось забавное, было то, что я не знал, что микроконтроллер, который я использовал, был из 4 Mhz и поставить кварц на 20 Mhz. Иногда даже удавалось работать.

Quв этом проекте используется именно этот тип мотор-редуктора 11 импульсы на каждый оборот мотора, которые затем уменьшаются с соотношением 1:600 от червячного редуктора. Сделать два раунда как обсуждение на форуме, надо посчитать 13200 пульс. Расчет будет:

2 оказывается х 600 Икс 11 знак равно 13200.

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

Помимо идеи сделать это 2 повороты, как в просьбе, возможности намного превосходят, позволяя вам считать дальше 65500 пульс, что было бы близко к 10 обороты медленного вала.

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

Он мог использовать себя как слугу, заставляя его делать даже несколько градусов движения.

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

В программе принимает несколько удобных команд, связанное с другим ведущим устройством, может координировать движения для некоторых из этих проектов. Также имеется возможность запомнить до шестнадцати наиболее часто используемых команд в EEPROM системы управления..

Например, наведение спутниковой антенны, или дверное управление курятником.

схема

Lте же самые материалы

Он был разработан, чтобы иметь возможность точно сохранять положение энкодера в EEPROM., когда есть отключение электричества. Затем позволяет восстановить последние данные и иметь возможность перемещаться с хорошей точностью с той же точки, где остановился..

Диод на выводе микроконтроллера служит для поддержания i 5 Вольт даже при резком падении напряжения в цепи, через конденсатор С3. Проведение исследования, Я обнаружил, что они служат больше всего 8 мс для сохранения байта в EEPROM. В этом случае необходимо будет сэкономить 4 байты. Con i 100 мF вы можете сохранить все данные, необходимые для перезагрузки. В любом случае, лучше оставаться в изобилии, и я предпочел не ошибаться 330 мF.

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

программное обеспечение

Использование прошивки Образование

предпосылка:

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

Nв последней версии пришлось многое скорректировать, чтобы было лучше. в quэто че Есть многои детали в сборке. Если так с учетом также поставить сторожевого пса, что в если в какой-то момент программа выйдет из строя, тогда, микро сброшен. Особенно при обнаружении пропадания питания, необходимо для перезапуска микроконтроллера после сохранения данных в EEPROM.

Я усыновил тебяn особое внимание, чтобы счетчик энкодера не превышал значений, определенных как минимальное и максимальное, которые являются DRIFT и MAXLIMIT (см. определения ниже).

Я прокомментировал это на английском, потому что видео демонстрируется для всего мира и, возможно, не только полезно дляgli Итальянцы.

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

Есть два для использования 16F84A или 16f628A, так что вы можете использовать все EEPROM. Это необходимо выбрать перед компиляцией.

Обратите внимание на два определения в начале, которые определяют дифференцированную компиляцию использования оборудования..

Варианты:

DOTOGGLE

Он используется для разрешения кнопки активации или контакта, (RUN на диаграмме) работать циклически. В этом методе он позволяет запускать и останавливать движение., даже до достижения программного концевого выключателя.

WITH_RS232

De определяет добавление последовательной связи к контактам TXD и RXD.

Любые изменения в назначении контактов, которые будут использоваться с последовательным, разрешены., но я не рекомендую это. На самом деле я предвидел, что схема также позволит устанавливать другие микроконтроллеры, контакты которых совместимы с 18F84A..

Таким образом можно будет расширить программные функции и, возможно, повысить производительность с помощью микроконтроллера более высокого класса..

WITH_OSC

Используется для качания движения в двух пределах.. См. Описание команды ниже.

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

WITH_GOTO

Опция, позволяющая отдавать команду движения в определенную позицию. Если не заинтересованы в использовании, это можно исключить.

WANTWDT

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

Другие соответствующие определения:

МАКСЛИМИТ

Он используется для определения максимальных пределов значений энкодера..

Полезно правильно установить, после первых тестов, для определения среднего значения (СРЕДНИЙ)

СРЕДНИЙ

Автоматически рассчитывается. Он используется для определения начального значения, которое будет установлено в EEPROM..

ДРИФТ

Значение, учитывающее расчет остановки до того, как счетчик энкодера превысит предел слова (что я 16 немного).

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

ВРЕМЯ ОЖИДАНИЯ

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

ОТЛАДКА

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

Как использовать

Первый способ Команды кнопок.

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

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

Как только контакт замкнется, с задержкой в ​​несколько миллисекунд, движение начнется и светодиод (LED0 схемы) загорается на время работы двигателя. В своем эксперименте я использовал трехцветный светодиод., поэтому LED0 синий.

Если перед полной неподвижностью возникает некоторая инерция, этот светодиод мигает, указывая на фазу ожидания при полной остановке.. Может это просто вспышка, когда замедление быстрое.

Доехал до программного концевого выключателя, горит один из двух светодиодов концевого выключателя. С моим трехцветным светодиодом LED2 красный, а LED1 зеленый. Зеленый светится в конце позиции A и красным - в позиции B.

Обратите особое внимание на направление вращения двигателя.. Фактически ожидается, что при уменьшении счетчика энкодера движение переместится в положение A.. Его команда настройки последовательного порта - строчная буква p..

Когда энкодер увеличивает счет, движение переходит в положение B. Его команда настройки последовательного порта - это заглавная буква P..

Это будет важно на первом этапе подключения мотора и определения направления вращения..

второй метод Последовательные команды.

Предусмотрена связь с микро, через последовательный порт. Это может быть адаптер USB-RS232 совместим с уровнями напряжения микро-. Вы также можете использовать модуль Bluetooth, которые, возможно, потребуется сосредоточить внимание на уровни напряжения микро-. Я поставил делитель напряжения, чтобы адаптироваться к 3,3 Volt ноги модуль Bluetooth RX. Штырь TX не создает серьезные проблемы.

Вход для начала движения также остается доступным для эксплуатации., который определяет движение в зависимости от расстояния до концевых выключателей. Этот вход показан на диаграмме с определением кнопки. БЕГАТЬ.

Список команд из последовательного

Модель управления основана на начальной букве, сопровождаемые номера, если это необходимо.

Для этого команда будет иметь частный случай:

Xnnnnn

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

Для выполнения команды выполняются следующие условия:

  • яКоманда выполняется 6 допустимые символы, полный буфер.

  • Команда завершается, если в конце поставить пробел или клавишу ВВОД..

  • Один символ стирания слева (Backspace), прерывает запись текущий.

Все сигналы сериала, остановить движение.

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

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

Команды без цифр - это буквы A, В, S, V, O, С. Буквой V, не имеет значения, в верхнем или нижнем регистре отправлено, у вас будет самая актуальная информация.

Для всех букв, см. подробности ниже.

За опечатки, команда на удаление персонажа (Backspace) прерывает ввод значения.

Команды в деталях из последовательного:

A

Вразные активирует движение и уменьшает счет энкодера

В

Вразные активирует движение для увеличения счетчика энкодера.

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

С

В верхнем регистре перемещает указатель в EEPROM концевых выключателей на первый. местосохранен. Фактически даже выключение, данные остаются.

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

Подробнее см. N.

г

Без разбора, если в нижнем или верхнем регистре, заставляет двигатель двигаться в положение энкодера, записанное следующими цифрами.

M

В различных, позволяет изменять значение подсчета dell’encoder.

Затем вы можете определить новое значение положения энкодера..

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

O

Верхний регистр, устанавливает функцию колебаний между двумя программными концевыми выключателями. Любой вводимый символ останавливает колебание, но чтобы убрать опцию, вы должны отправить команду в нижнем регистре.

п

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

Верхний регистр относится к концевому выключателю напротив. Это кроется в dнаправление, в котором энкодер увеличивает счет с помощью команды B.

N

Команда на изменение положения памяти EEPROM. Мы принимаем один или в связи цифры, sи чем больше, тем больше выбирается доступная память. При этом используется другое ограничение концевого выключателя..

S

Очень похоже на команду P, только он приказывает сохранить текущую позицию счетчика, по этой причине после буквы нет цифр. Полезно видеть, что текущее положение близко к концевому выключателю и, следовательно, считается действительным.. Если буква в нижнем регистре, вы хотите сохранить для стороны A, согласованность с введенными значениями допускается.

T

По желанию, жертвуя другими вариантами, как сторожевой пес, качели и команда G. Вы также можете заполнить эту опцию.
яndifferente, используется для запуска вывода по таймеру. В этом случае первая цифра указывает, какой из двух таймеров использовать.. Учитывая, что 0 будет относиться к стороне A и 1 будет сторона B. Вы принимаете ниже до 9999, который может составлять секунды или меньше, если определение MAXTICK изменено. Это для подсчета 5 мс таймера0, то по умолчанию установлено значение 200, так что у тебя есть минутка.

V

В различных, отображает информацию о значениях концевых выключателей e dell’encoder, плюс номер ячейки EEPROM.

End Command Сообщение:

В конце каждой команды информационное сообщение. Программная память на пределе, не стоит вносить изменения, не зная как.

Сообщения “ОК” если все сделано правильно или “ERR N” если произошла ошибка операции.
За N есть возможное объяснение ошибки. См. Список ниже.

1

Указывает, что сделана попытка выйти за пределы дефекта (DRIFT o MAXLIMIT)

2

Введенное значение выходит за нижние пределы, определяется концевым выключателем и средним положением хода. (на самом деле есть СРЕДНИЙ, который является средним значением)

3

Введенное значение выходит за верхние пределы, определяется между СРЕДНИМ и верхним концевым выключателем.

4

Значение должно быть выше MIDDLE.

5

Значение должно быть ниже MIDDLE.

6

Первый отправленный символ недействителен, возможно коррумпирован.

7

Местоположение, которое вы пытаетесь записать в EEPROM, неверно

Команды, активные при компиляции без RS232

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

По этой причине планируется использовать командный импульс. с одной кнопкой с разными функциями.

Функции находятся в добавленной программе OneButton.Inc который может использовать каденцию измерения периодов через Timer0, также используется для мигания светодиодов. Эта частота определяет допустимый период нажатия кнопки., фильтровать любые механические импульсные колебания.

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

Не все функции включены, позволяя держать программу чуть больше, чем 600 машинные инструкции. Мы используем только определения, полезные для этой программы, хотя программа OneButton.Inc предложите другое.

Посмотрим, какие из них активны:

Нажмите

Используется для сохранения в EEPROM, на этапе программы.

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

Двойной клик

Используется для начала и завершения фазы программирования. Можно будет избежать сохранения в EEPROM, если нажать второй раз, не щелкнув для сохранения. Ограничения будут действительны только в ОЗУ.. Они не сохраняются в EEPROM.

Долгое нажатие

Используется для движения в направлении А, на этапе программирования. Концевой выключатель установлен на максимум, определенный с помощью DRIFT..

Короткий щелчок и

долгое нажатие

Используется для движения в направлении B, на этапе программирования. Лимит установлен на максимум. Концевой выключатель установлен на максимум, определенный с помощью MAXLIMIT..

С помощью этих возможностей вы можете подумать о программировании конечных положений с последовательностью, требующей двойного щелчка мышью для запуска фазы программирования.. Светодиод 0 (голуб) начнет быстро мигать. В этот момент вы сможете переместить двигатель в положение остановки.. При долгом нажатии он начнет двигаться к пределу A. Когда кнопка будет отпущена, лимит будет сохранен в ОЗУ.. Однако желательно перейти от средней точки к необходимой точке остановки..

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

На этом этапе у вас будут ограничения, хранящиеся в ОЗУ., но вы всегда можете изменить их, повторив операцию. Чтобы сделать их окончательными, вы можете сохранить их в EEPROM с помощью простой команды в один щелчок.

Этот щелчок будет действовать только в течение периоданалогкоторый ограничен последовательностью двойного щелчка, этоО двойной в начале иО двойной в конце программирования.

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

Вы можете скачать пакет и / или увидеть видео

Примечание

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

0 ответы

Ответить

Хотите принять участие в обсуждении?
Вы можете внести свой вклад!

оставьте ответ