
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54


목차
1. Back Ground (이론)
2. 각 기능별 소스 및 통합 소스
3. 동작 결과 (오실로스코프 파형, 사진 등등) / 분석 정리
2. 각 기능별 소스 및 통합 소스
3. 동작 결과 (오실로스코프 파형, 사진 등등) / 분석 정리
본문내용
가 걸려 미풍이 된다.
6번 USART
모든 동작들은 실시간으로
USART에 의해 컴퓨터 화면에 출력
(반복되므로 이하 생략)
7번 INT4
INT4 버튼을 누르면
PWM신호를 만드는 무한루프를 탈출하여
다시 SW 대기 상태로 복귀
(이하 생략)
8번
SW6 강풍
해당 스위치 LED가 점등되고
LCD에 \"HIGH SPEED\"란 메시지 출력
FND는 2번 모드를 가리키고
LED에서 PWM신호가 실시간으로 보임
미풍과는 달리 LED의 점등이 빠르다.
똑같은 크기의 펄스가 들어가지만
미풍과 비교해볼 때 PWM의 주기가 낮다.
이는 높은 전류를 발생시켜 강풍을 구현한다.
동 작
사 진
설 명
9번
SW7 역풍
해당 스위치 LED가 점등되고
LCD에 “REVERSE SPEED\"란 메시지 출력
FND는 3번 모드를 가리키고
LED에서 PWM신호가 실시간으로 보임
쿨러 팬은 역회전이 안되므로
일반적인 기어모터로 역방향 회전을 확인한다.
펄스가 정방향 회전과 달리 굉장히 좁은 간격으로
촘촘히 들어가는 것을 확인 할 수 있다.
10번
SW8 자연풍
8초 간격으로 펄스의 주기가 바뀌면서 1번 미풍과 2번 강풍이 무한 반복함으로써
결과적으로 바람이 강약이 주기적으로 변하는 자연풍이 구현된다.
이 동작이 구현되는 동안에 LCD,FND,LED,USART 또한
실시간으로 동작에 따라 변한다.
11번
SW9 예약풍
해당 스위치 LED가 점등되고LCD에 “RESEVATION SPEED\"란 메시지 출력
FND는 5번 모드를 가리키고LED에서 PWM신호가 실시간으로 보임.
내부적으로는 타이머에 따라서 타이머 인터럽트 구문을 들어갔다 나왔다를 반복
모터가 구문을 빠져나가고 다시 들어오기 까지 딜레이 시간이 존재하여 모터가
잠시 정지하지만 실제육안이나 바람으로 그 미세한 차이를 느끼기는 힘듬.
12번
INT5
2개 모터 가동
해당 스위치 LED가 점등되고
LCD에 \"SUB FAN ACTIVATED\"란 메시지 출력
FND는 꺼지고
LED에서 PWM신호가 실시간으로 보임
팬과 DC 기어 모터 둘다 같은 속력으로 작동한다
아래의 파형을 보고 재확인.
왜냐하면 부족한 출력 핀수를 겹치는 핀과 선을 연결하여 같은 PWM이 들어가도록 하였기 때문이다.
양쪽다 같은 펄스
동 작
문 제 점
LCD 구동시
FND 점등 문제
LCD 구동시 사용하는 PORTA가 FND 사용시 PORTA와 같기 때문에 LCD에 데이터를 전송할 때 불필요한 점등이 된다.
FND의
위치제어
불가
위의 경우와 마찬가지 이유로 FND의 위치 제어가 불가능하다.
왜냐하면 LCD 데이터가 남아 있으면 FND의 위치값에 영향을 미치기 때문이다.
만약 LCD를 구동시키지 않으면 FND가 제대로 동작하지만 이는 Trade off 관계이다.
PWM
전압측정
핀이 1인 경우 일반적으로 5V 이지만 PWM이 주기적으로 반복해서 들어가면 3.2V
에서 4.5V정도 까지 제어가 가능하다는 것을 확인 할 수 있다.
8.결 론
1) 하드웨어 관련 :
먼저 하드웨어에 관련해서는 첫째로 드라이버 납땜과 동작의 어려움이다.
데이터시트의 사양에 대한 이해가 부족한 상태에서 납땜을 하니 제대로 된 아웃풋이 나오지 않았다. 무엇보다 마이크로 프로세서를 다루는 만큼 C코딩과 하드웨어가 일치가 되어야 아웃풋이 나오는데 코딩이 갖춰지지 않은 상태에서 하드웨어를 테스트 하는 것은 시간낭비나 다름 없었다.
처음 만든 DC드라이버의 경우 가변저항과 커패시턴스에 문제가 있다고 보고 그 둘을 조정하여 문제를 해결하려 하였다. 하지만 실패하였고 나중에 키트로 구현하여 보니 Logic voltage를 드라이버 소스에 연결한것이 오동작의 원인이였고 원인을 깨닫고 다시 외부회로를 납땜하기에는 시간적으로 너무 촉박했다.
핀 설정의 경우 16진수와 싸움을 해야했는데 긴 전선들로 얽힌 상태에서 디버깅을 한다는 것은 모래속에서 바늘찾기와 다름없었다. 그래서 모터를 구동시키자 마자 바로 시리얼 케이블과 소켓을 활용하여 깔끔하게 선정리를 하고 나니 그 후부터는 코딩이 아주 수월하고 하드웨어 오동작은 걱정할 필요가 없었다.
오실로 파형의 경우 PWM신호에 따라 분명히 다르게 들어가는 것을 확인 할 수 있었다. 미풍의 경우 좀다 잦은 신호가 들어같고 강풍의 경우 좀더 딜레이가 생기는 것을 확인 할 수 있었다. 이런점으로 비추어볼때 잦은 신호가 들어가는 주기마다 전류가 떨어지는 것이라고 판단 된다. 그렇기 때문에 신호가 적게 들어갈 때는 강풍이 되는 것이다. 그리고 역방향의 경우에는 펄스의 폭이 굉장히 좁은 마치 ideal 한 impulse response 처럼 들어갔는데 이 점이 어떻게 전압의 극성을 바뀌는지 곰곰이 생각해보았지만 결론을 내리지 못했다.
아쉬운점이라면 조원들이 좀더 적극적으로 도와줬었다면 하는 바램이 있다.
거의 하드웨어와 코딩부분까지 혼자 도맡아 하는 바램에 일정이 자꾸 늦춰질 수 밖에 없었고 외부회로의 문제점을 깨닫고 보완하기에는 시간이 너무 촉박했다. 충분히 난이도 A를 받을 수 있는 실력을 갖췄음에도 불구하고 시간부족으로 못한다는 건 너무 아쉬었다. 그리고 무엇보다 재수강이기에 더욱 아쉬움이 컸던것 같다.
2) C코딩 관련 :
C코딩을 매우 즐겁게 하였고 그만큼 결론 부분에서 적을 것도 많다.
우선 텀일정표에 나와있듯이 3학년 실험의 ARM과 EMPOS보드를 정말 열심히 공부하였다. C에 대한 지식이 거의 전무한 상태로 시작하여 계란으로 바위치는 심정으로 시작하였는데 잘 짜여진 소스를 자꾸 보고 또 보면서 C에 대한 감각을 익혀 나갔다.
C에서 가장 중요한 점은 위에서 아래로 실행이 되고 모듈단위로 명령어를 묶어서 쓸수 있다는 점이라고 생각한다. 이번 코딩에서도 그렇듯 모듈단위로 평소부터 미리 준비해놓아 하루 3시간씩 수면, 이틀 반 만에 모든 코딩을 마칠 수 가 있었다.
먼저 모터 구동의 부분은 L298 에 대한 이해가 없이 시작하여 장장 이틀이란 시간이 걸렸다. 딜레이함수의 차이로 PWM을 줘야한다는 사실을 알고도 정작 코딩은 딜레이 함수를 같게 하여 전류가 발생하지 않았다. 그리고 AVR자체에 PWM단자가 있어 그것을 사용하면 좀더 쉽고 정밀 하게 제어가 가능했지만 시간에
6번 USART
모든 동작들은 실시간으로
USART에 의해 컴퓨터 화면에 출력
(반복되므로 이하 생략)
7번 INT4
INT4 버튼을 누르면
PWM신호를 만드는 무한루프를 탈출하여
다시 SW 대기 상태로 복귀
(이하 생략)
8번
SW6 강풍
해당 스위치 LED가 점등되고
LCD에 \"HIGH SPEED\"란 메시지 출력
FND는 2번 모드를 가리키고
LED에서 PWM신호가 실시간으로 보임
미풍과는 달리 LED의 점등이 빠르다.
똑같은 크기의 펄스가 들어가지만
미풍과 비교해볼 때 PWM의 주기가 낮다.
이는 높은 전류를 발생시켜 강풍을 구현한다.
동 작
사 진
설 명
9번
SW7 역풍
해당 스위치 LED가 점등되고
LCD에 “REVERSE SPEED\"란 메시지 출력
FND는 3번 모드를 가리키고
LED에서 PWM신호가 실시간으로 보임
쿨러 팬은 역회전이 안되므로
일반적인 기어모터로 역방향 회전을 확인한다.
펄스가 정방향 회전과 달리 굉장히 좁은 간격으로
촘촘히 들어가는 것을 확인 할 수 있다.
10번
SW8 자연풍
8초 간격으로 펄스의 주기가 바뀌면서 1번 미풍과 2번 강풍이 무한 반복함으로써
결과적으로 바람이 강약이 주기적으로 변하는 자연풍이 구현된다.
이 동작이 구현되는 동안에 LCD,FND,LED,USART 또한
실시간으로 동작에 따라 변한다.
11번
SW9 예약풍
해당 스위치 LED가 점등되고LCD에 “RESEVATION SPEED\"란 메시지 출력
FND는 5번 모드를 가리키고LED에서 PWM신호가 실시간으로 보임.
내부적으로는 타이머에 따라서 타이머 인터럽트 구문을 들어갔다 나왔다를 반복
모터가 구문을 빠져나가고 다시 들어오기 까지 딜레이 시간이 존재하여 모터가
잠시 정지하지만 실제육안이나 바람으로 그 미세한 차이를 느끼기는 힘듬.
12번
INT5
2개 모터 가동
해당 스위치 LED가 점등되고
LCD에 \"SUB FAN ACTIVATED\"란 메시지 출력
FND는 꺼지고
LED에서 PWM신호가 실시간으로 보임
팬과 DC 기어 모터 둘다 같은 속력으로 작동한다
아래의 파형을 보고 재확인.
왜냐하면 부족한 출력 핀수를 겹치는 핀과 선을 연결하여 같은 PWM이 들어가도록 하였기 때문이다.
양쪽다 같은 펄스
동 작
문 제 점
LCD 구동시
FND 점등 문제
LCD 구동시 사용하는 PORTA가 FND 사용시 PORTA와 같기 때문에 LCD에 데이터를 전송할 때 불필요한 점등이 된다.
FND의
위치제어
불가
위의 경우와 마찬가지 이유로 FND의 위치 제어가 불가능하다.
왜냐하면 LCD 데이터가 남아 있으면 FND의 위치값에 영향을 미치기 때문이다.
만약 LCD를 구동시키지 않으면 FND가 제대로 동작하지만 이는 Trade off 관계이다.
PWM
전압측정
핀이 1인 경우 일반적으로 5V 이지만 PWM이 주기적으로 반복해서 들어가면 3.2V
에서 4.5V정도 까지 제어가 가능하다는 것을 확인 할 수 있다.
8.결 론
1) 하드웨어 관련 :
먼저 하드웨어에 관련해서는 첫째로 드라이버 납땜과 동작의 어려움이다.
데이터시트의 사양에 대한 이해가 부족한 상태에서 납땜을 하니 제대로 된 아웃풋이 나오지 않았다. 무엇보다 마이크로 프로세서를 다루는 만큼 C코딩과 하드웨어가 일치가 되어야 아웃풋이 나오는데 코딩이 갖춰지지 않은 상태에서 하드웨어를 테스트 하는 것은 시간낭비나 다름 없었다.
처음 만든 DC드라이버의 경우 가변저항과 커패시턴스에 문제가 있다고 보고 그 둘을 조정하여 문제를 해결하려 하였다. 하지만 실패하였고 나중에 키트로 구현하여 보니 Logic voltage를 드라이버 소스에 연결한것이 오동작의 원인이였고 원인을 깨닫고 다시 외부회로를 납땜하기에는 시간적으로 너무 촉박했다.
핀 설정의 경우 16진수와 싸움을 해야했는데 긴 전선들로 얽힌 상태에서 디버깅을 한다는 것은 모래속에서 바늘찾기와 다름없었다. 그래서 모터를 구동시키자 마자 바로 시리얼 케이블과 소켓을 활용하여 깔끔하게 선정리를 하고 나니 그 후부터는 코딩이 아주 수월하고 하드웨어 오동작은 걱정할 필요가 없었다.
오실로 파형의 경우 PWM신호에 따라 분명히 다르게 들어가는 것을 확인 할 수 있었다. 미풍의 경우 좀다 잦은 신호가 들어같고 강풍의 경우 좀더 딜레이가 생기는 것을 확인 할 수 있었다. 이런점으로 비추어볼때 잦은 신호가 들어가는 주기마다 전류가 떨어지는 것이라고 판단 된다. 그렇기 때문에 신호가 적게 들어갈 때는 강풍이 되는 것이다. 그리고 역방향의 경우에는 펄스의 폭이 굉장히 좁은 마치 ideal 한 impulse response 처럼 들어갔는데 이 점이 어떻게 전압의 극성을 바뀌는지 곰곰이 생각해보았지만 결론을 내리지 못했다.
아쉬운점이라면 조원들이 좀더 적극적으로 도와줬었다면 하는 바램이 있다.
거의 하드웨어와 코딩부분까지 혼자 도맡아 하는 바램에 일정이 자꾸 늦춰질 수 밖에 없었고 외부회로의 문제점을 깨닫고 보완하기에는 시간이 너무 촉박했다. 충분히 난이도 A를 받을 수 있는 실력을 갖췄음에도 불구하고 시간부족으로 못한다는 건 너무 아쉬었다. 그리고 무엇보다 재수강이기에 더욱 아쉬움이 컸던것 같다.
2) C코딩 관련 :
C코딩을 매우 즐겁게 하였고 그만큼 결론 부분에서 적을 것도 많다.
우선 텀일정표에 나와있듯이 3학년 실험의 ARM과 EMPOS보드를 정말 열심히 공부하였다. C에 대한 지식이 거의 전무한 상태로 시작하여 계란으로 바위치는 심정으로 시작하였는데 잘 짜여진 소스를 자꾸 보고 또 보면서 C에 대한 감각을 익혀 나갔다.
C에서 가장 중요한 점은 위에서 아래로 실행이 되고 모듈단위로 명령어를 묶어서 쓸수 있다는 점이라고 생각한다. 이번 코딩에서도 그렇듯 모듈단위로 평소부터 미리 준비해놓아 하루 3시간씩 수면, 이틀 반 만에 모든 코딩을 마칠 수 가 있었다.
먼저 모터 구동의 부분은 L298 에 대한 이해가 없이 시작하여 장장 이틀이란 시간이 걸렸다. 딜레이함수의 차이로 PWM을 줘야한다는 사실을 알고도 정작 코딩은 딜레이 함수를 같게 하여 전류가 발생하지 않았다. 그리고 AVR자체에 PWM단자가 있어 그것을 사용하면 좀더 쉽고 정밀 하게 제어가 가능했지만 시간에
소개글