11월 242013
 
DimmingLED.tar
Filename : dimmingled-tar.gz (126 KB)

오늘은 Lazarus를 이용하여 BBB의 PWM을 이용하는 방법을 테스트 해봤습니다.

휴.. 정말 BBB는 자료 찾기가 아주 수월하진 않네요.

기본적인 방법은 디바이스 트리를 이용하는 방법입니다. 아래 링크의 방법을 이용했습니다.

https://groups.google.com/forum/#!category-topic/beagleboard/beaglebone-black/wjbOVE6ItNg

LED를 P8_13 번 핀에 저항과 직렬연결을 합니다.

그리고, 아래의 방법으로 쉘 명령어를 입력합니다. (아래 명령행에 보이는 #는 번호가 시스템 마다 조금씩 다릅니다.)

$ echo am33xx_pwm > /sys/devices/bone_capemgr.#/slots

위의 명령어는 비글 본 케이브 메니저에 am33xx_pwm를 추가하도록 합니다. 그리고 나서 P8_13핀을 PWM 출력 핀으로 지정합니다. 물론 아무 핀이나 다 사용할 수 있는 것은 아닙니다. P8_13번 핀은 EHRPWM2B로 사용되고 있는 핀이거든요. 그래서 이 핀을 사용할 수 있습니다.

$ echo bone_pwm_P8_13 > /sys/devices/bone_capemgr.#/slots

위의 명령어를 실행하면 /sys/devices/ocp.#/ 디렉토리 아래 pwm_test_P8_13.# 라는 디렉토리가 생깁니다. (#는 각 시스템마다 번호가 다를 수 있습니다.) 그럼, pwm_test_P8_13.# 내에 있는 period와 duty라는 파일에 나노초로 값을 적어 넣으면 바로 P8_13번 핀으로 주어진 PWM 파형이 출력이 됩니다.

예를 들어, 50Hz에 50% duty 값을 갖는 파형을 만들고자 한다면, 아래와 같이 하면 됩니다.

$ echo 20000000 > /sys/devices/ocp.#/pwm_test_P8_13.#/period 

$ echo 10000000 > /sys/devices/ocp.#/pwm_test_P8_13.#/duty

자, 이제 기본 원리를 설명드렸으니, 이 방법 그대로 라자루스로 프로그램을 만들어봤습니다.

BBB-Lazarus-PWM

위의 우측에 보이는 조그마한 프로그램은 라자루스로 쓰여졌고, 슬라이드 콘트롤을 가지고, duty 값 1~100%까지 갖는 PWM 파형을 만들어내게 합니다.

아래의 동영상은 작성한 라자루스 GUI 프로그램으로 PWM 파형을 변화시켜 LED의 밝기를 조절하는 프로그램을 테스트 하는 동영상입니다.

이걸 이용하면, 뭐… 흔한 이용법으로 서보모터를 컨트롤할 수 있게 됩니다.

이번엔 라자루스의 완전한 프로젝트의 소스코드를 첨부했습니다. 🙂

 

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)