Скетч для ШД на ардуино DUE

SSV-11
Offline
Зарегистрирован: 14.01.2020

Здравствуйте.
Нужен простой скетч для проверки шагового двигателя на ардуино DUE.
Чтобы загрузить скетч и покрутить ШД... Может у кого завалялся...

asam
asam аватар
Онлайн
Зарегистрирован: 12.12.2018

А чем не устраивают примеры от встроенной библиотеки stepper?

SSV-11
Offline
Зарегистрирован: 14.01.2020

asam пишет:

А чем не устраивают примеры от встроенной библиотеки stepper?


Все устраивает если на DUE эта библиотека есть и она работает
Дайте ссылочку. Я пока не очень в данном вопросе разбираюсь. Столкнулся с тем, что некоторых библиотек в DUE нет. AVR/io.h к примеру.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SSV-11 пишет:
asam пишет:

А чем не устраивают примеры от встроенной библиотеки stepper?

Все устраивает если на DUE эта библиотека есть и она работает Дайте ссылочку. Я пока не очень в данном вопросе разбираюсь. Столкнулся с тем, что некоторых библиотек в DUE нет. AVR/io.h к примеру.

эта работает

asam
asam аватар
Онлайн
Зарегистрирован: 12.12.2018

SSV-11 пишет:
asam пишет:

А чем не устраивают примеры от встроенной библиотеки stepper?

Все устраивает если на DUE эта библиотека есть и она работает Дайте ссылочку. Я пока не очень в данном вопросе разбираюсь. Столкнулся с тем, что некоторых библиотек в DUE нет. AVR/io.h к примеру.

Эта библиотека хоть и весьма примитина, но работает на всех видах ардуино, Вам религия запрещает ткнуть в менеджер библиотек и попробовать?

SSV-11
Offline
Зарегистрирован: 14.01.2020

asam пишет:

SSV-11 пишет:
asam пишет:

А чем не устраивают примеры от встроенной библиотеки stepper?

Все устраивает если на DUE эта библиотека есть и она работает Дайте ссылочку. Я пока не очень в данном вопросе разбираюсь. Столкнулся с тем, что некоторых библиотек в DUE нет. AVR/io.h к примеру.

Эта библиотека хоть и весьма примитина, но работает на всех видах ардуино, Вам религия запрещает ткнуть в менеджер библиотек и попробовать?


Да просто не умею. Все происсходит наверное потому, что хочется получить результат быстро и сейчас. Был генератор импульсов, но его не смог использовать наверное потому, что он не был предназначен для запуска ШД изначально. Закажу у китайцев другой. Сейчас один вариант - использовать ардуино для запуска. Ардуино было куплено под другой проект который в планах ( там и изучение и монтаж и все остальное планировалось). А ШД хочется сейчас проверить чтобы быть уверенным в его работе ( а то пойдёшь путь по изготовлению, сборке, а ШД не сможешь завести или не рабочий он....
Как-то так. Спасибо за ссылку. Дома вечером буду думать куда тыкать...
Вот только к ней (библиотеке) код необходимо дописать... Я правильно суть понимаю?
Прошу прощения за глупые вопросы...

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

b707
Offline
Зарегистрирован: 26.05.2017

блин, откуда вы такие беретесь только :)

А набрать в гугле "ардуино + шаговый мотор" и посидеть, почитать пару вечеров?

SSV-11
Offline
Зарегистрирован: 14.01.2020

Да всё оттуда же откуда и все, я надеюсь!!!

Читаю, мало инфориации по ардуино DUE. попробовал один скетч, ругается на библиотеки. 

Вот этот код:

#include <avr/io.h>
#include <avr/interrupt.h>

#define STEP   3 
#define DIR    4
#define ENA    5 
 
void setup() 
  {
    pinMode(STEP, OUTPUT);   // Инициализация входов/выходов  
    pinMode(DIR,  OUTPUT);
    pinMode(ENA,  OUTPUT);
    digitalWrite(DIR, LOW); // Направление вращения 
    digitalWrite(ENA, LOW);  // Разрешение управления двигателями   

    cli();                                                                        // Глобальный запрет прерываний
    TCCR1A=(0<<COM1A1)|(0<<COM1B1)|(0<<COM1A0)|(0<<COM1B0)|(0<<WGM11)|(0<<WGM10); // Настройка таймера/счетчика 1: нормальный режим работы порта, OC1A/OC1B отключены; ATmega328/P DATASHEET стр.170-172
    TCCR1B=(0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10);                   // Режим работы таймера/счетчика - CTC (очистить таймер при достижении значения в регистре сравнения OCR1A)
    OCR1A = 1000;                                                                 // Значение в регистре OCR1A определяет частоту входа в прерывание таймера и устанавливает скрость вращения двигателей
    TIMSK1 = 0b00000010;                                                          // Разрешение прерываний от таймера/счетчика
    sei();                                                                        // Глобальное разрешение прерываний
  }

void loop()
  {
    
  }

ISR(TIMER1_COMPA_vect)                             // Вектор прерывания от таймера/счетчика 1
  {                    
    if (PORTD & 0b00001000) {PORTD &= 0b11110111;} // STEP HIGH
    else                    {PORTD |= 0b00001000;} // STEP LOW
  }

Ругался на avr/io.h

b707
Offline
Зарегистрирован: 26.05.2017

SSV-11 пишет:

Ругался на avr/io.h

так как же ему не ругаться, если очевидно, что библиотека для контроллеров АВР. А вы ее на ДУЕ пытаетесь натянуть....

SSV-11
Offline
Зарегистрирован: 14.01.2020

b707 пишет:

SSV-11 пишет:

Ругался на avr/io.h

так как же ему не ругаться, если очевидно, что библиотека для контроллеров АВР. А вы ее на ДУЕ пытаетесь натянуть....


Ну да, такой я чудак... Поэтому и пишу тут об этом...
Помогите скетч найти...

b707
Offline
Зарегистрирован: 26.05.2017

SSV-11 пишет:
Помогите скетч найти...

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

SSV-11
Offline
Зарегистрирован: 14.01.2020

Двигатель nema 17
Драйвер MKS LV8727

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

Обычный step/dir. Если особой точности не надо, то можно обычным блинком его оживить.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Вот, буквально на коленке, с настройками:

#define DIR_PIN 2 // пин направления движения
#define STEP_PIN 3 // пин шага
#define EN_PIN 4 // пин ENABLE
#define EN_PIN_ON_LEVEL HIGH // уровень для включения ENABLE
#define STEP_PULSE_WIDTH 40 // ширина импульса STEP, микросекунд (зависит от драйвера)

void setup()
{
	pinMode(DIR_PIN, OUTPUT);
	pinMode(STEP_PIN, OUTPUT);
	pinMode(EN_PIN,OUTPUT);
	
	digitalWrite(EN_PIN,EN_PIN_ON_LEVEL);
	digitalWrite(DIR_PIN,HIGH);
	
}

void loop()
{
	digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(STEP_PULSE_WIDTH);  // N мкс
    digitalWrite(STEP_PIN, LOW);        	
}

Должен вращаться в какую-либо сторону (зависит от уровня на DIR_PIN). В самом конце loop можно вставить delay, чтобы вращался помедленнее.

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

В данном раскладе EN_PIN_ON_LEVEL LOW.

SSV-11
Offline
Зарегистрирован: 14.01.2020

DIYMan пишет:

Вот, буквально на коленке, с настройками:

#define DIR_PIN 2 // пин направления движения
#define STEP_PIN 3 // пин шага
#define EN_PIN 4 // пин ENABLE
#define EN_PIN_ON_LEVEL HIGH // уровень для включения ENABLE
#define STEP_PULSE_WIDTH 40 // ширина импульса STEP, микросекунд (зависит от драйвера)

void setup()
{
	pinMode(DIR_PIN, OUTPUT);
	pinMode(STEP_PIN, OUTPUT);
	pinMode(EN_PIN,OUTPUT);
	
	digitalWrite(EN_PIN,EN_PIN_ON_LEVEL);
	digitalWrite(DIR_PIN,HIGH);
	
}

void loop()
{
	digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(STEP_PULSE_WIDTH);  // N мкс
    digitalWrite(STEP_PIN, LOW);        	
}

Должен вращаться в какую-либо сторону (зависит от уровня на DIR_PIN). В самом конце loop можно вставить delay, чтобы вращался помедленнее.

скетч залил. мотор стоит, но не блокируется. Если ардуино отключаю  происходит блокировка движка.

SSV-11
Offline
Зарегистрирован: 14.01.2020

sadman41 пишет:
В данном раскладе EN_PIN_ON_LEVEL LOW.

Для меня эти слова знакомы, но в данном предложении не понятны.... Можно как для дурака сказать чтобы понятно было?

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

В скетче DIYMan enable делается подачей высокого уровня на EN драйвера. Но, по схеме подключения, которая чаще всего встречается, для начала работы драйверу нужно подать низкий уровень на EN. То есть в дефайне HIGH заменить на LOW. И делей в луп лучше добавить, а то может не стартануть двигатель.

SSV-11
Offline
Зарегистрирован: 14.01.2020

При подаче напряжения на движок при включенной ардуино  (включение блока питания что подает напряжение на обмотки) происходит толчек движка с последующей блокировкой.

SSV-11
Offline
Зарегистрирован: 14.01.2020

sadman41 пишет:
В данном раскладе EN_PIN_ON_LEVEL LOW.

Всосалась информация. Внёс изменения. Крутится. 

Спасибо.