8강 / 20강
스테퍼 — 파이썬으로 하면 안 되는 일
펄스 폭은 1 µs, 문제는 지터다
이 강의에서 파이썬으로는 안 된다고 말하는 유일한 자리입니다. 그런데 안 되는 이유가 여러분 짐작과 다를 수 있습니다.
펄스 폭은 문제가 아니다
| 드라이버 | STEP 최소 HIGH | 최소 LOW |
|---|---|---|
| A4988 | 1 µs | 1 µs |
| DRV8825 | 1.9 µs | 1.9 µs |
1~2 마이크로초는 아무것도 아닙니다. 파이썬이 한 줄 실행하는 시간이 이미 그보다 깁니다. 문제는 폭이 아니라 간격입니다.
평균이 아니라 최악을 봐야 합니다. 한 번의 멈춤이 조용히 위치를 옮깁니다.
Python
브라우저에서 실행
예전의 탈출구가 막혔다
옛날 강좌의 답은 pigpio 의 DMA 파형이었습니다. CPU 를 거치지 않고
하드웨어가 펄스를 뿌리니 지터가 없었습니다. 그런데—
pigpio
Pi 5 를 지원하지 않습니다. 그리고 마지막 배포가 2020년입니다.
인터넷 스테퍼 예제의 대부분이 이 위에 서 있습니다.
RP1 의 PIO
Pi 5 에는 PIO 하드웨어가 있습니다. 그런데 C 전용입니다 —
파이썬 바인딩이 없습니다.
즉 파이썬 층에서 하드웨어 타이밍 펄스를 만들 길이 지금은 없습니다.
구조를 바꾸면 지켜야 할 시간이 사라집니다. 이것이 이 강의가 권하는 길입니다.
Python
브라우저에서 실행
🤔 확인 문제
파이썬으로 스테퍼 펄스를 만들면 안 되는 까닭은?
해설 펄스 폭은 문제가 아닙니다(1~2 µs 는 쉽습니다). 간격이 문제이고, 더 나쁜 것은 놓친 스텝이 조용히 누적된다는 점입니다.
🤔 확인 문제
Pi 5 에서 예전 스테퍼 강좌를 그대로 못 쓰는 까닭은?
해설 인터넷 예제 대부분이
pigpio 의 DMA 파형 위에 서 있습니다. 그 길이 Pi 5 에서 막혔고, PIO 는 C 전용이라 파이썬 대안이 없습니다.