Você está na página 1de 56

Programando para Controle de dispositivos pelo Computador

Luis Claudio Gamba Lopes

Informtica Industrial/Automao SDM - Sistemas Digitais e Microprocessados

CEFET-MG Campus III - Leopoldina

10 de setembro de 2009

Sumrio

1 Introduo

2 Portas de Comunicao do Computador e suas caractersticas 2.1 2.2 2.3 Caractersticas Eltricas Porta Paralela . . . . . . . . . . . . . . . . . . . . . . Caractersticas Eltricas Porta Serial . . . . . . . . . . . . . . . . . . . . . . . Caractersticas Eltricas Porta USB . . . . . . . . . . . . . . . . . . . . . . . .

2 3 5 6

3 Hardware para Acionamento de Dispositivos Externos 3.1 Circuito de Potncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 7

4 Porta Paralela 4.1 4.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 9 10

5 Porta Serial 5.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 5.1.3 Condicionamento de Sinal RS232/TTL . . . . . . . . . . . . . . . . . Circuito Microcontrolado (PIC) . . . . . . . . . . . . . . . . . . . . . Transmisso por Infravermelho (IR) . . . . . . . . . . . . . . . . . . .

11 11 11 12 14

5.1.4 5.2

Transmisso por Rdio Freqncia (RF) . . . . . . . . . . . . . . . . .

15 17 17 18

Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 5.2.2 Microcontrolador (PIC) . . . . . . . . . . . . . . . . . . . . . . . . . PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Porta USB (Emulando Serial) 6.1 6.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19 19 20

A Cdigos fontes Pic A.1 Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22 22

B Cdigos fontes PC B.1 Paralela Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24 24 24 25 26

B.2 Paralela Windows

B.3 Serial Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.4 Serial Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C Microcontrolador PIC16F628A C.1 Congurao das Portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Congurao Interrupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Congurao Porta Serial Assncrona . . . . . . . . . . . . . . . . . . . . . .

28 37 38 39

D Componentes D.1 Alguns Componentes Utilizados . . . . . . . . . . . . . . . . . . . . . . . . .

41 41

D.1.1 Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.2 Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.3 Diodo e LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.4 Transistor Bipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.5 Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.6 Regulador de Tenso . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.7 Rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.8 Conversor RS232/TTL . . . . . . . . . . . . . . . . . . . . . . . . . .

41 42 42 44 44 45 46 47

Lista de Figuras
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Porta Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Porta USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinagem Porta Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinagem Porta Serial (DB9 Macho PC) . . . . . . . . . . . . . . . . . . . . . Conexo Porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sinais da porta serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinagem Porta USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 4 5 5 6 6

3.1

Circuito de acionamento de dispostivos de potncia . . . . . . . . . . . . . . .

4.1 4.2

Circuito Porta Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Foto Circuito Porta Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 10

5.1 5.2 5.3 5.4 5.5

Conversor RS232/TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PIC porta serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Foto PIC porta serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuito de comunicao Infravermelho . . . . . . . . . . . . . . . . . . . . . Foto do Foto-diodo e mdulo receptor infravermelho . . . . . . . . . . . . . .

12 13 13 14 14

5.6 5.7 5.8 5.9

Circuito transmissor rdio frequncia PC . . . . . . . . . . . . . . . . . . . . . Circuito transmissor rdio frequncia PIC . . . . . . . . . . . . . . . . . . . . Circuito receptor de rdio frequncia acionando 2 motores . . . . . . . . . . . Foto dos mdulos receptor e transmissor de rdio frequncia . . . . . . . . . .

15 16 17 17 18

5.10 Programa terinal gtkterm (linux) . . . . . . . . . . . . . . . . . . . . . . . . .

6.1

PIC porta USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

C.1 Pinagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Foto Pic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Diagrama Interno do PIC16F628 . . . . . . . . . . . . . . . . . . . . . . . . . C.4 PORTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.5 PORTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.6 memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.7 Bank 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.8 Bank 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.9 Opcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.10 Congurao PORTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.11 Congurao PORTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.12 Congurao interrupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.13 Congurao Transmisso Serial . . . . . . . . . . . . . . . . . . . . . . . .

30 30 31 32 33 34 35 36 37 38 38 39 39 40 40

C.14 Congurao Recepo Serial . . . . . . . . . . . . . . . . . . . . . . . . . . C.15 Congurao Velocidade Serial . . . . . . . . . . . . . . . . . . . . . . . . .

D.1 Smbolo Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 Foto Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.3 Smbolo Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.4 Foto Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.5 Smbolo Diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.6 Foto Diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.7 Smbolo LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.8 Foto LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.9 Smbolo Transistor NPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.10 Foto Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.11 Smbolo Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.12 Foto Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41 41 42 42 43 43 43 43 44 44 44 45 45 46 46 47 47

D.13 Smbolo Regulador de Tenso . . . . . . . . . . . . . . . . . . . . . . . . . . D.14 Foto Regulador de Tenso . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.15 Smbolo Rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.16 Foto Rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.17 Conversor RS232/TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Lista de Tabelas
2.1 2.2 2.3 2.4 Tipos de Operao da porta paralela . . . . . . . . . . . . . . . . . . . . . . . Pinos da porta paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de porta paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Congurao porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 5 6

C.1 Microcontrollers Memory

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

28 28 29 29

C.2 Microcontroller Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Special Microcontroller Features . . . . . . . . . . . . . . . . . . . . . . . . . C.4 Peripheral Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

D.1 Cdigo de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

Resumo

Esse material tem como objetivo introduzir os conceitos bsicos do uso de portas de comunicao de um computador, a programao necessria para criao dos softwares e o hardware bsico para acesso e controle das portas . Os exemplos utilizados so vlidos para os sistemas operacionais Linux e Windows, mas podem ser convertidos para outros sistemas.

Captulo 1 Introduo
Este documento tem como objetivo fornecer uma introduo a programao para controle de dispositivos externos pelo computador, utilizando linguagem c nos sistemas operacionais Linux e Windows. So abordados mtodos de programao para controle atravs da porta paralela, serial e USB (emulando porta serial) bem como os circuitos bsicos de interface discretos e microcontrolados. Pr-requisitos: Conhecimento de uma linguagem de programao e noes bsicas de eletrnica.

Captulo 2 Portas de Comunicao do Computador e suas caractersticas


As portas de um computador tem a funcionalidade de permitir o acesso de comunicao e controle entre dispositivos externos e o computador. Atravs das portas possvel interagir com dispositivos externos, enviando ou lendo sinais eltricos para eles. Cada tipo de porta tem suas caractersticas e aplicaes.

Figura 2.1: Porta Paralela

Figura 2.2: Porta Serial

Figura 2.3: Porta USB

2.1 Caractersticas Eltricas Porta Paralela


A porta paralela um conector fmea de 25 pinos (DB25) que ca situada atrs do gabinete, originalmente utilizada para o controle de impressoras, seus pinos receberam os nomes relativos a essa atividade. A porta paralela pode funcionar em 3 modos conguravis na BIOS do computador: Tabela 2.1: Tipos de Operao da porta paralela
Modo SPP (Standard Parallel Port) EPP ( Enhanced Parallel Port ) ECP (Enhanced Capabilities Port) Direo Transmisso unidirecional Transmisso bidirecional Transmisso bidirecional+DMA Velocidade Mxima 150KB/s(4 bits) 2 MB/s (8 bits) 2 MB/s (8 bits)

O tamanho mximo do cabo de ligao de 8 metros, quanto menor o cabo menos interferncias e maior a velocidade.

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

STROBE AUTOFEED D0 ERROR D1 INIT D2 SELECT IN D3 GND D4 GND D5 GND D6 GND D7 GND AKNOWLEDGE GND BUSY GND PAPER END GND SELECT OUT

Figura 2.4: Pinagem Porta Paralela

Tabela 2.2: Pinos da porta paralela


<= in => out => => => => => => => => => <= <= <= <= => <= => => == DB25 pin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18-25 Name of Signal -Strobe Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 -Ack +Busy +PaperEnd +SelectIn -AutoFd -Error -Init -Select Ground Reg Bit C0D0 D1 D2 D3 D4 D5 D6 D7 S6+ S7S5+ S4+ C1S3+ C2+ C3Function Notes Set Low pulse >0.5 us to send Set to least signicant data ... ... ... ... ... ... Set to most signicant data IRQ Low Pulse 5 uS, after accept High for Busy/Ofine/Error High for out of paper High for printer selected Set Low to autofeed one line Low for Error/Ofine/PaperEnd Set Low pulse > 50uS to init Set Low to select printer

Os sinais eltricos da porta paralela depende do seu tipo e so mostrados na Tabela 2.3. 4

Tabela 2.3: Tipos de porta paralela


Data output (>2.4V) Data line sink (<0.4V) Control output (>2.4 V) Signal lines (short circuit) Control line sink (<0.4V) Normal 2.6 mA 24 mA 0.5 mA* 1 mA 7 mA UM82C11-C 2 mA 24 mA 1.5 mA ? 7 mA IEEE 1284 level II 14 mA 14 mA ? ? 14 mA

2.2 Caractersticas Eltricas Porta Serial


A porta serial um conector macho de 9 pinos (DB9) ou de 25 pinos, situada atrs do gabinete, originalmente utilizada para dispositivos de comunicao externos (MODEMs), seus pinos receberam nomes relativos sua utilizao. Os sinais da porta serial seguem o padro RS232, sendo o nvel lgico 0 representado por uma tenso de +3 a +15Volts e o nvel lgico 1 representado por uma tenso de -3 a -15Volts.

1 6 2 7 3 8 4 9 5

DCD DSR RX RTS TX CTS DTR RI SG

Figura 2.5: Pinagem Porta Serial (DB9 Macho PC)

Figura 2.6: Conexo Porta Serial

Para utilizar a porta serial necessrio fazer sua congurao antes do uso, os parametros de congurao so mostrados na tabela 2.4. 5

Tabela 2.4: Congurao porta Serial


Descrio Velocidade Nmero de Bits de dados Paridade Nmero de stop bits Controle de uxo 7 ou 8 bits Par, mpar ou Nenhuma 1 ou 2 Hardware, Software ou Nenhum Padro para uso de microcontroladores 2400,4800,9600,19200 bauds 8 bits Nenhuma 1 bit Nenhum

Figura 2.7: Sinais da porta serial

2.3 Caractersticas Eltricas Porta USB


A porta usb um conector fmea de 4 pinos, situada atrs ou na frente do gabinete Os sinais eltricos da porta USB no podem ser utilizados diretamente, sempre necessitando de circuitos externos para isso.
1

VCC
2

D
3

D+

4 GND

Figura 2.8: Pinagem Porta USB

Captulo 3 Hardware para Acionamento de Dispositivos Externos


Para se fazer um projeto de Hardware de um circuito eletrnico, necessrio o conhecimento de alguns conceitos de eletrnica e o conhecimento do funcionamento dos componentes que vo compor o projeto.

3.1 Circuito de Potncia


Na Figura 3.1 mostrado o circuito bsico de acionamento de dispositivos de potncia.

Vcc

Dispositivo

4N25 1K
1

Entrada

D?

RELAY Dispositivo

4.7K
2

BC547
3

Figura 3.1: Circuito de acionamento de dispostivos de potncia

Captulo 4 Porta Paralela


4.1 Hardware

Figura 4.1: Circuito Porta Paralela

Figura 4.2: Foto Circuito Porta Paralela

4.2 Programao
Programas par linux e windows com a porta no modo SPP B.1 B.2.

10

Captulo 5 Porta Serial


5.1 Hardware
Para utilizao da porta serial normalmente necessrio um circuito USART para se comunicar com a USART interna do PC, esse circuito pode ser substitudo por um registrador de deslocamento e algumas portas lgicas ou por um microcontrolador que j possua um circuito USART internamente ou consiga emular por software uma USART.

5.1.1 Condicionamento de Sinal RS232/TTL


A maioria dos circuitos no trabalha com os padres RS232 descritos na Seo 2.2, sendo necessrio a converso desse padro para o padro do circuito a ser construdo, um dos padres mais utilizados o TTL, j existindo solues prontas com os circuitos MAX232 ou HIN232.

11

Figura 5.1: Conversor RS232/TTL

5.1.2 Circuito Microcontrolado (PIC)


Um circuito simples para interface serial como o da Figura5.2 pode ser montado com um microcontrolador PIC16F628A e um conversor MAX232, nesse circuito o PORTA do PIC utilizado como entrada e o PORTB como sada, dois pinos do PORTB so utilizados para a comunicao serial RB1(RX) e RB2(TX)

12

10k

10k

10k

10k

10k

10k

10k

10k

R12

R10

R11

R13

R14

+5V

R7

R8

R9

S6
1 2

S6
1 2

S6
1 2

S5
1 +5V 2

S4 U2
V+ 2 1

1uF

C3

C2 1uF

MAX232
1 C1+

S3
2 1 2

CONN1 C1
1 4 1

C1 6 2

1uF
V

C4
1 1 U1 18 17 16 15 14 13 12 11 10 +5V 1 1 RA1 RA0 RA7/OSC1 RA6/OSC2 Vdd RB7 RB6 RB5 RB4

S2
2

C2+

1uF
6 2 7 3 8 4 9 5 2

C2 11

RA2 RA3 RA4 MCLR/RA5 Vss RB0 RB1 RB2 RB3

S1
2

2 Tx1 In 3 4 5

14

Tx1 Out

13

Rx1 In

Rx1 Out

12

Tx2 Out

Tx2 In

10 6 9 7 8 9

R1

330
1

LED1
2

Rx2 In

Rx2 Out

R2

330
1

LED2
2

DB9 Femea PIC16F628A

R3

330
1

LED3
2

R4

330
1

LED4
2

R5

330
1

LED5
2

R6

330
1

LED6
2

Figura 5.2: PIC porta serial

Figura 5.3: Foto PIC porta serial

13

5.1.3 Transmisso por Infravermelho (IR)

Figura 5.4: Circuito de comunicao Infravermelho

Figura 5.5: Foto do Foto-diodo e mdulo receptor infravermelho

14

5.1.4 Transmisso por Rdio Freqncia (RF)

CONN2
1 2

U2
Vcc 1 IN GND 1 1 OUT 3 +5V

C2

330uF
2

100uF

R1

7805

330R

C1

2 1 2

LED1

C?

CONN1
2 1 6 1

MAX232
1 C1+

U1
V+ 2 1

C?
2

ANT1
1

C1 6 2 1

2 7 2 3 8 4 9 5

C2+

3 3 2 2 1

VCC DATA GND

C2 11

C?
Tx1 In 1

14

Tx1 Out

13

Rx1 In

Rx1 Out

12

U3

Tx2 Out

Tx2 In

10

Rx2 In

Rx2 Out

Nao esqueca dos pinos 15(GND) e 16 (VCC)

Transmissor serial PC
TITLE FILE: PAGE OF REVISION: DRAWN BY:

Luis Claudio Gamboa Lopes

Figura 5.6: Circuito transmissor rdio frequncia PC

15

TX 315Mhz

Jumper Debug serial CONN3

+5V

ANT

C?

CONN2
1 2

U2
Vcc 1 IN GND OUT 3 +5V

10K

10K

R1

7805

280R

R5

R4

R3

10K

1000uF
2

100uF

R2

10K

10K

10K

10K

10K

R9

R8

R7

R6

CONN4
1 2 3 4 5 6 +5V

U3

TX 315Mhz

Figura 5.7: Circuito transmissor rdio frequncia PIC

C2

C1

CONN3
1 1 2 2 3 4 +5V 5 6

LED1
U1 1 2 3 4 5 6 7 8 9 18 17 16 15 14 13 12 11 10 +5V RA2 RA3 RA4 MCLR/RA5 Vss RB0 RB1 RB2 RB3 RA1 RA0 RA7/OSC1 RA6/OSC2 Vdd RB7 RB6 RB5 RB4

C3

33pF

4MHz C4

33pF

C5 100nF

CONN1

1 2 3

ANT?
+5V 1 ANT VCC DATA GND 4 3 2 1 +5V

4 5 6

R10 10K

R11 10K

R12 10K

R13 10K

U4

TITLE FILE: PAGE OF REVISION: DRAWN BY:

16

U7

RX 315Mhz
Vcc DATA DATA GND GND GND +5V 1 1 IN GND 2 2 7805 1 OUT 3 1 2 3 4 5 6 7 8 ANT

U4

+5V

+5V

ANT1

C2

C1

C3

3 4 5 6 7 8 9

RA4 MCLR/RA5 Vss RB0 RB1 RB2 RB3

RA7/OSC1 RA6/OSC2 Vdd RB7 RB6 RB5 RB4

16 15

U6

1.5K

R1

5.2 Programao
5.2.1 Microcontrolador (PIC)
O microcontrolador PIC16F628A j possu uma USART interna, basta congurar a USART interna e a interrupo por recebimento de dados pela serial como no programa A.1. 17

330uF

B1 10,8V
2 1 2

+5V

100uF

100nF

+5V U1 1 2 18 17

L293
1 2 3 CHIP INHIBIT INPUT 1 OUTPUT 1 GND GND OUTPUT 2 INPUT 2 VC

U2
+5V VSS INPUT 4 OUTPUT 4 GND GND OUTPUT 3 INPUT 3 CHIP INHIBIT 2 16 15 14 13 12 11 10 9 +5V

C4
RA1 RA0

33pF

RA2 RA3

20MHz
4

M2
+5V 5

M1

14 13 12

C5

33pF

6 7 8

Vcc 11 10

CONN2
1

LD293DNE (diodo interno/600mA)


2 3

Jumper selecao de alimentacao

+5V

2 1

Jumper debug serial


TITLE

ROBO FUTEBOL V1.0

Figura 5.8: Circuito receptor de rdio frequncia acionando 2 motores

Figura 5.9: Foto dos mdulos receptor e transmissor de rdio frequncia

LED1

CONN1

FILE: PAGE OF

REVISION: DRAWN BY:

Luis Claudio Gamboa Lopes Luis Claudio Gamboa Lopes

5.2.2 PC
Programas para Linux e Windows com porta no modo 9600 8N1 B.3 B.4.]

Figura 5.10: Programa terinal gtkterm (linux)

18

Captulo 6 Porta USB (Emulando Serial)


USB Data acquisition with PIC18F4550 This project is simple and small component count USB data acquisition or USB DAQ. The main core of USB device is PIC18F4550 .The rmware for PIC modied from Microchip CDC library.

6.1 Hardware
Specications

8 Digital output 8 Digital input 8 Analog output No external power required Simple ASCII command 3 command to communicate PC with PIC

19

Figura 6.1: PIC porta USB

6.2 Programao
I use Delphi 6 on PC side to communicate with PIC18F4550 source code availible. Cdigo

20

Referncias
Minicurso Comunicao Serial - RS232, Edmur Canzian - CNZ Engenharia e Informtica Ltda (http://www.professores.aedb.br/arlei/AEDB/Arquivos/rs232.pdf) Linux I/O port programming mini-HOWTO- Riku Saikkonen - (http://tldp.org/HOWTO/IOPort-Programming.html) PIC16F627A/628A/648A Data Sheet, Microchip ,DS40044F

21

Apndice A Cdigos fontes Pic


A.1 Serial
LIST P=16F628A INCLUDE <p16f628A.inc> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF

ERRORLEVEL -302

CBLOCK 0x70 ;variaveis para salvar contexto na interrupcao W_TEMP S_TEMP ENDC ;inico ORG 0X0000 GOTO INICIO ;interrupcao ORG 0X0004 ;salva contexto MOVWF W_TEMP SWAPF STATUS,W MOVWF S_TEMP ;le serial ; BTFSS PIR1,RCIF ;verifica se interuupcao da porta serial ; GOTO FIMS BANKSEL RCREG MOVFW RCREG MOVWF PORTB MOVFW PORTA MOVWF TXREG BCF PIR1,RCIF ;restaura contexto FIMS: SWAPF S_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE ;programa principal INICIO: ; configura portas MOVLW B00000111 MOVWF CMCON ;configura RA0,RA1,RA2,RA3 BANKSEL TRISA MOVLW B11111111 MOVWF TRISA MOVLW B00000010 MOVWF TRISB ;PORTB ,RB1 IN BANKSEL PORTB ; inicializa serial MOVLW B10010000 MOVWF RCSTA BANKSEL TXSTA MOVLW B00100100 MOVWF TXSTA MOVLW D25;25 = 9600-8N1 MOVWF SPBRG BANKSEL RCSTA ; habilita interrupcoes MOVLW B11000000;habilita GIE PEIE MOVWF INTCON BANKSEL PIE1 MOVLW B00100000;habilita RCIE

22

MOVWF PIE1 BANKSEL PIR1 CLRF PORTB ;loop infinito MAIN: GOTO MAIN END

23

Apndice B Cdigos fontes PC


B.1 Paralela Linux
#include #include #include #include #include #include <unistd.h> <stdio.h> <stdlib.h> <sys/perm.h> <sys/resource.h> <asm/io.h>

#define BASEPORT 0x378

void main() { unsigned char data; //pede permisso de acesso if (ioperm (BASEPORT, 3, 1)) { printf ("Erro ioperm\n"); exit (1); }; /*********************** Programa principal **************************/ //escreve dados data=0xA5; outb (data, BASEPORT); //l dados data = inb (BASEPORT+1);

/******************** Finalizao ******************************/ //libera permisso de acesso if (ioperm (BASEPORT, 3, 0)) { printf ("Erro ioperm\n"); exit (1); }; };

B.2 Paralela Windows


/* Programa para acesso a porta paralela */ #include <conio.h> #include <stdio.h> #include <windows.h> /* endereo da porta */ #define BASE_ADDRESS

0x378

/* offset dos registros */ #define DATA 0 #define STATUS 1 #define CONTROLL 2 typedef short _stdcall (*INP32)(short PortAddress); typedef void _stdcall (*OUT32)(short PortAddress, short Data); int main(void) {

24

short value; short des; unsigned char data; HINSTANCE hLib; INP32 Inp32; OUT32 Out32; /******************** Inicializao da biblioteca ***********************/ //carrega bibiloteca if ((hLib = LoadLibrary("inpout32.dll")) == NULL) { printf("Unable to load inpout32.dll, did you copy it to the system folder?\n"); system("pause"); return 0; } //carrega funo de leitura if ((Inp32 = (INP32)GetProcAddress(hLib, "Inp32")) == NULL) { printf("Unable to establish handle to input function.\n"); system("pause"); return 0; }

//carrega funo de escrita if ((Out32 = (OUT32)GetProcAddress(hLib, "Out32")) == NULL) { printf("Unable to establish handle to output function.\n"); system("pause"); return 0; } /*********************** Programa principal **************************/ //escreve dados data=5; Out32(BASE_ADDRESS, data); //l dados data = Inp32(BASE_ADDRESS+1);

/******************** Finalizao ******************************/ FreeLibrary(hLib); system("pause"); return 1; }

B.3 Serial Linux


#include #include #include #include #include #include #include #include #define #define #define #define #define <sys/types.h> <sys/stat.h> <fcntl.h> <termios.h> <stdio.h> <stdlib.h> <unistd.h> <string.h>

BAUDRATE B9600 MODEMDEVICE "/dev/ttyS0" _POSIX_SOURCE 1 /* POSIX compliant source */ FALSE 0 TRUE 1

volatile int STOP=FALSE; int main() { int fd,c; struct termios newtio; //configurao fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd <0) {perror(MODEMDEVICE); exit(-1); } // tcgetattr(fd,&oldtio); /* save current port settings */ bzero(&newtio, newtio.c_cflag newtio.c_iflag newtio.c_oflag sizeof(newtio)); = BAUDRATE |CS8 | CLOCAL | CREAD; = IGNPAR|ICRNL|IGNBRK; = 0;

/* set input mode (non-canonical, no echo,...) */ newtio.c_lflag = 0; newtio.c_cc[VTIME] newtio.c_cc[VMIN] = 0; = 5; /* inter-character timer unused */ /* blocking read until 5 chars received */

25

tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio);

//programa c=0; while (1) {

/* loop for input */

// l dado do teclado c=getchar(); //escreve na porta serial write (fd,&c,1); usleep(1000); //l porta serial c=0; read (fd,&c,1); usleep(1000); //imprime caracter recebido printf("%c",c); fflush(stdout); }

return 0; }

B.4 Serial Windows


#include #include #include #include #include <conio.h> <stdio.h> <time.h> <windows.h> <string.h>

#define BAUDRATE 9600 #define MODEMDEVICE "com1" int main() { HANDLE hCom; char c; DWORD nbytes; // variables used with the com port BOOL bPortReady; DCB dcb; COMMTIMEOUTS CommTimeouts; //configurao hCom = CreateFile(MODEMDEVICE, GENERIC_READ | GENERIC_WRITE, 0, // exclusive access NULL, // no security OPEN_EXISTING, 0, // no overlapped I/O NULL); // null template bPortReady = SetupComm(hCom, 2, 128); // set buffer sizes bPortReady = GetCommState(hCom, &dcb); dcb.BaudRate = BAUDRATE; dcb.ByteSize = 8; dcb.Parity = NOPARITY; // dcb.Parity = EVENPARITY; dcb.StopBits = ONESTOPBIT; dcb.fAbortOnError = TRUE; // set XON/XOFF dcb.fOutX = FALSE; // XON/XOFF off for transmit dcb.fInX = FALSE; // XON/XOFF off for receive // set RTSCTS dcb.fOutxCtsFlow = FALSE; // turn off CTS flow control dcb.fRtsControl = RTS_CONTROL_DISABLE; // // set DSRDTR dcb.fOutxDsrFlow = FALSE; // turn off DSR flow control dcb.fDtrControl = DTR_CONTROL_DISABLE; // bPortReady = SetCommState(hCom, &dcb); // Communication timeouts are optional bPortReady = GetCommTimeouts (hCom, &CommTimeouts); CommTimeouts.ReadIntervalTimeout = MAXDWORD;

26

CommTimeouts.ReadTotalTimeoutConstant = 0; CommTimeouts.ReadTotalTimeoutMultiplier = 0; CommTimeouts.WriteTotalTimeoutConstant = 0; CommTimeouts.WriteTotalTimeoutMultiplier = 0; bPortReady = SetCommTimeouts (hCom, &CommTimeouts);

c=0; while (1) {

/* loop for input */

// l dado do teclado c=getchar(); //escreve na porta serial WriteFile(hCom, &c, 1, &nbytes,NULL); Sleep(1); //l porta serial c=0; ReadFile(hCom, &c, 1,&nbytes, NULL); Sleep(1); //imprime caracter recebido printf("%c",c); fflush(stdout); }

return 0; }

27

Apndice C Microcontrolador PIC16F628A


O microcontrolador um circuito integrado que pode ser programado para executar determinas funes. O PIC utilizado no projeto o PIC16F628, suas caractersticas so mostradas nas Tabelas C.1, C.2, C.3 e C.4. Tabela C.1: Microcontrollers Memory
Device PIC16F627 PIC16F628 FLASH Program 1024 x 14 2048 x 14 RAM Data 224 x 8 224 x 8 EEPROM Data 128 x 8 128 x 8

Tabela C.2: Microcontroller Features


Operating speeds from DC - 20 MHz Interrupt capability 8-level deep hardware stack Direct, Indirect and Relative Addressing modes 35 single word instructions All instructions single cycle except branches

28

Tabela C.3: Special Microcontroller Features


Internal and external oscillator options Precision Internal 4 MHz oscillator factory calibrated to +/-1% Low Power Internal 37 kHz oscillator External Oscillator support for crystals and resonators. Power saving Sleep mode Programmable weak pull-ups on PORTB Multiplexed Master Clear/Input-pin Watchdog Timer with independent oscillator for reliable operation Low voltage programming In-Circuit Serial Programming (via two pins) Programmable code protection Brown-out Reset Power-on Reset Power-up Timer and Oscillator Start-up Timer Wide operating voltage range. (2.0 - 5.5V) Industrial and extended temperature range High Endurance Flash/EEPROM Cell 100,000 write Flash endurance 1,000,000 write EEPROM endurance 100 year data retention

Tabela C.4: Peripheral Features


16 I/O pins with individual direction control High current sink/source for direct LED drive Analog comparator module with: Two analog comparators Programmable on-chip voltage reference (VREF) module Selectable internal or external reference Comparator outputs are externally accessible Timer0: 8-bit timer/counter with 8-bit programmable prescaler Timer1: 16-bit timer/counter with external crystal/clock capability Timer2: 8-bit timer/counter with 8-bit period register, prescaler and postscaler Capture, Compare, PWM module 16-bit Capture/Compare 10-bit PWM Addressable Universal Synchronous/Asynchronous Receiver/Transmitter USART/SCI

A pinagem do microcontrolador mostrada na Figura C.1, onde pode se perceber que cada pino tem mais de uma funo, a funo utilizada pode ser programada via software e pode ser mudada durante a execuo do programa.

29

Figura C.1: Pinagem

Figura C.2: Foto Pic Na Figura C.3 mostrado os blocos lgicos internos do microcontrolador e seus perifricos.

30

Figura C.3: Diagrama Interno do PIC16F628 As funes dos pinos e os tipos de sinais so descritos nas Figuras C.4 e C.5.

31

Figura C.4: PORTA

32

Figura C.5: PORTB O mapa de memria mostrado na Figura C.6 e os dois bancos mais utilizados so mostrados nas Figuras C.7 e C.8;

33

Figura C.6: memoria

34

Figura C.7: Bank 0

35

Figura C.8: Bank 1 As 35 instrues assembly do PIC16F628 so listadas na Figura C.9.

36

Figura C.9: Opcodes

C.1 Congurao das Portas


O pic16f628a possui duas portas de 8 bits (PORTA e PORTB), os pinos das portas podem ser congurados como entradas ou sadas, essa congurao feita nos registradores TRISA para o PORTA e TRISB para o PORTB. Colocar um bit com o valor 1 no registrador TRISx indica que o pino respectivo no PORTx ser entrada, colocar 0 siginica que o pino ser uma sada. No pic16f628 todos os pinos das duas portas podem ser usados com entrada, como sada apenas o pino RA5 no pode ser utilizado e o pino RB4 do tipo coletor aberto necessitando de um resistor de pull-up ligado a ele para funcionar.

37

Figura C.10: Congurao PORTA o PORTA e o PORTB tem funes multiplexadas em vrios pinos, se essas funes estiverem ativadas o pino do PORTx no pode ser utilizado como entrada e sada de dados digitais.

Figura C.11: Congurao PORTB

C.2 Congurao Interrupes


O pic16f628A possui trs registradores de congurao de interrupo, todas as interrupes so tratadas no endereo 0x0004 da memria de programa.

38

Figura C.12: Congurao interrupes

C.3 Congurao Porta Serial Assncrona


Para se congurar a USART para modo de comunicao serial assncrono existem trs registradores. Para leitura e escrita serial existem mais dois registradores, TXREG e RCREG respectivamente.

Figura C.13: Congurao Transmisso Serial

39

Figura C.14: Congurao Recepo Serial

Figura C.15: Congurao Velocidade Serial

40

Apndice D Componentes

D.1 Alguns Componentes Utilizados


Para facilitar o entendimento do projeto, descrito uma breve explicao sobre as funes dos componentes utilizados serem utilizados.

D.1.1 Resistor
Resistor utilizado principalmente para limitar a corrente em outros componentes. Seu valor calculado com a utilizao da Lei de Ohm I = V . R

Figura D.1: Smbolo Resistor

Figura D.2: Foto Resistor Nos resitores comerciais seus valores so representados pelo cdigo de cores descrito na Tabela D.1. 41

Tabela D.1: Cdigo de Cores


Cores Prata Ouro Preto Marrom Vermelho Laranja Amarelo Verde Azul Violeta Cinza Branco 1o anel 1o digito 0 01 02 03 04 05 06 07 08 09 2o anel 2o digito 0 01 02 03 04 05 06 07 08 09 3o anel Multiplicador 0,01 0,1 1 10 100 1 000 10 000 100 000 1 000 000 10 000 000 4o anel Tolerncia 10% 5% 1% 2% 3% 4% -

D.1.2 Interruptor
Interruptores so chaves mecnicas so utilizados para mudana de estado (ligado ou desligado por exemplo), so dispositivos de entrada que permitem o usurio interagir com circuito. Normalmente so necessrios resistores de pull-up ou pull-down quando so utilizados junto com os microcontroladores, neste caso ainda necessrio a aplicao de uma tcnica de debouncig por software(anti-repique).

Figura D.3: Smbolo Interruptor

Figura D.4: Foto Interruptor

D.1.3 Diodo e LED


O diodo funciona como uma vlvula eltrica, permitindo a passagem de corrente em apenas uma direo. Quando polarizado inversamente se comporta como um interruptor aberto, e quando polarizado diretamente como um interruptor fechado com uma queda de tenso de aproximadamente 0,7V para os diodos de silcio.

42

Figura D.5: Smbolo Diodo

Figura D.6: Foto Diodo O LED (Light Emitting Diode) um diodo que quando polarizado diretamente emite luz, normalmente os LED de 5mm funcionam com uma corrente mxima de 50mA, sendo necessrio a utilizao de um resistor em srie para limitar a corrente.

Figura D.7: Smbolo LED

Figura D.8: Foto LED

43

D.1.4 Transistor Bipolar


O transistor serve para amplicar sinais eltricos. Os transistores do tipo bipolar so amplicadores de corrente, uma corrente (I) que entra na base (B) e sai no emissor(E) faz aparecer uma corrente que entra no coletor (C) e sai no emissor (E) de valor vezes maior. No nosso projeto vamos utilizar o transistor como interruptor, ou seja, o transitor conduzindo no mximo ou no conduzindo nada (regies de saturao e corte). Existem dois tipos de transitor bipolar, os PNP e os NPN, utilizaremos o NPN.

Figura D.9: Smbolo Transistor NPN

Figura D.10: Foto Transistor

D.1.5 Capacitor
O capacitor serve para armazenar cargas eltricas, no projeto ele usado para ltrar rudo nos sinais de alimentao. Analogamente ao uso de uma caixa de gua quando falta presso na gua que vem da rua, o capacitor fornece energia quando por algum motivo ela no vem direto da fonte e quando a alimentao da fonte est normal ele se carrega.

Figura D.11: Smbolo Capacitor

44

Figura D.12: Foto Capacitor

D.1.6 Regulador de Tenso


Como o nome j diz, o regulador de tenso serve para manter a tenso num nvel especco. Normalmente circuitos eletrnicos necessitam de um nvel especco de tenso para seu correto funcionamento, principalmente circuitos digitais. OS circuito integrados reguladores de tenso da srie 78XX so os mais comuns e amplamente utilizados em circuitos, o XX indica a tenso xa de sada, um 7805 tem a tenso de sada xa em 5Volts, a tenso de entrada tem que ser maior pelo menos 2 Volts da tenso de sada e o valor mximo de entrada de 35 Volts e a corrente mxima fornecida de 1 Ampre.

Figura D.13: Smbolo Regulador de Tenso

45

Figura D.14: Foto Regulador de Tenso

D.1.7 Rel
O rel um tipo de interruptor acionado eletricamente que permite o isolamento eltrico de dois circuitos. O rel formado por um eletrom (uma bobina enrolada sobre um ncleo de material ferromagntico) que quando acionado, atravs da atrao eletromagntica, fecha os contatos de um interruptor. Normalmente o interruptor de um rel tem duas posies, com isso existem dois tipos, os NF(normalmente fechado) e NA (normalmente aberto). Um rel pode ter vrios interruptores (conhecidos como contatos) de ambos os tipos, normalmente eles suportam correntes de ate dezenas de Ampres e centenas de Volts. A bobina do rel acionada por uma tenso contnua que especicada de acordo com o fabricante, bobinas de 5, 12 e 24 Volts so as mais comuns.

Figura D.15: Smbolo Rel

46

Figura D.16: Foto Rel

D.1.8 Conversor RS232/TTL

Figura D.17: Conversor RS232/TTL

47

Você também pode gostar