Счетчик длины кабеля, сделать умным и связать с ПК
- Войдите на сайт для отправки комментариев
Добрый день, уважаемые форумчане.
Имеется вот такой
ИДМ-20. Измеритель длины кабеля http://www.smol-kabel.ru/index.php?module=catalog&show=fulldesc&id=64&item=385
Задача: Заменить счетчик на ардуино + ПК
ТЗ к ардуино:
1. Подключить индуктивные датчики от счетчика. (два цифровы пина)
2. Подключить 6 исполнительных механизмов. (мотор (М), красный краситель (R), зеленный краситель (G), желтый краситель ( Y), резак (С), cигнал готово (S))
Алгоритм работы следующий:
Есть переменные a=0 (полученная от ПК длина кабеля) и b=0 (измеренная длина кабеля)
Ардуино получает по uart с ПК строку ввида: "5;R;15;G;35;C"
Ардуино записывает а=5
Работает условие если a>b включить (М) , влючается мотор начинает мотаться кабель через счетчик (в счетчике два индуктивных сенсора) он считает в обе стороны.
Как только a=b, выключается (М), ардуино отправляет значие "b" в uart фразой (5 м, ok) , считает следущее значение из порта R и включает касный краситель (время сработки задаем в сетапе), ардуино отправляет в uart фразой (Red, ok)
Читает дальше 15, записавает а=а+15
Работает условие если a>b включить (М) , влючается мотор начинает мотаться кабель через счетчик (в счетчике два индуктивных сенсора) он считает в обе стороны.
Как только a=b, выключается (М), ардуино отправляет значие "b" в uart фразой (20 м, ok) , считает следущее значение из порта G и включает зеленный краситель (время сработки задаем в сетапе), ардуино отправляет в uart фразой ( Green, ok)
Читает дальше 35, записавает а=а+35
Работает условие если a>b включить (М) , влючается мотор начинает мотаться кабель через счетчик (в счетчике два индуктивных сенсора) он считает в обе стороны.
Как только a=b, выключается (М), ардуино отправляет значие "b" в uart фразой (55 м, ok) , считает следущее значение из порта C и включает резак (время сработки задаем в сетапе), ардуино отправляет в uart фразу (Сut, ok),
Ардуино обнуляет а=0 и b=0, ардуино замыкает сигнал готово S и отправляет в uart фразу (Ready)
После того как ПК получил (сигнал, или ready в com port, то он отдается следующую стороку "10;R;4;R;5;G;10;R;25;C"
Кол-во метража в участке между метками может быть любое, меток краситилем может быть любое, комбинации могут быть либые, единственная команда окончания "С" отрезает кабель и запускает цикл с нуля.
Жду предложений по цене реализации скетча. Возможны вопросы по схемотехнике, подключение оконечных устройств.
Жду предложений по цене реализации скетча. Возможны вопросы по схемотехнике, подключение оконечных устройств.
Есть вопросы и по подключению и по конструктиву.
ПК - это вообще обязательное условие?
StudioGippopotam@gmail.com
ПК не обязательно, это может быть планшет, обязательно прочитать строку из uart
есть несколько вопросов, но сделать могу конечно независимо от ответов, ответы могут влиять лишь на цену
1 uart штука такая не очень помехоустойчивая, я обычно делаю связь с пк через Rs485, но если комп близко и продублировать передачу данных, можно и на uart оставить. В то же время интерфейсы rs485/usb cтоит столько же, сколько интерфейс uart/usb
2 У меня есть платы входов / выходов в индустриальном исполнении, на дин рейку, с защитами входов и выходами как в виде реле, так и мосфитов, ну есть и на симисторах - но это не тот случай. Что является нагрузкой контроллера - достаточно ттл сигналов или нужно коммутировать 220, или 12/ 24 В оборудование? Вот примеры модулей
http://uniel.ru/catalog/1639
но можно и на ардуино, хотя в промышленности аруиновские штыречки и шильдики не очень надежная штука
3 Мой адрес ydom@mail.ru , связывайтесь, когда будут ответы на вопросы 1-2 смогу посчитать. Большой опыт работы с АСУ ТП и МАХП, могу сделать программы на честном С, без ардуиновских костылей и тормозов, в том числе и на железе ардуино, если нужно строго на ардуино. Будет надежно.
Ваши железки знаю, но задача очень простая для таких мощностей. ПК будет рядом. Сейчас мысль собрать рабочий прототип. Обвязку сделать смогу сам или почти сам. Основная задача скетч !!! Можно сделать проверку, получения данных ардуиной, что бы она посылала например "start" в уарт как только получила строку. А ПК бы слал строку с периодичстью пока не увидет start, на пример.
Ваши железки знаю, но задача очень простая для таких мощностей. ПК будет рядом. Сейчас мысль собрать рабочий прототип. Обвязку сделать смогу сам или почти сам. Основная задача скетч !!! Можно сделать проверку, получения данных ардуиной, что бы она посылала например "start" в уарт как только получила строку. А ПК бы слал строку с периодичстью пока не увидет start, на пример.
обычно проверку делают так- включают во все посылки контрольную сумму, и по получении сигнала посылат подтверждение. Поскольку намотка проволоки- не шибко быстрое действо, в вашем случае и подтверждение, и контрольные суммы предусмотреть можно.
Скетч так скетч, отпишите, я посчитаю сколько будет стоить. Но конечно хорошо бы на С, чтобы хотя бы прерывание по получению байта иметь, в arduino ide придется все время проверять, не пришел ли байт, или городить прерывание по изменению состояния пина D0, что чревато потерей байта, с ненулевой вероятностью, поэтому и рекомендую и контрольную сумму, и подтверждение. А то компрессор включат в соседнем цеху - и ваш аппарат отмотает на полную! Так что отработку неподтверждения тоже надо включить в код.
Ну адрес напомню ydom@mail.ru
от 30 т.р. хекс прошивка для процессора, но это будет не ардуиностайл, а вполне пром. исполнение.
PCBADM на мэйлру.
Можете ознакомиться с некоторым количеством железа
Дорого, спасибо, может когда и буду промышленный образец делать, тогда и обращусь ))
Информация по счетчику который сейчас стоит на колесе http://www.smol-kabel.ru/files/SMOL_counter_id-2_200410.pdf
Датчики при попадании на дырку в колесе выдают +12v, потом на схеме стоит делитель напряжения на резисторах и уже atmega 16a все хавает.
В счетчике есть какой-то умножитель энкриментов,програмно аппаратный, так что потребуются математические функции какие-то.
Сделаю на Ардуино, недорого. Пишите htpicc@gmail.com, обсудим.
Дорого, спасибо, может когда и буду промышленный образец делать, тогда и обращусь ))
Сделайте два - три, один себе остальные на продажу, деньги отобьете и почти занахаляву счетчик заполучите.
Мне нужно отработать концепцию, и самому интересна эта тема, поэтому и прошу написать именно в среде ардуино, что бы можно было потом самому дорабатывать программу управления,например добавить дисплей и т.д. я согласен с вами, что коммерческий продукт нужно делать правильно, но он пока только для личных нужд.
Вообще без проблем :)
Заказов у меня хватит до след кризиса(2018).
А так были свои моталки, красилки, отрезалки и для маленьких проводов, и здоровенных кабелей. Поэтому подобные проекты далеко не тайна.
Надумаете - аре велком.
Всем добрый день.
В связи с тем, что не получилось найти соотоношение цены и желаемого результата была произведена собственная работа.
Что получилось: Счетчик считает с точность 0,01 метр = как заводской, умеет принимать поочередно одну заданную длину из seriala, суммировать полученные длины, включать выключать мотор, сбрасывать показания.
Что не получается:
Получение по Serial строики вида "5;R;15;G;35;C" (желательно произвольной длины, но последовательность статична всегда, сначала отматать отрезок, потом либо пометить, и отматать еще, либо отрезать), разибрать её на шаги выполнения программы, , управлять Y,R,C и после С писать в Serial "Ok!"
Но для упращения задачи можно, применить максимум 10 шагов - отмотать, пометить, отмотать.... отрезать, но отрезать может быть на любом четном шаге после отмотать и после отрезать отправляем в serial "Ok!"
Фотографии устаройства https://www.dropbox.com/sh/2eqpqwmvifi3w4u/AAA2TbmTj4Nh4Xe9nVnFMhDra?dl=0
Библиотеку брал тут: http://www.pjrc.com/teensy/td_libs_Encoder.html
Мой код
Если есть желающие помочь доделать проект, велкам !!
Нашел функцию записи 10 шагов из строки, не могу понять почему нормально не преобразуется step1 в число
для вашей задачи у arduino ide офигенный минус - нет прерывания по получению байта uart, без этого прерывания будет не работа, а гемор. Мое предложение остается в силе, с озвученными параметрами - написать нормальный код на честном С, без ардуиновских костылей, тормозов и глюков. Альтернатив много, тем более если вы собираетесь что- либо делать для пром. автоматики - то либо специализированные контроллеры, либо нормальный С. Кстати, смотрите что у Вас тут:
Есл Вы пошлете, например, 9 байт на свою резалку, то этот фрагмент подвесит все течение программы на 0.1 секунду (ну кроме прерываний, которые будут выполняться), вы умышленно это сделали? Зачем тут delay(100)?
плата какая?
а зачем у вас там две ардуины? Одна не справляется?
Всем добрый день.
Onkel - delay осталось от примера который я взял за основу парсера строки.
Прерывание на uart, мне не нужно, т.к. Пк отправляет команду,только когда получит "Ок!" от ардуины, а она соответственно ничего не считает пока не получит команду.
SlavaRobotam - Arduino uno
Onkel- нет, ардуино одна я просто отдельно пишу механику и обмен, что-бы не запутаться. Осталось свести две программы в одну.
Кстати проблема с преобразованием char в int решил, в строке 89 из второго кода, нужно писать: test= atoi(step1);
Ну да, в принципе так можно - если ардуине делать нечего, то можно опрашивать буфер uart пока что надо не получишь.
usb не отваливается? А то в пром. условиях usb - не самый лучший вариант, отваливается только давай.
Ахах, не на столе пока ничего не отвалилось, просмотрите фотки как это выглядит ))) Моя большая гордость, то что он уже считает с точностью до сантиметра !!!
я про отвал в программном смысле, помехи частенько (или иногда, зависит от уровня ЭМ помехи) приводят к потере виндой usb порта (vcp в случае ардуины).
Доделал контроллер, 510 строк, умеет выполнять последавательно до 10 шагов, проверять наличие кабеля, считать, что следующий отрезок влезает в установленную бухту, сбрасывать показания. Если есть предложения где поправить буду рад информации. Видео работы позже прикреплю. Код можно использовать в личных целях и для обучения. Для проверки кода отправить в сериал монитор строку: "test,5,2,y,4,r,3,y,2,r,6,c,"
https://youtu.be/9cQ-1qWxFwI ссылка на видео.
507
Serial
.println(
"Ok!"
);
// отправляем в serial строку, что наш контроллер готов к работе
508
delay (2000) ;
// пауза 2 секунды
в течении 2-х секунд готов быть кирпичём