Skocz do zawartości

ESP32 enkoder kwadraturowy


Bazuka1988

Pomocna odpowiedź

Witam, mam problem z implementacją kodu, który by obsługiwał enkodery kwadraturowe na esp32. Ktoś orientuje się w temacie jak to zrobić na przerwaniach? Potrzebuje odczytywać tylko impulsy. Na tych silnikach mam 1920 na obrót. Na arduino bardzo ładnie smigalo. Ma ktoś jakis pomysl?? Na google jest troche bibliotek, ale nie ogarniam tego jak to zaimplementowac.

To kod z arduino, dzialal super.  Wziety ze strony https://wiki.dfrobot.com/Micro_DC_Motor_with_Encoder-SJ01_SKU__FIT0450
Jak w linku takie same silniki i enkodery posiadam.

//The sample code for driving one way motor encoder
const byte encoder0pinA = 2;//A pin -> the interrupt pin 0
const byte encoder0pinB = 3;//B pin -> the digital pin 3
byte encoder0PinALast;
int duration;//the number of the pulses
boolean Direction;//the rotation direction


void setup()
{
  Serial.begin(57600);//Initialize the serial port
  EncoderInit();//Initialize the module
}

void loop()
{
  Serial.print("Pulse:");
  Serial.println(duration);
  duration = 0;
  delay(100);
}

void EncoderInit()
{
  Direction = true;//default -> Forward
  pinMode(encoder0pinB,INPUT);
  attachInterrupt(0, wheelSpeed, CHANGE);
}

void wheelSpeed()
{
  int Lstate = digitalRead(encoder0pinA);
  if((encoder0PinALast == LOW) && Lstate==HIGH)
  {
    int val = digitalRead(encoder0pinB);
    if(val == LOW && Direction)
    {
      Direction = false; //Reverse
    }
    else if(val == HIGH && !Direction)
    {
      Direction = true;  //Forward
    }
  }
  encoder0PinALast = Lstate;

  if(!Direction)  duration++;
  else  duration--;
}

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

@ethanak znalazłem, zainstalowałem, działa!!! mam jeszcze jedną prośbę, da się wyłączyć PAUSE ? Robot ma jeździć cały czas i potrzebuję aby enkodery cały czas chodziły.

11111.jpg

@ethanak masakra...juz nie mysle...wyrzucilem ifa z petli i jest ok. Ciekawe czemu jeszcze startuje  na jednym enkoderze od 37 impulsow

To jest tylko przykład, fajna opcja. Moze bedzie mozna to wykorzystac przy starcie robota gdzie silniki startuja pokolei a nie oba naraz.

Ok, zostało podłączyć czujniki ultradzwiekowe. Mysle ze nie bedzie problemow ze starym kodem.

Edytowano przez Bazuka1988
Link do komentarza
Share on other sites

8 godzin temu, Bazuka1988 napisał:

zostało podłączyć czujniki ultradzwiekowe. Mysle ze nie bedzie problemow ze starym kodem.

Nie byłbym tego taki pewien. Jeśli znów spróbujesz AVR-owych tricków to wątpię czy to ruszy. Niestety - ESP32 to nie jest taki "bardzo duży AVR" tylko coś zupełnie innego, a dorobiona możliwość programowania przy użyciu Arduino IDE nie sprawi w jakiś magiczny sposób, że sprzęt się stanie kompatybilny z Arduino.

Nie używałem ultradźwięku z ESP32, ale do pomiaru długości impulsu czy też pomiaru odstępu czasu między zdarzeniami służy w ESP oddzielny podsystem (RMT). Poczytaj sobie w dokumentacji co to za zwierz: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/rmt.html

A tu masz przykład wykorzystania: https://esp32.com/viewtopic.php?f=17&t=5787

Sam nie używałem ultradźwięku z ESP32, więc dalej nie pytaj.

 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.