stepper motor pololulu A4988 tester
- Войдите на сайт для отправки комментариев
Пт, 23/05/2014 - 12:10
типа подпрограмки на будущее
эх сколько не разбрасывай все равно через пол года сам не вспомню что я писал
типа код что-ли поругайте
щиток на arduino от Pololulu A4988
он конечно помикрошагонутестее но и хлипковат он
думаю надо десяточек затарится бо горят как пирожки забытые
// art100 to write 20140523 test stepper motors pololulu A4988
// pins---------------------------------------
// joystick --------------------------
int joypinx = A0; //joystick pin
int joypiny = A1; //joystick pin
int joypinf = A2; //joystick pin
// lasers leds ----------------
int led3 = A4;//3; //
// stepper motors ------------
int dir_Pin1 = 4;//
int stepPin1 = 3;//
#define microstep16pin A5//
#define sleeppin 2//
// constants for joystick -------------------------------------------
int sp1table = 120;// a4988 1000;//slow
int sp2table = 10;// a4988 10000;//a3987 speed
int joyx = 0; //joystick
int joyy = 0; //joystick
int joyf = 0; //joystick
int stepxcor =10;// for correction >0<
int stepycor =10;// for correction >0<
// usb------------------------------
int commandusb = 0; //
//---------------------------
// stepper motor 1 pololulu A4988 -------------------------------
void stepA4988(boolean dir1,int steps1,int msec1){
digitalWrite(dir_Pin1,dir1); // direction
for(int i=0;i<steps1;i++){
digitalWrite(stepPin1,HIGH); delayMicroseconds(msec1);
digitalWrite(stepPin1, LOW); delayMicroseconds(msec1);
}
}
//--------------------------------------------------------------------------------------
void setup(){
pinMode(joypinx, INPUT); //joystick X
pinMode(joypiny, INPUT); //joystick Y
pinMode(joypinf, INPUT_PULLUP); //joystick fire pin
pinMode (led3,OUTPUT); //laser
digitalWrite(led3, HIGH); //
pinMode(dir_Pin1, OUTPUT);//table
pinMode(stepPin1, OUTPUT);//table
pinMode(microstep16pin, OUTPUT);
digitalWrite(microstep16pin, HIGH); //HIGH for 16microstepping, LOW for no microstepping
pinMode(sleeppin, OUTPUT);
Serial.begin(9600);
}
//======================================================================
void loop(){
// joystick ----------------------------------------------------------
joyx = analogRead(joypinx)>>7; // 3 button 0/4/7 0.1.2.3.4.5.6.7 sanks for speed registry shift Dimax
joyy = analogRead(joypiny)>>7; // 3 button 0/4/7 0.1.2.3.4.5.6.7 sanks for speed registry shift Dimax
// Serial.print('X');Serial.print(joyx);Serial.print(';'); Serial.print('Y');Serial.print(joyy);Serial.println(';'); //test
if(joyx==0){stepA4988(false,stepxcor,sp1table);}//speed
if(joyx==7){stepA4988(true ,stepxcor,sp1table);}//speed
if(joyy==0){stepA4988(false,stepxcor,sp2table);}//speed
if(joyy==7){stepA4988(true ,stepxcor,sp2table);}//speed
// led --------------------------------------------------------
if(digitalRead(joypinf)==LOW) { digitalWrite(led3, LOW); } // laser to work
else { digitalWrite(led3,HIGH); } // laser to work
Serial.print("joyx joyy sp1table sp2table: "); Serial.print(joyx);Serial.print(joyy);Serial.println(";");//Serial.print(sp1table);Serial.print(sp2table);Serial.println(";");//
// joystick ----------------------------------------------------------
// usb ----------------------------------------------------------------
if (Serial.available() > 0) {
commandusb = Serial.read();
if (commandusb==76 ) {digitalWrite(led3, HIGH);} // Laser on L
if (commandusb==108) {digitalWrite(led3, LOW);} // laser off l
if (commandusb==45 ) {stepA4988(true, stepycor,sp1table);} // down+
if (commandusb==43 ) {stepA4988(false,stepycor,sp1table);} // up -
Serial.print("commanda usb received: "); Serial.println(commandusb);
}
// usb ----------------------------------------------------------------
}
кино немножко на 4 мегабайтика
http://yadi.sk/d/sydH7XAzR5NQQ
схема включения конечно типовая

на макетке

Радиатор приклей через термопасту и будет счастье. Пробовал, помогло...
статистика лично моя
из 10 штук 2 штуки вышли из строя
причина
нет защищающих диодов в землю и плюс
в принципе их нет и впаивать некуда потому как места толком тоже нет
да на фото да залило яркостью щас попробую по другому фото получить
сегодня обнаружил в крайнем справо косяк
разбирать конечно лень
потому тестер слепил
вот посмотри как питание 2 амперное в 0 душит :)
6 долларов улетело в мусор без хлопков щелчков вони гари тихо и безшумно
хорошо что со стрелочниками отлаживаю станок
не то что видно а слышно как они в истерике бьются ;)
http://yadi.sk/d/RJdHKSOIR6ymj
Почитайте про " Current limiting " здесь http://www.pololu.com/product/1183
Там есть потенциометр....
Ток на драйвере выставите под свой шаговик . Сколько мотор кушает?
Ток на драйвере выставите под свой шаговик . Сколько мотор кушает?
честно говоря даже лень думать об этом
сначало даже крутил потенциометр специально для этого распаянный сначало против часовой стрелки на минимум под лупой
компом давал шаги
и под лупой мелко-отверткой по часовой добавлял пока моторы не перестанут рычать
а начинают устойчиво станок двигать
и все равно пришел к среднему положению -+ 10%
так нафига об этом думать
у китайца заказал
на почте отстоял
в плату воткнул
забыл
а вот когда механику не тянет рычит и греется
тогда может быть буду мозг включать в этом направлении- поиска лупы и мелкотвертки
а если солнце всходит и заходит зачем его трогать?
я как думаю напряжение 12вольт
китаский NEMA17 по постоянке от 9.5 ом. !!!впервые за 5 месяцев померял мотор!!!
советский который не все мое тянет 140 ом приходилось потенциометр на максимум выкручивать но все равно слабоваты
вот вам и токи 1,26 ампера на мотор в режиме удержания,
что в принципе похоже 5 моторов общий амперметр с ардуиной больше 5 ампер не показывал
во даже мозг напряг
если еще один станок будет и я на второй десяток таких ПлавающихЛу запусков пойду
а ссылка фигня там даже не накалякано что sleep-reset разумно закорачивать
я правдо не понял нафига не сразу ms1 ms2 ms3 поднимать отдельной ногой как только отдельно рулить начал чип адекватен всегда ну да ладно лень думать
я вообще использую самы компактный вариант
потенциометр меж ног 2.54 мм запутался
repeate up