산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

내 서보 보정

구성품 및 소모품

Arduino UNO
× 1
Adafruit PWM 서보 드라이버 실드
× 1
M3 볼트
× 8
M3 와셔
× 8
LM2596 DC-DC 스텝 다운 전압 컨버터
× 1
레드 PLA
× 1
화이트 PLA
× 1
180도 명확한 수학 각도기
× 1
회전 전위차계(일반)
× 1
9g 서보 모터
× 1

필요한 도구 및 기계

3D 프린터(일반)

앱 및 온라인 서비스

Arduino IDE
오토데스크 퓨전 360

이 프로젝트 정보

Hackster의 이전 게시물에서 동일한 배치의 다른 서보가 어떻게 회전하는지 비교하기 위해 리그를 만든 방법에 대해 썼고 동일한 PWM 신호를 다른 서보에 전송하면 상당한 차이가 발생한다는 것을 보여주었습니다. 아래 그림은 서보를 보여줍니다. 가장 먼 시계 반대 방향 위치에서 시작하여 동일한 PWM 신호를 보냈습니다. 모두 약간 다른 동작을 합니다.

Arduino에 기존 서보 라이브러리를 사용하지 않는 이유는 무엇입니까?

나는 Adafruit PWM Servo Driver를 사용하여 많은 서보를 구동하고 이를 통해 각 서보에 다른 PWM 신호를 보낼 수 있습니다. 내 Arduino 설치에 내장된 Servo 라이브러리를 사용할 수 있지만 이렇게 하지 않는 데에는 몇 가지 이유가 있습니다.

<울>
  • Adafruit PWM 서보 드라이버를 사용하면 Arduino의 모든 서보에 전용 핀을 사용하는 대신 I2C를 통해 2개의 핀만 사용하여 서보를 제어할 수 있습니다.
  • <울>
  • 아두이노 서보 라이브러리에서 서보에 연결하고 서보가 0도 위치로 회전하도록 신호를 보낼 때 이동 한계까지 회전하고 서보 내부의 기어를 갈아내는 것을 가끔 발견했습니다.

    물론 내가 사용하고 있는 9g 서보는 저렴하고 정확성을 위해 설계되지 않았습니다. 그러나 나는 그것들로부터 더 많은 가치를 짜낼 수 있다고 생각합니다. 보행 로봇에 사용하고 싶고 행동이 좀 더 정확하고 예측 가능해야 합니다.

    취미용 서보를 더 정확하게 제어하려면 어떻게 해야 하나요?

    내 서보가 모두 약간 다르게 동작한다는 것을 확인하면서 서보를 보정할 수 있는 장치를 만들고 싶었습니다. 서보를 0도 위치로 이동하려면 어떤 PWM 값이 필요합니까? 아니면 90도 중심점입니까? 크런치 및 기어 연삭이 많은 극단적인 위치에 서보를 스냅하는 PWM 값을 보내는 것을 어떻게 피합니까?

    몇 가지 간단한 개념을 결합하기로 결정했습니다.

    <울>
  • 서보를 간단한 각도기의 중심에 맞춰 서보의 와이퍼가 회전할 때 위치를 측정할 수 있습니다.
  • <울>
  • 포텐셔미터를 Arduino의 아날로그 입력에 연결하면 포텐셔미터 샤프트의 위치를 ​​조정하면서 PWM 값을 조정하여 서보 와이퍼의 위치를 ​​제어할 수 있습니다.
  • 이 버전의 경우 Arduino IDE의 직렬 모니터를 사용하여 수동으로 기록할 수 있는 PWM 신호의 값을 알려줘서 기뻤습니다.

    저는 Autodesk 123D를 사용하여 전위차계, 각도기, 단일 서보, Arduino 및 Adafruit PWM 서보 드라이버를 전원 공급 장치와 함께 고정할 수 있는 간단한 장비를 설계했습니다.

    최종 프로젝트에서 사용할 가능성이 높은 보정을 위해 Adafruit PWM 서보 드라이버를 계속 사용하고 싶습니다. Arduino의 핀에서 직접 서보를 제어하려면 장치에서 이를 복제하고 Arduino의 PWM에 대해 서보를 보정합니다.

    기기 제작

    각각의 부품을 출력해서 M3볼트와 와셔를 이용해서 붙였습니다.

    내 장치 디자인의 장착 구멍은 구성 요소에 맞게 조정됩니다. 구성 요소마다 구멍 직경과 위치가 다를 수 있습니다.

    전자 제품의 경우 전위차계의 중앙 핀을 Arduino의 A0 핀에 연결하고 다른 핀을 Arduino의 0v 및 5v에 연결했습니다. PWM 서보 모터 드라이버를 Arduino에 연결한 다음 DC-DC 벅 컨버터를 연결했습니다(9v 전원 공급 장치 입력을 5v 출력으로 변환하도록 조정했습니다). 9g 서보를 서보 모터 드라이버 쉴드의 첫 번째 슬롯에 연결한 다음 스케치를 Arduino에 업로드했습니다.

    최종 결과는 아래 사진에 나와 있습니다. 장치의 왼쪽 상단에 있는 손잡이를 돌려서 서보의 위치를 ​​제어할 수 있고 Arduino IDE의 직렬 모니터를 사용하여 주어진 각도에서 서보 모터로 전송되는 PWM 신호를 읽을 수 있습니다.

    그러면 기기는 무엇을 알려줍니까?

    내 서보의 경우 시계 방향으로 가장 멀리 회전하고 와이퍼를 서보에 배치하여 교정 장치 각도기의 180도 표시 바로 너머에 위치하도록 했습니다.

    장치에 전원을 연결한 다음 서보 바늘이 각도기의 0도 표시와 정렬될 때까지 전위차계 손잡이를 돌리고 내 Arduino IDE의 직렬 출력에 작성된 PWM 값을 기록했습니다. 그런 다음 서보 바늘이 10도를 가리킬 때까지 전위차계를 회전하고 PWM 값을 다시 기록했습니다. 180도에 도달할 때까지 10도마다 이 과정을 계속했고 결과를 아래 표에 공유했습니다.

    결과 그래프를 만들었습니다(아래 참조). 예상대로 PWM과 서보 각도 사이에는 강한 선형 관계가 있음이 분명합니다.

    이제 이 특정 서보의 특성인 PWM 및 각도 값을 얻었습니다. 다른 서보도 유사한 특성을 가질 수 있지만 동일하지는 않습니다.

    보다 정확한 서보 성능을 위한 몇 가지 옵션이 있습니다.

    <울>
  • 이 값 쌍을 기록하고 내 Arduino 스케치의 배열에 유지하고 서보 와이퍼를 90도(예:)로 이동하려는 경우 이 각도와 관련된 PWM 값을 참조하고 해당 PWM 값을 보내십시오. 서보에게. 이것은 10의 배수인 각도로만 회전할 수 있다는 단점이 있습니다.
  • <울>
  • 또는 내가 보내는 각도를 완벽하게 제어하려면 데이터 세트에 선형 회귀를 사용하여 각도와 PWM 값(이 서보의 경우 PWM =2.35 * 각도 + 159.4)과 관련된 공식을 알아낼 수 있습니다. 이렇게 하면 회전하려는 각도를 매개변수로 전달하고 이 특정 서보를 해당 위치로 회전하는 데 필요한 PWM을 프로그래밍 방식으로 계산할 수 있습니다.
  • 어느 쪽이든, 나는 이전보다 더 정확하고 자신있게 이 서보를 제어할 수 있습니다. 각 서보를 정밀하게 보정하려면 꽤 많은 노력이 필요하지만 제 프로젝트에서는 추가 정확도를 위해 그만한 가치가 있습니다.

    물론 장치에서 서보를 제거할 때 서보 와이퍼를 부착한 상태로 유지합니다. 측정은 보정되는 동안 와이퍼가 부착된 방식과 관련이 있기 때문입니다.

    다음 버전의 개선 사항

    몇 개의 서보를 보정한 후 다음 버전에 구축할 몇 가지 개선 사항을 생각했습니다.

    <울>
  • 서보에는 퀵 릴리스 메커니즘이 있어야 합니다. M3 볼트로 고정하는 대신 네오디뮴 자석이 있는 클립을 사용하여 서보를 제자리에 고정할 수 있습니다.
  • <울>
  • 이것을 더 작게 만들고 싶습니다. 아마도 이것을 달성하기 위해 Arduino와 전원 공급 장치의 방향을 바꿀 수 있을 것입니다.
  • <울>
  • 9v 배터리와 벅 컨버터 사이에 전원 스위치가 필요하므로 기기를 끄고 싶을 때마다 배터리를 완전히 분리할 필요가 없습니다.
  • <울>
  • 리그를 더 적은 수로 인쇄할 수 있기를 바랍니다.
  • <울>
  • 각도기에서 값을 수동으로 읽는 대신 센서가 서보가 특정 각도 위치에 있을 때 감지하고 이를 Arduino에 피드백할 수 있다면 더 좋을 것입니다. 이렇게 하면 일부 시차 오류를 제거할 수 있습니다.
  • <울>
  • 마지막으로 결과를 표시하는 LCD 디스플레이가 큰 도움이 될 것입니다. 컴퓨터를 기기에 연결할 필요가 없기 때문입니다.
  • 마무리

    그게 다야 - 내 취미 서보는 저렴하고 정확성을 위해 설계되지 않았습니다 - 많은 응용 분야에서 완벽하게 괜찮습니다. 그러나 저는 제 것에서 좀 더 정확하고 반복 가능한 성능을 얻고 싶습니다. 이 게시물의 장비는 이를 달성하는 데 도움이 됩니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 서보 교정 장치 스케치
  • 서보 교정 장치용 스케치C/C++
    #include #define analogIn A0Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver();int inputValue =0;int tmpPwmValue =0;void setup() { Serial.begin(9600); pwm.begin(); pwm.setPWMfreq(60);} 무효 루프() { inputValue =analogRead(analogIn); // inputValue는 0과 1024 사이입니다. // 관찰에 따르면, 서보 최소 및 최대 PWM 값은 일반적으로 100과 612 사이입니다. // 아래 공식을 사용하면 아날로그 입력을 PWM으로 간단히 변환할 수 있습니다. int pwmValue =(int)(100 + ( 입력값 / 2)); pwm.setPWM(0, 0, pwm값); // 중복 데이터를 불필요하게 표시하고 있지 않은지 확인합니다. if (pwmValue !=tmpPwmValue) { Serial.print("Potentiometer Input ="); Serial.print(입력값); Serial.print(", PWM ="); Serial.println(pwm값); } tmpPwm값 =pwm값; 지연(15);}

    맞춤형 부품 및 인클로저

    서보 캘리브레이터 부품 리포지토리
    https://github.com/jeremylindsayni/ServoCalibrator

    제조공정

    1. PLA 3D 인쇄:알아야 할 모든 것
    2. 라즈베리 파이로 팬/틸트 얼굴 추적
    3. PLA 대 ABS 대 나일론
    4. Walbi, 걷는 두족보
    5. Arduino IoT 로봇 팔
    6. PLA 대 ABS를 사용한 3D 프린팅:차이점은 무엇입니까?
    7. AC 서보의 교체용 DC 드라이브
    8. PLA는 재활용 가능합니까 아니면 생분해 성입니까?
    9. PLA는 물에 용해되고 분해됩니까?
    10. PLA 필라멘트는 전도성입니까(필라멘트가 전도성입니까)?