Heim  >  Artikel  >  Web-Frontend  >  Verschiedene Möglichkeiten, die absolute Positionierung von Encodern zu verstehen

Verschiedene Möglichkeiten, die absolute Positionierung von Encodern zu verstehen

王林
王林Original
2024-01-18 09:50:07532Durchsuche

Verschiedene Möglichkeiten, die absolute Positionierung von Encodern zu verstehen

Ein Encoder ist ein häufig verwendeter Positionssensor, mit dem die Verschiebung von Rotation und linearer Bewegung gemessen und in ein digitales Signal umgewandelt werden kann. Die absolute Positionierungsfunktion des Encoders ermöglicht es uns, die Position des Objekts genau zu kennen, sodass er in vielen Bereichen wie Robotern, Automobilen, medizinischen Instrumenten usw. weit verbreitet ist.

Es gibt viele Möglichkeiten, die absolute Positionierung von Encodern zu verstehen. Die gebräuchlichsten sind die folgenden:

  1. Binäre Kodierungsmethode

Die binäre Kodierungsmethode ist eine Möglichkeit, physische Bewegung in digitale Signale umzuwandeln. Der Encoder erkennt über einen Positionssensor, ob sich das Objekt bewegt, und ändert den von ihm ausgegebenen digitalen Code basierend auf der Position der Objektbewegung. Jeder digitale Code entspricht einem eindeutigen physischen Standort, sodass wir den Standort des Objekts bestimmen können, indem wir die Ausgabe des Encoders lesen.

Hier ist ein Beispielcode für einen mit Arduino implementierten Binär-Encoder:

const int encoderPinA = 2;
const int encoderPinB = 3;
volatile int encoderPos = 0;
volatile bool aSet = false;
volatile bool bSet = false;

void setup() {
  pinMode(encoderPinA, INPUT);
  pinMode(encoderPinB, INPUT);
  attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoderA, CHANGE);
  attachInterrupt(digitalPinToInterrupt(encoderPinB), updateEncoderB, CHANGE);
}

void loop() {
  // 读取编码器当前位置
  int newPos = encoderPos;
  Serial.println(newPos);
}

void updateEncoderA() {
  aSet = digitalRead(encoderPinA);
  if (aSet && !bSet) {
    encoderPos++;
  } else if (!aSet && bSet) {
    encoderPos--;
  }
  bSet = digitalRead(encoderPinB);
}

void updateEncoderB() {
  bSet = digitalRead(encoderPinB);
  if (bSet && !aSet) {
    encoderPos--;
  } else if (!bSet && aSet) {
    encoderPos++;
  }
  aSet = digitalRead(encoderPinA);
}
  1. Gray-Code-Kodierungsmethode

Gray-Code ist eine Variante der Binärkodierung. Ihr Vorteil besteht darin, dass nur eine Positionsänderung zu einem Kodierungsbit führt Änderungen. Die Ausgabe eines Gray-Code-Encoders ähnelt der eines Binär-Encoders, die Kodierung muss jedoch in eine binäre Darstellung konvertiert werden, bevor sie dekodiert werden kann. Dies kann durch Nachschlagen einer Konvertierungstabelle oder durch die Verwendung eines bestimmten Decoder-Chips zur automatischen Konvertierung erfolgen. 🔜 Pulssignal. Jede Impulsbreite entspricht einer Position, sodass wir die Position durch Ablesen der Impulsbreite bestimmen können.

Das Folgende ist ein Beispielcode für einen PWM-Encoder, der mit dem PWM-Modul von ESP32 implementiert wurde:

const int encoderPinClock = 4;
const int encoderPinData = 5;
const int encoderPinLatch = 6;

unsigned int encoderValue = 0;

void setup() {
  pinMode(encoderPinClock, OUTPUT);
  pinMode(encoderPinData, OUTPUT);
  pinMode(encoderPinLatch, OUTPUT);
}

void loop() {
  // 读取编码器当前位置
  unsigned int newPos = 0;
  for (int i = 0; i < 16; i++) {
    digitalWrite(encoderPinLatch, LOW);
    shiftOut(encoderPinData, encoderPinClock, MSBFIRST, 1 << i);
    digitalWrite(encoderPinLatch, HIGH);
    delayMicroseconds(10);
    newPos |= digitalRead(encoderPinData) << i;
  }
  encoderValue = newPos;
  Serial.println(encoderValue);
}
    Zusammenfassung
  1. Das Obige sind Codebeispiele für drei gängige absolute Encoder-Positionierungsmethoden. Wenn wir verstehen, wie ein Encoder funktioniert, können wir besser verstehen, wie wir ihn einsetzen, um eine präzise Positionierung zu erreichen und so die Produktionseffizienz und -qualität in Bereichen wie Robotik, Automobilen und medizinischen Instrumenten zu verbessern.

Das obige ist der detaillierte Inhalt vonVerschiedene Möglichkeiten, die absolute Positionierung von Encodern zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn