380 likes | 955 Views
PIC 는 우리의 친구. 한국정보통신대학교 디지털미디어연구소. 대상 : 회로 구성 및 프로그램에 대한 경험이 적은 사람 목적 : PIC 에 대한 자신감 얻기 !!! 일정 1 일째 : 기본적인 PIC 회로를 구성하는 방법 알기 PIC 로 LED 제어 2 일째 : PIC 와 PC 간의 통신 , 기본적인 센서 다루는 방법 알기 PIC 와 PC 를 시리얼로 통신하여 LED 를 제어 PIC 로 센서 값을 읽어서 PC 로 전송
E N D
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소
대상: 회로 구성 및 프로그램에 대한 경험이 적은 사람 목적 : PIC에 대한 자신감 얻기!!! 일정 1일째 : 기본적인 PIC회로를 구성하는 방법 알기 PIC로 LED 제어 2일째 : PIC와 PC간의 통신, 기본적인 센서 다루는 방법 알기 PIC와 PC를시리얼로통신하여 LED를제어 PIC로 센서 값을 읽어서 PC로 전송 3~7일째 : 지금까지 배운 것들을 응용해서 새로운 것 만들기. 세미나 소개
PIC는 일종의 CPU ALU / 메모리 / 제어모듈을 모두 포함 제어모듈 : UART통신, 모터제어, Analog-Digital Converter 등 마이크로 컴퓨터 혹은 마이크로 컨트롤러라고 불림. 흔히 마이컴이라 불리기도 . RISC 구조 (보통 35개 정도의 instruction을 갖고 있음) 어쩌구 저쩌구.. PIC16F73 / PIC16F84 / PIC16F877 / PIC12F675 PIC 소개
PIC16F73 적당히 다양한 기능과 적당한 수의 ADC 포트와 적당한 수의 IO핀 등을 제공한다. (28 pin) PWM 까지도 갖추고 있어 웬만한 건 다 가능하다. 연구실에서 가장 많이 사용 <PIC16F73> <L-Luminaria에서의 응용 예> PIC 소개
PIC 소개 좌측 상단부터 1번 핀 동그란 마크가 있음 Master Clear A Port / ADC Port B Port Power VDD-5V VSS-GND oscillator UART PWM C Port
PIC 소개 PIC 1 B Port A Port ADC Power CLOCK Oscillator VDD, VSS C Port C Port UART PWM
PIC 소개 Program memory: 4096x14 Data RAM: 192 Stack: 8 I/O: 22 Analog Pins: 5
PIC16F84 우리 연구소에 널리 돌아다니는 PIC관련 서적인 <PIC16F84의 기초 + α>의 주인공. 현재 확인 결과 연구소에 존재하지 않는 것 같음 아래의 그림과 같이 아주 심플한 구조를 갖고 .. PIC 소개
PIC16F877 스타크에서 울트라 같은 놈 (40 pin) 다양한 기능보다는 많은 포트가 필요할 때 사용되는 것 같음 (경험상). 커서 꽂아 놓기만 해도 뭔가 ‘있어 보이는’ 시각적 효과. 착시. <PIC16F877A> <SOTORO2007에서 응용 예> PIC 소개
PIC 소개 Program memory: 8192x14 Data RAM: 367 Stack: 8 I/O: 33 Analog Pins: 8 Data EEPROM: 256
PIC12F675 적은 포트와 적은 기능을 갖추고 있음 (8 pin) <Nanobot에서 응용 예> PIC 소개
Multimeter 주로 전압이나저항을 재거나 Connectivity 테스트에 사용됨 위의 그림과 같이 파워 세이브를 위해 꺼져있는데 이 때 다시 동작시키기 위해서는 OFF로 돌렸다가 다시 원하는 위치로 돌리면 켜짐. 시가 40만원 상당 디버깅
Scopemeter 주로 전압의 파형(?)을 보기 위해 사용 이쯤만 되도 완전 신세계. 특히 통신이 있을 경우 필수품. 없으면 ? 시가 400만원 상당. 작다 ! 좋다 ! (1기 장선연 선배님 말씀) 디버깅
PIC 관련 PIC16F84의 기초 + α http://mabook.com/isbn.php?isbn=8931531664 PIC용 C언어관련 CCS-C 실전가이드: PIC 마이컴용 C언어 http://mabook.com/isbn.php?isbn=8987516032 전자공학 관련 Physical Computing: 전자회로 구성에대한 쉬운 설명 책
Microchip社 (PIC 제작사) http://www.microchip.com Datasheets http://www.alldatasheet.com 전자부품, 로봇부품, 기계부품 http://www.devicemart.co.kr http://www.comfile.co.kr http://www.sample.co.kr 참고 사이트
회로구성 프로그래밍 생각해 볼 거리 1st Day: 목차
머리 PIC16F73 (PIC의 한 종류) OSC: PIC는 CPU므로 클럭이 필요 에너지: 7805 5V 이상의 전압을 5V로 바꿔 줌(12V 5V) 일반적인 PIC는 5V에서 동작 Output: LED(빛이 나오는 소자) Input: 없음 1st Day: 회로 구성 PIC 5V 12V 7805 Adaptor LED OSC
1st Day: 회로 구성 . Socket-12V Adapter가 꽂힌다. 7805-12v전압을 5v로 떨어뜨린다. . LED-LightEmissive Diode. . OSC-클럭을 발생시킨다. . PIC-마이크로 컨트롤러. .
1st Day: 프로그래밍 A port를 ADC로 사용하지 않음 PIC 내부에 필요한 타이머를 Setting IO 포트인 B port를 Input용으로 사용할 것인지 Output용으로 사용할 것인지 setting LSB-0번 포트/MSB-7번 포트로 Map, 1-In / 0-Out Output으로 지정된 모든 B port에 대해 output signal을 High/Low 중 하나로 결정 1-High / 0-Low
Header File #include <16F73.h> #device adc=8 #FUSES NOWDT //No Watch Dog Timer //다른 클럭 (ex_20Mhz) 주의해야 하는 옵션 #FUSES XT //Crystal osc <= 4mhz #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES BROWNOUT //Reset when brownout detected //클럭에 따라 값을 setting #use delay(clock=4000000) //1일째에는 사용되지 않지만 UART 통신에 관한 옵션 //232통신을 사용하고 Baud Rate이 9,600. Parity Bit을 사용하지 않고 C6, C7 pin을 각각 Tx, Rx핀으로 사용 #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) 1st Day: 프로그래밍(1)
set_tris_b(0b00000000) PIC B ports의 Output / Input 기능 결정 0: Output ( 숫자 0은 ‘O’랑 비슷하니까 Output) 1: Input ( 숫자 1은 ‘I’ 랑 비슷하니까 Input) B7 ~ B0 Ex. set_tris_b(0b00000001) : B0 Pin Input 기능, 나머지 Pin Output 기능 output_b(0b11000000) PIC B ports의 출력의 High/Low 결정 1: High, 0: Out (Digital 이니까) B7 ~ B0 Ex. output_b(0b11000000) : B7, B6 Pin High, 나머지 Pin Low 1st Day: 프로그래밍(2)
delay_ms(500) 일정 시간 동안 프로그램 진행 지연 단위: [ms] delay_ms(500): 500ms 동안 프로그램 지연 1st Day: 프로그래밍(3)
Delay 시간을 500ms, 200ms, 10ms로 바꾸면서 실험해보세요. 그리고 어떤 이상한 현상이 일어나면 왜 그런 현상이 일어나는지를 생각해보세요. 1st Day: 생각해 볼 문제
UART 통신 회로구성 프로그래밍 센서값 읽어오기 센서 회로구성 프로그래밍 2nd Day: 목차
MAX232: PIC를 PC와 RS232 통신 할 수 있게 해주는 녀석 Output: LED, PC로 송신 Input: PC로부터 오는 값 (디지털) UART 통신: 회로 구성 PIC LED 5V 12V 7805 Adaptor MAX232 OSC
UART 통신: 회로 구성 . Socket-12V Adapter가 꽂힌다. 7805-12v전압을 5v로 떨어뜨린다. . LED-LightEmissive Diode. . OSC-클럭을 발생시킨다. . Serial Cable을 통해 PC로 전송 PIC-마이크로 컨트롤러. . MAX232-MAXIM社의 232Chip .
UART 통신: 프로그래밍 Standard Input이 PIC의 Rx (Receive)pin으로 설정. 이 경우 UART로 연결된 PC의 키보드 Input을 읽어 온다. Standard Out이 PIC의 Tx (Transmit)pin으로 설정. 이 경우 UART로 연결된 PC로 문자가 전송된다.
getc() PC에서 오는 1byte data 수신하는 함수 8 bit character return PC에서 Data 수신 전까지 다음 줄로 안 넘어감(내부적으로 Loop 문) printf(“LED B7 On\n\r”) PC의 하이퍼터미널에 그대로 찍힘 보통 자신이 짠 PC와의 통신 프로그램에서는 ‘putc()’를 이용해서 1byte씩 보냄 UART 통신: 프로그래밍(2)
센서 뭔가를 측정해서 전기적으로 알려주는 녀석 뭔가?: 열, 빛, 연기, 습도, 바람 등 우리가 사용 할 센서: CDS(Cadmium Sulfide) 빛 감지 센서 밝으면 저항값 감소 어두우면 저항값 증가 센서
센서: 회로 구성 • Input: CDS(아날로그) • Output: PC로 송신(센서 값) PIC CDS 5V 12V 7805 Adaptor MAX232 OSC
센서: 회로 구성 . Socket-12V Adapter가 꽂힌다. 7805-12v전압을 5v로 떨어뜨린다. . LED-LightEmissive Diode. . CDS센서-조도센서 . Serial Cable을 통해 PC로 전송 PIC-마이크로 컨트롤러. . MAX232-MAXIM社의 232Chip . . OSC-클럭을 발생시킨다.
센서: 프로그래밍 ADC로 설정된 포트 중 어느 곳에서 값을 읽어 올 것인지를 결정 Set_adc_channel() 함수로 지정된 ADC포트의 값을 읽어서 리턴한다.
read_adc() PIC로 들어오는 아날로그 입력 값을 읽음 PIC 종류에 따라서 8bit or 16bit int return PIC16F73은 8bit ADC int: 8bit, long int: 16bit 센서: 프로그래밍(2)
기타 센서들 • Tilt Sensor: 기울기측정 • IR 거리 센서 • 압력센서 • 온도센서 • 디지털 나침반 • 동작 감지 센서 • 버튼 • 등등…
Actuators • LED • 전구 • 솔레노이드 • 모터 • 스피커 • 펠티어소자 • 등등…