• 검색 결과가 없습니다.

㎒Resistance 10K

문서에서 Naval Architecture & Ocean Engineering (페이지 122-137)

Switch Capacitor 30 ㎊ Electrolytic Capacitor 10㎌

Crystal 4 ㎒Resistance 10K

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.5. MCU Board

8.5. MCU Board 제작 제작

1 2 3 4 5 6 7 8 9 10

20 19 18 17 16 15 14 13 12 11 1

2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24

25 13

1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24

25 13

1

2

3

45

6

7

8

910

11

12

13

1415

16

17

18

19

20

IN4148 0.1㎌ 104

8Mhz

100K

30㎊ 30㎊

10K

10㎌

Rom Writer

&

MCU Board 통합 Ver Rom Writer

&

MCU Board

통합 Ver

; ; RS232 RS232 란 란 ? ?

„ „ 컴퓨터들과 컴퓨터들과 그 그 주변의 주변의 장치들 장치들 간에 간에 직렬 직렬 데이터 데이터 통신에 통신에 대한 대한 표준 표준

„ „ 본 본 과제에서는 과제에서는 센서가 센서가 측정한 측정한 값을 값을 컴퓨터로 컴퓨터로 전송하여 전송하여 모니터로 모니터로 확 확 인할 인할 수 수 있도록 있도록 함 함

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.6.

8.6. RS232 RS232 통신 통신 Cable Cable 제작 제작

; ; Codevision Codevision AVR(HP Info Tech) AVR(HP Info Tech)

„ „ Visual C++ Visual C++ 와 와 같이 같이 통합 통합 개발 개발 환경을 환경을 제공 제공

z z 프로그램밍(C 프로그램밍 (C 언어 언어 ), ), 디버깅 디버깅 , , MCU Writing MCU Writing 등이 등이 가능 가능

„ „ http:// http:// www.hpinfotech.ro/html/download.htm www.hpinfotech.ro/html/download.htm 에서 에서 평가판 평가판 다운로드 다운로드 후 후 사용 사용 가능 가능

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.7.

8.7. 소프트웨어 소프트웨어 개발 개발 환경 환경

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.8.

8.8. Codevision Codevision AVR AVR 의 의 프로젝트 프로젝트 생성 생성 (1/3) (1/3)

Step 1

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.8.

8.8. Codevision Codevision AVR AVR 의 의 프로젝트 프로젝트 생성 생성 (2/3) (2/3)

Step 2

1. Chip Select 2. RS232 Setup 3. ADC Setup

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.8.

8.8. Codevision Codevision AVR AVR 의 의 프로젝트 프로젝트 생성 생성 (3/3) (3/3)

Step 3

Basic Code Generation

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (1 (1 /8) /8)

; ; 기본적으로 기본적으로 C의 C 의 문법을 문법을 따른다. 따른다 .

; ; Hardware의 Hardware 의 입출력을 입출력을 제어하기 제어하기 위한 위한 명령어 명령어

„„ DDR[ ] -DDR[ ] - [ ]에는[ ]에는 PORT Name이PORT Name 들어간다들어간다 A, B, C, or DA, B, C, or D

z z 초기에 초기에 PORT가 PORT 가 출력용(1), 출력용 (1), 입력용 입력용(0] (0]인지를 인지를 결정 결정

Ex] DDRB1 = 1 // B PORT 1번Ex] DDRB1 = 1 // B PORT 1 PIN을PIN 출력으로출력으로 사용사용

„„ PIN[ ] PIN[ ] [ ]에는[ ]에는 PIN Name이PIN Name 들어간다들어간다 A, B, C, or DA, B, C, or D

z z Port의 Port 의 입력을 입력을 주관 주관

Ex) PINB.1 = 1 // B PORT 1번Ex) PINB.1 = 1 // B PORT 1 PIN의PIN 입력이입력이 Ex] PINB.1 = 0 // B PORT 1번Ex] PINB.1 = 0 // B PORT 1 PIN의PIN 입력이입력이

„„ PORT[ ] -PORT[ ] - [ ]에는[ ]에는 PORT Name이PORT Name 들어간다들어간다 A, B, C, or DA, B, C, or D

z z Port의 Port 의 출력을 출력을 주관 주관

Ex] PORTD.0 = 1` // D PORT 0번Ex] PORTD.0 = 1` // D PORT 0 PINPIN의 출력이출력이

Ex] PORTD.0 = 0` // D PORT 0번Ex] PORTD.0 = 0` // D PORT 0 PINPIN의 출력이출력이

„„ Byte 단위Byte 단위 입출력이입출력이 가능가능

z z PORT B = 8 bit PORT B = 8 bit 로 로 1 Byte를 1 Byte 를 구성한다 구성한다

Ex] PORTB = 0xFFEx] PORTB = 0xFF

»

» PORTB.0~PORTB.7에PORTB.0~PORTB.7 11을 출력하여출력하여 11111111의11111111 구성을구성을 한다한다

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (2 (2 /8) /8)

Example 1. LED 점등

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (3 (3 /8) /8)

#include <mega8535.h>

#include <delay.h>

int count;

void main(void) {

DDRB=0xff; // PORT B를 출력으로 사용

PORTB = 0xff; // PORT B를 ‘11111111’로 초기화

while (1) {

led = 0x01; //PORT B를 ‘00000001’로 초기화 for(count = 0; count <8 ; count++)

{

PORTB = ~led; // NOT 연산을 수행하여 PORT B로 출력 led = led << 1; // 1 Bit씩 Shift 연산을 수행 delay_ms(500); // 500ms Delay

}

}

}

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (4 (4 /8) /8)

Rotate +90˚

Initial Position

Rotate -90˚

; 서보모터

„ 사용자의 명령에 따라 회전 각을 조절할 수 있는 일련의 모터.

„ 여기서는 RC(Remote Control)용 서보모터를 지칭.

„ 10ms ~ 20ms의 주기의 펄스 신호의 폭을 조절하여 제어

0.7msec

1.5msec

2.3msec

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (5 (5 /8) /8)

Example 2. Servo Motor Control

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (6 (6 /8) /8)

#include <mega8535.h>

#include <delay.h>

void servo_init() {

int i;

for(i=0; i<30; i++) {

PORTB.2 = 1;

delay_us(1500);

PORTB.2 = 0;

delay_ms(10);

} }

void servo_rgo() {

int i;

for(i=0; i<30; i++) {

PORTB.2 = 1;

delay_us(700);

PORTB.2 = 0;

delay_ms(10);

} }

void servo_lgo() {

int i;

for(i=0; i<30; i++) {

PORTB.2 = 1;

delay_us(2300);

PORTB.2 = 0;

delay_ms(10);

} }

펄스폭

주기

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (7/8) (7/8)

Example 2. ADC Input & RS232 Output

RS232 Cable

VCC VCC

PC

; ; 가변저항 가변저항 R1에 R1 에 위한 위한 저항 저항 변화 변화 -> - >전류변화 전류변화(Analog) (Analog)를 를 ADC를 ADC 를 통해 통해 Digital로 Digital 로 Converting Converting

; ; Converting된 Converting 된 Digital 값을 Digital 값을 RS232 Cable RS232 Cable 을 을 통해 통해 PC로 PC 로 전송, 전송 , 모니터로 모니터로 확인 확인

8. 8. 제어기 제어기 하드웨어 하드웨어 및 및 소프트웨어 소프트웨어 제작 제작 8.9.

8.9. Codevision Codevision AVR AVR 에서의 에서의 프로그램밍 프로그램밍 (8/8) (8/8)

#include <mega8535.h>

#include <delay.h>

unsigned int read_adc(unsigned char adc_input) {

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

#asm

in r30,mcucr cbr r30,__sm_mask

sbr r30,__se_bit | __sm_adc_noise_red out mcucr,r30

sleep

cbr r30,__se_bit out mcucr,r30

ADC로 부터 Digital 값 읽기(함수) Digital 값 모니터에 출력하기(RS232)

void main(void)

{

int rs232;

while(1) {

rs232 = read_adc(0);

printf(“PORTA.0 = %d”, rs232);

}

9. 9. 모형선박 모형선박 제작 제작 과정 과정 및 및 Contest

Contest

9.1. Term Project

9.1. Term Project 사례 사례 1 : 1 : 초음파센서

초음파센서 3 3 개를 개를 탑재한 탑재한 자율 자율 주행형 주행형 단동선 단동선

문서에서 Naval Architecture & Ocean Engineering (페이지 122-137)

관련 문서