Спортивные часы на шаговом двигателе

Вопросы об управлении шаговыми двигателями
vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 08 фев 2018, 15:56

Работаю над применением нового шагового двигателяVID60-02 с встроенным датчиком положения.
подскажите что нужно добавить, чтобы двигатель остановился по датчику положения с ИК приемника.
затем после нажатия кнопки работал но на датчик не реагировал.
использую пока скетч

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

#include <Stepper.h>

Stepper motor = Stepper(1000, 4, 6, 5, 7);

void setup()
{
motor.setSpeed(15);
}

void loop()
{
motor.step(10);
delay(10);
}

Это необходимо для позиционирования
VID60-02 является усовершенствованной версией на основе VID69 двигателя часов. Имеется оптико-механическая система обнаружения физического расположения стрелок часов. Алгоритм для синхронизации времени аналоговый дисплей в режиме реального времени.

Нулевая функция обнаружения (построен в OSRAM LPT80A ИК-приемника)
Широкий диапазон рабочих напряжений: 5 ~ 10В.
Низкое потребление тока: 18mA, 5V, 2X90mW
Пиковый ток 18 мА при 5 В
Применение библиотеки не критично.
Скорость нужно менять в скетче.
Спасибо


Эдуард
Администратор
Сообщения: 398
Зарегистрирован: 30 окт 2016, 20:53

Re: Спортивные часы на шаговом двигателе

Сообщение Эдуард » 08 фев 2018, 20:52

Здравствуйте!
Я не понял до конца задачи и для какого устройства это делается. Давайте начнем с того, что просто закрутим двигатель с нужной скоростью.
Я не знаю, какая скорость вращения нужна и сколько в двигателе VID60-02 шагов на оборот. Могу ошибиться, но я попытался повторить скорость вращения из вашей программы.
В отличии от библиотеки Stepper, в этом варианте программы коммутация фаз двигателя происходит параллельным процессом. Значит скорость вращения не будет зависеть от операций в цикле loop и может быть установлена с высокой точностью.

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

#include <TimerOne.h>
#include <StepMotor.h>

StepMotor clockMotor(4, 5, 6, 7);  // создаем объект типа StepMotor, задаем выводы для фаз
void setup() {
  Timer1.initialize(4000);  // инициализация таймера 1, период 4 мс
  Timer1.attachInterrupt(timerInterrupt, 4000);  // задаем обработчик прерываний
  clockMotor.setMode(1, false);  // полушаговый режим, без фиксации при остановке
  clockMotor.setDivider(1);     // делитель частоты 1
}

void loop() {
  clockMotor.step(-200);  // вращать по часовой стрелке
}

//-------------------------------------- обработчик прерывания 4 мс
void  timerInterrupt() {
  clockMotor.control(); // управление двигателем
}

Период переключения фаз, а значит и скорость вращения определяется аргументами в строках:
Timer1.initialize(4000); // инициализация таймера 1, период 4 мс
Timer1.attachInterrupt(timerInterrupt, 4000); // задаем обработчик прерываний
Сейчас задано время переключения фаз 4000 мкс (4 мс). Вы можете изменить его. При необходимости с помощью этих параметров можно очень точно установить скорость вращения.
Библиотеки есть в уроке 29.
Проверьте, установите нужную скорость вращения, пишите. Будем добавлять кнопку.

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 09 фев 2018, 17:24

Эдуард спасибо двигатель вращается
задача состоит из двух частей
1 часть это выставить часы в ноль, т.е остановка по опто датчику уровень срабатывания низкий (ноль)
2 часть это вращать с заданной скоростью.
Вторая часть спасибо вам решена.
Осталась задача позиционирования.

Эдуард
Администратор
Сообщения: 398
Зарегистрирован: 30 окт 2016, 20:53

Re: Спортивные часы на шаговом двигателе

Сообщение Эдуард » 09 фев 2018, 22:22

Добрый вечер!
Мне программу проверять не на чем, поэтому я могу ошибиться. Попробуйте. Задумано так.
1. При включении питания двигатель вращается.
2. По нажатию кнопки вращение продолжается до тех пор, пока не поступит сигнал синхронизации (низкий уровень).
3. По сигналу синхронизации двигатель останавливается.
4. По нажатию кнопки продолжается вращение.
5. В режиме синхронизации и ожидания светится светодиод.

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

#include <TimerOne.h>
#include <StepMotor.h>
#include <Button.h>

#define LED_SYNHR_PIN 13     // вывода светодиода синхронизации _-_
#define BUTTON_SYNHR_PIN 12  // вывод кнопки синхронизации -_-
#define IN_SYNHR_PIN 11  // вывод входа синхронизации -_-

StepMotor clockMotor(4, 5, 6, 7);  // создаем объект типа StepMotor, задаем выводы для фаз
Button buttonSynhr(BUTTON_SYNHR_PIN, 8);  // создание объекта для кнопки синхронизации

byte  mode=0; // режим 0 - вращение, 1 - синхронизация, 2 - ожидание пуска

void setup() {
  pinMode(LED_SYNHR_PIN, OUTPUT);
  digitalWrite(LED_SYNHR_PIN, LOW);
  pinMode(IN_SYNHR_PIN, INPUT_PULLUP);
 
  Timer1.initialize(4000);  // инициализация таймера 1, период 4 мс
  Timer1.attachInterrupt(timerInterrupt, 4000);  // задаем обработчик прерываний
  clockMotor.setMode(1, false);  // полушаговый режим, без фиксации при остановке
  clockMotor.setDivider(1);     // делитель частоты 1

  for(byte i=0; i<30; i++) {
    buttonSynhr.scanState();
  }
  buttonSynhr.flagClick= false;
}

void loop() {

  if(mode == 0) {
    // вращение
    clockMotor.step(-200);  // вращать по часовой стрелке
    digitalWrite(LED_SYNHR_PIN, LOW);
    if(buttonSynhr.flagClick == true) {
      // переход на синхронизацию
      mode=1; 
    }
  }
 
  else if(mode == 1) {
    // синхронизация
    clockMotor.step(-200);  // вращать по часовой стрелке
    digitalWrite(LED_SYNHR_PIN, HIGH);
    if(digitalRead(IN_SYNHR_PIN) == LOW) {
      // переход на ожидание пуска
      buttonSynhr.flagClick= false;
      mode=2;       
    }   
  }
 
  else if(mode == 2) {
    // ожидание пуска
    clockMotor.step(0); // остановка
    digitalWrite(LED_SYNHR_PIN, HIGH);
    if(buttonSynhr.flagClick == true) {
      // переход на вращение
      buttonSynhr.flagClick= false;
      mode=0;             
    }   
  }

  else mode=0;

}

//-------------------------------------- обработчик прерывания 4 мс
void  timerInterrupt() {
  clockMotor.control(); // управление двигателем
  buttonSynhr.scanState();  // вызов метода ожидания стабильного состояния кнопки
}

Эдуард
Администратор
Сообщения: 398
Зарегистрирован: 30 окт 2016, 20:53

Re: Спортивные часы на шаговом двигателе

Сообщение Эдуард » 09 фев 2018, 22:26

Забыл. Если программа заработает, надо сторожевой таймер добавить.

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 12 фев 2018, 14:58

Эдуард вас можно привлечь к проекту, в плане написания программы для Ардуино по алгоритму
который я вам пришлю. Фото прибора пришлю.
Правда не нашел как прикрепить фото в быстром ответ .
Программу вторую часть запустил работает, но с кнопками пока не проверял.
Огромное спасибо за оперативность

Эдуард
Администратор
Сообщения: 398
Зарегистрирован: 30 окт 2016, 20:53

Re: Спортивные часы на шаговом двигателе

Сообщение Эдуард » 12 фев 2018, 22:24

Фотография прикрепляется в "Стандартный ответ & предпросмотр".

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 13 фев 2018, 11:14

Эдуард добрый день!
Фото в 3 Мб не прикрепляется выдает сообщение большой объем.
Вы ответили согласны ли вы участвовать в проекте

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 13 фев 2018, 11:21

Давайте я Вас скину на Email

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 14 фев 2018, 08:48

Эдуард доброе утро!
Дайте ваш Email для переписки.
Вы территориально где??

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 14 фев 2018, 17:40

Аналогичных приборов 13 шт все на Ардуино, работы много и интересной.
Работа ИК позиционирования осциллограмму высылаю.
Вложения
IMG-20180214-WA0003.jpg
IMG_20180213_085817 (1).jpg

Эдуард
Администратор
Сообщения: 398
Зарегистрирован: 30 окт 2016, 20:53

Re: Спортивные часы на шаговом двигателе

Сообщение Эдуард » 14 фев 2018, 22:34

Здравствуйте!
Я живу в Новочеркасске, 30 км от Ростова на Дону.
Можно писать по почте mypractic2gmail.com
Пришлите техническое задание, но не знаю, как у меня со временем.

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 16 фев 2018, 11:16

ОК

vitek1958
Сообщения: 13
Зарегистрирован: 08 фев 2018, 14:37

Re: Спортивные часы на шаговом двигателе

Сообщение vitek1958 » 20 июл 2018, 11:07

Эдуард добрый день!
Хочу возвратится к нашему разговору по сотрудничеству.
Объем не очень большой, работа по договору подряда с указанным объемом.
Форму договора вышлю в ближайшее время.
СКЕТЧИ нужны для управления шаговыми двигателями, адресной светодиодной лентой, энкодерами,
кнопками коммутации и их взаимодействие по определенному алгоритму.
Надеюсь на сотрудничество.
Если вы не сможете , то может кого порекомендуете.


Вернуться в «Шаговые двигатели и драйверы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей