Здравствуйте.
Столкнулся с проблемой, не могу придумать алгоритм управления.
Управляю транспортерной лентой по которой едет груз разного веса по отдельности.
С управлением двигателями ленты и с измерением веса проблем нету.
Но никак не могу сделать так, чтобы груз подъезжал на место где под лентой установлен тензо-датчик, так чтобы точно, то есть управляя движением ленты расположить его точно над тензодатчиком ориентируясь на максимальный вес и остановиться.
Когда груз едет по ленте и приближается к тензо-датчику, вес постепенно увеличивается до максимума а потом, когда груз проезжает тензодатчик, то вес постепенно уменьшается.
Какой вес груза не известен, груз может быть разным. Я могу делать реверс движения.
В интернете нашел что можно сделать это с помощью библиотеки PID, но у меня еще не было опыта и я еще не могу разобраться как ее использовать для моего проекта.
Тогда элементарно:
Сначала пропускаем груз, с определенной частотой фиксируя показания датчика. Затем по точкам строим сплайн и находим максимум.
Откатываемся до этого максимума.
А если простой вариант:
Если значение датчика >0 -начинаем измерять вес(можно снизить скорость )
Берём три(условно) последних измерения веса и вычисляем среднее значение. Новое измерение - обновляем ср. значение - старое запоминаем.
Если новое среднее значение меньше предыдущего, значит прошли пик - делаем реверс,(медленно) пока не дойдём до старого значения ( с учётом допустимой погрешности).
P.S. Ответил почти одновременно с andriano
примерно о том же
А если никогда не дойдем?
Установить нужную погрешность и такого не случится
Отнюдь.
Вы предлагаете искать определенное показание датчика (которое можно никогда не найти), а я предлагаю искать определенное положение на ленте, которое заведомо существует.
Увеличение/уменьшение веса могут быть очень плавными, за счет чего небольшие погрешности измерения будут давать большие погрешности положения. Тут порочна сама идея искать нужный вес в положении экстремума.
А я понял, что ему не нужно находить максимальный вес всех грузов на ленте, а нужно просто позиционировать груз на тензодатчике для взвешивания. Я бы подумал насчет фотоэлемента
Я имел ввиду только это
Вообще не буду спорить, предложил самый простой вариант, что пришёл в голову. С интересом ознакомлюсь с другими
Я могу найти максимум веса и хранить в переменной.
Спасибо за подсказку, сейчас попробую.
Да, именно это и нужно. Только сделать это с помощью только ленты и датчика веса. Можно было конечно установить дополнительные еще датчики, но это усложняет схему и делает ее ненадежной. Тензодатчик и двигатели хорошо защищены а все остальное что будет установлено дополнительно и выступать, может быть снесено по неосторожности, плюс грязь, пыль и влага не позволяет устанавливать оптические датчики и еще какие-то дополнительные датчики.
Надеюсь скорость движения ленты вы можете регулировать?
Когда появляется нагрузка на датчик - скорость уменьшить на 10%.
Когда вес на ленте пойдёт на уменьшение - включить реверс и уменьшить скорость ещё на 10%.
Когда скорость ленты будет равна 10% от максимальной - вычислить среднеарифметическое значение всех максимальных показаний датчика и получить исходный вес изделия на ленте.
Далее выбираем необходимое действие с изделием и возвращаем скорость ленты на максимальное значение.
Не так уж и сложно.
Да, я могу уменьшить скорость, спасибо, буду пробовать.