• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czy to zadziała z silnikiem krokowym
#1
Witam

Chciałbym aby silnik krokowy podążał za kołem które osiągnie maksymalnie 5 obrotów na sekundę. Na kole zamontowany jest czujnik zbliżeniowy i tarcza z 20 wypustkami czyli maksymalnie Arduino będzie musiało tą sekwencję wykonać 100 razy na sekundę. Pytanie moje jest zasadnicze czy to jest wykonalne w tym czasie. Założenie jest takie że na każdy impuls z czujnika silnik ma wykonać 10 kroków. Program zaadoptowałem z silnika sterowanego przez enkoder.

Kod:
#define KROK 4
#define KIERUNEK 5
#define EN 6
#define ENK1 2
#define ENK2 3

void setup() {
 pinMode(KROK, OUTPUT);
 pinMode(KIERUNEK, OUTPUT);
 pinMode(EN, OUTPUT);
 pinMode(ENK1, INPUT_PULLUP);
 pinMode(ENK2, INPUT_PULLUP);
 attachInterrupt(digitalPinToInterrupt(ENK2), krocz, FALLING);
}

boolean krok = false;
boolean sleep = true;
unsigned long ostatni_krok;

void krocz()
{
 sleep = true;
 ostatni_krok = millis() + 1000;
 krok = true;
 if (digitalRead(ENK1))
   digitalWrite(KIERUNEK, LOW);
 else
   digitalWrite(KIERUNEK, HIGH);
}

void loop() {
 if(ostatni_krok < millis())
   sleep = false;
   
 digitalWrite(EN, sleep);
 
 if(krok)
 {
     digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
  delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
       delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
        delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
       delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
      delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
  delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
     delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
delay (1 / 10);
         digitalWrite(KROK, HIGH);
     digitalWrite(KROK, LOW);
  delay (1 / 10);
     
           
     krok = false;
 }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Czy to zadziała z silnikiem krokowym - przez tumnik2 - 21-06-2018, 12:32

Skocz do:


Przeglądający: 1 gości