Stránka 1 z 1

Krokový motor se nechce zastavit.

Napsal: 15 úno 2020, 13:37
od Pan Pomelo
Zdravím,
mám rozdělaný jeden projekt na ovladač tří krokových motorů, XYZ osy, +/- směry a ovládání rychlosti potenciometrem na platformě Arduino NANO. Ve finále má být ovladač k motorům připjojen přes desku http://www.cnc1.eu/sk/h5controller.htm, která bere signály STEP/DIR. Tu momentálně nemám po ruce, tak jsem to zkusil rozchodit aspoň na nějakém harampádí z číny, motor 28BY-J-48 a driver ULN2003APG.
program:

Kód: Vybrat vše

int Xplus = 2; //inputy pro tlačítka 
int Xmin = 3;

#include <AccelStepper.h> //outputy pro motory
#define HALFSTEP 8
//AccelStepper StepperX(AccelStepper::DRIVER ,9,10)
AccelStepper StepperX(HALFSTEP,9,10,11,12); 

#define SPEED_PIN_1 7 //analog pro rychlost 1x
#define MAX_SPEED  1500//nastavit (kroky/(?)
#define MIN_SPEED  0
;float current_speed_X = 0;
int analog_value  = 0;

void setup() {
  pinMode(Xplus, INPUT); pinMode(Xmin, INPUT);
  StepperX.setMaxSpeed(MAX_SPEED);
  StepperX.setAcceleration(1000); //donastavit
  }
void loop()
{ //pro X 
  analog_value=analogRead(SPEED_PIN_1);
  
  if (digitalRead(Xplus)==HIGH) 
  {
  current_speed_X = map(analog_value,0,1023,MAX_SPEED,MIN_SPEED);
  }
  else if (digitalRead(Xmin)==HIGH)
  {
  current_speed_X = (map(analog_value,0,1023,MAX_SPEED,MIN_SPEED))*-1;
  }
 else
    {
  current_speed_X = 0;
    }

  StepperX.setSpeed(current_speed_X);
  StepperX.runSpeed();
 
}
Podařilo se mi rozjet nastavení rychlosti a tlačítka pro směr, vechno jede krásně, až na ten problém, že motor se prostě nezastaví.
Po načtení programu nebo zapnutí napájení desky se motor začne otáčet v kladném směru a reaguje i na štelování rychosti potenciometrem. Po stisknutí tlačítka pro opačný směr se normálně rozjede do druhé strany.
část programu "else { current_speed_X = 0; }" by podle mých představ právě měla obstarat to zastavení se v případě, že nemačkám žádné tlačítko. Pokud do StepperX.setSpeed() dosadím za current_speed_X natvrdo 0, tak správně stojí.
Potřebuju aby motory jely jen když budu mačkat přísluné tlačítko. Budu rád za každou radu, pokud by to bylo tím ovladačem, budu se snažit co nejrychleji sehnatu desku.
Děkuji všem

Re: Krokový motor se nechce zastavit.

Napsal: 15 úno 2020, 15:39
od ondraN
Tlačítka připojuješ na GND, ale nemáš zapnuté pullup rezistory.

Kód: Vybrat vše

 pinMode(Xplus, INPUT_PULLUP); pinMode(Xmin, INPUT_PULLUP);

Re: Krokový motor se nechce zastavit.

Napsal: 15 úno 2020, 16:29
od Pan Pomelo
ondraN píše:
15 úno 2020, 15:39
Tlačítka připojuješ na GND, ale nemáš zapnuté pullup rezistory.

Kód: Vybrat vše

 pinMode(Xplus, INPUT_PULLUP); pinMode(Xmin, INPUT_PULLUP);
Tisiceré díky za navedení na správnou stopu. v programu jsem měl počítal s tím, že Xmin,Xplus == HIGH tak se motor pohybuje, ale tlačítko vlastně při stisknutí vrací LOW.
Děkuji