Ищу исполнителя для устройства "автоматического регулирование ширины конвейера"
- Войдите на сайт для отправки комментариев
Здравствуйте, нужно сделать автоматическое регулирование ширины конвейера ( http://prntscr.com/lno87q ) Вот 3д модель ( https://prnt.sc/lnr22a ) ( https://grabcad.com/library/conveyor-pcb-single-lane-mode-1) подобного конвеера. Сейчас ширину регулируем вручную крутя рычаг на ШВП. Механика, моменты, крепление, не так важны для начала. Сложность в том чтобы обучить ШД делать две вещи. Например если нужно изменить ширину конвейера с 20мм до 10мм то контролер должен крутить ШД за часовой стрелкой а если до 30мм то против часовой, до тех пор пока не выставить 10мм через лазерный дальномер или другой какой то модуль. Вчера нашел вот это видео ( https://www.youtube.com/watch?v=EUQIijdsXeM&list=PLUMcEpsujGj5FlNQcfISnboFdhTOmKKTk&index=3&t=2s ) модуль вроде подходящий. У друзей насобырал Arduino Mega 2560 R3, Шаговый двигатель NEMA23 SY57STH76-1006A, Контроллер шагового двигателя TB6560-3A-MODUL. Хочу раз собрать дома простую тестовую модель. Например, собрали все, подключили, задали длину 10мм в настройках и поставили на определенном растоянии от лазерного дальномера пластину, если пластина дальше чем 10 мм то ШД должен крутится проты часовой если ближе за часовой стрелкой, и так далее если будем перемещать пластину.
вот вам тестовый скетч с драйвером L289N и энкодером для Nema17, крутите в разные стороны энкодер, ШД крутится синхронно.
byte deviceON = LOW; #define encoder_sw_pin 5 #define encoder_sw_debounce_delay 50UL unsigned long encoder_sw_debounce_time = 0; byte encoder_sw_last_read = LOW; byte encoder_sw_pin_state = HIGH; #define encoder_step_debounce_delay 2UL #define encoder_dt_pin 6 unsigned long encoder_A_debounce_time = 0; byte encoder_A_last_read = LOW; byte encoder_A_pin_state = HIGH; byte encoder_A_prev = LOW; #define encoder_clk_pin 12 unsigned long encoder_B_debounce_time = 0; byte encoder_B_last_read = LOW; byte encoder_B_pin_state = HIGH; byte encoder_B_prev = LOW; #define driver_count_steps_by_one_encoder 10 // 200 steps driver / 20 steps encoder * 2 unsigned long currentMillis; unsigned long currentMicros; unsigned long firstMicros; unsigned long stepMicros; #define minStepMicros 3000UL unsigned long lastMicros = 0; int step_driver_position = 0; #define l298n_in1_pin A1 // A+ red #define l298n_in2_pin A2 // A- green #define l298n_in3_pin A3 // B+ yellow #define l298n_in4_pin 13 // B- black byte driver_current_step = 0; #define power_led_pin 7 void setup() { // put your setup code here, to run once: pinMode(encoder_sw_pin, INPUT); digitalWrite(encoder_sw_pin, LOW); pinMode(encoder_dt_pin, INPUT); digitalWrite(encoder_dt_pin, LOW); pinMode(encoder_clk_pin, INPUT); digitalWrite(encoder_clk_pin, LOW); pinMode(l298n_in1_pin, OUTPUT); digitalWrite(l298n_in1_pin, LOW); pinMode(l298n_in2_pin, OUTPUT); digitalWrite(l298n_in2_pin, LOW); pinMode(l298n_in3_pin, OUTPUT); digitalWrite(l298n_in3_pin, LOW); pinMode(l298n_in4_pin, OUTPUT); digitalWrite(l298n_in4_pin, LOW); pinMode(power_led_pin, OUTPUT); digitalWrite(power_led_pin, HIGH); } void loop() { // put your main code here, to run repeatedly: currentMillis = millis(); // processing switch encoder byte encoder_sw_read_pin = digitalRead(encoder_sw_pin); if (encoder_sw_read_pin != encoder_sw_last_read) encoder_sw_debounce_time = currentMillis; if ((currentMillis - encoder_sw_debounce_time) >= encoder_sw_debounce_delay) { if (encoder_sw_read_pin != encoder_sw_pin_state) { encoder_sw_pin_state = encoder_sw_read_pin; if (encoder_sw_pin_state == HIGH) { deviceON = !deviceON; if (deviceON) { setDriverStep(driver_current_step); digitalWrite(power_led_pin, LOW); } else { digitalWrite(l298n_in1_pin, LOW); digitalWrite(l298n_in2_pin, LOW); digitalWrite(l298n_in3_pin, LOW); digitalWrite(l298n_in4_pin, LOW); digitalWrite(power_led_pin, HIGH); } } } } encoder_sw_last_read = encoder_sw_read_pin; // processing encoder if (deviceON) { currentMicros = micros(); // processing debounce encoder byte encoder_A_read_pin = digitalRead(encoder_dt_pin); if (encoder_A_read_pin != encoder_A_last_read) encoder_A_debounce_time = currentMillis; if ((currentMillis - encoder_A_debounce_time) >= encoder_step_debounce_delay) if (encoder_A_read_pin != encoder_A_pin_state) { encoder_A_pin_state = encoder_A_read_pin; if (encoder_A_pin_state) firstMicros = currentMicros; } encoder_A_last_read = encoder_A_read_pin; byte encoder_B_read_pin = digitalRead(encoder_clk_pin); if (encoder_B_read_pin != encoder_B_last_read) encoder_B_debounce_time = currentMillis; if ((currentMillis - encoder_B_debounce_time) >= encoder_step_debounce_delay) if (encoder_B_read_pin != encoder_B_pin_state) encoder_B_pin_state = encoder_B_read_pin; encoder_B_last_read = encoder_B_read_pin; // processing steps encoder if (!encoder_A_pin_state && encoder_A_prev) { if (encoder_B_pin_state) step_driver_position += driver_count_steps_by_one_encoder; else step_driver_position -= driver_count_steps_by_one_encoder; stepMicros = (currentMicros - firstMicros) / driver_count_steps_by_one_encoder; } encoder_A_prev = encoder_A_pin_state; } // processing driver if (step_driver_position != 0) { // start move if ((currentMicros - lastMicros) >= max(stepMicros, minStepMicros)) { lastMicros = currentMicros; if (step_driver_position > 0) addMove(); else decMove(); } } // end loop } void addMove() { if ((++driver_current_step) > 3) driver_current_step = 0; --step_driver_position; setDriverStep(driver_current_step); } void decMove() { if (driver_current_step == 0) driver_current_step = 3; else --driver_current_step; ++step_driver_position; setDriverStep(driver_current_step); } void setDriverStep(byte drvStep) { switch (drvStep) { case 0: { // 1010 digitalWrite(l298n_in1_pin, HIGH); digitalWrite(l298n_in2_pin, LOW); digitalWrite(l298n_in3_pin, HIGH); digitalWrite(l298n_in4_pin, LOW); break; } case 1: { // 0110 digitalWrite(l298n_in1_pin, LOW); digitalWrite(l298n_in2_pin, HIGH); digitalWrite(l298n_in3_pin, HIGH); digitalWrite(l298n_in4_pin, LOW); break; } case 2: { // 0101 digitalWrite(l298n_in1_pin, LOW); digitalWrite(l298n_in2_pin, HIGH); digitalWrite(l298n_in3_pin, LOW); digitalWrite(l298n_in4_pin, HIGH); break; } case 3: { // 1001 digitalWrite(l298n_in1_pin, HIGH); digitalWrite(l298n_in2_pin, LOW); digitalWrite(l298n_in3_pin, LOW); digitalWrite(l298n_in4_pin, HIGH); break; } default: { } } }выставить 10мм через лазерный дальномер или другой какой то модуль. Вчера нашел вот это видео ( https://www.youtube.com/watch?v=EUQIijdsXeM&list=PLUMcEpsujGj5FlNQcfISnboFdhTOmKKTk&index=3&t=2s ) модуль вроде подходящий.
Лазерный модуль, показанный в видео (VL53L0X) скорее всего не подойдет. Он рассчитан на 2м дистанции. что уже как бы намекает, что 10мм для него крайне мало (обычно дальномеры имеет не только максимальную, но и минимальную дистанцию измерения, и не в состоянии адекватно измерить расстояния менее 1/10 или 1/20 от максимума). не говоря уж о том, что его точность в даташите заявлена как 7-9%, минимум 10-20мм
р е а л и з у е м о - maslachenko767@mail.ru , консультации, подбор компонентов бесплатно, гарантии
Можем обсудить renoshnik_@ukr.net
вот вам тестовый скетч с драйвером L289N и энкодером для Nema17, крутите в разные стороны энкодер, ШД крутится синхронно.
Премного благодарен, пошел изучать .
Лазерный модуль, показанный в видео (VL53L0X) скорее всего не подойдет. Он рассчитан на 2м дистанции. что уже как бы намекает, что 10мм для него крайне мало (обычно дальномеры имеет не только максимальную, но и минимальную дистанцию измерения, и не в состоянии адекватно измерить расстояния менее 1/10 или 1/20 от максимума). не говоря уж о том, что его точность в даташите заявлена как 7-9%, минимум 10-20мм
Понял, возьму на заметку ) .
Стандартно для позиционирования используются оптические линейки к примеру как эта -https://www.stanki.ru/service/zapchasti_dlya_stankov_po_metallu/ustroystvo_tsifrovoy_indikatsii/easson/lineyka_opticheskaya_mod_gs_10_l_500_mm/
Стандартно для позиционирования используются оптические линейки к примеру как эта -https://www.stanki.ru/service/zapchasti_dlya_stankov_po_metallu/ustroystvo_tsifrovoy_indikatsii/easson/lineyka_opticheskaya_mod_gs_10_l_500_mm/
Интересно, но для начала дороговато будет, нужно что то подешевле вроде вот такого вот модуля https://www.youtube.com/watch?v=EUQIijdsXeM&list=PLUMcEpsujGj5FlNQcfISnboFdhTOmKKTk&index=3&t=2s%C2%A0 . или лента энкодера.
L289N - Constant Voltage Driver, я бы его с осторожностью ко всяким Constant Current Nema Motors подсоединял. А то даст в обмотки тока на все деньги...
L289N - Constant Voltage Driver, я бы его с осторожностью ко всяким Constant Current Nema Motors подсоединял. А то даст в обмотки тока на все деньги...
Спорить не буду, не специалист, взял для пробы "пощупать", т к использовать специализированные драйвера слишком просто - скучно.
Стандартно для позиционирования используются оптические линейки к примеру как эта -https://www.stanki.ru/service/zapchasti_dlya_stankov_po_metallu/ustroystvo_tsifrovoy_indikatsii/easson/lineyka_opticheskaya_mod_gs_10_l_500_mm/
Интересно, но для начала дороговато будет, нужно что то подешевле вроде вот такого вот модуля https://www.youtube.com/watch?v=EUQIijdsXeM&list=PLUMcEpsujGj5FlNQcfISnboFdhTOmKKTk&index=3&t=2s%C2%A0 . или лента энкодера.
Вам поиграться в автоматизацию захотелось? Ставьте линейки и не морочьте голову, всё давным давно решено ну или в крайнем случае делайте следящий электропривод ШАГОВИК + энкодер (но это архаика), прямое измерение наше всё
Скиф прямо как таракан лезет... его давят - он прячется. Стемнело - выползает.
Скиф прямо как таракан лезет... его давят - он прячется. Стемнело - выползает.
ТЫ лезеш в мою жизнь, потому что своя не удалась? Да? Бедный... Ну тогда ладно...
Стандартно для позиционирования используются оптические линейки к примеру как эта -https://www.stanki.ru/service/zapchasti_dlya_stankov_po_metallu/ustroystvo_tsifrovoy_indikatsii/easson/lineyka_opticheskaya_mod_gs_10_l_500_mm/
Интересно, но для начала дороговато будет, нужно что то подешевле вроде вот такого вот модуля https://www.youtube.com/watch?v=EUQIijdsXeM&list=PLUMcEpsujGj5FlNQcfISnboFdhTOmKKTk&index=3&t=2s%C2%A0 . или лента энкодера.
Вам поиграться в автоматизацию захотелось? Ставьте линейки и не морочьте голову, всё давным давно решено ну или в крайнем случае делайте следящий электропривод ШАГОВИК + энкодер (но это архаика), прямое измерение наше всё
Ладно, так тому и быть, попробую-ка я отказаться от внешнего задания размеров.
dromanov@parcel-se.ru пишите, есть небольшой опыт работы с ГПМ.
Скиф прямо как таракан лезет... его давят - он прячется. Стемнело - выползает.
ТЫ лезеш в мою жизнь, потому что своя не удалась? Да? Бедный... Ну тогда ладно...
Это не про тебя, это про таракана с ником skif, которого из этого раздела удаляют
Стандартно для позиционирования используются оптические линейки к примеру как эта -https://www.stanki.ru/service/zapchasti_dlya_stankov_po_metallu/ustroystvo_tsifrovoy_indikatsii/easson/lineyka_opticheskaya_mod_gs_10_l_500_mm/
Интересно, но для начала дороговато будет, нужно что то подешевле вроде вот такого вот модуля https://www.youtube.com/watch?v=EUQIijdsXeM&list=PLUMcEpsujGj5FlNQcfISnboFdhTOmKKTk&index=3&t=2s%C2%A0 . или лента энкодера.
Вам поиграться в автоматизацию захотелось? Ставьте линейки и не морочьте голову, всё давным давно решено ну или в крайнем случае делайте следящий электропривод ШАГОВИК + энкодер (но это архаика), прямое измерение наше всё
Ладно, так тому и быть, попробую-ка я отказаться от внешнего задания размеров.
Это как?
Скиф прямо как таракан лезет... его давят - он прячется. Стемнело - выползает.
ТЫ лезеш в мою жизнь, потому что своя не удалась? Да? Бедный... Ну тогда ладно...
Это не про тебя, это про таракана с ником skif, которого из этого раздела удаляют
Какая жестокость...ну так получилось, что НИШМАГЛА вовремя, так что, теперь его всю жисть укорять, а понял, он жеж демпинговал по ценам, заказов видимо было тьма вот и не успевал )))
Да ладно вышел бы и повинился, рассказал честно что и как, и никто б его не убил.
А когда накосячил и в кусты, ну не повзрослел еще видимо, за поступки отвечать, нехрен такому исполнителю тут делать.
это мнение только моё, никому не навязываю
Да ладно вышел бы и повинился, рассказал честно что и как, и никто б его не убил.
А когда накосячил и в кусты - нехрен такому исполнителю тут делать.
он же скиф...НЕ ОРЁЛ... НЕТ... НЕ ОРЁЛ (Н.Мордюкова)
был бы Сармат...КА тады ДА...Сиську чтобы метко стрелять не каждая себе сможет отрезать )))
Это как?
Cам шаговик с двумя концевиками и прощитаным линейным коефициентом.
Без энкодера лучше не соваться в это дело. Конечно, только если не хотите на готовой продукции экспериментировать с пропуском шагов.
Принято к сведению, иду искать возможности )
автоматическое регулирование
Для начала установите там ваш ШД, сложного ничего нет, если конвейер не занят. Это самое сложное.
Управлять ШД вручную легко, 3д принтер во всяком случае управляется легко, для начала ваш ШД если есть у знакомых 3д принтер (плата 35$ стоит) подключите к вашему ШД, если нет, там в 3д принтере arduino mega2560 у меня стоит, к ней же приделайте ваш драйвер, в любом случае показал бы вам и 3д принтер не поленился бы принести на ваш конвейер, далее понажимав с клавиатуры ПК и убедившись что вас устроит работа вашего ШД самое простое - сделать вашу "дистанцию". Если ШД крутит "до упора" как перевод стрелок на рельсах, то поставить концевики 10 шт. у китайцев стоит 2$ либо в Gcode ставится и без концевиков, так как это не 3д принтер то ещё проще, для начала сделайте срабатывание ШД на выполнение команды например X0 X200 мм при условии если кто то например как в моем случае слил воду с унитазного бачка, ардуино включает ваш ШД, который сужает ваш конвейер, далее когда вода в бачек набирается в моем случае датчик воды знает когда вода набирается - ардуино отключает насос, ваш ШД едёт из X200 в X0
для начала вам нужно подружить ваш ШД с ардуиной, что проще простого скорее всего, примеров много должно быть. Считайте что всё готово. Прикрутить ваш ШД к конвейеру ваша задача решённая скорее всего, так как вы нашли на нужное количество КГС ШД скорее всего. Например на чпу ставил 18кгс ШД.
Вам осталось датчик - датчик не проблема управлять вашим ШД, даже в моем случае наполнение дождевой водой унитазного бачка чем не повод включить ШД.
"Выставить" 10мм ШД выставит вам и сам без дальномера, В ШД важен люфт только, Проще ШД выставить в ноль, выяснить погрешность ШД если будет за 100 проходов туда назад например, но люфт важен при ЧПУ обработке деталей, а в вашем случае ШД не пропускающий шаги с любым люфтом будет точно выставлять всё. Это например если бы нужно было в моём случае что бы ШД "Спихивал" с конвейера булки хлеба, когда булки хлеба подъезжали бы к ультразвуковому лучу, булка хлеба закрыла луч, ШД выползает к приезду булки хлеба и спихивает на 10ММ её в ящик например которым управляет другой ШД сортируя булки хлеба.
Не пойму для чего лазерная точность, если и нужна точность выше 1мм то ШД например в 3д принтере не косячит, и лазерный дальномер в 3д принтер не ставлю свой, так как ШД и сами точнее не бывает знают позиционирование. И ШД в 3д принтере в моем случае включаю если ежедневно - помнит положение например X 200 стол такой величины как раз.
В вашем случае ваш ШД ничем не отличается от моего 3д принтера. Паркуется он в 0 координаты. Все ШД все равно калибруются нолём. Пришли утром в ноль откалибровали, а если в тестах ШД не глючит то и колибровать не нужно. Это как делал бы я и не представляю насколько сложно вы всё сделали.
Лазерный так лазерный дальномер, но нужен ли он вообще. Что он ловит не могу понять. Если булки хлеба - то ультразвук их поймает и сузит конвейер, да хоть стрелки поезду переведёт. Луч лазера даже можете поставить, полный ютуб как это сделать за 1$, принцип - перекрыла булка хлеба луч лазера или спичечный коробок идущий по конвейеру, на определенной высоте только установить лазер, можно на креплении что бы не сверлить конвейер))). Ещё ик луч может быть, неплохо работает, ещё может быть световой луч, ультразвуковой. Заранее поставить как перед приходом поезда ставят на рельсах датчик. Подъедет булка хлеба например за 50 см к вашему ШД и ШД знает сразу, сужает конвейер. Легко же делается всё. Пока писал текст написал бы на основе найденных кусочков кода - управление ШД драйвером, какой нибудь датчик, а если датчик нужен для проверки ШД - то представьте если бы 3д принтеры проверяли а точно ли тут 150 мм)))) ШД точны настолько, что даже в 3д принтерах, а не то что конвейерах не используют проверки куда они едут с печатающей головкой. Поэтому ваш ШД не ошибётся да ещё и печатать ему ничего не нужно, поэтому люфт ему не страшен. Да и люфт например в MACH3 выставляется, но в вашем случае люфт не имеет значения скорее всего. Стоит сейчас рядом 3д принтер даже не представляю зачем его проверять на 150 мм заедет ШД или не на 150 мм, смешно даже представить не могу проверять с линейкой или лазерным дальномером во время 3д печати ШД. 3д принтеры бы наверное даже не появились с такой точностью, которую пришлось бы проверять. Поэтому единственная цель замерить в какой момент должен сработать ШД. Например булка хлеба в 50 см подезжает в столовой к желающему её съесть.
Повторюсь - приделайте ШД к конвейеру для начала, драйвер должен быть рабочий и любой какой найдете под драйвер код. Датчик - да хоть датчик слива воды в унитазе, 0.01$ выйдет такой датчик сам делал его, даже не нашёл нигде как сделать такой, из омметра переделал код. Может и в вашем случае поставить стакан с водой который при наклоне будет воду опускать, а стакан вертеть какой нибудь шестеренкой от конвейера наклоняя каждый оборот шестеренки, но у вас скорее всего произвольно детали едут какие то или булки хлеба, тогда лучем их прозванивайте. Примеры есть и с ИК лучем для ардуино, когда ладонь перекрывает луч, если бы написали что там у вас по конвейеру дальномер проверяет. ШД в 3д принтере проверять не нужно, где точность одной печатающей головки в моем случае 0.4мм !!! вашему конвейеру такой точности должно хватить и без дальномера мой принтер знает до 0.4мм не меньше ставить платформу с печатающей головкой. Поэтому конвейер после 3д принтера это как яйца поджарить утром быстро.
для информации: встречал штангенциркули китайские электрячии с портом отдельным, по которому как я понял можно считывать данные. Могу ошибаться, но вроде ардуиной кто-то как раз и считывал.
Если я не ошибаюсь и они реально есть с выходом - то это весьма точная и удобная система оценки перемещения: визуальный контроль(дисплей), возможность сброса в ноль, дешевизна.
для информации: встречал штангенциркули китайские электрячии с портом отдельным, по которому как я понял можно считывать данные. Могу ошибаться, но вроде ардуиной кто-то как раз и считывал.
Дак ты реально считывал или ошибаешься? Поясни.
И... если уж это рЕально, дай ссылку на где купить такие измерительные инструменты, нУно!!!
Чудо, о, чудо!!!
https://www.instructables.com/id/Reading-Digital-Callipers-with-an-Ardui...
Есть что-либо с точностью "до сотки" , т.е. 0.01мм с промышленным ГОСТом и сертификатом соответствия и метрологическим сертификатом? Ссылку плиз.
Есть что-либо с точностью "до сотки" , т.е. 0.01мм с промышленным ГОСТом и сертификатом соответствия и метрологическим сертификатом? Ссылку плиз.
Оптические линейки. Гуглится.