서보 모터는 전자 및 임베디드 시스템에 매우 유용합니다. 서보 모터는 장난감, 로봇, 컴퓨터의 CD 트레이, 자동차, 비행기 등에 사용되고 있습니다. 서보 모터는 매우 안정적이고 정확하기 때문입니다. 특정 각도로 회전 할 수 있습니다. 그들은 넓은 범위에서 사용할 수 있으며 고 토크 모터에서 저 토크 모터까지 형성됩니다. 이 튜토리얼에서는 서보 모터를 8051 마이크로 컨트롤러 (AT89S52) 에 인터페이스 할 것 입니다.
먼저 서보 모터 의 작동 원리 를 이해해야합니다. 서보 모터는 PWM (Pulse Width Modulation) 원리로 작동하며, 이는 회전 각도가 제어 PIN에 적용된 펄스의 지속 시간에 의해 제어됨을 의미합니다. 기본적으로 서보 모터는 가변 저항 (전위차계)과 일부 기어로 제어되는 DC 모터로 구성 됩니다. DC 모터의 고속 힘은 Gears에 의해 토크로 변환됩니다. WORK = FORCE X DISTANCE, DC 모터에서는 힘이 적고 거리 (속도)가 높고 서보에서는 힘이 높고 거리가 적다는 것을 알고 있습니다. 전위차계는 서보의 출력축에 연결되어 각도를 계산하고 필요한 각도에서 DC 모터를 정지시킵니다.
서보 모터는 0도에서 180도까지 회전 할 수 있지만 제조업체에 따라 210도까지 회전 할 수 있습니다. 이 회전 정도는 1ms에서 2ms 사이의 기간 동안 LOGIC 레벨 1 펄스를 적용하여 제어 할 수 있습니다. 1ms는 서보를 0도, 1.5ms는 90도, 2ms 펄스는 180도 회전 할 수 있습니다. 1 ~ 2ms 사이의 기간은 서보 모터를 0 ~ 180도 사이의 각도로 회전 할 수 있습니다.
회로도 및 작동 설명
서보 모터에는 Vcc (전원 공급) 용 빨간색, 접지 용 갈색, 제어 와이어 용 주황색이 3 개 있습니다. 제어 선은 8051에 연결할 수 있습니다. 우리는 8051의 핀 2.1에 연결했습니다. 이제이 핀을 로직 1에 1ms 동안 유지하여 0도, 1.5ms는 90도, 2ms는 180도 회전해야합니다. 지연을 생성하기 위해 8051의 칩 타이머를 사용했습니다. "servo_delay"함수를 통해 50us의 지연을 생성하고 "for"루프를 사용하여 50us의 배수로 지연을 생성했습니다.
Timer 0과 Mode 1을 사용하고 있으므로 TMOD 레지스터에 01H를 넣었습니다. 모드 1은 16 비트 타이머 모드이고 TH0에는 상위 바이트가 포함되고 TL0에는 16 비트 타이머의 하위 바이트가 포함됩니다. 16 비트 타이머 레지스터에 FFD2, TH0에 FF, TL0에 D2를 넣었습니다. FFD2를 넣으면 약의 지연이 발생합니다. 11.0592MHz의 크리스탈로 50 us. TR0 및 TF0은 TCON 레지스터의 비트이며, TR 핀은 설정시 타이머를 시작하고 리셋 (0)시 중지하는 데 사용됩니다. TF는 오버플로 플래그이며, 오버플로시 하드웨어에서 설정하고 소프트웨어로 재설정해야합니다. 기본적으로 TF는 타이머의 완료를 알려주며 16 개의 타이머가 FFFFH에서 0000H로 전환 될 때 하드웨어에 의해 설정됩니다. 50 us 지연을 생성하기 위해 타이머 레지스터의 값 계산을 이해하기 위해 "8051 타이머"에 대해 읽을 수 있습니다.
이제 CRO에서 측정 할 때 servo_delay 함수의 13 개 루프는 1ms의 지연을 제공하므로 1ms (13 개 루프)에서 시작하여 2ms (26 개 루프)로 이동하여 서보를 0도에서 180도까지 회전합니다. 그러나 우리는 지연을 1ms에서 천천히 증가 시켰고, 1ms에서 2ms 창을 1.14ms, 1.28ms, 1.42ms 등과 같은 7 개 부분으로 나누었으므로 서보는 약의 배수로 회전 할 것입니다. 26도 (180/7). 180도 이후에는 자동으로 0 도로 돌아갑니다.