글
7.wiringPi를 이용한 PWM 실험.
●프로젝트와 세미나/Raspberry pi
2013. 8. 17. 14:40
지금 주기와 듀티비를 알아내는 것이 관건인데...
1
2 #include <stdio.h>
3 #include <errno.h>
4 #include <string.h>
5
6 #include <wiringPi.h>
7 #include <softPwm.h>
8
9 #define RANGE 500 //이렇게 하면 주기가 50ms이다.
10 #define NUM_LEDS 12
11
12 int ledMap [NUM_LEDS] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13 } ;
13
14 int values [NUM_LEDS] = { 0, 17, 32, 50, 67, 85, 100, 85, 67, 50, 32, 17 } ; //이건 듀티비!!!
15
16 int main ()
17 {
18 int i ;
19 char buf [80] ; // buffer
20
21 if (wiringPiSetup () == -1)
22 {
23 fprintf (stdout, "oops: %s\n", strerror (errno)) ;
24 return 1 ;
25 }
26
27 for (i = 0 ; i < NUM_LEDS ; ++i)
28 {
29 softPwmCreate (ledMap [i], 0, RANGE) ;
30 printf ("%3d, %3d, %3d\n", i, ledMap [i], values [i]) ;
31 }
32
33 ///////////////////////////////////////////////////////////////step1//
34
35 fgets (buf, 80, stdin) ; ////////////////////act as scanf(put in anyth
36
37 // Bring all up one by one
38
39 while(1) //infinite loop
40 {
41 softPwmWrite (ledMap [1], values [6]); // value=50
42 delay (50) ;
43 }
44 }
위처럼 보면, softPwmWrite (ledMap [1], values [6])를 했더니 (4편에 빵판사진 LED)
두 번째 LED가 켜지고 주기는 매우 짧았다;;
1 2 3 4 5 | 39 while(1) //infinite loop 40 { 41 softPwmWrite (ledMap [1], values [6]); // value=50 42 delay (50) ; 43 } |
LED 는 위 배열에서 1값일거고...밸류가 듀티비인가.. |
보면 주기는 50ms
RANGE를 주파수라 생각하고 500 ㅡ> 주기는 20ms로 생각했는데 실제는 50ms
values는 여전히 듀티비(%)라 가정하고 다시 조정해보자.
values [3] (실제 50)으로 하니까 high인 폭이 더 짧아졌다. (duty비 맞는듯)
그리고 high가 너무 짧아서 LED도 더 어둡게 깜빡인다. 깜빡이는 속도는 같다.
다시 values [6] 해놓고 RANGE만 1000으로 바꿔보았다. LED가 더 느리게 깜빡인다.
아하... 주기가 100ms가 되었다.
RANGE 1은 0.1ms이다.
자 그럼 위 오실로 사진을 보면 주기는 100ms이고
RANGE 1000에 values [6](100)을 적용하면 전체주기의 10%만 high값이 출력된다.
만약 주기20ms를 맞추기 위해 RANGE 200, 그리고 values [6](100)을 적용하면
10ms동안 high가 출력된다.
이제 PWM은 어느정도 완료된듯!
여기서 내가 주기 20ms를 꼭 맞추려고 하는 이유가 있다.
주기가 20ms 라는 것은 20ms 마다 한번씩 파형을 발생시키는 것인데
서보모터 입장에서 20ms 보다 주기가 짧으면 더 많이 모터가 움찔?거려야 하므로 뜨거워진다.
20ms 주기가 서보모터에겐 가장 이상적인 조건이라 한다.
'●프로젝트와 세미나 > Raspberry pi' 카테고리의 다른 글
9. 시리얼통신-라즈베리 통신하기-후에 블루투스로 통신 (1) | 2013.08.19 |
---|---|
8. PWM 이용한 서보모터 제어. (1) | 2013.08.17 |
6. 지갑잃어버림, 노트북 무선랜카드 망가진듯... (0) | 2013.08.16 |
5. 랜 케이블 하나로 라즈베리파이 접속하기 (1) | 2013.08.15 |
4. C언어 써보기(wiring Pi설치, GPIO LED제어), Filezilla 써보기 (0) | 2013.08.13 |