게시됨 2026-02-13
이런 상황에 직면한 적이 있습니까?서보 기구큰 기쁨으로 그것을 움직이게 만들고 싶었지만 결과적으로 당신은 많은 코드를 작성했고서보 기구움직이지 않거나 경련처럼 흔들렸나요? 걱정하지 마세요. 아마도 제가 PWM(Pulse Width Modulation)을 이해하지 못하기 때문일 것입니다. 간단히 말해서, PWM은 스티어링 기어로 전송되는 특정 "신호"와 같습니다. 펄스의 폭을 변경함으로써 "이 각도로 회전" 또는 "저 각도로 회전"하라고 지시합니다. 이 기사에서는 이 "비밀 신호"를 철저히 이해하고 스티어링 기어를 순종적으로 만들 것입니다.
서보가 지정된 각도로 회전하도록 하려면 코어가 20ms 주기로 PWM 신호를 보낸 다음 하이 레벨의 지속 시간, 즉 펄스 폭을 조정해야 합니다. 일반적으로 1ms의 펄스는 -90°에 해당하고, 1.5ms는 0°에 해당하며, 2ms는 +90°에 해당합니다.
코드에서는 이러한 수십 마이크로초를 수동으로 계산할 필요가 없습니다. 대부분의 개발 보드에는 기성 라이브러리 기능이 있습니다. 예를 들어,Servo.h도서관, 당신은 단지.write(90), 그러면 자동으로 해당 펄스 폭을 계산하고 신호를 계속 출력하며 서보는 꾸준히 90°로 회전합니다.
지터는 확실히 초보자에게 가장 짜증나는 일입니다. 가장 가능성 있는 이유는 서보에 대한 전류 공급이 충분하지 않기 때문입니다. 서보는 회전할 때 상대적으로 큰 전류가 필요합니다. 개발 보드의 5V 핀을 직접 사용하여 전원을 공급하면 전압이 쉽게 불안정해져 신호 혼란이 발생하고 서보가 트 위치하기 시작합니다. 이때, 서보용 별도의 배터리 여러 개 등 외부 전원을 준비하고 전원의 접지선을 개발보드의 접지선에 연결하면 기본적으로 문제가 해결될 수 있습니다.
또 다른 일반적인 원인은 신호 라인의 간섭입니다. 연결 라인이 매우 길거나 근처에 모터 및 변압기와 같은 강력한 전기 장비가 있는 경우 간섭 신호가 섞이게 됩니다. 해결책은 가능한 한 짧은 듀폰 라인을 사용하거나 서보 신호 라인을 간섭 소스로부터 멀리 유지하는 것입니다.
서보 성능과 가장 관련이 있는 세 가지 PWM 매개변수는 주파수, 듀티 사이클, 분해능입니다. 서보에 필요한 PWM 주파수는 50Hz로 고정되어 있으며, 이는 20ms 주기이며 임의로 변경할 수 없습니다.
듀티 사이클은 전체 사이클에 대한 상위 수준 시간의 비율입니다. 예를 들어 2ms의 높은 수준에서는 듀티 사이클이 10%입니다. 이 비율을 변경하여 서보의 각도를 조정합니다. 해상도는 제어판이 사이클을 세분화할 수 있는 부품 수를 나타냅니다. 예를 들어 8비트 해상도는 256개 부분으로 나누어집니다. 해상도가 높을수록 프레임에서 프레임으로 점프하는 느낌 없이 서보 회전이 더 부드럽고 정확해집니다.
처음 코드 작성을 시작할 때 가장 흔히 범하는 실수는 초기화를 잊어버리는 것입니다. 나만 썼다.(9), 하지만 작성하는 것을 잊어버렸습니다.설정()기능이 없거나 핀번호가 잘못 기재되어 당연히 서보가 응답하지 않습니다. 코드를 확인하여 서보 객체가 실제로 연결한 핀에 올바르게 연결되었는지 확인하세요.
또 다른 함정은 시간 함수에 관한 것입니다. "먼저 90° 회전하고 2초간 기다린 다음 0° 회전"을 실현하려면 많은 것을 사용하지 마십시오.지연()~에~을 위한느린 회전을 달성하기 위해 루프를 반복합니다. 그렇지 않으면 전체 프로그램이 중단됩니다. 올바른 접근 방식은 다음을 사용하는 것입니다.()타이밍 기능 또는 사용.쓰다()각도 값을 점진적으로 증가시키는 비차단 방법을 사용하여 서보가 원활하게 전환하면서 다른 작업을 처리할 수 있도록 합니다.
로봇의 팔을 제작하고 동시에 여러 개의 서보를 제어해야 할 경우 핀을 하나씩 연결하면 되지만, 핀 리소스가 많이 소모되고 코드 작성도 매우 복잡해집니다. 더 나은 옵션은 이와 같은 서보 드라이버 보드를 사용하는 것입니다.
2개의 신호 라인(I2C 프로토콜)을 통해 최대 16개의 서보를 제어할 수 있으며, 각 채널의 펄스를 독립적으로 조정할 수 있습니다. 코드에서는 다음과 같은 해당 라이브러리 함수만 호출하면 됩니다.PWM.(0, 0, 300), 채널 0의 서보를 제어합니다. 이렇게 하면 메인 제어 보드가 자유로워지고 코드 구조가 훨씬 명확해지며 수십 개의 서보를 제어하기가 쉽습니다.
코드가 작성되면 코드가 올바른지 어떻게 빨리 알 수 있습니까? 가장 간단한 방법은 "스위핑 레그" 프로그램을 작성하는 것입니다. 서보를 천천히 0°에서 180°로 돌렸다가 다시 되돌리면 사이클이 계속됩니다. 회전하는 동안 지연이나 지터가 없고 각도 범위가 정확하다면 기본 하드웨어 연결과 코드 로직이 기본적으로 양호하다는 의미입니다.
️ 구체적인 단계는 매우 간단합니다.
1. 에서설정(), 서보를 지정된 핀에 연결하십시오.
2. 에서고리(), 먼저~을 위한루프를 사용하여 각도를 0에서 180까지 늘리고 매번 1도씩 늘리고 약간의 지연을 추가합니다.
3. 다른 것을 사용하세요~을 위한루프를 사용하여 각도를 180에서 다시 0으로 줄이고 지연을 추가합니다.
서보가 앞뒤로 원활하게 스윙하는 모습을 눈으로 직접 지켜보면 각도를 직접 고정하는 것보다 훨씬 성취감이 크며, PWM 제어의 본질을 이해하는 데도 도움이 됩니다.
이를 보면 PWM을 사용하여 서보를 제어하는 방법에 대한 좋은 아이디어가 있어야 합니다. 서둘러서 한번 시도해 보세요. 프로젝트에 서보를 사용하는 경우 가장 큰 골칫거리가 전원 공급 문제라고 생각하시나요? 아니면 다중 채널 제어 코딩 문제라고 생각하시나요? 댓글 영역에서 귀하의 의견을 공유하신 것을 환영합니다. 좋아요를 눌러 이 유용한 정보를 필요한 더 많은 친구들과 공유하는 것을 잊지 마세요!
업데이트 시간:2026-02-13