Скетч для ШД на ардуино DUE
- Войдите на сайт для отправки комментариев
Втр, 14/01/2020 - 11:58
Здравствуйте.
Нужен простой скетч для проверки шагового двигателя на ардуино DUE.
Чтобы загрузить скетч и покрутить ШД... Может у кого завалялся...
А чем не устраивают примеры от встроенной библиотеки stepper?
А чем не устраивают примеры от встроенной библиотеки stepper?
Все устраивает если на DUE эта библиотека есть и она работает
Дайте ссылочку. Я пока не очень в данном вопросе разбираюсь. Столкнулся с тем, что некоторых библиотек в DUE нет. AVR/io.h к примеру.
А чем не устраивают примеры от встроенной библиотеки stepper?
эта работает
А чем не устраивают примеры от встроенной библиотеки stepper?
Эта библиотека хоть и весьма примитина, но работает на всех видах ардуино, Вам религия запрещает ткнуть в менеджер библиотек и попробовать?
А чем не устраивают примеры от встроенной библиотеки stepper?
Эта библиотека хоть и весьма примитина, но работает на всех видах ардуино, Вам религия запрещает ткнуть в менеджер библиотек и попробовать?
Да просто не умею. Все происсходит наверное потому, что хочется получить результат быстро и сейчас. Был генератор импульсов, но его не смог использовать наверное потому, что он не был предназначен для запуска ШД изначально. Закажу у китайцев другой. Сейчас один вариант - использовать ардуино для запуска. Ардуино было куплено под другой проект который в планах ( там и изучение и монтаж и все остальное планировалось). А ШД хочется сейчас проверить чтобы быть уверенным в его работе ( а то пойдёшь путь по изготовлению, сборке, а ШД не сможешь завести или не рабочий он....
Как-то так. Спасибо за ссылку. Дома вечером буду думать куда тыкать...
Вот только к ней (библиотеке) код необходимо дописать... Я правильно суть понимаю?
Прошу прощения за глупые вопросы...
p.s. я вечером выложу код на который ругалась программа загрузки...
блин, откуда вы такие беретесь только :)
А набрать в гугле "ардуино + шаговый мотор" и посидеть, почитать пару вечеров?
Да всё оттуда же откуда и все, я надеюсь!!!
Читаю, мало инфориации по ардуино 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
Ругался на avr/io.h
так как же ему не ругаться, если очевидно, что библиотека для контроллеров АВР. А вы ее на ДУЕ пытаетесь натянуть....
Ругался на avr/io.h
так как же ему не ругаться, если очевидно, что библиотека для контроллеров АВР. А вы ее на ДУЕ пытаетесь натянуть....
Ну да, такой я чудак... Поэтому и пишу тут об этом...
Помогите скетч найти...
что за мотор у вас и что за драйвер? Во многих случаях для шаговика вообще никакие библиотеки не нужны - просто переключаете обмотки последовательно в цикле...
Двигатель nema 17
Драйвер MKS LV8727
Обычный step/dir. Если особой точности не надо, то можно обычным блинком его оживить.
Вот, буквально на коленке, с настройками:
#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, чтобы вращался помедленнее.
В данном раскладе EN_PIN_ON_LEVEL LOW.
Вот, буквально на коленке, с настройками:
#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, чтобы вращался помедленнее.
Для меня эти слова знакомы, но в данном предложении не понятны.... Можно как для дурака сказать чтобы понятно было?
В скетче DIYMan enable делается подачей высокого уровня на EN драйвера. Но, по схеме подключения, которая чаще всего встречается, для начала работы драйверу нужно подать низкий уровень на EN. То есть в дефайне HIGH заменить на LOW. И делей в луп лучше добавить, а то может не стартануть двигатель.
При подаче напряжения на движок при включенной ардуино (включение блока питания что подает напряжение на обмотки) происходит толчек движка с последующей блокировкой.
Всосалась информация. Внёс изменения. Крутится.
Спасибо.