PWM
pulse signal
There are multiple protocol how to interpret PWM signal itself.
DC Motor
- Direct Current
- Using PWM
Can
- Motor itself: voltage -> rotate -> power
-
Direction control with
H-Bridge(정방향, 반대 방향 모터 방향 2개)
Can't
- Angle control
- Stop with exact angle (angle 유지 못함)
PWM interpret
MCU (micro controller unit) can't send consecutive voltage (only turn on or turn off).
- averaged voltage + duty cycle 사용 = 연속적인 voltage 표현
-
duty cycle: 1주기 동안 ON 비율 - voltage가 연속적으로 표현 됨으로써, motor speed 조절가능
Servo Motor
e.g, MG996R, DSSERVO
Servo = DC motor + 기어 + 컨트롤러
Servo는 각도제어가 가능한 DC 모터, 단 jitter가 발생.
Servo는 pulse가 ON된 상태로 얼마나 유지되었는지의 width로 데이터를 읽는다.
|■■———|-------------------| (1.0 ms → 0도)
|■■■——|------------------| (1.5 ms → 90도)
|■■■■—|-------------------| (2.0 ms → 180도)
jitter란? "가만히 있어도 부르르 떨거나, ±1~2도 미세하게 흔들리는 현상"
jitter가 발생하는 이유?
1. PWM 신호 불안정
50hz(20ms) 주기마다 하나의 펄스(명령)을 받는데, 이 명령이 각도를 준다. 서보는 펄스폭 1.500ms를 받아야 90°에 간다고 치자. 그런데 MCU가
1.500ms → 1.505ms → 1.495ms → 1.505ms …
이렇게 조금씩 흔들리면 서보는, "어? 90도였다가 → 91도? → 89도?" 이렇게 오해해서 미세하게 계속 조정 = 떨림(jitter) 발생.
2. 전원 불안정
전류 부족 → 순간적으로 힘이 약해짐 → 다시 보정 → 떨림
Can
- Angle 변경
- Angle 유지
PWM Slice
https://pico.implrust.com/core-concepts/pwm/pwm-in-rp2350.html
The RP2350 has a PWM peripheral with 12 PWM generators called slices. Each slice contains two output channels (A and B), giving you a total of 24 PWM output channels.
RP2040, RP2350에는 PWM을 만들기 위한 전용 하드웨어 블록들이 있는데, 이 블록 하나를 PWM Slice라고 부른다.
Slice = 독립적인 PWM 엔진 하나, Channel은 같은 slice에서 tick을 공유하는 output 채널. 즉 RP2350은 24개의 PWM을 output할 수 있다.
Top comments (0)