Busan IT/제어기초2015. 2. 10. 17:35

OrCAD 매뉴얼과 반파/정파 전류

 

#1. OrCAD 기본 사용 설명

 

ORCAD(회로도 작성을 위한 준비부터)

 

회로도란?

회로의 동작을 다른 사람에게 전달하거나 동일한 것을 만들 수 있도록 하기 위한 것.

설계자의 의도를 표현한 것.ex)다이오드, 캐피시터의 삽입 이유

 

회로도의 기본적인 요소

부품의 명칭 또는 종류 -> 어떠한 부품을 사용하는가?

사용하고 있는 부품의 정수 -> 부품의 정수는 얼마인가?

부품 사이의 접속 관계 -> 각 부품들은 어ᄄᅠᇂ게 연결되었는가?

 

접속과 교차

회로도에서 부품 사이 접속 관계는 직선으로 표시

1. T자형 교차점은 접속된 것이다.

2. +자형 교차점에 점이 있으면 접속된 것이며, 그렇지 않은 것은 접속되지 않은 것

3. +자형 교차점에 반원이 있으면 접속되지 않은 것이며, 그렇지 않은 것은 교차한 것

** 2항과 3항은 한 회로도에서 중복되지 않음.

 

기본단위

전기정수

기호

의미

읽는법

사용 예

전 압

V

Volt

볼트

μV,mV,V, k

전 류

A

Ampere

암페어

μA,mA,A

전 력

W

Watt

와트

μW,mW,W, kW

저 항

Ω

Ohm

Ω,kΩ,MΩ

인덕턴스

Henry

헨리

μH,mH

정전용량

Farad

패럿

pF,μF(uF)

주 파 수

Hz

Hertz 

헤르츠

HzKHzMHzGHz

 

기호

단위

읽는 법

1000000

메가

1000

킬로

m

0.001

밀리

μ

0.000001

마이크로

0.000000001

나노

0.000000000001

피코

<Capture의 기능 및 특징>

OrCad Capture program은 회로도 분석을 쉽게 하고, 상징적인 전자회로 도면을 그려서 이를 인쇄회로기판으로 실제적인 작업을 하기 위한 최종의 Netlist file을 생성하는 것이다.

 

기구설계프로그램과 연계하기 위한 Auto CAD, Genertic CAD 등에 필요한 DXF 파일을 Netlist작성시에 생성할 수 있으며, EDIF, VHDL, Verilog HDL과 다른 전자회로 설계 프로그램으로도 Netlist 파일을 생성할 수 있다.

 

Pspice Library를 포함하여 약 44,000개 이상의 많은 library를 내장

새롭게 부품 혹은 심볼을 생성하기가 쉽다.

Wire, Bus 등 연결점의 자동표현(Auto Junction), Macro 기능 지원 등의 기능 외에도 비트맵 이미지 등의 Logo File 또한 불러들일 수 있다.

 

명령어의 빠른 접근을 위한 ToolbarTool Palette 제공, 부품 목록, 도면 정보 등의 문서화 시켜서 이를 database화 할 수 있다.

 

한글 Windows 상에서의 한글 서체 지원, 작성한 회로도면의 미리 보기 기능 지원, 사용의 편리성을 위한 On-line Helpinteractive tutorial 제공, Excel, Lotus 등 각종 스프레드시트 등과 파일 호환기능이 있다.

 

<Capture 프로그램 실행>

 

윈도우 시작 -> 프로그램 -> OrCAD_10.5 -> Capture(CIS)선택

Capture 초기 화면 메뉴 Bar 중에서 File -> New -> project를 선택

 

Analog or Mixed-Signal Circuit Wizard

Analog 또는 Analog/Digital 혼합회로 설계를 위한 Pspice Project option.

 

PC Board Wizard

PCB를 설계용 OrCad layout을 사용하기 위한 Project option.

 

Programmable logi Wizard

CPLD FPGA design, Digital simulate OrCAD Express를 사용하기 위한 Project option.

 

Schematic

Schematic 작성용 Capture를 사용하기 위한 Project Option.

 

ORCAD PROGRAM 사용 KEY POINT

 

항상 마우스의 오른쪽 버튼을 생각하면 접근하기가 수월하다.

 

Program 창의 메뉴 항목에 작업 수행에 따른 해당 항목을 왼쪽 마우스로 클릭하면 활성화 되고, 그 상태에서 오른쪽 마우스를 클릭하며 그 작업에 관련된 option이 나타나게 된다.

 

일반적으로 어떤 작업의 속성을 보기 위해서는 객체 활성화-> 오른쪽 마우스 -> Edit Properties를 선택하면 되고, 그 작업을 빠져나가려면 오른쪽 마우스 -> End mode(End command)를 선택하면 된다.

 

OrCad Program에서는 Excel과 같이 Spreadsheet data를 관리하므로 작업 관리 및 Editing이 빠르고 편리하다.

 

Capture For Window 기본 정보

 

opj (OrCAD project file) - design file과 해당 programmelink시켜주는 file.

 

drc - 실제 회로도를 담고 있는 design file.

 

alb - 파트와 심볼정보를 담고 있는 file.

 

upd - 회로도에 쓰인 부품안에 파트의 속성을 포괄적으로 집어넣을 때 사용 되는 file.

 

swp - layout상에서 변경된 정보를 capture상에 적용 시키는 파일.

 

drc - 전기적인 rule의 검사결과가 저장되는 파일

 

bom - 부품 목록이 저장되는 파일

 

xrf - 회로도에 쓰여진 part의 정보를 담고 있는 파일

 

mnl - 핀과 핀간의 연결 정보와 footprint정보를 담고 있는 파일

 

#2. OrCAD 메뉴얼

 

OrCAD 주요 단축(HOT) Key

 

 

줌인(마우스포인트를 기준으로) : I

줌아웃 : O

줌센터 : C

repeat : F1

Any angle wire = shift + mouse

Mirror horizonatally: h

only move part : Alt + mouse

redraw :F5

select copy : ctrl + mouse

 

 

회로도의 구조

1.단면 구조

2.평면 구조

3.계층구조

1. 단순 계층 구조

2 복합 계층 구조

 

단면구조

회로도면 구조의 가장 기본적인 형태 한 장의 도면으로 만 구성되어 있다.

 

부품의 어ᄄᅠᆫ pin과 연결될 다른 pin간에서 보통 wire를 사용하여 연결

 

거리가 먼 경우나 도면을 깔끔하게 구성 해기 위해 Busnex alias를 사용한다.

 

 

Net Alias

 

BusBds entry

 

버스에는 별도의 다렙을 붙혀준다.

 

<평면 계층 구조)

 

단일 구조 형태0에서 manager창의 schemick 폴 더 아래엥있는 page가 여러 개 생성되는 형태.

 

OFF-PAGE Connector 기능

 

(flast rwh, onsecc구조)

 

계층 구조(단순, 복합)

 

회로도의 임의의 영역을 다른 계층의 도면으로 관리하는 경우 사용되며 project manager창의 schematic 폴더 아래에 또 다른 schematic 폴더가 존재하는 형태로 나타난다.

 

계층 구조를 구성하는 3가지 요소

1. Hierarchical block

2. Hierarchical pin

3. Hierarchical port

 

계층 구조는 계층간 연결 형태에 따라 단순 계층 구조와 복합 계층구조의 2가지로 나누어 볼 수 있다.

 

<Generic, 계층 구조 port기능>

 

계층 구조 + 플랫 구조 + 원 시트 구조

 

주의> 위의 모든 구조가 사용 가능 하지만 플랫 또는 원시트에 계층구조 port사용시 DRC 확인 시 상호 연결 checking이 되지 않음.

 

평면도면 -> off-page Connector사용

계층도면 -> 계층 port를 사용

 

<ORCAD CAPTURE For Windows 환경>

1. Capture 작업환경(3개의 Window로 구성)

 

Project manager window

 

디자인 파일을 생성하거나 오픈할 때 사용하는 윈도우로 상위 도면과 하위 도면의 연결구조 상태를 볼 수 있으며, 해당도면에서 생성되는 라이브러리(디자인 캐쉬), 보고서 파일과 도면 정보 검사 파일 등의 파일들을 포함하고 있는 전체 작업 진행을 관리하는 창이다.

 

Schematic page editor window

 

회로설계의 작성이 이루어지는 창이며, 매니저 창이 활성화 되었을 때와 회로도 창이 활성화 되었을 때 각각 메뉴 항목이 달라지게 된다. Parts나 심볼 작성시에는 part editor windows라 한다.

 

Session log window

 

도면 완성 후 작업이 진행되는 내용을 표시하는 창

 

부품의 참조 명칭(u1, u2...)을 결정하는 annotate(update part reference)의 내용과 도면검사 기준설정인 ERC(error rules check)에 따른 도면 검사 (DRC: 디자인 룰 체크)를 실행한 결과 기록, 넷리스트 생성에 따른 내용 등을 나타낸다.

 

5가지 capture bar의 종류

 

title/menu/tool/status bar/tool palette

 

title bar: orcad capture의 로그 표시된 바로서 전체 화면의 복귀, 확대, 닫기를 관리한다.

 

menu bar: 파일의 저장, 닫기와 편집뿐 아니라 전체적인 작업을 관리하는 tool 메뉴, 도면 작성을 위한 place메뉴, 환경 설정을 위한 options 메뉴 등으로 구성되어 있다.

 

tool bar: 새로운 파일 생성과 오픈, 세이브, 도면의 확대, 축소의 기능과, annotation, 디자인 룰 체크, 넷리스트 생성 등 전체적인 작업을 진행하는데 필요한 기능을 아이콘으로 표시해 놓은 bar이다.

 

Annotate(업데이트 파트 레퍼런스): 부품의 참조명칭 부여하는 기능.

back annotate: 회로도의 게이트와 핀의 교체

디자인 룰 체크: 회로도의 디자인 규칙 위반 사항 검사.

Create 넷리스트: 회로도의 부품과 선 연결정보 파일 작성.(여러가지 포맷 제공)

Cross reference part: 회로도의 부품 사용 경로와 각 정보를 포함하는 교차 참조 보고서 파일 작성.

bill of materials: 회로도에 사용된 주품의 개수, 종류, 수량, 주품 값 등을 포함하는 부품 목록 보고서 파일 작성.

#3. OrCAD 메뉴얼

 

<Tool palette>

 

place junction: 배선과 배선의 접속점 표시.

 

place bus entry: 버스와 일반 wire와의 연결 부분 지정.

 

place power: 회로도에 전원 신호 연결.

 

place ground: 회로도에 접지신호 연결.

 

place hierarchical block: 회로도에 계층구조의 블록 설정.

 

place port : 계층구조 핀과 연결되어 사용되는 포트

 

place pin : 계층구조 블록 위에 핀 배치

 

place off-page connector : 평면 구조의 회로도 연결 시 사용 되는 포트.

 

place no connect : 부품의 pin에 배선 등을 연결시키지 않을 때 사용.

 

place line : 전기적 속성을 지니지 않은 선

 

place polyline : 전기적 속성을 지니지 않은 일반 다각도 선 그리기

 

place rectangle : 직사각형 그리기

 

place eclipse : 타원형

 

place arc : 반원

 

 

<Status Bar>

 

현재 도면에서의 상태, 마우스 포인터가 가리키는 좌표와 현재 사용자가 선택하고 있는 객체의 개수 등을 표시하는 바이다.

 

//부품 검색 도중 부품명이 생각나지 않을 때는 *또는 ?를 사용하여 검색하면 된다.

//*는 자릿수를 무시하고 ?는 넣는 개수만큼 자리수를 인식하여 검색해준다.

 

 

Bus entry를 제외하고는 대각선 와이어는 사용하지 않는다.

 

Place Net Alias

 

배선에 라벨을 붙이는 기능을 한다.

 

 

 

 

 

 

 

 

#4. 반파정류/전파정류

 

한전에서 공급하는 가정용 전기는 AC 220V/60HZ이다. 이것을 5V 전기로 바꾸고자 하면

 

1. AC - DC Converter로 교류전기를 직류 전기로 바꾸고

2. Trans로 감압한 후 정류 시켜 주면 된다.

 

정류작용 - 반파정류/전파정류


반파정류는 다이오드를 하나만 사용하여 한쪽으로 나오는 전류만 사용하는 것이고

전파 전류는 다이오드 4개를 사용하여 모든 전류를 사용하는 것이다.

리플 전기를 안정화 시켜주기 위해서 제너다이오드를 사용한다.

 

 

 

 

 

 

반응형
Posted by newind2000
Busan IT/제어언어2015. 2. 10. 13:43

제어문(if~else, for)

 

#1. 논리연산자와 if~else구문의 확장

 

C언어의 코딩 후 실행을 시키면 명령어가 순차적으로 수행되는데 이 순차적인 진행을 제어하는 것이 제어문이다.

 

If문은 조건 값에 맞는 결과가 나오면 수행시키는 제어문이고 if~else는 참일 때와 거짓일 때를 구분하여 지정한 값을 출력시키는 제어문이다.

 

논리연산자

 

And연산자(&&)or연산자(||)가 있다.

 

And연산자는 둘 다 참이어야 참으로 표시하는 논리연산자이다.

 

A

B

AND

1

0

0

0

1

0

1

1

1

0

0

0

 

Or연산자는 둘 중 하나만 참이 되면 참으로 표시하는 논리연산자이다.

 

A

B

OR

1

0

1

0

1

1

1

1

1

0

0

0

 

if문에서 if() 해당 괄호 안에 들어가는 값은 참 혹은 거짓을 판별하는 문장이 들어감으로 0만 들어가지 않으면 참이 된다.

 

if~else~else

 

//항상 if는 제일 앞에 와야 한다.

 

문법

if() 

{

}

else if() 

{

}

else {

}

 

해당 if~else~else구문은 다단의 else if구문이 추가 가능하다.

 

 

 

 

 

 

#2. if~else문의 활용(윤년 계산기)

 

윤년 계산법

 

조건(AND)

1. 4로 나누어 지는 연도? Y

2. 100으로 나누어 지는 연도? N

3. 400으로 나누어 지는 연도? Y

 

프로그램을 작성하기 위해서는 정보와 상황을 파악하는 능력이 우선시 된다. 과제가 주어지면 해당 과제를 수행하는 조건을 파악하고 수행과제를 세부적으로 나눈다. 이 때 이것을 순차적으로 파악하는 능력이 중요시 된다.

 

실습 - if~else문의 사용)

윤년과 평년을 구분해 주는 프로그램을 만들어보자.



#3. if~else문의 활용(/홀수 구분기)

 

/홀수를 구별하는 프로그램을 만들어보자.




#4. 반복문

 

//제어문을 통해 암호 설정을 할 수 있다.

 

반복문 - 똑같은 일을 반복적으로 수행하는 것이다.

 

문법

 

for(“한번만 수행될 명령어”;“조건문”;“참일 때 수행할 것”) //조건은 세미콜론으로 구분하여 3개까지 쓸 수 있다.

//중간 부분이 참인 경우만 괄호 안에 문법이 실행된다.

{

 

}

 

조건문의 값을 만족하지 못하면 실행이 중단된다.

 

실습 - for(반복문)의 이해)

1부터 10까지의 수를 출력해본다.

 

 




 

 

반응형
Posted by newind2000
카테고리 없음2015. 2. 9. 17:32

제어 기초(3월 4일)


실기 : 반파 정류회로 구성(20점), 전파 정류회로 구성(16점)

필기 : AVR 특성 (20점),  ARM 특성(20wja), 레지스터 개념(12점), 정류 개념(12점)



디지털 제어(4월 1일)


실기 : 전가산기 회로 결선(50점), 동작 결과(10점)

필기 : 전가산기 도면 작성(주관식 30점), 반가산기 도면 작성(주관식 10점)

반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 9. 17:19

회로 설계 기초(회로도를 그리기 전에 알아야 할 상식)

 

//이전에 했던 내용과 중복이 있지만 복습한다는 생각으로 학습에 임하면 된다.

 

목차

 

- 전원과 그라운드

- 전기 전자 전류 전압의 용어

- 전기의 흐름, 직류와 교류

- 규칙적 변화, 주기와 주파수

- 저항

- 축전기

 

<전원과 그라운드>

 

전류 : 전기라고 부르는 것에 흐르고 있는 것들

 

전기의 방향은 전원에서 그라운드로 쪽으로 움직인다.

 

전원에서 전기를 공급받고 그라운드로 내보낸다.

 

그라운드는 전압의 기준점으로써 +-전위차를 전압이라고 한다.

 

<용어: 전기, 전자, 전류 전압>

 

전기는 물질 안에 있는 전자 또는 공간에 있는 자유 전자나 이온의 움직임 때문에 생기는 에너지의 한 형태

전기는 음전기와 양전기 두 가지가 존재하며, 같은 종류의 전기는 서로 밀어내고 다른 종류의 전기는 끌어당기는 힘이 있다.

 

전자는 음전하 성질(-극성)을 가진 입자이다. 전기가 흐르는 것은 전자가 이동하기 때문이다. 전자는 -극에서 +극으로 흐른다.

 

//전하는 물질이 가지고 있는 전기의 양이다.

 

<전기의 흐름, 진류와 교류>

 

직류: 시간에 관계없이 전류의 방향과 크기가 일정한 전기의 흐름을 직류전류라고 한다.

교류: 시간에 따라서 전류의 방향과 크기가 주기적으로 변하는 전류. 전압이 계속 바뀌므로 방향이 계속 바뀐다.

 

<규칙적 변화, 주기와 주파수>

 

주파수: 전파나 음아가 1초 동안 진동하는 횟수, 교류 전기에서 1초 동안 전류의 방향이 바뀌는 횟수

 

// 우리가 쓰는 전기는 60hz

//AC ~, DC - 파형의 모양을 따라 이와 같이 표현해 준다.

// 전류의 단위는 암페어(A)

// 교류는 극성이 필요 없기에 +/- 표시가 없다.

 

주기: 같은 현상이나 특징이 한번 나타나고부터 다음 번 되풀이되기 까지의 기간. 회전하는 물체가 한 번 돌아서 본래의 위치로 오기까지의 기간. 진동하는 물체가 한 방향으로 움직였다가 다시 반대 방향으로 그 만큼 움직여 본래의 자리로 돌아오는데걸리는 시간.

 

주기와 주파수의 관계는 반비례이다.

 

저항: 전기적 흐름을 강제로 방해하는 소자. 전류가 흐르는 것을 방해하여 전기적 위치 에너지의 차이를 만든다. 전기적 흐름을 제어하여 원하는 만큼의 전류를 흐르게 한다.

 

//저항 읽는 법 재학습하기

 

1005타입 이하의 저항은 저항 값이 표시되지 않는다. 왜냐하면 표시해도 보이지 않기 때문이다.

 

옴의 법칙: 회로의 흐르는 전류의 크기는 저항에 비례하고, 저항에 반비례한다.

 

저항의 직렬 연결: 다수의 저항을 일렬로 한 개의 선으로 연결한 것. 합성 저항의 값은 직렬로 연결된 저항 값을 합한 값.

 

저항의 병렬 연결: 저항을 옆으로 연결시켜 놓은 것. 합성 저항 값은 각 저항의 값의 역수를 합한 값의 역수.

 

// 저항을 읽는 단위는 옴이다.

 

회로적 의미와 용도: 전류의 제어. 회로블럭이 손상되는 것을 막아준다.

전압의 분배

// 저항이 0가 되면 전류가 무한대가 됨으로 저항은 반드시 있어야 한다.

// embeded에서 쓰는 전압은 5, 3.3, 1.8V이다.

 

전력: 전류가 단위 시간(1)에 하는 일, 단일 시간에 사용되는 에너지의 양. 값은 전압과 전류의 곱으로 나타난다. 단위는 wkW

P = I * V = I제곱 * R = V제곱/R

 

 

전력은 전류의 제곱에 비례, 전압의 제곱에 비례, 저항의 반비례

 

전력량: 실제 시간에 따른 전력 소비량을 계산한 것. 전력에 시간을 곱하여 계산한다.

W = V X I X time

 

저항에서 전력을 알아야 하는 이유는 전력은 일을 한 양이므로 필연적으로 열이 발생한다. 이 열 때문에 정격 전력을 알아야 한다. 정격 전력이란 저항에서 버틸 수 있는 전력의 크기이다.

 

권선저항: 단순히 도선을 길게 만들어서 만든 저항이다. 구조가 단순하다는 장점이 있지만 고 저항값의 제작은 비효율적이고, 고주파 회로에 적용 시 잡음이 많이 발생할 수 있다는 단점이 있다. 주 사용처는 매우 정밀한 회로나 고주파에 사용 된다.

 

탄소 피막 저항: 저항 중에가장 흔하고 저렴한 저항이다. 세라믹을 이용하여 봉을 만든 후 탄소계의 저항체를 붙여 만들며, 이때 저항체로 사용되는 피막을 나선형으로 홈을 만들어 저항의 크기를 조절한다. 온도에 따른 저항 값의 변화가 크고 미세한 노이즈가 있어서 정밀한 신호 회로에 사용되지 못한다는 단점이 있다. 하여 주로 디지털 회로에 사용 된다. 보통 DIP 타입으로 제작된다.

 

금속 피막 저항: 탄소피막 저항과 제조 방식 및 구조 동일하나 소재가 금속이라는 차이가 있다. 온도에 따른 저항 값의 변화가 적다. 때문에 정밀함이 필요한 아날로그 회로에 사용 된다.

가격이 저렴하고 도장형, 박막형 등 여러 가지 타입이 존재한다. 보통 DIP타입으로 제작된다.

 

칩 저항: 내부에 탄소계 저항체를 넣고 전연체로 포항하여 만든다. 구조가 단순하고 매우 작다. 잡음이 많이 발생하고 고 전력을 견디지 못하고 아날로그 회로나 전력 회로에는 부적절하다. 대부분 디지털 회로에 많이 사용 된다.

 

네트워크 저항(Array 저항)

여러 개의 저항을 하나로 묶어 만든 저항이다. IC 주변 회로에 많이 사용 된다. 내부 구조가 다양하게 존재하기 때문에 반드시 데이터시트를 봐야 한다.

 

가변 저항: 값이 변하는 저항

가변 저항의 예는 아날로그식 TV 볼륨이다.

 

DIP 타입의고정 저항 값을 읽는 방법은 띠가 4(J)인 경우와 5줄인 경우가 있다.


 



//, , , , , , , , , 흰 의 순서로 0부터 9까지 표현된다. (남은 뺀다)

 



 

칩 저항의 고정 저항 값 읽기

 



R은 소수점을 의미한다.



저항체의 크기가 클수록 wage 값도 크다.

 

저항 설계 시 고려해야 할 사항

1. 정확한 의도를 가지고 설계에 반영

2. 저항의 특성

3. 저항의 가격

 

<Capacitor>

 

Capacitor란 무엇인가?

전류를 저장하고 그 저장된 전류를 방출하는 소자(축전기, 콘덴서)이다. 전류의 흐름을 안정화 시켜야 할 때 Capacitor를 사용하여 흐름이 원활할 때 저장해 놓고 흐름이 원활하지 못할 때 전류를 흘려줌.

 

병렬전류를 직렬로 변환할 때 발생하는 ripple(잔류)를 방지하기 위해 사용된다.

 

Capacitor의 원리는 두 도체 간에 절연체를 채우고 전기적으로 연결되지 않도록 한다.

 

 



 

양단에 전압이 걸리면서 도체에 전하가 모이게 된다. 전하가 모이게 되면 전류가 충전 되고 이때 충전되는 전하량은 Q이다.

 

(Q는 전하량, C는 정전용량, V는 전압 , A는 단면적, L은 두판 사이의 거리, ε는 절연체의 비유전율)

 

Q = CV[C]

 

이 때 Capacitor의 정전용량 C는 단면적과 거리에 영향응받는다.

 

Q = εA/L

 

단면적이 넓을수록 두 극판 사이에 거리가 가까울수록 정전용량이 크다.

 

Capacitor의 직렬 연결

전체 Capacitor의 용량 값의 역수는 각 Capacitor의 용량 값 역수의 합과 같다.



 

Capacitor의 병렬 연결

전체 Capacitor의 용량 값은 각 Capacitor의 용량 값의 합과 같다.



 

반응형

'Busan IT > 제어기초' 카테고리의 다른 글

OrCAD 매뉴얼 및 반파정류, 전파정류  (0) 2015.02.11
OrCAD 매뉴얼과 반파/전파 전류  (0) 2015.02.10
LEGO - Mindstorm #3  (0) 2015.02.06
LEGO - Mindstorm #2  (0) 2015.02.05
LEGO - Mindstorm  (0) 2015.02.04
Posted by newind2000
Busan IT/제어언어2015. 2. 9. 17:16

프로그래밍 언어의 종류와 역사 그리고 제어문(if)

 

#1. 프로그래밍 언어의 종류와 역사

 

//늦게 들어온 학우들을 위해 그리고 교양을 위해 프로그래밍을 위한 기초에 대해 알아본다.

 

컴퓨터언어 종류와 역사

 

알골, Basic, 포트란, 코볼 등이 1970년 전에 만들어진 주요 프로그래밍 언어이다.

 

GW-Basic은 마이크로스프트사가 컴팩을 위해 개발한 베이직의 일종이다.

 

포트란은 과학 계산 용도로 코볼은 상업 계산을 주 대상으로 한 언어였다.

 

알골은 1950년대 미국에서 만들어진 포트란에 대항하여 유럽을 중심으로 개발된 프로그래밍 언어이다.

 

C형 언어의 주요 언어의 흐름을 보면 C(1972) -> C++(1980) -> Java(1995)로 볼 수 있다.

 

C는 구조적 프로그램이라하고 이것은 절차에 따라 프로그램을 짜는 것이다.

 

객체지향적 언어는 기능 위주로 프로그램을 짜는 것이다.

 

C프로그램에 객체지향을 도입한 것이 C++이고 이를 만든 사람이 Bjarne Stroustrup이다. C를 객체지향으로 만듦으로써 생기는 문제점을 해결하려고 만든 것이 Java이다.

 

RAD(Rapid Application Development) 짧은 시간에 프로그래밍을 만들 수 있게 만들어주는 도구이다. 대표적인 도구로 Visual Basic이 있다.

 

언어계층으로 보면 최하위층부터 기계어, Assembly, C, C++/Java, RAD가 있다.

 

프로그래밍은 단순히 해당 언어의 문법을 배우는 것이 아니라 문법을 활용한 실제 프로그래밍 콘텐츠에 달렸다.

#2. C 문법의 유래

 

컴퓨터 언어들은 다른 언어들로부터 많은 기능을 빌려 오는데 C 또한 파스칼에서 많은 기능을 차용해 왔다.

 

ex) 명령어 끝에 세미콜론이 붙는 것은 파스칼에서 온 것이다.

 

C 문법은 다른 프로그래밍 언어의 문법을 고루 차용해 왔기 때문에, C언어를 익히는 다른 프로그래밍을 언어 문법에 쉽게 적응할 수 있다.

 

변수에 숫자 0이 들어가 있는 것을 null이라고 한다.

#3. 제어문: if/if~else

 

메모리에 0이 들어가 있는 경우를 ASCII 코드로 ‘null'이라고 한다.

 

문자가 나열되다가 ‘0’이 나오는 경우는 문자열이라 하고 문자가 지속되는 경우를 문자배열이라고 한다.

 

문자열을 출력하고 싶은 경우에는 '%s'를 입력하여 문자열을 입력해 주면 된다. 이것은 사람의 편의를 위해 제공된다.

 

// 배열도 Java와 문법이 동일하다.

 

제어문: if/if~else

 

우리가 사용하는 프로그래밍 언어인 C는 순서를 가지고 순차적으로 코딩한 명령어가 시행된다. 이 때 이러한 순서의 흐름을 바꿔주는 역할을 제어문이 수행한다.

 

제어문 'if'을 배우기 전에 우선 논리연산에 대하여 알아보자.

 

논리연산은 참(1)과 거짓(0)을 가지는 연산이다.

 

비교 논리 연산자는 ‘==’이고 이것은 우측과 좌측이 같은지 비교한다.

 

!not이라는 뜻이다.

 

//0이 아니면 다 참으로 본다.

 

대소 연산자를 >, <, >=, <=로 참(1) 또는 거짓(0) 여부를 %d로 출력해 볼 수 있다.

 

선언된 변수에 값이 들어가는 경우는 참으로 인식되고, 값이 들어가지 않은 경우는 거짓으로 인식된다.

 

또한 변수 앞에 !를 붙이는 경우는 해당 변수에 값이 들어갔는지(1) 0이 들어 있는지(0)를 묻는 논리 연산이 되어 버린다.

 

대소 비교 시 ‘=’표시는 항상 오른쪽에 와야 한다.

 

// 대입 연산자를 여러개를 쓸 수 있다.

// ex) iNum3 = iNum2 = iNum1 = 50

 

 

#4. 제어문: if/if~else

 

//printf("%d\n", 2<1);도 논리연산으로 확인해 볼 수 있다.

 

IF

 

문법 :

if () //()안에 논리연산의 내용을 적는다.

{

내용

}//{}안에 참일 때 실행할 내용을 적는다.

 

 

If ~ else

 

if값이 참이 아닐 경우 else를 붙혀 거짓일 경우의 값을 실행한다.

 

문법 :

 

if ()

 

{

 

"내용

}

 

else

 

{

"내용

}

 

 

 

 

반응형

'Busan IT > 제어언어' 카테고리의 다른 글

제어문(if~else, for, while)  (0) 2015.02.11
제어문(if~else, for)  (0) 2015.02.10
실수의 저장방법과 scanf  (0) 2015.02.06
포인터의 개념과 컴퓨터의 데이터 저장 방식  (0) 2015.02.05
포인터 변수의 기초  (0) 2015.02.04
Posted by newind2000
Busan IT/제어기초2015. 2. 6. 17:36

완전 조립 후 센서를 활용한 로봇 만들기



반응형

'Busan IT > 제어기초' 카테고리의 다른 글

OrCAD 매뉴얼과 반파/전파 전류  (0) 2015.02.10
회로 설계 기초(회로도를 그리기 전에 알아야 할 상식)  (0) 2015.02.09
LEGO - Mindstorm #2  (0) 2015.02.05
LEGO - Mindstorm  (0) 2015.02.04
ADC와 Lego Mindstorm  (0) 2015.02.03
Posted by newind2000
Busan IT/제어언어2015. 2. 6. 17:35

실수의 저장방법과 scanf

 

#1. 컴퓨터의 실수 저장 방법

 

학습목표 - 실수를 32bit IEEE형식으로 바꿀 수 있다.

 

컴퓨터는 자료를 기억하려면 메모리의 설정이 필요하다. 컴퓨터의 메모리는 한정되어 있기 때문에 메모리를 쓰려면 기억 공간을 설정해 주어야 한다. 메모리를 확보하기 위해서 우선 1. 변수 선언을 해주어야 한다. ex) char/short/int/long/float/double

// 이 중에 실수를 저장하는 변수는 floatdouble이다.

이 때 변수는 하나 이상을 생성하게 하기 위해 이름을 넣어주어 같은 형의 변수를 구분해야 한다.

 

IEEE 형식에 따른 4byte 실수의 저장방법을 알아보자. 실수 7.25를 예를 들어 설명해 본다.

 

/*부호는 음과 양을 나타낸다. 음일 때는 1, 양일 때는 0을 갖는다.

지수부는 나타나는 값이 1.*의 형태를 갖게 만드는 지수X가 되도록 X-127이 되게 만드는 X값을 넣는다. 가수부는 1.* 형식에서 *를 넣는다.*/

!! 정규화에 무슨 수를 곱하는지가 나오도록 만들어야 한다.

 

0(부호)/00000000(지수부)/00000000000000000000000(가수부)에서

 

7.25EEEE형식으로 변환하면

1. 부호는 양수 임으로 ‘0’

2. 72진수로 바꾸면 111(2)이고 소수점 이하 자리 0.252진수로 바꾸면

 

0.25 * 2 = 0.5 -> 0

0.5 * 2 = 1.0 -> 1

 

11101을 합치면 111.01이다. 1.* 형식에서 111.01으로 바꿔주려면 2칸 앞으로 이동해야 하기 때문 22승이 되어야 하고 X - 1272가 되게 하는 X129이므로 이것을 2진수로 고치면 10000001이다. 이것을 넣어주면,

 

0(부호)/00000000(지수부)/00000000000000000000000(가수부)

 

0(부호)/10000001(지수부)/11010000000000000000000(가수부)

 

nibble로 나누어 16진수로 표현하면

 

0100/0000/1110/1000/0000/0000/0000/0000

40 / E8 / 00 / 00

A / B / C / D 인데 Big endian 방식임으로

 

D / C / B / A 가 되기 때문에 값은 00 00 E8 40 이 된다.

 



 

 

#2. scanf의 개념과 사용

 

//Double형은 float형의 두 배의 용량을 가짐으로 지수부와 가수부가 영역이 늘어난다.

 

컴퓨터의 입력에 대하여 알아본다.

 

출력(output) - printf

입력(input) - scanf

 

우리는 대표적인 출력 명령어인 printf를 배웠고 이 시간에는 입력의 대표적인 명령어인 scanf에 대해 알아본다.

 

모든 값이 고정되어 버리면 수정 작업이 힘들다. 프로그램의 유연성을 위해서 scanf를 쓴다.

 

scanf의 입력방법

 

scanf("표현형식“, 입력할 곳의 주소); 를 입력하면 된다.

 

실습 - 양의 정수를 넣으면 해당 정수의 구구단이 표현되는 프로그램을 코딩해라)

 



/*간단하게 짤 수 있지만 지난 시간에 배운 것을 종합하여 iNum2를 추가하여 짜보았다.

처음에 구구단 코딩을 하면서 헤맸던 이유는 printf의 체계에 대한 정확한 구조를 이해하지 못해서이다. printf("변수를 표시할 형식 or/and 표시할 단순 정보“, 표시할 형식을 표현할 변수);

추가적으로 scanfscanf("변수를 입력할 형식“, 변수); scanf에서 변수를 입력할 형식은 변환 시켜서는 안된다.

*/

 

 

#3. array 배열

 

같은 이름을 쓰면서 여러 개의 자료를 확보하기 위해서 쓰는 것이 array이다.

 

int Smart[5];를 쓰면 20바이트가 확보된다. 뒤에 [정수]를 해당 형식에 곱을 한 만큼의 개수가 생성되기 때문이다.

 

int Smart[5]; 를 생성하여 주소를 확인해 보면 Smart[0] ~ Smart[4]가 생성되는 해당 주소는 연속으로 붙어있다는 것을 확인할 수 있다.

 

이 때 Smart[2]로 변수선언명령어에서 생성 변수 숫자를 바꾸면 run time error가 난다. 이것은 코드를 잘못 짰다는 표시이다. 때문에 배열을 선언할 때 주의를 해야 한다.

 

C는 직접적으로 CPU와 의사소통을 하기 때문에 잘못된 코딩을 하면 CPU에 영향을 줄 수 있다.

 

실습 - Array 배열)

intchar형식의 변수 여러 개를 선언한 후 값을 넣고 출력해 본다.



 

#4. 문자열 출력

 

문자열(string)을 사용하는 방법을 배운다. 끝에 0이 있으면 문자열이라고 부르고 끝에 0이 없으면 문자 배열(character array)이라고 한다.

 

실습 - 문자열)

character함수 5개를 만들어 문자열을 출력해 본다.

//문자열 출력 표시는 %s이다. ‘s'string의 약자이다.


 

출력 양식에 ‘%s'넣은 후 출력하면 0이 나올 때까지 옆에 있는 자료를 지속적으로 출력한다.

 

문자배열을 쉽게 넣을 수 있는 방법은 큰 따옴표를 써서 연속된 숫자를 적어 주는 것이다. 여기서 주의할 점은 변수의 개수 -1개의 값을 넣어주어야 한다는 것이다. 마지막의 입력값은 0이 되어야 하는데 4개만 넣어주면 컴파일러에서 자동으로 마지막 문자를 0으로 처리하기 때문이다.

 

실습 - 문자열 값 끝에 자동적으로 “0”이 추가되는지 확인해 보고 한글 이름도 출력해 본다.


 

 

반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 5. 17:35

Mindstorm #2

 

센서를 활용한 자동차 후방 감지센서 만들기

반응형

'Busan IT > 제어기초' 카테고리의 다른 글

회로 설계 기초(회로도를 그리기 전에 알아야 할 상식)  (0) 2015.02.09
LEGO - Mindstorm #3  (0) 2015.02.06
LEGO - Mindstorm  (0) 2015.02.04
ADC와 Lego Mindstorm  (0) 2015.02.03
마이크로 컴퓨터와 ADC & DAC  (0) 2015.02.02
Posted by newind2000
Busan IT/제어언어2015. 2. 5. 17:34

제어언어 - 포인터의 개념과 컴퓨터의 데이터 저장 방식

#1. 포인터의 개념

 

학습목표 - 포인터의 개념을 이해하고 포인터를 사용하여 값을 출력할 수 있다.

 

C에서 unsigned int uiNum; 이라는 코딩을 하게 되면, CPU에서 메모리에게 해당 형식의 변수를 만들고 메모리에 저장시키라고 명령한다. uiNum=88;의 명령어를 입력하면 uiNum88을 대입한다. 이 때 대입연산자 좌우에 형이 동등해야 대입연산자가 작동하게 된다.

 

//변수를 만들 경우 심볼 테이블을 작성하여 값을 쉽게 나타내 볼 수 있다.

//잘못된 코딩의 경우 error/warning의 메시지가 뜨는데 error시 작동이 되지 않고 //warning이 작동은 가능하되 언어에 맞지 않게 작성되었다는 코딩으로 인식한다.

//ex) int 3.9의 경우 소수점을 절삭하고 3만 표시된다.

 

unsigned int *uip;를 입력하면 unsigned int를 대상으로 하는 포인터가 된다.

uip=&uiPNum;을 입력하면 uip&uiNum 둘 다 주소를 나타내는 변수로 형이 같음으로 작동하게 된다.

// *를 적고 변수명을 적으면 주소를 저장하는 포인터 변수가 된다.

// ‘*’asterisk[as-tuh-risk]로 읽는다.



UiNumuiP의 값과 주소를 출력한다. 이 때 *uiP를 입력한다고 가정해보자. 이 때 *곱셈이 아니라 주소를 찾아가라는 뜻으로 인식된다. 이것은 통상적으로 uiPuiNum을 가르킨다고라고 말한다.

 

그러므로, *uiP를 출력하라는 말은

1. *uiP의 값(uiNum)이 나타내는 주소(uiNum의 주소)를 찾아가

2. 이 주소(uiNum의 주소)가 가지는 변수의 값(88)을 출력하라는 뜻이다.

#2. 포인터의 기본개념 복습과 캐스팅

 

학습목표 - 포인터에 대한 완전한 이해와 변수에 값 대입시 표시 방법을 원하는 대로 바꿀 수 있다.

 

실습 - 포인터의 이해)

unsigned int5개의 값을 선언한 후(90, 80, 70, 60, 50) 포인터 변수를 하나 선언하여 *uip값이 모두 선언한 unsigned int의 변수 값을 출력하도록 코딩하여라.




실습 - 캐스트 연산자를 활용한 경고 표시의 제거

1. character함수를 선언하여 255가 넘는 수를 넣고 캐스팅 연산자를 활용하여 warning을 없애본다.

2. unsigned int함수를 선언하여 16진수(12C) 넣고

 

 

//warning이 뜰 경우 사용자가 이것을 인식하고 있음을 표시하기 위해 캐스트 연산자를 사용한다.

 

캐스트 연산자는 1. 묵시적 2. 명시적 캐스팅이 있다.

1. 컴파일러에서 경고는 띄우지만 오류를 내지 않고 실행하는 경우.

2. 사용자가 캐스트 연산자를 활용하여 적어주는 것.

 

실습 - 진수 표시의 변환)

unsigned 변수를 선언하고 16진수 12C를 넣은 후 16진수로 표현해 본다.

 

 

// 16진수 uiNum = 0x12C;

// 8진수 uiNum = 012C;

#3. 컴퓨터의 데이터 저장 방법

 

학습목표 - 컴퓨터의 데이터 저장 방법을 이해한다.

 

컴퓨터는 메모리에 데이터를 어떻게 저장 하는가에 대한 학습

 

실습 - 컴퓨터의 데이터 저장 방법 이해)

16진수로 1부터 8까지의 수를 입력한 후에 2자리씩 출력하는데 매 출력마다 주소에서 1을 더하여 총 4번 출력해 본다.

 




 

컴퓨터는 빠른 산술계산을 위해서 정수는 뒤집어서 저장한다. 대신 대소비교(논리)는 느려진다. PC의 경우에는 숫자를 뒤집어서 넣고 슈퍼컴퓨터는 숫자를 그대로 집어넣는다. 산술과 논리는 양립한다.

 

컴퓨터 용어로써 숫자를 뒤집어 넣는 방식을 little endian이라고 부른다. 숫자를 그대로 넣는 방식은 big endian이라고 부른다.

 

ucP1씩 더할 때 주소에서 1byte(8bit)씩 커짐으로 16진수(4bit)를 나타내는 자리수에서는 2칸씩 이동하게 된다. 왜냐하면 변수 값에 1을 더하기 때문에

#4. IEEE 형식

 

학습목표 - IEEE를 형식에 맞게 실수를 표현할 수 있다.

 

현재 수업의 초점은 C를 바탕으로 컴퓨터에 대한 이해를 위한 수업이다.

 

float4byte의 실수를 저장하는 명령어이다. 실수를 저장하는 독특한 방법이 있다.

 



 

부호비트(1)/지수부(8)/가수부(23)

 

위와 같은 형태로 바꾸기 위해서는 정규화 과정을 거쳐야 한다.

 

부호비트는 양수일 때 0, 음수일 때 1이고

지수부는 “X-127”형태에서 지수가 1.*인 상태를 맞추기 위한 X의 값을 넣어줘야 한다.

 

 

 

 

 

 

 

 

 

반응형
Posted by newind2000
Busan IT/제어기초2015. 2. 4. 17:35

LEGO - Mindstorm

 

펌웨어를 짤 때 프로그램의 구조를 이해하는데 도움이 되기에 Mindstorm으로 실습한다.

 

1. Sound를 활용한 간단한 멜로디 만들기

 

2. Ultrasonic 센서를 활용하여 거리 차에 따라 다른 소리/문자 출력하기

 

3. 거리 측정기 만들기

반응형

'Busan IT > 제어기초' 카테고리의 다른 글

LEGO - Mindstorm #3  (0) 2015.02.06
LEGO - Mindstorm #2  (0) 2015.02.05
ADC와 Lego Mindstorm  (0) 2015.02.03
마이크로 컴퓨터와 ADC & DAC  (0) 2015.02.02
마이크로 컨트롤러와 프로그램  (0) 2015.01.30
Posted by newind2000