Не работает скетч шагового двигателя
- Войдите на сайт для отправки комментариев
Втр, 02/06/2020 - 17:09
для проекта мне нужно сделать управление шагового двигателя с помощью пульта, я сделал всё по схеме, но скетч шаговый двигатель не работает
так выглядет схема проекта. а так код, при загрузке на плату драйвер шагового двигателя ничего не делает,не горит.
#include <IRremote.h> int RECV_PIN = 5;//The definition of the infrared receiver pin 5 int Pin0 = 8;//definition digital 8 pins as pin to control the IN1 (ULN24L01) int Pin1 = 9;//definition digital 9 pins as pin to control the IN2 (ULN24L01) int Pin2 = 10;//definition digital 10 pins as pin to control the IN3 (ULN24L01) int Pin3 = 11;//definition digital 11 pins as pin to control the IN4 (ULN24L01) int _step = 512; int _speed = 1; IRrecv irrecv(RECV_PIN); decode_results results; int dir; void setup() { pinMode(Pin0, OUTPUT);//Set digital 8 port mode, the OUTPUT for the output pinMode(Pin1, OUTPUT);//Set digital 9 port mode, the OUTPUT for the output pinMode(Pin2, OUTPUT);//Set digital 10 port mode, the OUTPUT for the output pinMode(Pin3, OUTPUT);//Set digital 11 port mode, the OUTPUT for the output irrecv.enableIRIn(); //Initialization infrared receiver } void loop() { if (irrecv.decode(&results)) { switch(results.value){ case 0xF076C13B/*-*/: dir = 1; break; case 0xA3C8EDDB/*+*/: dir = 0; break; case 0xC101E57B/*0*/: Speed(15); //Stepper motor speed = 1 slow (note:speed from 1 to 15) Step(0); //Stepper motor stop break; case 0x9716BE3F/*1*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(512);//Stepper motor forward 512 steps ---- 360 angle }else{ Step(-512);//Stepper motor backward 512 steps ---- 360 angle } break; case 0x3D9AE3F7/*2*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(1024);//Stepper motor forward 1024 steps ---- 2*360 angle }else{ Step(-1024);//Stepper motor backward 1024 steps ---- 2*360 angle } break; case 0x6182021B/*3*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(1536);//Stepper motor forward 1536 steps ---- 3*360 angle }else{ Step(-1536);//Stepper motor backward 1536 steps ---- 3*360 angle } break; case 0x8C22657B/*4*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(2048);//Stepper motor forward 2048 steps ---- 4*360 angle }else{ Step(-2048);//Stepper motor backward 2048 steps ---- 4*360 angle } break; case 0x488F3CBB/*5*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(2560);//Stepper motor forward 2560 steps ---- 5*360 angle }else{ Step(-2560);//Stepper motor backward 2560 steps ---- 5*360 angle } break; case 0x449E79F/*6*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(3072);//Stepper motor forward 3072 steps ---- 6*360 angle }else{ Step(-3072);//Stepper motor backward 3072 steps ---- 6*360 angle } break; case 0x32C6FDF7/*7*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(3584);//Stepper motor forward 3584 steps ---- 7*360 angle }else{ Step(-3584);//Stepper motor backward 3584 steps ---- 7*360 angle } break; case 0x1BC0157B/*8*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir){ Step(4096);//Stepper motor forward 4096 steps ---- 8*360 angle }else{ Step(-4096);//Stepper motor backward 4096 steps ---- 8*360 angle } break; case 0x3EC3FC1B/*9*/: Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15) if(dir==0){ Step(4608);//Stepper motor forward 4608 steps ---- 9*360 angle }else{ Step(-4608);//Stepper motor backward 4608 steps ---- 9*360 angle } break; default : Step(0); //Stepper motor stop break; } irrecv.resume(); // Receiving the next value } } void Speed(int stepperspeed)//set Stepper speed { _speed = 15 - stepperspeed; if( _speed<1){ _speed = 1; } if( _speed>15){ _speed = 15; } } void Step(int _step)//Stepper motor rotation { if(_step>=0){ // Stepper motor forward for(int i=0;i<_step;i++){ setStep(1, 0, 0, 1); delay(_speed); setStep(1, 0, 0, 0); delay(_speed); setStep(1, 1, 0, 0); delay(_speed); setStep(0, 1, 0, 0); delay(_speed); setStep(0, 1, 1, 0); delay(_speed); setStep(0, 0, 1, 0); delay(_speed); setStep(0, 0, 1, 1); delay(_speed); setStep(0, 0, 0, 1); delay(_speed); } }else{ // Stepper motor backward for(int i=_step;i<0;i++){ setStep(0, 0, 0, 1); delay(_speed); setStep(0, 0, 1, 1); delay(_speed); setStep(0, 0, 1, 0); delay(_speed); setStep(0, 1, 1, 0); delay(_speed); setStep(0, 1, 0, 0); delay(_speed); setStep(1, 1, 0, 0); delay(_speed); setStep(1, 0, 0, 0); delay(_speed); setStep(1, 0, 0, 1); delay(_speed); } } } void setStep(int a, int b, int c, int d) { digitalWrite(Pin0, a); digitalWrite(Pin1, b); digitalWrite(Pin2, c); digitalWrite(Pin3, d); }
не знаю влияет ли
case
0x32C6FDF7 на код, ИК приемник,пульт,шаговик все работает
Для проверки двигателя и соединений выкиньте из кода все команды пульта, вставьте в Луп просто например Step(100) и посмотрите, будет ли крутится
А что за мотор? Его правда можно от ардуины питать?
Из базового комплекта ардуино, 28BYJ-48 с драйвером uln2003(если не ошибаюсь)
использую те же компоненты что на схеме, точь в точь
...драйвер шагового двигателя ничего не делает,не горит...
А питание на нем есть ? А выбор 5-12 правильно сделан ?
Может питания не хватае, может драйвер убитый, может соединения нет, может мотор дохлый.
Проверьте тестером или светодиодиками выход на пинах 8, 9, 10, 11. Если все нормально подайте сигнал на драйвер и проверьте выход с драйвера. Проверьте мотор.
Внешнего питания нет, питание через плату ардуино, 5,12 вольт подключены к макетной плате, также 5 вольт подключен к макетной плате, всё как в схеме
А более полно можно? какие интервалы между шагами? если 1 - то совсем мало. Попробуйте 50 или 100.
драйвер,мотор, пины, ик приемник, пульт, всё работает, все проверил, подключал через крон 9 вольт, без результата, как писали выше убрать все case , убрал, но не думаю что правильно написал
Без мотора огоньки бегают ?
по умолчанию вижу 1 мс на шаг ...
Попробуйте эту программу
удалил весь код и написал такой
двигатель работает но слабо
я до этого пробовал через кнопки и все такое, прикол в томя, простые коды без ничего работает хорошо, когда пишу код с пультом,кнопками, ничего
не работает(
я до этого пробовал через кнопки и все такое, прикол в томя, простые коды без ничего работает хорошо, когда пишу код с пультом,кнопками, ничего
Где программа с кнопками?
... прикол в томя, простые коды без ничего работает хорошо, когда пишу код с пультом,кнопками, ничего
А Вы коды своего пультика предварительно считывали? В скетче написаны правильные коды?