Как определить положение ходового винта с помощью абсолютного энкодера?

Мне нужно контролировать положение шагового двигателя ходового винта с помощью абсолютного энкодера EMS22A? Я видел, как Джеймс Брутон делает это в своем видео. кто-нибудь может мне помочь?

Видео Джеймса Брутона: https://www.youtube.com/watch?v=ngazw18f6zw

редактировать: я определил «самое большое изменение», чтобы подсчитать количество произошедших циклов. Однако при быстром вращении программа не смогла обнаружить изменение.

void loop(){

unsigned long currentMillis = millis();
pos = encoder.ReadAngle();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    pos2 = encoder.ReadAngle();
    }
int change = pos2-pos;
if (change > 200){
  cycle--;
}
if (change < -200){
  cycle++;
}
if(change > 1){         
  motor.Forward();      
}
if(change < -1){
  motor.Reverse();
}
if(change <= 1 && change >= -1){
  motor.Stop();  
}
Serial.print(pos);
Serial.print(" ");
Serial.println(cycle);
}

, 👍-2

Обсуждение

Я предложил несколько общих советов, но вы получите ответы лучше и точнее, если сможете конкретно указать, какая помощь вам нужна, где вы застряли и т. д., @JRobert

В чем именно заключается ваша проблема при этом?, @chrisl

Какую библиотеку вы используете для кодировщика? Пожалуйста, дайте ссылку., @chrisl


1 ответ


3

Энкодер прикрепляется к валу двигателя (или другого устройства) и отправляет 10-битное положение вращения с точностью 0,35 градуса и заявленной точностью +/- 0,7 градуса. Приложение будет отслеживать количество оборотов, определяя, когда вал завершил оборот в любом направлении.

В приложении с ходовым винтом всегда будет небольшой люфт или "люфт". Ходовой винт и гайка не могут быть идеальными и должны иметь небольшой уклон (технический термин!), чтобы поддерживать низкое трение вращения. Это означает, что гайка будет иметь некоторый линейный люфт, оставляя большую неопределенность в линейном положении, даже если угловое положение ходового винта точно известно. В большинстве приложений это удается путем поворота ходового винта назад, за положение цели, а затем приближения к цели в прямом направлении. Положение ходового винта и гайки будет откалибровано для этого направления. Конечно, его можно откалибровать отдельно для каждого направления. Ключевым моментом является то, что гайка должна быть закручена «позади» (для определенного направления) цели больше, чем на известный линейный зазор, чтобы быть уверенным, что зазор будет полностью устранен во время приближения к цели.

,