roboforum.ru

Технический форум по робототехнике.

Не работает скетч для чпу с с айта www.ecnc.ru

Не работает скетч для чпу с с айта www.ecnc.ru

yuriiy » 11 янв 2015, 16:27

Здравствуйте! Если уже подымалась тема извините. Поиском искал ответа не нашел.
Хочу собрать маленький чпу. Как всегда решил сэкономить и купил DccDuino Uno. Драйвера родные не подошли. подошел CH341SER.ZIP найденный в интернете. Загружаю прошивку с сайта http://www.ecnc.ru (который всем известен), а она не как не реагирует на команды из монитора порта. Прошивка из примеров работает- двигателя крутятся хоть и как то странно. Я просто еще не знаю как они должны крутиться.
Вот прошивка с сайта:
Код: Выделить всёРазвернуть
int motorPins[3][4] = {{2, 3, 4, 5},{6, 7, 8, 9},{10, 11, 12, 13}};
int count;
int count2[3] = {0,0,0};
int delayTime;
int val = 0;
int rot=0;
int incomingByte = 0;
int sign=1;

//Процедура настройки прошивки
void setup() {
int i;
Serial.begin(9600);

for (i=0; i<3; i++) {
  for (count = 0; count < 4; count++) {
   pinMode(motorPins[i][count], OUTPUT); //установка режима работы цифровых pin'ов Ардуино
  }
}
delayTime=3; //задержка между шагами 3 мс (2 мс - время реакции ШД на подачу напряжения)
}

//Поворот двигателя с номерм sm на один шаг вперёд
void moveForward(int sm) {
if ((count2[sm] == 0) || (count2[sm] == 1)) {
  count2[sm] = 16;
}
count2[sm]>>=1;
for (count = 3; count >= 0; count--) {
  digitalWrite(motorPins[sm][count], count2[sm]>>count&0x01);
}
}

//Поворот двигателя с номерм sm на один шаг назад
void moveBackward(int sm) {
if ((count2[sm] == 0) || (count2[sm] == 1)) {
  count2[sm] = 16;
}
count2[sm]>>=1;
for (count = 3; count >= 0; count--) {
  digitalWrite(motorPins[sm][3 - count], count2[sm]>>count&0x01);
}
}

//Одновременный поворот двигателей 0, 1, 2 на x, y, z шагов соответственно
void MoveSM(long x, long y, long z) {
  long c[3], c2[3];
  double c1[3], d[3];
  long m, i;
  boolean flg;
 
  c[0] = x;
  c[1] = y;
  c[2] = z;
 
  m = 1;
  for (i=0; i<3; i++) {
    if (m < abs(c[i])) m = abs(c[i]);
  }
 
  for (i=0; i<3; i++) {
    c1[i] = 0;
    d[i] = 1.0 * c[i] / m;
    c2[i] = 0;
  }

  flg = false;
  for (i=0; i<3; i++) {
    if (abs(c1[i]) < abs(c[i])) flg=true;
  }
  while (flg) {
    flg=false;
    for (i=0; i<3; i++) {
      if (abs(c1[i]) < abs(c[i]))
       c1[i] += d[i];
      if (abs(c1[i]) - abs(c2[i]) >= 0.5) {
       if (c[i]>0) {
        c2[i]++;
        moveForward(i);
       } else {
        c2[i]--;
        moveBackward(i);
       }
      }
      if (abs(c1[i]) < abs(c[i])) flg=true;
    }
    delay(delayTime);
  }
}

//Основной цикл
void loop() {
if (Serial.available() > 0) { //Пришла команда
  long c[3]={0,0,0};
  int i;
  sign=1;
  i=0;
  incomingByte = Serial.read();
  while (incomingByte!=';') { //Читаем входящую строку, признак конца строки знак "точка с запятой"
   if (c[i]==0) {
    if (incomingByte=='-')
     sign=-1;
   }
   if (incomingByte==',') {
    c[i]*=sign;
    sign=1;
    i++;
   } else if (incomingByte>='0' && incomingByte<='9') {
    c[i]=c[i]*10+incomingByte-'0';
   }
   while (Serial.available() == 0) {
    delay(2);
   }
   incomingByte = Serial.read();
  }
  c[i]*=sign;
  MoveSM(c[0],c[1],c[2]); //Вращаем двигатели на заданное число шагов
  Serial.println("OK");  //Отправляем компьютеру сообщение "OK", значит можно высылать новую команду
}
else
  delay(100); //Если ничего не пришло, ждём 1/10 секуды.
}


А эта из примеров:
Код: Выделить всёРазвернуть
/* 
Stepper Motor Control - one revolution

This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.

The motor should revolve one revolution in one direction, then
one revolution in the other direction. 

 
Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe

*/

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
                                     // for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);           

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
   Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);
 
   // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}


прошу помощи. заранее спасибо!
Последний раз редактировалось yuriiy 11 янв 2015, 18:53, всего редактировалось 1 раз.

Re: Не работает скетч для чпу с с айта www.ecnc.ru

Myp » 11 янв 2015, 18:18

во первых, если проблема с прошивкой с какого-то сайта (я так первый раз его вижу) то почему бы не спросить прям на том сайте у автора прошивки? он явно лучше знает что там у него написано.
во вторых, какой мотор? какой драйвер? телепаты уехали на новый год отдыхать, никто не может догадаться что у тебя там есть и тем более как это всё подключено.
в третьих, в этих двух программах банально разные контакты используются для управления моторами. какие нужны именно тебе знаешь только ты и телепаты, а они отдыхают.

если хочешь получить помощь, внятно опиши что там у тебя уже собрано, со схемой или на крайняк фоткой.

Re: Не работает скетч для чпу с с айта www.ecnc.ru

yuriiy » 11 янв 2015, 18:43

Извините за не точность. Двигатель 28BYJ-48-5V, драйвер на микросхеме ULN2003. 3 двигателя подключаю на порты 2,3,4,5;6,7,8,9;10,11,12,13.
На сайте ничего кроме мыла нету. туда я тоже вчера написал. ответа нет. А про сайт: я искал в гугле другие версии прошивки или хоть что нибудь, а там везде ссылаются на этот сайт и что с этой прошивкой у них все работает нормально.

Re: Не работает скетч для чпу с с айта www.ecnc.ru

RootAdmin » 11 янв 2015, 20:20

GRBL до 06 версии ЕМНИП поддерживала такие двигатели. У меня есть скетч для ардуинки, которая позволяет управлять тремя такими двигателями как степ-дир.
А что за станок будет? Гравер лазеиный?

Re: Не работает скетч для чпу с с айта www.ecnc.ru

yuriiy » 11 янв 2015, 21:05

для начала рисовалку, для теста. потом хотел докупить получше двигателя и сделать что то серьезнее. Все выходные провозился со станком, а электроникой только сейчас занялся. Завтра на работу, потому неохота вникать в языки программирования. Думал может есть готовое решение.

Re: Не работает скетч для чпу с с айта www.ecnc.ru

RootAdmin » 11 янв 2015, 21:58

Я б все же взял сразу "нормальные" драйвера. Они рублей по 100... скетч могу завтра кинуть. Потребуется две ардуины. В одны - залить GRBL, второй - управлять теми двигателями, которые ечть сейчас. Сам так делал. :) А GRBL рекомендую как стандарт де-факто в самодльном станкостроении.

Добавлено спустя 18 минут 14 секунд:
Видел я когда-то этот сайт. Попытка написать ни с чем не совместимый велосипед, честно говоря...

Re: Не работает скетч для чпу с с айта www.ecnc.ru

Myp » 12 янв 2015, 00:08

моторы никуда не годные, там люфт адский, драйвер барахло, и вобще весь сайт - сборище разной ерунды.

тебе нужны нормальные шаговые моторы, хотябы от принтеров, нормальные драйвера и прошивка GRBL.

Re: Не работает скетч для чпу с с айта www.ecnc.ru

RootAdmin » 12 янв 2015, 12:07

а чего это от принтеров -"хотя бы"? Отличные двигатели в больших лазерниках можно взять.

Re: Не работает скетч для чпу с с айта www.ecnc.ru

Myp » 12 янв 2015, 12:14

да нету там отличных, от силы попадётся nema 23 на ток дай бог в 1 ампер.
а в обычных домашних всякие кругляшки на ток 100-500 мА

Re: Не работает скетч для чпу с с айта www.ecnc.ru

yuriiy » 12 янв 2015, 23:34

а сложно перепрошить прошивкой GRBL? или проще спаять схему работы через сом порт?

Re: Не работает скетч для чпу с с айта www.ecnc.ru

RootAdmin » 12 янв 2015, 23:38

В пару кликов. С помощью программы xloader просто залива м прошивку.


Rambler\'s Top100 Mail.ru counter