안녕하세요. 오늘은 스텝 모터를 제어하는 실습을 해보겠습니다. 제품 구매 ↓↓ 준비물 스텝 모터는 펄스 모양의 전압에 의해 일정 각도 회전하는 모터입니다. 회전 각도는 입력 펄스의 신호의 수에 비례하고 회전 속도는 입력 펄스 신호의 주파수에 비례합니다. 스텝 모터를 구동하려면 사용하려는 모터는 몇 상 모터인지 어떤 여자 방식을 이용하여 동작시킬 것인지를 고려해야 합니다. 모터를 구성하고 있는 권선 수에 따라 한 펄스 당 회전하는 회전각이 달라집니다. 키트에 들어있는 스텝 모터는 28bjy-48로 스텝 각은 5.625도입니다. 스텝 모터의 여자 방식 1. 싱글 코일 여자 방식 한 번에 하나씩 전류를 여가 하는 방식 4->3->2->1 (싱글 코일 타이밍 차트) 2. 풀스텝 구동 한 번에 두 개씩 전류를 여가 하는 방식 4,3->3,2->2,1->1,4 (풀 스텝 타이밍 차트) 3. 하프 스텝 구동 풀 스텝을 반으로 나누어 회전각을 더 작게 회전시키는 방식 4,3->3->3,2->2->2,1->1->1,4->4 (하프 스텝 타이밍 차트) 이렇게 다양한 방식이 있지만 오늘은 싱글 코일 여자 방식을 사용해서 스텝 모터를 제어해 보겠습니다. 회로 회로와 실제 부품에 차이가 있습니다. 모터 드라이버 뒷면의 핀 명을 잘 확인하고 연결해 주세요. 예제 코드 import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) StepPins = [8,9,10,11] #핀출력설정 for pin in StepPins: GPIO.setup(pin,GPIO.OUT) GPIO.output(pin,False) StepCounter = 0 // 스텝수세는 변수 # 싱글코일 여자방식 시퀀스 StepCount = 4 Seq = [[0,0,0,1], [0,0,1,0], [0,1,0,0], [1,0,0,0]] try: while1: // 무한반복 for pin inrange(0, 4): xpin = StepPins[pin] if Seq[StepCounter][pin]!=0: // Seq[][]가0이아니면 동작 GPIO.output(xpin, True) else: GPIO.output(xpin, False) StepCounter += 1 // 1 증가 # 시퀀스가끝나면다시시작 if (StepCounter==StepCount): StepCounter = 0 if (StepCounter<0): StepCounter = StepCount #다음동작 기다리기 time.sleep(0.01) except KeyboardInterrupt: //Ctrl+c => 종료 GPIO.clenup() 동작 시퀀스의 순서를 반대로 하면 반대로 회전합니다. 여러 가지 방식으로 스텝 모터를 제어해 보세요. 감사합니다.^^ |