게시됨 2026-03-10
SG90을 갖고 계시군요.서보 기구손에 쥐고 움직이기를 원합니다. 프로그래밍 소프트웨어를 열고 빈 코드 상자를 마주할 수 있습니다. 마음이 엉망이신가요? 첫 번째 단계에서 무엇을 해야할지 모르겠는데 작성 중에 코드가 멈춘다구요? 사실 종이에 적힌 순서도나 마음속으로 먼저 순서도를 살펴보는 한, 코드를 작성하는 것은 레시피를 따르는 것만큼 쉽습니다.
SG90의 흐름도를 그리는 것은 실제로 그렇게 신비롭지는 않습니다. 직설적으로 말하면 프레임과 화살표를 사용하여 마음 속의 생각을 그리는 것을 의미합니다. 당신이 원한다고 상상해보십시오서보 기구왼쪽에서 오른쪽으로 그리고 다시 돌아갑니다. 흐름도의 첫 번째 단계는 항상 "시작"이고 그 다음에는 "초기화"가 옵니다. 이는 마이크로컨트롤러에 어떤 핀을 연결해야 하는지 알려주는 것입니다.서보 기구그리고 얼마나 빨라야 하는지. 다음 단계는 "서보를 90도 회전"하고 처리 상자를 그린 다음 "1초 대기"한 다음 "0도 회전" 처리 상자를 그리는 것입니다. 마지막으로 화살표를 사용하여 뒤로 이동하여 루프를 형성하거나 직접 "종료"합니다. 각 단계를 명확하게 작성하면 이 논리에 따라 코드가 번역됩니다.
프로그램을 작성했는데 서보가 전혀 움직이지 않습니다. 이것이 가장 실망스러운 일일 수 있습니다. 걱정하지 마십시오. 10번 중 9번은 흐름도에서 핵심 단계인 전원 공급 장치가 누락되어 있습니다. SG90은 작지만 모터이기도 하며 마이크로 컨트롤러의 전류로 구동할 수 없습니다. 흐름도에서 "초기화" 이후에 "외부 전원 공급 확인" 단계를 추가해야 합니다. ️해결책은 매우 간단합니다. 서보의 빨간색 선을 5V에 연결하고 갈색 선을 접지에 연결하고 노란색 선을 신호에 연결합니다. 그래도 작동하지 않으면 순서도에 올바른 PWM 웨이브가 설정되어 있는지 확인하세요. SG90은 일반적으로 50Hz의 주파수를 필요로 하며 이는 20ms의 주기이며 하이 레벨 시간은 0.5ms에서 2.5ms 사이입니다. 이러한 조건 중 어느 것도 흐름도에서 누락될 수 없습니다.
서보가 45도로 회전했는데 왜 60도로 이동합니까? 이는 아마도 순서도의 계산 논리에 문제가 있을 수 있습니다. 우리가 사용하는 SG90은 높은 레벨의 지속 시간을 변경하여 각도를 제어합니다. 더 정확한 접근 방식은 0도는 0.5ms, 180도는 2.5ms로 암기하지 않는 것입니다. 먼저 흐름도에서 "보정" 링크를 수행할 수 있습니다. 예를 들어 먼저 0.5ms 펄스를 보내고 실제 각도를 측정한 다음 2.5ms 펄스를 보내고 다시 측정합니다. 이 두 가지 실제 각도와 이론적인 값 사이를 선형 변환하고 이를 프로그램에 입력하면 원하는 위치에 도달할 수 있습니다. 실제 개인차가 흐름도에서 고려되지 않은 점에서 작은 오류가 많이 발생합니다.
드디어 회전이 시작됐는데 서보가 겨처럼 흔들리고 소리도 거칠었다. 문제는 일반적으로 프로세스 설계가 너무 "거친" 데 있습니다. 서보가 0도에서 180도까지 즉시 점프하도록 직접 하시겠습니까? 이것은 사람에게 자기 집 문에서 자기 공동체 문으로 순식간에 달려가라고 요청하는 것과 같습니다. 그는 분명히 몇 걸음 비틀거리게 될 것이다. 해결책은 흐름도에 "부드러운 전환"을 추가하는 것입니다. 예를 들어, 서보가 0도에서 90도로 회전하도록 하려면 이를 10단계로 나누고 매번 9도씩 회전하며 각 단계 사이에 10밀리초 지연을 추가할 수 있습니다. 흐름도에서는 이를 루프 구조로 반영합니다. 즉, 목표 각도를 설정하고, 현재 각도와 목표 각도의 차이를 계산하고, 차이가 1도보다 크면 다음 단계를 수행합니다. 이 디자인을 사용하면 스티어링 기어가 훨씬 더 부드럽게 움직입니다.
프로젝트에서 서보가 먼저 30도 회전하고 잠시 기다렸다가 120도 회전한 다음 다시 돌아가는 등 일련의 작업을 반복적으로 수행해야 하는 경우. 순서도에 긴 코드 목록을 작성하지 마십시오. 더 나은 접근 방식은 "상태 머신" 개념을 도입하는 것입니다. "상태 0"은 30도로 회전하는 것으로, "상태 1"은 1초 동안 기다리는 것으로, "상태 2"는 120도로 회전하는 것으로 정의할 수 있습니다. 메인 프로그램은 오직 한 가지 일만 합니다. 현재 어떤 상태에 있는지 확인하고, 그 상태에 해당하는 작업을 실행하고, 다음 상태가 무엇인지 결정합니다. 이 디자인을 사용하면 흐름도가 매우 명확해집니다. 액션을 추가하거나 수정하려면 전체 프로그램을 건드릴 필요 없이 상태와 점프 조건만 변경하면 됩니다.
하나의 마이크로 컨트롤러를 사용하여 여러 SG90을 제어하여 각자의 방식으로 움직일 수 있도록 하시겠습니까? 이때 흐름도의 디자인을 통해 귀하의 수준을 테스트하게 됩니다. 하나씩 제어하면 두 번째 서보가 움직이려고 할 때 첫 번째 서보가 멈추고 "동시에" 움직일 수 없다는 것을 알 수 있습니다. 비결은 특정 서보가 회전을 완료할 때까지 기다리는 흐름도에서 프로그램이 "멈추게" 하지 않는 것입니다. 시간이 지정된 인터럽트에서 차례로 각 서보의 PWM 신호를 새로 고칠 수 있습니다. 메인 루프에서는 각 서보의 다음 목표 각도를 계산하는 역할만 담당합니다. 교향곡의 지휘자와 마찬가지로 그는 스스로 연주할 필요가 없으며 단지 적절한 시간에 각 음악가에게 시작 신호를 주기만 하면 됩니다. 흐름도는 다음과 같이 설계되어야 합니다. 하나는 계산 및 의사 결정을 담당하고 다른 하나(인터럽트 서비스 루틴)는 정확한 실행을 담당합니다. 이러한 방식으로 10개 또는 8개의 서보를 성공적으로 사용할 수 있습니다.
스티어링 기어 프로젝트를 진행하면서 가장 어려운 문제는 무엇입니까? 댓글 영역에 오셔서 채팅해 보세요. 흐름도를 최적화하는 데 도움을 드릴 수 있습니다. 이 글이 도움이 되셨다면, 서보를 플레이하는 더 많은 친구들이 볼 수 있도록 좋아요와 공유도 잊지 마세요.
업데이트 시간:2026-03-10