게시됨 2026-03-27
로봇 팔, 스마트 자동차, 멋진 로봇을 만들고 싶지만, 이렇게 당황스러운 경험을 해보셨나요?서보 기구항상 심하게 흔들리거나 회전 도중에 멈추나요? 실제로, 제어서보 기구생각보다 훨씬 간단합니다. 오늘은 이 강력한 '심장'과 작은 '근육'을 완벽하게 조화시키는 방법에 대해 이야기하겠습니다.서보 기구.
많은 친구들이 서보를 처음 사용하는데, 가장 큰 골칫거리는 서보의 진동입니다. 이는 일반적으로 서보가 고장났기 때문이 아니라 제어 신호가 불안정하기 때문입니다. 스티어링 기어는 20ms 주기의 PWM 파동에 의존하며, 여기서 하이 레벨 시간은 0~180도에 해당하는 0.5ms~2.5ms 사이에서 변합니다. 지연 기능 시뮬레이션을 사용하는 것보다 훨씬 안정적인 매우 정확한 PWM 파동을 출력할 수 있는 고급 타이머가 함께 제공됩니다. 서보에 전문 지휘자가 장착되어 있고 모든 비트가 안정적이라고 상상할 수 있습니다.
또 다른 일반적인 원인은 전원 공급 부족입니다. 서보의 순간 시동 전류는 1A 이상에 도달할 수 있습니다. 개발 보드의 3.3V에서 직접 전원을 공급받는 경우 전압이 떨어지면 신호가 엉망이 됩니다. ️ 올바른 접근 방식은 외부 독립 전원 공급 장치를 제공하고 개발 보드와 서보의 전원 공급 장치를 분리하고 접지만 공유하는 것입니다. 이는 집에서 고전력 가전제품 전용선을 사용하는 것과 같습니다. 그렇지 않으면 에어컨을 켤 때 전구가 두 번 깜박입니다.
타이머 리소스는 TIM1부터 TIM14까지 매우 풍부하지만 모두가 서보를 직접 제어하는 데 적합한 것은 아닙니다. 일반 앵글 서보의 경우 일반 타이머 TIM2, TIM3, TIM4 및 TIM5를 사용하면 충분합니다. 20ms 주기의 PWM을 쉽게 생성할 수 있습니다. 8개 이상의 서보를 동시에 제어하는 경우 고급 타이머 TIM1 또는 TIM8 사용을 고려해야 합니다. 보완적인 출력 및 제동 기능이 있으며 다중 채널 제어에 더 적합합니다.
선택하는 방법? 먼저 핀을 살펴보고 두 번째로 리소스를 살펴보세요. 타이머 출력 채널이 있는 핀에 서보 신호 라인을 연결합니다. 예를 들어 PA0은 TIM2의 채널 1이고 PB6은 TIM4의 채널 1입니다. 배선에 편리하고 다른 기능과 충돌하지 않는 핀을 찾기 위해서는 레퍼런스 매뉴얼의 핀 정의표를 열어 지도처럼 핀을 찾아보는 것이 좋습니다. 훌륭한 엔지니어의 배선은 올바른 핀을 선택하는 것부터 시작된다는 점을 기억하십시오.
실제로 PWM을 구성하는 세 단계가 있습니다. 즉, 클럭을 켜고, 매개변수를 설정하고, 출력 파형을 설정하는 것입니다. TIM2를 예로 들어, 주기를 20ms, 즉 50Hz로 하려면 자동 리로드 값 ARR을 2000으로 설정하고 프리스케일러 PSC를 839로 설정합니다. 이렇게 하면 타이머 클럭은 84MHz/(839+1)=이고 2000 펄스는 정확히 20ms입니다. 여기에 핵심이 있습니다. 듀티 사이클 제어 각도는 0도는 비교 값 CCR 50에 해당하고, 90도는 150, 180도는 250입니다. 이 계산 공식은 어렵지 않죠?
라이브러리 함수를 이용하여 전개하면 ()를 호출하자마자 파형이 나옵니다. 그러나 프로그램에서 서보의 회전을 제어하기 위해 지연을 사용하지 마십시오. CPU가 정지되고 서보가 정지될 수 있으므로 주의하십시오. ️ 올바른 접근 방식은 CCR 값을 변경하고 하드웨어가 엔진을 끄지 않고 기어를 변경하는 것처럼 부드럽고 매끄럽게 새로운 파형을 자동으로 출력하도록 하는 것입니다. 표준 라이브러리나 레지스터 작업을 사용하는 경우에도 원칙은 동일합니다. 이것을 완전히 이해한다면 다른 타이머에 대한 모든 것을 알게 될 것입니다.
하나의 서보를 제어하는 것은 간단하지만, 여러 개의 서보를 제어할 때 많은 사람들이 오해에 빠지게 됩니다. 타이머는 하나의 사이클만 사용할 수 있지만 여러 채널을 출력할 수 있습니다. 예를 들어 TIM2의 CH1, CH2, CH3, CH4는 동시에 서로 다른 듀티 사이클의 PWM을 출력할 수 있습니다. 이는 하나의 타이머가 서로 간섭하지 않고 4개의 서보를 구동할 수 있음을 의미합니다. 여러 서보가 동시에 서로 다른 자세를 취하도록 하려면 각 채널의 CCR 값을 개별적으로 설정하기만 하면 됩니다.
18개의 자유도를 가진 로봇을 만들려면 여러 개의 타이머가 함께 작동해야 합니다. 팔은 TIM2, 몸체는 TIM3, 다리는 TIM4와 같이 서보를 그룹으로 그룹화합니다. 각 타이머는 자체적으로 여러 개의 서보를 관리합니다. 이는 논리를 명확하게 할 뿐만 아니라 하나의 타이머에서 너무 많은 인터럽트가 발생하여 발생하는 혼란을 방지합니다. 마치 공장의 생산라인과 같습니다. 각 라인은 각자의 임무를 수행하므로 전체적인 효율성이 극대화됩니다.
많은 초보자들은 서보의 회전 속도를 제어하기 위해 메인 루프에 직접 작성하는 것을 좋아합니다. 결과적으로 서보가 회전하면 다른 버튼의 반응이 느려집니다. 실제로 "상태 머신"이라는 개념을 사용하면 부드러운 회전을 달성하는 것이 매우 간단합니다. 예를 들어 서보를 0도에서 90도까지 회전시키려면 CCR을 50에서 150으로 한꺼번에 변경하는 대신 짧은 시간마다 증가시키고 타이머 인터럽트 또는 인터럽트에서 단계를 수행해야 합니다. 이런 식으로 CPU는 다른 일로 바쁠 수 있고 서보는 고르게 움직일 수 있습니다.
DMA를 사용하여 지원할 수도 있습니다. 품목을 잡는 로봇 팔의 연속 동작과 같이 미리 정의된 일련의 동작 시퀀스가 있는 경우 이러한 CCR 값을 배열에 저장하고 DMA가 자동으로 타이머의 비교 레지스터로 이동하도록 할 수 있습니다. 이런 방식으로 CPU에 부하가 거의 없고 마이크로초 수준의 정밀한 서보 동작이 가능하다. 복잡해 보이지만 DMA 구성은 실제로 매우 간단합니다. 한번 사용해보시면 그 위력을 아실 겁니다.
프로그램이 아무리 완벽하게 작성되었더라도 하드웨어 문제로 인해 사람들이 쉽게 미치게 될 수 있습니다. 첫 번째 문제는 공통점 문제이다. 개발 보드의 GND와 서보 전원 공급 장치의 GND는 함께 연결되어야 합니다. 그렇지 않으면 제어 신호가 정지되고 서보가 움직이지 않거나 무작위로 회전하지 않게 됩니다. 많은 사람들이 멀티미터를 사용하여 전압을 정확하게 측정하지만 신호가 잘못되었습니다. 열에 아홉은 접지선이 제대로 연결되어 있지 않습니다. 둘째, 서보 신호 라인이 너무 길면 간섭을 받기 쉽습니다. 연선이나 소형 100옴 저항을 직렬로 사용하는 것이 가장 좋습니다.
또 다른 아티팩트는 로직 분석기입니다. 수십달러짜리 작은 장치를 신호선에 끼우기만 하면 PWM 파형이 맞는지, 하이레벨 시간이 원하는지 눈으로 직접 확인할 수 있다. 블라인드 디버깅과 비교할 때 이러한 종류의 시각적 디버깅은 코드 문제인지 하드웨어 문제인지 빠르게 찾는 데 도움이 됩니다. 걱정하지 마세요. 10분만 시간을 내어 확인해 보세요. 추측하는 시간을 절약할 수 있습니다.
이 글을 읽고 나면 스티어링 기어를 제어하는 것이 실제로 꽤 체계적이라는 생각이 드시나요? 다음에 로봇 프로젝트를 개발할 때는 오늘 우리가 이야기한 전원 공급 장치부터 타이머 선택까지, 단일 서보부터 다중 채널 연결까지 모든 단계가 중요하다는 점을 생각해 보는 것이 좋습니다. 이 기술을 사용하여 어떤 흥미로운 작품을 만들 계획인가요? 생체공학적 손인가, 다리가 6개 달린 로봇인가, 아니면 전방향 자동차인가? 댓글 영역에서 창의력을 공유하신 것을 환영합니다. 더 많은 파트너가 서보 제어를 즐길 수 있도록 좋아요와 저장을 잊지 마세요!
업데이트 시간:2026-03-27