а схему подключения можно увидеть?И не заработала...
а схему подключения можно увидеть?И не заработала...
// Отправка данных в порты STEP/DIR
#define STEP(V) (PORTB = V ? PORTB | (1 << (STEP_PIN-8)) : PORTB & (~(1<<(STEP_PIN-8))))
#define DIR(V) (PORTB = V ? PORTB | (1 << (DIR_PIN-8)) : PORTB & (~(1<<(DIR_PIN-8))))
Ну крути пока...))) я пока покурю твой код...@serega_k,
Есть один вариант почему не работает! На DRV8825 есть такой маленький пиздюк-потенцометр. Вот его нужно поднастроить. Крутить на доли миллиметра пока шаговик не заработает!
это ... макросы Аскольда Волкова, или их подобие ... типа универсальная инициализация портов ...И ещё нифига не могу понять вот это вот
Stepper.h тут не нужен. Он не уметь прерываний.ну однозначно наверх допиши ...
#include <Stepper.h>
хотя онлайн компилятор и без подключения библиотеки без ошибки скомпилировал...
const int encoderIn = 8; // вход для прерывателя
const int statusLED = 13; // выход для индикации
const int pulseOutput = 12; // выход для осциллографа
int detectState=0; // переменная для чтения состояния энкодера
void setup()
{
pinMode(encoderIn, INPUT); //Настраиваем контакт 8 на вход
pinMode(statusLED, OUTPUT); //Настраиваем контакт 13 на выход
pinMode(pulseOutput, OUTPUT); // Настраиваем контакт 12 на выход
}
void loop() {
detectState=digitalRead(encoderIn);
if (detectState == HIGH) { //Если выход энкодера в высоком логическом состоянии
digitalWrite(statusLED, HIGH); //включаем светодиод
digitalWrite(pulseOutput,HIGH); //выход 13 устанавливаем в высокое логическое состояние
}
else {
digitalWrite(statusLED, LOW); //выключаем светодиод
digitalWrite(pulseOutput,LOW); //выход 13 устанавливаем в низкое логическое состояние
}
}
Я уже писал что отдельно энкодер и шаговик работают, но вот вместе не могу запустить!Нашёл уже...
вот такая проблема у тебя вылезет если даже запустим...
=================================================
Вопрос, с какой частотой необходимо опрашивать энкодер. У меня в программе цикл прерывания 250 мкс и 4 выборки при фильтрации. В итоге период реакции на изменения состояния сигналов 1 мс.
Все зависит от того с какой частотой сигналы энкодера могут изменять свое состояние. А это определяют максимальная скорость вращения энкодера и параметр - число импульсов на оборот.
Если вы сделаете период опроса больше, например, несколько миллисекунд, то увидите в окне монитора порта, что импульсы пропускаются при резком повороте. Все это вы можете посчитать сами. Но я бы рекомендовал в итоге проверить работу энкодера на этой программе.
читай тут... Работа с инкрементальным энкодером в Ардуино
=================================================
проще говоря... даже если у тебя всё будет работать на приемлимых скоростях (плавное перемещение энкодера),
то резкий рывок или быстрое перемещение пропустит шаги, и каждое такое поведение будет наращивать погрешность...
Он настраивается на ток шагового двигателя!@serega_k, эго нужно настраивать в зависимости от навешанной на него нагрузки...