не могу понять причину

Ответить
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

не могу понять причину

#1

Сообщение Sanbi4 » 03.12.2019{, 11:04}

Всем привет!
Во вложении проект под 6,1,1 и ПБ, которую я в проекте использовал.

Смысл в чем: при подаче на вывод "Ближ" 1 - вращаем мотор в одну сторону, пока не упремся в конечник, уперлись - останов, делаем паузу, и отсчитываем шаги в другую сторону - это плата "Инициализация". как только отработала инициализация - плату эту отключаем, и начинает работать плата 2.

Только вот в чем фишка, не могу понять из-за чего это. при компиляции платы "инициализация" без платы 2 - все работает как надо.
при компиляции обеих плат - не выполняется команда "Ближ", а вот команда по "датчику" работает, переход на работу 2ой платы есть, 2я плата работает как надо.

что не так я сделал?
Вложения
STEPDIR__V0.3_(CODE).ubi
(135.18 КБ) 44 скачивания
A4988 шаговый с датчиком положения.flp
(309.42 КБ) 59 скачиваний

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

не могу понять причину

#2

Сообщение AlexCrane » 03.12.2019{, 12:00}

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

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

не могу понять причину

#3

Сообщение Sanbi4 » 03.12.2019{, 12:51}

тогда почему работает всё, кроме вкл по сигналу "ближ"? повторюсь, по сигналу "Датчик" отработка происходит, а по завершению идет переход на 2ю плату, и там все отрабатывается как надо!!!

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

не могу понять причину

#4

Сообщение AlexCrane » 03.12.2019{, 13:34}

Sanbi4, Потому-что смотри 2 пост, организуй логику для работы с одним блоком

Что мешает сделать на входы блока ШД по переменной и расположить на отдельной плате!!!

А дальше передавайте на нее что угодно из своих плат
ШД000.png
Подкорректируете проект по необходимости, как пример делал
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

не могу понять причину

#5

Сообщение Sanbi4 » 03.12.2019{, 16:30}

Спасибо, попробую


PS. да, так все работает. принцип понял, спасибо за направление!!!

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

не могу понять причину

#6

Сообщение Sanbi4 » 04.12.2019{, 19:58}

Всем снова привет! С предложенной программой такой косяк: при отработке инициализации, после нажатия на конечник количество шагов берется из платы 2. Для примера я выставил сначала 300 шагов везде, но в реале начинаю подбирать шаги и ничего не получается. В итоге в плате инициализации должно 30 шагов от датчика, а на 2ой плате по 50 в обе стороны. А получается так, что после нажатия на конечник мотор делает 50 шагов, а не 30, как задаю в переменную. Пробовал выставлять значения по умолчанию 30, но мотор все равно шагает на 50. Пробовал ставить задержку записи 1 в переменную инициализация - работает только плата 1. В чем дело не пойму.

Аватара пользователя
leons
Сержант
Сообщения: 141
Зарегистрирован: 18.06.2017{, 17:07}
Репутация: 3

не могу понять причину

#7

Сообщение leons » 04.12.2019{, 22:15}

Sanbi4 писал(а):
03.12.2019{, 11:04}
вращаем мотор в одну сторону, пока не упремся в конечник, уперлись - останов, делаем паузу, и отсчитываем шаги в другую сторону
а без концевика ?? по количеству шагов не пробовали ,и сам алгоритм в право лево одинаково должно быть, и по кругу ??

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

не могу понять причину

#8

Сообщение Sanbi4 » 05.12.2019{, 08:37}

алгоритм инициализации должен быть такой:
Запуск системы - подача 1 на вход ближ. мотор начинает вращаться против часовой до момента нажатия на концевик. это нулевая точка отсчета. как только нажали на концевик - останавливаем мотор, выжидаем 2 сек, и уже по часовой отсчтываем 30 шагов. как только инициализация прошла, плата "инициализация" перестает работать, ну и, соответственно, перестает реагировать на изменение состояния входа Ближ, начинает работать плата 2. по сигналу лог 1 на вход дальний - мотор делает 50 шагов по часовой (то есть добавляет количество шагов от нулевой точки), при лог 0 на этом входе - мотор отматывает обратно эти 50 шагов и должен встать на то место, где 30 шагов от нулевой точки. как-то так....

проект под мегу 2560, драйвера у меня А4988.

Отправлено спустя 1 час 11 минут 22 секунды:
решил задачу!!! на плате 2 поставил таймер на 100мс, который включает запись переменной _Steps_ от переменной "инициализация"

Ответить

Вернуться в «Помогите, а то я "нимагу"»