#1 2015-04-30 14:59:57

parhatskiy
Учасник
Зареєстрований: 2015-04-30
Повідомлень: 1

Arduino nano + l298 + биополярный шаговик + роторный энкодер

Появилась идея сделать управление фокусом на основе ардуино, но так как только начал разбиратся в програмировании, сразу же попал в тупик))))
В наличии есть Arduino nano v3 + l298 + шаговик + роторный энкодер
необходимо пропорциональное управление шаговиком с помощью енкодера, тоесть при остановке вращения енкодера - должен останавливатся и двигатель.
Поделитесь скетчем, если у кого имеется) а то не с чего начинать
Заранее благодарен!!!

До чего дошел вот:
#include <AccelStepper.h>

int motorSpeed = 10000; //maximum steps per second (about 5rps / at 8 microsteps)
int motorAccel = 3600; //steps/second/second to accelerate

const unsigned char ttable[7][4] = {
{0x0, 0x2, 0x4, 0x0}, {0x3, 0x0, 0x1, 0x10},
{0x3, 0x2, 0x0, 0x0}, {0x3, 0x2, 0x1, 0x0},
{0x6, 0x0, 0x4, 0x0}, {0x6, 0x5, 0x0, 0x20},
{0x6, 0x5, 0x4, 0x0},
};

#define DT 2
#define CLK 3
#define SW 4
#define DIR_CCW 0x10
#define DIR_CW 0x20
int motorStepPin = 8; //digital pin 3
int motorDirPin = 9; //digital pin 2
const int Enable_PIN = 10;
AccelStepper stepper(1, motorStepPin, motorDirPin);
volatile unsigned char state = 0;

void setup(){
  stepper.setMaxSpeed(motorSpeed);
  stepper.setSpeed(motorSpeed);
  stepper.setAcceleration(motorAccel);
  pinMode(Enable_PIN, OUTPUT);
  digitalWrite(Enable_PIN, LOW);
  stepper.moveTo(8000); //move 32000 steps (should be 10 rev)
  Serial.begin(9600);
  pinMode(DT, INPUT);
  pinMode(CLK, INPUT);
  pinMode(SW, INPUT);
  digitalWrite(SW, HIGH);
}

void loop(){
int counter;
unsigned char result;
  /* Reset the counter */
counter = 0;

  while(1)
  {
    /* Read the status of the dial */
    unsigned char pinstate = (digitalRead(CLK) << 1) | digitalRead(DT);
    state = ttable[state & 0xf][pinstate];
    result=state&0x30;
    if(result==DIR_CCW) counter++;
        if(result==DIR_CW) counter--;
// put some magnification  hera about 10 times
   stepper.moveTo(counter*10);
    stepper.run();
  }
}

Остання редакція parhatskiy (2015-04-30 15:04:50)

Неактивний

#2 2015-04-30 20:52:30

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Arduino nano + l298 + биополярный шаговик + роторный энкодер

Пример из аксельстеппер ProportionalControl

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму