Скетч и подключение для шагового двигателя

frag1
Offline
Зарегистрирован: 05.10.2018

Добрый день,

 

требуется скетчи для работы шагового двигателя

1.

двигатель nema 23 1.8 A подключен к arduino nano через драйвер А4988 по данной схеме

скетч 

01/*Программа для вращения шагового мотора NEMA 17, серии 17HS4402 + драйвер A4988. Сначала мотор совершает полный оборот в одну сторону, потом в другую*/
02/*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Step на драйвер. Каждый импульс от этого контакта — это перемещение мотора на один шаг*/
03const int pinStep = 5;
04/*целочисленная константа, хранящая номер цифрового контакта Arduino, который подаёт сигнал Direction на драйвер. Наличие импульса - мотор вращается в одну сторону, отсутствие - в другую*/
05const int pinDir = 4;
06 
07//временная задержка между шагами мотора в мс
08const int move_delay = 1;
09 
10//шагов на полный оборот
11const int steps_rotate_360 = 200;
12 
13/*Функция, в которой происходит инициализация всех переменных программы*/
14void setup()
15{
16/*задаём контактам Step и Direction режим вывода, то есть они выдают напряжение*/
17  pinMode(pinStep, OUTPUT);
18  pinMode(pinDir, OUTPUT);
19//устанавливаем начальный режим
20  digitalWrite(pinStep, HIGH);
21  digitalWrite(pinDir, LOW);
22}
23 
24/*Функция-цикл в которой задаётся поведение программы*/
25void loop()
26{
27//устанавливаем направление вращения
28  digitalWrite(pinDir, HIGH);
29 
30  for(int i = 0; i < steps_rotate_360; i++)
31  {
32    digitalWrite(pinStep, HIGH);
33    delay(move_delay);
34    digitalWrite(pinStep, LOW);
35    delay(move_delay);
36  }
37 
38  
39}

Необходимо добавить кнопку "Пуск" - двигатель с постоянной скоростью делает N количество оборотов, двигатель останавливается (не в режиме Пауза). Цикл повторяется.

 

 

2.

Нужна схема подключения и скетч для arduino nano, драйвер TB6600, двигатель nemo 23 2.5A, lcd дисплей  с возможностью ввода количества шагов, скорость оборотов, направление вращения. Принцип такой же что и предыдущий, нажимаем "Пуск", двигатель вращается с заданной постоянной скоростью N количество оборотов и полностью останавливается (не в режиме пауза). Цикл повторяется.

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

Конечно пишите. skif7361@ya.ru

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Или wrk.sadman@gmail.com (если скиф загнет цену).

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

Та когда я загинал? Я за доширак работаю

sadman41
Offline
Зарегистрирован: 19.10.2016

За доширак и качество работ соответствующее. Заказчику такое может не подойти.

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

Поставить кнопку в готовую программу - тут да, особое качество нужно. Задача на два доширака. А загнутая цена за мелочь - это признак качества?

Так я предоплату никогда не беру. Понравится заказчику - он меня накормит. Не понравится - я лапу сосать буду. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Дак чево тянуть, вставляй прямо тут кнопочку в готовую программу. 

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

А доширак? Два доширака?

sadman41
Offline
Зарегистрирован: 19.10.2016

"Понравится заказчику - он меня накормит" (С)

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

sadman41 пишет:

"Понравится заказчику - он меня накормит" (С)

А меня?

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

А загнутая цена за мелочь - это признак качества?

vvadim
Offline
Зарегистрирован: 23.05.2012
frag1
Offline
Зарегистрирован: 05.10.2018

skif пишет:

Конечно пишите. skif7361@ya.ru

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


Здравствуйте, вы оба варианта можете сделать?

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

конечно оба. 

Green
Offline
Зарегистрирован: 01.10.2015

У скифа ещё и с юмором напряженка. Совсем печально.(

frag1
Offline
Зарегистрирован: 05.10.2018

Спасибо всем за отклики, исполнитель найден

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Green пишет:

У скифа ещё и с юмором напряженка. Совсем печально.(

Голодный видно. Давно доширака не ел. Вот и шуток не понимает. Сделает заказ поест,веселее на жизнь посмотрит и  юмор появится.

Green
Offline
Зарегистрирован: 01.10.2015

Ну да. Какой там юмор без доширака.

karamzin01
Offline
Зарегистрирован: 08.03.2018

привет. maslachenko767@mail.ru пишите сделаем

skif
skif аватар
Offline
Зарегистрирован: 24.03.2015

karamzin01 пишет:
привет. maslachenko767@mail.ru пишите сделаем

Привет. Так я сделал уже

frag1
Offline
Зарегистрирован: 05.10.2018

Хотел бы поблагодарить sadman41 за проделанную работу (не знаю при чем тут skif), все выполнено быстро и качественно, получил скетчи, схемы подключения и рекомендации, даже мне далекому от программирования все понятно. Тему можно закрывать.  

Sabonchik
Offline
Зарегистрирован: 11.11.2020

Доброго времени суток. Такой вопрос: в каком приложении (сайте) вы имитируете собранные схемы. 

Brat4791
Brat4791 аватар
Offline
Зарегистрирован: 13.02.2021

Цена вопроса написать скетч для спидометра ,тахометра  драйвер А4988 библиотекой AccelStepper?

часть скетча  на AccelStepper

 
// Установка выводов
const int dirPin = 28;
const int stepPin = 26;
const int en = 30;          // задействовать . 
const int stepsperevolution = 300;
const int dirPin1 = 50;
const int stepPin1 = 48;
const int en1 = 47;          // задействовать . 
const int stepsperevolution1 = 300;
// подключаем библиотеку
#include <AccelStepper.h>
 
// модифицирован для шагового двигателя и контроллера тахометра
AccelStepper tachStepper(AccelStepper::DRIVER, stepPin, dirPin);           // works for a4988 (Bipolar, constant current, step/direction driver)
const long STEPS_PER_REVOLUTION = 315;     // for the VID2905 stepper
// Set this value based on a4988 configuration.
// 1 = full step, 2 = 1/2 step, 4 = 1/4 step, 8 = 1/8 step
const int uSteps = 2;   // micro step rate
const int MAX_RPM_RANGE = 7000;      // Maximum RPM range to display for your car
 
// модифицирован для шагового двигателя и контроллера спидометр
AccelStepper spdStepper(AccelStepper::DRIVER, stepPin, dirPin);           // works for a4988 (Bipolar, constant current, step/direction driver)
const long STEPS_PER_REVOLUTION1 = 315;     // for the VID2905 stepper
// Set this value based on a4988 configuration.
// 1 = full step, 2 = 1/2 step, 4 = 1/4 step, 8 = 1/8 step
const int uSteps1 = 2;   // micro step rate
const int MAX_RPM_RANGE1 = 7000;      // Maximum RPM range to display for your car
 
void setup() {
  
  tachStepper.setMaxSpeed(250 * uSteps);            // these valuses seem to work for VID2905
  tachStepper.setAcceleration(250 * uSteps);
  tachStepper.runToNewPosition(-300 * uSteps);    // move to zero position
  tachStepper.runToNewPosition(10 * uSteps);      // now move needle almost to zero  -- tach is ready to use.
  delay(1000);
  
  spdStepper.setMaxSpeed(250 * uSteps);          // these valuses seem to work for VID2905
  spdStepper.setAcceleration(250 * uSteps);
  spdStepper.runToNewPosition(-300 * uSteps);    // move to zero position
  spdStepper.setCurrentPosition(0);              // set as 0 rpm reference
  spdStepper.runToNewPosition(10 * uSteps);      // now move needle almost to zero  -- tach is ready to use.
  delay(1000);
} // END VOID SETUP
} // END VOID SETUP
void loop(void) {

  // считывается информация с кода данных OBD1 getOBDdata(OBD_RPM). Либо отдельным пином сигнала от Тахо

  tachStepper.moveTo((long)(map(getOBDdata(OBD_RPM), 0, MAX_RPM_RANGE, 1, STEPS_PER_REVOLUTION * uSteps * 2)));

  // считывается информация с кода данных OBD1 getOBDdata(OBD_SPD)  Либо отдельным пином сигнала от SPD

  spdStepper

   }

   tachStepper.run();

   spdStepper.run();

  }

 }