8강 / 20강

스테퍼 — 파이썬으로 하면 안 되는 일

펄스 폭은 1 µs, 문제는 지터다

스테퍼 — 파이썬으로 하면 안 되는 일
이 강의에서 파이썬이 진다고 말하는 유일한 자리입니다.

이 강의에서 파이썬으로는 안 된다고 말하는 유일한 자리입니다. 그런데 안 되는 이유가 여러분 짐작과 다를 수 있습니다.

펄스 폭은 문제가 아니다

드라이버STEP 최소 HIGH최소 LOW
A49881 µs1 µs
DRV88251.9 µs1.9 µs

1~2 마이크로초는 아무것도 아닙니다. 파이썬이 한 줄 실행하는 시간이 이미 그보다 깁니다. 문제는 폭이 아니라 간격입니다.

스텝 속도와 멈춤(지터)을 밀어 보세요. 놓친 스텝이 위치 오차로 어떻게 쌓이는지 보입니다.
불러오는 중…
평균이 아니라 최악을 봐야 합니다. 한 번의 멈춤이 조용히 위치를 옮깁니다.
Python 브라우저에서 실행

예전의 탈출구가 막혔다

옛날 강좌의 답은 pigpio 의 DMA 파형이었습니다. CPU 를 거치지 않고 하드웨어가 펄스를 뿌리니 지터가 없었습니다. 그런데—

pigpio
Pi 5 를 지원하지 않습니다. 그리고 마지막 배포가 2020년입니다. 인터넷 스테퍼 예제의 대부분이 이 위에 서 있습니다.
RP1 의 PIO
Pi 5 에는 PIO 하드웨어가 있습니다. 그런데 C 전용입니다 — 파이썬 바인딩이 없습니다.

즉 파이썬 층에서 하드웨어 타이밍 펄스를 만들 길이 지금은 없습니다.

구조를 바꾸면 지켜야 할 시간이 사라집니다. 이것이 이 강의가 권하는 길입니다.
Python 브라우저에서 실행
🤔 확인 문제
파이썬으로 스테퍼 펄스를 만들면 안 되는 까닭은?
🤔 확인 문제
Pi 5 에서 예전 스테퍼 강좌를 그대로 못 쓰는 까닭은?