50Hz PWM Target Position vs. External Supply Voltage Transit Speed
⚡ Core Principle: The RP2040 (GP16) sends only the target angle ($0^\circ \rightarrow 180^\circ$) via PWM pulse-width ($0.5\text{ms} \rightarrow 2.5\text{ms}$). The External Voltage ($V_S$) powers the internal motor, dictating the maximum physical movement speed ($\text{sec}/60^\circ$)!
Target Angle (RP2040):0°
Physical Horn Angle:0.0°
Transit Time (0° → 90°):0.150 seconds (150 ms)
Pulse Width (GP16):0.50 ms (1638 duty_u16)
GP16 PWM: 50Hz ACTIVE
🧮 Hardware Specs & Live Calculations
1. Datasheet Transit Speed Rating:
• Rating @ 6.0V = 0.10 sec / 60°
2. Travel Time Calculation (0° → 90°):
• Time = (90° / 60°) × 0.10s = 0.150 sec (150 ms)
🐍 MicroPython Signal Code
from machine import Pin, PWM
import utime
# RP2040 sends target position PWM
servo = PWM(Pin(16), freq=50)
defset_target_angle(deg):
pulse_ms = 0.5 + (deg / 180.0) * 2.0
duty = int((pulse_ms / 20.0) * 65535)
servo.duty_u16(duty)
# Request angle move to RP2040
set_target_angle(0)
# Sleep at least 150 ms for physical movement!
utime.sleep_ms(150)
📝 Concept Check Quiz
Why must a MicroPython program include a sleep delay (e.g. utime.sleep_ms(150)) immediately after setting a new servo target angle?