Писк+нагрев+дерганье (драйвер A4988)

Общие вопросы станкостроения и организиции труда.
DestroyER
Новичок
Сообщения: 3
Зарегистрирован: 12 мар 2018, 15:23
Репутация: 0
Настоящее имя: Артур
Контактная информация:

Писк+нагрев+дерганье (драйвер A4988)

Сообщение DestroyER »

Здравствуйте!
Возникли проблемы со станочком:
Драйвер A4988
Шаговики от лазерных приводов нонеймы

При подключении основного питания тишина, как только подключаем ардуинку к компу, сразу начинается писк и дерганье движков, плюс они начинают греться. Ток уменьшал до 0.35 и ничего не изменилось. Если уменьшить до 0.01 то писк прекращается.
(для просмотра содержимого нажмите на ссылку)
int motorPins[3][2] = {{8,9},{10,11},{12, 13}};
int count; //подключение первого мотора
int count2[3] = {0,0,0}; //пин STEP на пин ардуины D8
int delayTime = 150; //пин DIR на пин ардуины D9
int val = 0;
int rot=0; //подключение второго мотора
int incomingByte = 0; //пин STEP на пин ардуины D10
int sign=1; //пин DIR на пин ардуины D11
int s_p=40;
void setup() { //Лазер подключается на пин D2
int i;
Serial.begin(57600); //Эта скорость должна совпадать со скоростью в программе
pinMode(2, OUTPUT);
for (i=0; i<3; i++) {
for (count = 0; count < 2; count++) {
pinMode(motorPins[count], OUTPUT);}} //установка режима работы цифровых pin'ов Ардуино
delayTime=150;} //задержка между шагами по умолчанию
void moveForward(int sm) {
digitalWrite(motorPins[sm][1], HIGH);
digitalWrite(motorPins[sm][0], HIGH);
digitalWrite(motorPins[sm][0], LOW);}
void moveBackward(int sm) {
digitalWrite(motorPins[sm][1], LOW);
digitalWrite(motorPins[sm][0], HIGH);
digitalWrite(motorPins[sm][0], LOW);}
void delayMicros(long wt){
unsigned long mls;
unsigned int mks;
mls=(unsigned long)(wt / 1000);
mks=(unsigned int)(wt % 1000);
if (mls>0) delay(mls);
if (mks>0) delayMicroseconds(mks);}
void MoveSM(long x, long y, long z) {
long c[3], c2[3];
double c1[3], d[3];
long m, i;
boolean flg;
long ms;
long d1, d2, d3, d4, t, dt;
c[0] = x;
c[1] = y;
c[2] = z;
m = 1;
for (i=0; i<2; i++) {
if (m < abs(c)) m = abs(c);}
for (i=0; i<2; i++) {
c1 = 0;
d = 1.0 * c / m;
c2 = 0;}
flg = false;
for (i=0; i<2; i++) {
if (abs(c1) < abs(c)) flg=true;}
t=m;
if (z>0 && t>0) {
if (z>=delayTime) {
dt=z; d1=s_p; d2=1;
d3=0;
if (d1==d2) d4=z/2; else d4=z;
} else {
dt=delayTime;
d3=dt*s_p*(dt-z)/dt/2;
d2=d3/dt;
d1=s_p-d2;
d3=d3-d2*dt;
d2=d2+1;
if (d1==d2) d4=dt/2-d3; else d4=dt-d3;}
} else {
dt=delayTime;
d1=-1; d2=-1; d3=0; d4=0;}
while (flg) {
flg=false;
for (i=0; i<2; i++) {
if (abs(c1) < 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 if (c[i]<0) {
c2[i]--;
moveBackward(i);}}
if (abs(c1[i]) < abs(c[i])) flg=true;}
if (z>0) {
if (t==d1) {
delayMicros(d3);
digitalWrite(2, HIGH);
delayMicros(d4);}
if (t==d2) {
delayMicros(d4);
digitalWrite(2, LOW);
delayMicros(d3);}
if (t!=d1 && t!=d2) {
delayMicros(dt);}
} else {
delayMicros(dt);}
t--;}}
void loop() {
if (Serial.available() > 0) {
long c[5]={0,0,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) {
delayMicroseconds(1);}
incomingByte = Serial.read();}
c[i]*=sign;
if (c[3]>0) s_p=c[3];
if (c[4]>0) delayTime=c[4];
MoveSM(c[0],c[1],c[2]);
Serial.println("OK");}
else
delayMicroseconds(1); }

Что делать, куда копать?
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение N1X »

Так они вращаются или нет? Если нет могут быть обмотки перепутаны. А то, что трещат и верещат - так это ж 4988... Решение есть - TMC2100, но он стоит как пучек 4988...
DestroyER
Новичок
Сообщения: 3
Зарегистрирован: 12 мар 2018, 15:23
Репутация: 0
Настоящее имя: Артур
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение DestroyER »

N1X писал(а):Так они вращаются или нет?
Да, в "Ардуино ЧПУ" (cnc.exe),в ручном режиме можно подвигать X и Y каретки.
Получается обмотки не перепутаны? А может быть нагрев и писк из=за того, что начало и конец обмоток(А1-А2) перепутаны (А2-А1) например?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение Сергей Саныч »

DestroyER писал(а): А может быть нагрев и писк из=за того, что начало и конец обмоток(А1-А2) перепутаны (А2-А1) например?
Нет. От этого движок просто будет в другую сторону вращаться.
Нагрев ШД градусов до 70 при номинальном токе и длительной работе (причем не имеет значения, крутится или стоит) - это нормально.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение N1X »

Если крутится - нормально все. Токи можно подстраивать мелким потенциометром на платках драйверов. Но визжать - это у них фишка такая...
DestroyER
Новичок
Сообщения: 3
Зарегистрирован: 12 мар 2018, 15:23
Репутация: 0
Настоящее имя: Артур
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение DestroyER »

Сергей Саныч писал(а): градусов до 70
А они нагреваются так, что притронуться невозможно - кипяток, даже станинка, нм которой они находятся, становится теплой...
N1X писал(а):Токи можно подстраивать
Ток уменьшал до 0.35 с 0.40 и ничего не изменилось, греется так же.
N1X писал(а):визжать - это у них фишка такая...
Лано, с этим понятно, а самопроизвольное дёрганье без подачи команд - это норма? Ну и пропуски шагов в режиме работы(гравировка) и отсутствие пропусков при ручном тестировании?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение Сергей Саныч »

DestroyER писал(а):Ток уменьшал до 0.35 с 0.40 и ничего не изменилось
А как вы его измеряете?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Писк+нагрев+дерганье (драйвер A4988)

Сообщение solo »

скорее все го не правильно выставленный ток на 4988 отсюда все проблемы , на 4988 срабатывает зашита, или по температуре (может плохо приклеен радиатор на 4988) или по току, отсюда и дерганья, и перегрев ШД , постав регулировочное сопротивления в среднее положение, а далее если нужно добавляй ток вращая резистор по часовой стрелке, да и еще не помню с дата шифта но как по мне для питания 4988 35В много , может 24В, а то и 12В вполне достаточно
Ответить

Вернуться в «Общие вопросы»