Skocz do zawartości

Silnik krokowy 28BYJ-48 5V i Raspberry Pi


blaskszminki

Pomocna odpowiedź

Cześć,

mam problem z uruchomieniem silnika. Potrafię sterować poszczególnymi sygnałami [IN1, IN2, IN3, IN4]

używam do tego: gpio -g write 26 1 - powoduję to, że zapalam diodę na sterowniku (IN1), analogicznie wyłączam diodę z parametrem 0.

Steruję każdym z czterech sygnałów. Od kilku dni próbuje wymusić ruch silnika niestety bezskutecznie, na arduino udało mi się bez problemu, korzystając z raspberry jest problem.

Znaczy to, że sterownik działa prawidłowo.

https://pastebin.com/UntU6jds?fbclid=IwAR2bkoNcrdWBQBUkKHIEcRQI6EM9BGySg_CN0L5XtzJ1tMVe9PNHDf9lf-4

powyżej link do kodu, którego używam na arduino.

Proszę o pomoc, ponieważ nie wiem co robię nie tak..

Poniżej kod, który próbuje odpalić na raspberry i za każdym razem zgłaszają mi się błędy.. za pomoc odwdzięczę się jakimś trunkiem, bądź przelewem na ten trunek..

#512 krokow to pelen obot
stepMotor_moves = 256;
#szybkosc zmiany magnesow w ms
stepMotor_delay = 5;
#tablica z pinami IN1, IN2, IN3, IN4
stepMotor_pins = [26, 19, 13, 6]


stepMotor_resetMagnets() {
  digitalWrite(stepMotor_pins[0], LOW);
  digitalWrite(stepMotor_pins[1], LOW);
  digitalWrite(stepMotor_pins[2], LOW);
  digitalWrite(stepMotor_pins[3], LOW);
}



stepMotor_moveForward() {
  stepMotor_resetMagnets(); # reset magnets before looping step motor
  for (int j = 0; j < stepMotor_moves; j++) {
    # Forward - power on magnets in 1, 2, 3, 4 config with delay every change
    for (int i = 0; i < 4; i++) {
      if (i == 0) {
        digitalWrite(stepMotor_pins[3], LOW);
        digitalWrite(stepMotor_pins[0], HIGH);
      } else if (i == 1) {
        digitalWrite(stepMotor_pins[0], LOW);
        digitalWrite(stepMotor_pins[1], HIGH);
      } else if (i == 2) {
        digitalWrite(stepMotor_pins[1], LOW);
        digitalWrite(stepMotor_pins[2], HIGH);
      } else if (i == 3) {
        digitalWrite(stepMotor_pins[2], LOW);
        digitalWrite(stepMotor_pins[3], HIGH);
      }
      delay(stepMotor_delay);
    }
  }
  stepMotor_resetMagnets(); # release magnets
}
 
stepMotor_moveBackward() {
  stepMotor_resetMagnets(); # reset magnets before looping step motor
  for (j = 0; j < stepMotor_moves; j++) {
     # Forward - power on magnets in 4, 3, 2, 1 config with delay every change
    for (i = 0; i < 4; i++) {
      if (i == 0) {
        digitalWrite(stepMotor_pins[0], LOW);
        digitalWrite(stepMotor_pins[3], HIGH);
      } else if (i == 1) {
        digitalWrite(stepMotor_pins[3], LOW);
        digitalWrite(stepMotor_pins[2], HIGH);
      } else if (i == 2) {
        digitalWrite(stepMotor_pins[2], LOW);
        digitalWrite(stepMotor_pins[1], HIGH);
      } else if (i == 3) {
        digitalWrite(stepMotor_pins[1], LOW);
        digitalWrite(stepMotor_pins[0], HIGH);
      }
      delay(stepMotor_delay);
    }
  }
  stepMotor_resetMagnets(); # release magnets
}

 

Link do komentarza
Share on other sites

9 godzin temu, blaskszminki napisał:

Poniżej kod, który próbuje odpalić na raspberry i za każdym razem zgłaszają mi się błędy..

To może pokaż log z błędami zamiast towarzystwo rozpijać..

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.