2016년 10월 14일 금요일

서보모터제어

CYS-S8218 Digital Servo 를 구매했다.
작동전압 : 6V - 7.2V
0.18sec / 60a


6V : 0.2 sec / 60°at   [ 38kg / cm ]
7.2V : 0.18sec / 60°at  [ 40kg / cm ]


크기 : 59.5 * 29 * 55.2 (mm)



나는 전기 전자는 문외한이다.
그럼에도 불구하고 목표는 로봇을 만들어보는 것이라서, 무작정 두개를 구매했다.


근데 둘중 하나가 제대로 작동하지 않는다.
그리고 이런 작업에는 파이썬이 참 편하긴 한것 같다.
(결국 파이썬도 공부해야겠다...)


인터넷에 널려있는 소스를 그대로 갖다 써보니,
총 3개의 각도를 움직이는 중에, 한개 각도는 먹통이 돼서
수치를 약간 수정하니 제대로 되더라


180도 움직이는 값이 12.5로 되어 있는데, 해당 내역을 12로 수정하니 제대로 됐다.
아마 인터넷 뒤져보면 아래와 비슷한 소스가 나올 것이다.
소스는 아래와 같다.
(파이썬은 들여쓰기, 내어쓰기를 철저히 검증한다. 지키지 않을 경우 구문오류가 발생한다.)





import RPi.GPIO as GPIO
import time
pin = 17                    # PIN Number Setting
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
p = GPIO.PWM(pin,50)
p.start(7.5)
try:
        while True:
                print "90 degree"
                p.ChangeDutyCycle(7.5)          # 90 degree
                time.sleep(2)


                print "0 degree"
                p.ChangeDutyCycle(2.5)          # 0 degree
                time.sleep(2)


                print "180 degree"
                p.ChangeDutyCycle(12)           # 180 degree
                time.sleep(3)
except KeyboardInterrput:           # 키보드에서 Ctrl + C 를 누른경우.
        p.stop()
        GPIO.cleanup()

위 내용을 그대로 복사해서 붙여넣고, "xxxx.py"형태로 저장하고(파이썬의 확장자는 "py" 다)
아래와 같은 명령으로 실행하면 된다.
참고로 '#' 뒤에 써진 글들은 주석이다.

python xxxx.py

그러면 몇도를 움직일건지를 화면에 표시해주고, 모터가 움직인다.




2.5 / 7.5 / 12 에 대한 내용이다.






위와 같아서 아래와 같이 나온다고 하는데 나는 이해하지 못하겠다..








위의 사항을 적용하는 코드는 아래와 같다.

p.ChangeDutyCycle(dc)   # dc 부분에 위 숫자를 '%'제외하고 넣는다.



참고 : http://rpi.science.uoit.ca/lab/servo/

일단, 파이썬이 여기저기서 조사해보면 나오듯이 접근이 정말 쉽다.
다른 언어로 하는 것보다 많게는 두배 가까이 코딩의 양이 줄어드는 듯 하다.
깊이있게 공부해보지 않아서 아직은 그 이상은 모르겠다.


그리고 들여쓰기/내어쓰기가 철저히 검사되는 언어이다보니, 남의 소스를 들여다보더라도 참 쉽게 이해할수 있게 돼있다.
근데 나만 그런지 모르겠지만, 검색하다보면 이렇게 들여쓰기/내어쓰기가 중요한 언어의 소스를 공개하면서도 들여쓰기 내어쓰기를 뒤틀어놓은 것들이 많다.



이제 몇개의 센서와 거미로봇이 오면 더 많은것을 해보려고 한다.

댓글 없음:

댓글 쓰기


가장 많이 본 글