Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 813
Из них просматривают:
Аналоги: 276. Даташиты: 443. Инструкции: 2. Новости: 17. Обзор: 1. Остальное: 8. Профиль пользователя: 38. Расчёты: 1. Теги: 5. Форум: 21. Чат: 1.
Участников: 3
Гостей: 810

an , Google , Яндекс , далее...
Рекорд 4345 человек онлайн установлен 21.09.2026.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
управление шаговиком
Сотрудник
Зарегистрирован:
09.10.2013 21:40
Сообщений: 36
Не в сети
есть ли примеры управления шаговиком по датчику холла?



Re: управление шаговиком
Модератор
Зарегистрирован:
26.01.2010 22:26
Из: Тирасполь
Сообщений: 3927
Не в сети
А зачем шаговику датчик Холла?



Re: управление шаговиком
Сотрудник
Зарегистрирован:
09.10.2013 21:40
Сообщений: 36
Не в сети
чтобы определить начальную точку движения



Re: управление шаговиком
Сотрудник
Зарегистрирован:
09.10.2013 21:40
Сообщений: 36
Не в сети
необходимо что бы при каждом включении ардуинки вал двигателья занимал одну и ту же позицию



Re: управление шаговиком
Администратор
Зарегистрирован:
07.08.2008 19:40
Из: Тирасполь
Сообщений: 7458
Не в сети
А в чем сложность то? Вы ставите на ваше устройство концевик (датчик холла), ну и при инициализации контролируете срабатывание концевика и крутите шаговый двигатель до срабатывания.

Ну или для правильного понимания вопроса конкретнее опишите ваше устройство.



Re: управление шаговиком
Сотрудник
Зарегистрирован:
09.10.2013 21:40
Сообщений: 36
Не в сети
все верно вы написали.не могу понять как это выразить в коде.



Re: управление шаговиком
Администратор
Зарегистрирован:
07.08.2008 19:40
Из: Тирасполь
Сообщений: 7458
Не в сети
volatile boolean intFlag = false;   // флаг

void setup() {
  pinMode(2, INPUT_PULLUP);  // 2 пин вход с подтягивающим резистором - концевик

  // 0 - прерывание 0
  // обработчик - функция turnStep
  // FALLING - при срабатывании концевика будет сигнал 0, его и ловим
  attachInterrupt(0, turnStep, FALLING);
  // Здесь запускаем ШД
}


void turnStep() {
  intFlag = true;   // подняли флаг прерывания    
}

void loop() {
  if (intFlag) {
    intFlag = false;    // сбрасываем
    // Здесь останавливаем ШД
  }  
}
как то так наверное...
Можно еще вначале проверять на  событие, что концевик уже нажат, и пропускать все.


Отредактировано пользователем MACTEP 21.11.2021 17:03:26


Re: управление шаговиком
Сотрудник
Зарегистрирован:
09.10.2013 21:40
Сообщений: 36
Не в сети
#include

int hallSensorPin = 2;
int dirA = 12;
int dirB = 13;
int pwmA = 3;
int pwmB = 11;
Stepper stepper(200, dirA, dirB);

volatile boolean intFlag = false;
void setup() {
pinMode(2, INPUT_PULLUP); // 2 пин вход с подтягивающим резистором - концевик

// 0 - прерывание 0
// обработчик - функция turnStep
// FALLING - при срабатывании концевика будет сигнал 0, его и ловим
attachInterrupt(0, turnStep, FALLING);
pinMode(pwmA, OUTPUT); pinMode(pwmB, OUTPUT);
digitalWrite(pwmA, HIGH); digitalWrite(pwmB, HIGH)
stepper.setSpeed(60);
}


примерно так должно быть?




Re: управление шаговиком
Сотрудник
Зарегистрирован:
09.10.2013 21:40
Сообщений: 36
Не в сети
не пошло. пошел курить литературу дальше))))))



Re: управление шаговиком
Администратор
Зарегистрирован:
07.08.2008 19:40
Из: Тирасполь
Сообщений: 7458
Не в сети
Вот работающий код по отключению встроенного светодиода по клику на 2 вывод (0 - прерывание)
volatile boolean intFlag = false;   // флаг
void setup() {
  pinMode(2, INPUT_PULLUP);  // 2 пин вход с подтягивающим резистором - концевик
  pinMode(13, OUTPUT); //светодиод
  // 0 - прерывание 0
  // обработчик - функция turnStep
  // FALLING - при срабатывании концевика будет сигнал 0, его и ловим
  attachInterrupt(0, turnStep, FALLING);
  digitalWrite(13, 1); //зажигаем светодиод
}

void turnStep() {
  intFlag = true;   // подняли флаг прерывания    
}

void loop() {
  if (intFlag) {
    intFlag = false;    // сбрасываем
    digitalWrite(13, 0); //отключаем светодиод
  }  
}

Код вставляйте в теги, у вас часть порезало...
Открыть изображение в новом окне


Отредактировано пользователем MACTEP 21.11.2021 17:07:26
Отредактировано пользователем MACTEP 21.11.2021 17:08:14
Отредактировано пользователем MACTEP 21.11.2021 17:08:43


Поиск по форуму


Расширенный поиск

Разное

Интересно

При замене электролитических конденсаторов, кроме соблюдения полярности, не следует значительно превышать допустимое рабочее напряжение.
Например, если конденсатор рассчитан на рабочее напряжение 16 В, то при установке нового той же емкости, но рассчитанного на напряжение 300 В после непродолжительной эксплуатации произойдет его расформовка, и емкость его значительно уменьшится.