Страница 1 из 1

Помогите с шаговым двигателем

Добавлено: Ср май 16, 2012 10:51:27
ReD_BuLL_1
Всем доброго времени суток! Прошу помощи у вас, как у опытных людей в этой сфере.

Нужно управлять микроконтроллером ATmega16 (или другим) шаговым большим двигателем, вот таким - FL86ST (http://electroprivod.ru/st_motor.htm).
Задача такая: снимать показания с датчика влажности и на основе этих показаний поворачивать двигатель, если показания уменьшаются в одну сторону, если увеличивается в другую.
Помогите собрать схему. Как все это дело подключить, помогите плиз.

Re: Помогите с шаговым двигателем

Добавлено: Ср май 16, 2012 11:15:14
igor-x
ReD_BuLL_1 писал(а): снимать показания с датчика влажности и на основе этих показаний поворачивать двигатель
движок выбрал, потом надо выбрать датчик влажности, температуры.
далее надо определиться с алгоритмом - как вращать движком в зависимости от влажности влажности...

так что задача вращения движком здесь далеко не самая сложная

Re: Помогите с шаговым двигателем

Добавлено: Ср май 16, 2012 11:29:58
Jack_A
Помогать не буду, поскоку болею не за RedBull, а за Ferrari :) , но хочу обратить внимание на одну деталь, о которой часто забывают и вспоминают, когда : "А почему это оно так сделало ?" . При пропадании, а потом восстановлении питания следует озаботиться тем, чтобы у ШД оказалась запитана та же фаза, что и при отключении ( предполагается, что механика при этом тоже самопроизвольно не "уползет" ). Поэтому видится использование записи текущего состояния в EEPROM при каждом шаге ШД. Ну и учитывая ограниченный ресурс EEPROM, нужно продумывать равномерность распределения области EEPROM для записи.
А вообще-то с этим и Тинька справилась бы, я думаю, все равно драйверы ШД понадобятся.

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 08:27:49
ReD_BuLL_1
Хорошо. Помогите теперь это все завязать на ATmega16.
Вот двигатель - http://electroprivod.ru/fl86st.htm
какой там драйвер лучше выбрать?
Датчик влажности - http://www.chipdip.ru/product/sht75.aspx
ПАМАГИТЕ!!

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 08:43:08
igor-x
ReD_BuLL_1 писал(а): ПАМАГИТЕ!!
так то и управление движком тоже можно былобы на россыпи сделать, но с драйвером проще программа получится.
первый из рекомендуемых SMD-78 пойдет,
датчик влажости тоже ок - удобное управление по i2c.

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 09:13:58
ReD_BuLL_1
теперь схему надо нарисовать, как двигатель подключается к драйверу, а потом к МК?? + еще датчик как то надо прикрутить, МК будет ATmega128, т.к. он будет еще и другие задачи выполнять.
Я пока не понимаю ничего, вот хочу разобраться.

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 09:41:41
igor-x
ReD_BuLL_1 писал(а):теперь схему надо нарисовать, как двигатель подключается к драйверу, а потом к МК?? + еще датчик как то надо прикрутить, МК будет ATmega128, т.к. он будет еще и другие задачи выполнять.
Я пока не понимаю ничего, вот хочу разобраться.
1.а почему мега128.. ах да там еще другие задачи.
2.схема очень просто рисуется . датчик влажности подключаем к шине TWI микроконтроллера,
контроллер шаговика подключаем к любым оставшимся портам .там их примерно 58 свободных будет еще
3. не забыть подключить питание к схеме на мега128 и контроллеру шаговика.

вот и все.

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 10:18:33
ReD_BuLL_1
А можешь нарисовать, пожалуйста, если не трудно

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 10:28:53
igor-x
ReD_BuLL_1 писал(а):А можешь нарисовать, пожалуйста, если не трудно
все очень просто. первый контакт датчика - на общий провод, второй контакт датчика на 26 ногу МК
третий контакт датчика на 25 ногу Мк, четвертый контакт датчика на +5в

51 контак МК подаем на “ШАГ” контроллера шаговика
52 контакт МК подаем на“НАПРАВЛЕНИЕ” контроллера шаговика
53 контакт МК подаем на“РАЗРЕШЕНИЕ” контроллера шаговика

21 МК - питание 5 в
22 МК - питание 0 в.

и все

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 10:47:06
Alexeyslav
Мне кажется, тут еще надо бы теорию систем автоматического регулирования учесть. Иначе, твоя схема может запросто войти в режим автоколебаний, если большой мотор будет управлять влажностью которая воздействует на датчик. Самый простой вариант линейного регулятора обладает плохими характеристиками по переходному процессу если объект управления обладает огромной инерцией, да и датчик не мгновенно реагирует на изменение влажности. Если выйдет так что воздействие на двигатель будет быстрее чем реагирует датчик - вся система войдет в автоколебательный режим и ничего хорошего с этого не выйдет.

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 10:49:59
igor-x
Alexeyslav писал(а): тут еще надо бы теорию
схема никуда не может войти.никаких автоколебаний, пока МК не прошит :))

Re: Помогите с шаговым двигателем

Добавлено: Чт май 17, 2012 11:57:43
ReD_BuLL_1
Alexeyslav писал(а):Мне кажется, тут еще надо бы теорию систем автоматического регулирования учесть. Иначе, твоя схема может запросто войти в режим автоколебаний, если большой мотор будет управлять влажностью которая воздействует на датчик. Самый простой вариант линейного регулятора обладает плохими характеристиками по переходному процессу если объект управления обладает огромной инерцией, да и датчик не мгновенно реагирует на изменение влажности. Если выйдет так что воздействие на двигатель будет быстрее чем реагирует датчик - вся система войдет в автоколебательный режим и ничего хорошего с этого не выйдет.
Это все правильно. Но эти проблемы остаются на будущее. Надо просто с чего то начать.
igor-x
большое спасибо. будут еще вопросы напишу здесь. -)

Re: Помогите с шаговым двигателем

Добавлено: Пт май 18, 2012 12:46:17
CODE43
Чтоб не создавать новую тему, решил написать сюда, так как вопрос тоже по поводу ШД. Мне нужно управлять независимо двумя ШД. Управляющие последовательности решил выводить в порт С МК (PIC16F873A). С7-С4 для одного ШД, С3-С0 - для другого ШД. Как я понимаю, для режима полного шага нужно выводить такую последовательность:
1000
0100
0010
0001
Далее сначала.
Пока написал программу, которая в цикле вызывает подпрограмму формирования шага (код ниже)

Код: Выделить всё

;-----------------------------------------------------------------------
; Подпрограмма формирования шага ШД
;------------------------------------------------------------------------------
StepCoil
          call     delay
          incf     StepC, f
          movlw    .4
          subwf    StepC, w
          btfsc    Status, 0
          clrf     StepC
          movf     StepC, w
          call     Table
          return

Table
          addwf    Pcl, f
          goto     S5
          goto     S6
          goto     S7
          goto     S8
S5
          bsf      PortC, 7
          bcf      PortC, 4
          return
S6        bsf      PortC, 6
          bcf      PortC, 7
          return
S7        bsf      PortC, 5
          bcf      PortC, 6
          return
S8        bsf      PortC, 4
          bcf      PortC, 5
          return
Аналогично, когда надо, будет вызываться такая же подпрограмма для другого ШД. Вопрос: Будет ли это реально работать? Моделирую в Протеусе - вроде работает, вал в модели ШД вращается.

Re: Помогите с шаговым двигателем

Добавлено: Пт май 18, 2012 12:53:29
igor-x
на самом деле диаграмма управления двигателем напрямую может быть гораздо сложнее. зависит от типа движка.

Re: Помогите с шаговым двигателем

Добавлено: Пт май 18, 2012 13:30:38
CODE43
Движки униполярные, от принтеров. Есть еще ДШИ200-1. Управление будет через транзисторные ключи, как-то так:
Изображение
Только транзисторы полевые, типа IRLZ44.

Re: Помогите с шаговым двигателем

Добавлено: Пт май 18, 2012 23:47:44
Alexeyslav
Будет, но зачем так сложно... битовые операции с портом могут привести к сбою - ведь меняя один бит контроллер оперирует со всем байтом, и если где-то будет замыкание на выходе хоть и кратковременное состояние вывода порта может запомнится даже если менялся другой бит.

Проще делать это через массив, куда занесены последовательные состояния фаз положений ШД, просто прибавляешь 1 к индексу массива для движения в одну сторону и убавляешь для движения в другую. Массив один для всех ШД, надо только программно отслеживать фазу для каждого из них и научить контроллер устанавливать состояние порта выбранного ШД соответствующее выходу с массива.