Вопрос по Arduino Pro Mini

buzz
Offline
Зарегистрирован: 24.02.2017

Всем форумчанам, доброго здравия! Человек я далекий от Ардуино (проходил мимо), поэтому я к вам с вопросами )) Суть вопроса такова:

- Шаговый двигатель совершает один оборот (360 градусов) в минуту (каждую минуту один оборот, до бесконечности, пока не будет нажата кнопка 1). Скорость не высокая.

- Кнопка 1 запускает вращение двигателя в противоположную сторону на максимальной скорости.

- Кнопка 2 останавливает двигатель от вращения в противоположную сторону (после нажатия кнопки 1).

- При нажатии кнопок 1 и 2, счетчик минутных импульсов не переустанавливается, минутные импульсы идут своим чередом, и шаговый двигатель, после нажтия кнопки 2 (остановки после вращения в противоположную сторону), ожидает следующего минутного импульса, чтобы совершить очередной оборот на 360 градусов.

Процесс циклический и бесконечный ))

Возможно, понадобятся еще две кнопки, запускающие вращение двигателя на максимальной скорости (прогон вручную) в одну и другую сторону (кнопка нажата - дигатель вращается, отпущена- стоп). И кнопка Reset - для счетчика минутных импульсов.

Вот такая задачка ))

Справится-ли с этой задачей Arduino Pro Mini (ATmega168, 5В)? Шаговый двигатель (пока не определился) от CD-ROM'а или от принтера. Драйвер шагового двигателя A4988 (?) Возможно, для более точного хода счетчика минутных импульсов, придется исползовать модуль часов реального времени (?)

Заранее благодарен всем за помощь!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ардуина легко справится с подобной задачей, если она будет изложена внутренне непротиворечиво.

В Вашем описании я вижу противоречие между "Скорость невысокая" во втором абзаце и существованием каких-то "минутных импульсов" в последующих.

В моем понимании если "Скорость невысокая", то двигатель должен вращаться плавно, совершая за минуту 1 оборот, а за секунду 1/60 оборота.

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

buzz
Offline
Зарегистрирован: 24.02.2017

andriano пишет:

Ардуина легко справится с подобной задачей, если она будет изложена внутренне непротиворечиво.

В Вашем описании я вижу противоречие между "Скорость невысокая" во втором абзаце и существованием каких-то "минутных импульсов" в последующих.

В моем понимании если "Скорость невысокая", то двигатель должен вращаться плавно, совершая за минуту 1 оборот, а за секунду 1/60 оборота.

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

Благодарю Вас, andriano! Я же говорю, человек я сторонний, и излагаюсь коряво по этой теме ))

Да, именно, двигатель стоит минуту и ожидает минутного импульса, делает оборот и стоит, ждет следующего импульса. А про "невысокую" скорость, просто, я думал, что можно задать плавный оборот, не резкий, но это не критично. Главное, чтобы это было не очень шумно ))

buzz
Offline
Зарегистрирован: 24.02.2017

Кто-нибудь юзал шаговый движочек от CD-ROM'а (тот, что с маленьким шнеком)? Какие максимальные обороты он может выдавать? Понимаю, что все они разные, но средние показатели у них должны быть где-то одинаковыми - задача-то у них одна и та же))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну в таком случае Вам нужна переменная состояния (в данном случае - булева, но если появятся дополнительные кнопки, может потребоваться переделать ее в целую): одно состояние - периодическое поминутное вращение вперед, второе - быстрое назад. Кнопками переключаетесь между этими двумя состояниями.

Минутный импульс формируется аналогично blink without delay, соответственно, нужно ли на него реагировать, определяется состоянием.

 

А по поводу CDROM - я недавно курочил один (кстати, дорогой. Здесь он 2-й сверху: https://www.youtube.com/watch?v=oq2bXXktJQs&feature=youtu.be ), так там не было шаговика, а был обычный DC двигатель. И, кстати, в отличие от FDD, где положение головки определяется именно шаговым двигателем, в CDD позиционирование осуществляется системой, отслеживающей дорожку по сигналу с нее, поэтому идейно там шаговый двигатель не слишком подходит.

buzz
Offline
Зарегистрирован: 24.02.2017

andriano пишет:

Ну в таком случае Вам нужна переменная состояния (в данном случае - булева, но если появятся дополнительные кнопки, может потребоваться переделать ее в целую): одно состояние - периодическое поминутное вращение вперед, второе - быстрое назад. Кнопками переключаетесь между этими двумя состояниями.

Минутный импульс формируется аналогично blink without delay, соответственно, нужно ли на него реагировать, определяется состоянием.

Ммммм... понятно... Понятно, что для меня это пока дремучий лес. Буду изучать матчасть, для начала ))

 

 

buzz
Offline
Зарегистрирован: 24.02.2017

andriano пишет:

А по поводу CDROM - я недавно курочил один (кстати, дорогой. Здесь он 2-й сверху: https://www.youtube.com/watch?v=oq2bXXktJQs&feature=youtu.be ), так там не было шаговика, а был обычный DC двигатель. И, кстати, в отличие от FDD, где положение головки определяется именно шаговым двигателем, в CDD позиционирование осуществляется системой, отслеживающей дорожку по сигналу с нее, поэтому идейно там шаговый двигатель не слишком подходит.

Шикарный музыкальный ящик у Вас получился! Arduino-Hammond орган настоящий )) Прям, как у Маяковского: "А вы ноктюрн сыграть могли бы на флейте водосточных труб?" ))

Разобрал два старых CD-ROM'а. В одном был DС двигатель, а в другом - шаговый. Но он такой мелкий.. Теперь буду разбирать старый принтер ))

buzz
Offline
Зарегистрирован: 24.02.2017

Контроллеры от компании RobotDyn пригодны для замены оригинальных плат? Программная часть, скетчи - все тоже самое?