Сбой счёта импульсов с оптического щелевого датчика
Сбой счёта импульсов с оптического щелевого датчика
Вчера опять тщательно тестировал свои проекты на сбои шагов:
1. Станок для намотки шпагата-v02.flp - на быстром счётчике
2.Станок для намотки шпагата-v01.flp - на быстрых входах
Дисплеи в проектах убирал - все. Скорость выставлял максимальную рабочую нужную мне.
Результат тестирования такой:
При всех убранных дисплеях - оба проекта работают без сбоев, а проект "Станок для намотки шпагата-v01.flp" на быстрых входах даже лучше ( точнее на концах).
Есть конечно ещё один путь - использовать дисплеи просто для выставления уставок, а при работе отключать совсем и если у вас не получится с дисплеями то прийдётся так и сделать.
1. Станок для намотки шпагата-v02.flp - на быстром счётчике
2.Станок для намотки шпагата-v01.flp - на быстрых входах
Дисплеи в проектах убирал - все. Скорость выставлял максимальную рабочую нужную мне.
Результат тестирования такой:
При всех убранных дисплеях - оба проекта работают без сбоев, а проект "Станок для намотки шпагата-v01.flp" на быстрых входах даже лучше ( точнее на концах).
Есть конечно ещё один путь - использовать дисплеи просто для выставления уставок, а при работе отключать совсем и если у вас не получится с дисплеями то прийдётся так и сделать.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сбой счёта импульсов с оптического щелевого датчика
[ref]vfv[/ref], Валерий, пробуйте:
Жду комментариев.
Описание - над блоком.Жду комментариев.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Сбой счёта импульсов с оптического щелевого датчика
Полный хаус. Сейчас сидел правил концевые стойки (концевые аварийные датчики ещё не успел поставить).Трапециевидный вал это ведь редуктор. Сейчас пропаду на 15мин купить сигареты, а потом попробую этот хаус описать. Пины поменял - как указано.
Отправлено спустя 1 час 33 минуты 26 секунд:
Если каретка находится до нажатия на кнопку пуск между серединой и правым концом, то при нажатии на пуск , начинает двигатся на малой скорости (реле выключено, тем создана цепь для движения на лево ) к середине. Дойдя до середины включает повышенную скорость и продолжает движение на лево. Так же от середины начинается отсчёт заданных шагов. Делает заданное количество шагов, реверс и начинается полный хаус.То сделает несколько шагов на право и не дойдя до середины опять на лево то убежит в любую сторону до упора.
Хочу на всякий случай напомнить - мне считать шаги нужно только от середины на лево и от середины на право. А на оборот с права до середины и слева до середины считать с исполнением нет. Середина всё равно всё обнулит.
Может это происходит без того моего счётчика с середины, который вы заменили RS триггером?
Отправлено спустя 1 час 33 минуты 26 секунд:
Если каретка находится до нажатия на кнопку пуск между серединой и правым концом, то при нажатии на пуск , начинает двигатся на малой скорости (реле выключено, тем создана цепь для движения на лево ) к середине. Дойдя до середины включает повышенную скорость и продолжает движение на лево. Так же от середины начинается отсчёт заданных шагов. Делает заданное количество шагов, реверс и начинается полный хаус.То сделает несколько шагов на право и не дойдя до середины опять на лево то убежит в любую сторону до упора.
Хочу на всякий случай напомнить - мне считать шаги нужно только от середины на лево и от середины на право. А на оборот с права до середины и слева до середины считать с исполнением нет. Середина всё равно всё обнулит.
Может это происходит без того моего счётчика с середины, который вы заменили RS триггером?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сбой счёта импульсов с оптического щелевого датчика
Сделано на прерываниях. Работает по фронтам. Очень чувствительна к помехам. Любой по продолжительности фронт вызывает сработку входа и выполнение подпрограммы.
Соответственно, при Вашем реверсе чего-то весёлое творится с сигналами.
Осциллографа нет - печалька, не узнать, чего там ...
По поводу счётчика - вот сами подумайте, чем отличается Ваше включение от RS триггера с доп. R-триггером по S ? Ничем. При первом же импульсе получим 1, при R всегда 0.
Я прекрасно понимаю, как работает Ваш алгоритм - на будущее, на всякий случай.
Соответственно, при Вашем реверсе чего-то весёлое творится с сигналами.
Осциллографа нет - печалька, не узнать, чего там ...
По поводу счётчика - вот сами подумайте, чем отличается Ваше включение от RS триггера с доп. R-триггером по S ? Ничем. При первом же импульсе получим 1, при R всегда 0.
Я прекрасно понимаю, как работает Ваш алгоритм - на будущее, на всякий случай.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Сбой счёта импульсов с оптического щелевого датчика
Но ведь в версия "Станок для намотки шпагата-v02.flp", - на быстром счётчике то же на прерываниях и помехи его не берут и работает отлично , но без дисплеев. С ними наблюдаюся сбои шагов.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сбой счёта импульсов с оптического щелевого датчика
Листинг блока, внутренности:
[spoiler=Чего там у него за кишки?][/spoiler]
[spoiler=Чего там у него за кишки?]
Код: Выделить всё
volatile byte kolich_step, _ustkolich_step; // объявляем переменные
volatile bool _centr_, _trig_interr_01 ; // объявляем переменные
setup(){
DDRD &=0xF3; // настраиваем пины 2 и 3 как входы
PORTD |=0x0C;// включаем на 2 и 3 подтяжку
attachInterrupt(0, calc_center, RISING);// прерывание на пине 2 по фронту
attachInterrupt(1, calc_horizont, RISING); // прерывание на пине 3 по фронту
DDRB |=0x20; // пин 13 как выход
PORTB &=0xDF; // пин 13 low
}
loop(){
_ustkolich_step = Step_ust; // вход в блок не может быть volatile, поэтому промежуточное присвоение
speed_step =_centr_; // выход из блока не может быть volatile, поэтому промежуточное присвоение
if(! in_work){ // если вход 0, то
speed_step =0; // переключение скорости =0
}
void calc_horizont() // обрабатываем датчик горизонтального перемещения по фронту импульса на пине 3
{
kolich_step++; // увеличиваем внутренний счётчик, ВС, на 1
if (kolich_step > _ustkolich_step && _trig_interr_01) { // если ВС больше, чем уставка и разрешена сработка, то:
_trig_interr_01 =0; // запрещаем сработку
PORTB^=0x20; // инвертируем пин 13
}
}
void calc_center() // обработчик центральной метки, по фронту на пин 2
{
_centr_ =1; // говорим, что дошли до центра, скорость можно увеличить
kolich_step=0; // сбрасываем ВС в 0
_trig_interr_01 =1; // разрешаем сработку в горизонтальном блоке
}
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Сбой счёта импульсов с оптического щелевого датчика
О! Нет! Я в кодах не разбираюсь. А учиться - уже поздно (62г).Научится бы просто на уровне блоков хорошо разбираться, вот и вся моя задача.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Сбой счёта импульсов с оптического щелевого датчика
Разбирайтесь с центральной меткой...
Дерзайте!
Удачи!
Дерзайте!
Удачи!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Сбой счёта импульсов с оптического щелевого датчика
Спасибо за проделанную работу. Буду запускать всё таки проект "Станок для намотки шпагата-v02.flp" и надо будет мне подумать как сделать уставки перед началом работы, а потом их все отключать на время намотки.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя