aces shard

56
Programando para Controle de dispositivos pelo Computador Luis Claudio Gambôa Lopes Informática Industrial/Automação SDM - Sistemas Digitais e Microprocessados CEFET-MG Campus III - Leopoldina 10 de setembro de 2009

Upload: 8ctano

Post on 27-Jun-2015

298 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Aces Shard

Programando para Controle de dispositivos peloComputador

Luis Claudio Gambôa Lopes

Informática Industrial/AutomaçãoSDM - Sistemas Digitais e Microprocessados

CEFET-MG Campus III - Leopoldina

10 de setembro de 2009

Page 2: Aces Shard

Sumário

1 Introdução 1

2 Portas de Comunicação do Computador e suas características 2

2.1 Características Elétricas Porta Paralela. . . . . . . . . . . . . . . . . . . . . . 3

2.2 Características Elétricas Porta Serial. . . . . . . . . . . . . . . . . . . . . . . 5

2.3 Características Elétricas Porta USB. . . . . . . . . . . . . . . . . . . . . . . . 6

3 Hardware para Acionamento de Dispositivos Externos 7

3.1 Circuito de Potência. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Porta Paralela 9

4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.2 Programação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Porta Serial 11

5.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5.1.1 Condicionamento de Sinal RS232/TTL. . . . . . . . . . . . . . . . . 11

5.1.2 Circuito Microcontrolado (PIC). . . . . . . . . . . . . . . . . . . . . 12

5.1.3 Transmissão por Infravermelho (IR). . . . . . . . . . . . . . . . . . . 14

1

Page 3: Aces Shard

5.1.4 Transmissão por Rádio Freqüência (RF). . . . . . . . . . . . . . . . . 15

5.2 Programação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2.1 Microcontrolador (PIC) . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2.2 PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

6 Porta USB (Emulando Serial) 19

6.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6.2 Programação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

A Códigos fontes Pic 22

A.1 Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

B Códigos fontes PC 24

B.1 Paralela Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

B.2 Paralela Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

B.3 Serial Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

B.4 Serial Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

C Microcontrolador PIC16F628A 28

C.1 Configuração das Portas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

C.2 Configuração Interrupções. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

C.3 Configuração Porta Serial Assíncrona. . . . . . . . . . . . . . . . . . . . . . 39

D Componentes 41

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

2

Page 4: Aces Shard

D.1.1 Resistor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

D.1.2 Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

D.1.3 Diodo e LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

D.1.4 Transistor Bipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

D.1.5 Capacitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

D.1.6 Regulador de Tensão. . . . . . . . . . . . . . . . . . . . . . . . . . . 45

D.1.7 Relé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

D.1.8 Conversor RS232/TTL. . . . . . . . . . . . . . . . . . . . . . . . . . 47

3

Page 5: Aces Shard

Lista de Figuras

2.1 Porta Paralela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.2 Porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.3 Porta USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.4 Pinagem Porta Paralela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.5 Pinagem Porta Serial (DB9 Macho PC). . . . . . . . . . . . . . . . . . . . . 5

2.6 Conexão Porta Serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.7 Sinais da porta serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.8 Pinagem Porta USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1 Circuito de acionamento de dispostivos de potência. . . . . . . . . . . . . . . 8

4.1 Circuito Porta Paralela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.2 Foto Circuito Porta Paralela. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5.1 Conversor RS232/TTL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.2 PIC porta serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

5.3 Foto PIC porta serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

5.4 Circuito de comunicação Infravermelho. . . . . . . . . . . . . . . . . . . . . 14

5.5 Foto do Foto-diodo e módulo receptor infravermelho. . . . . . . . . . . . . . 14

4

Page 6: Aces Shard

5.6 Circuito transmissor rádio frequência PC. . . . . . . . . . . . . . . . . . . . . 15

5.7 Circuito transmissor rádio frequência PIC. . . . . . . . . . . . . . . . . . . . 16

5.8 Circuito receptor de rádio frequência acionando 2 motores . . . . . . . . . . . 17

5.9 Foto dos módulos receptor e transmissor de rádio frequência . . . . . . . . . . 17

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

6.1 PIC porta USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

C.1 Pinagem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

C.2 Foto Pic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

C.3 Diagrama Interno do PIC16F628. . . . . . . . . . . . . . . . . . . . . . . . . 31

C.4 PORTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

C.5 PORTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

C.6 memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

C.7 Bank 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

C.8 Bank 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

C.9 Opcodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

C.10 Configuração PORTA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

C.11 Configuração PORTB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

C.12 Configuração interrupções. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

C.13 Configuração Transmissão Serial. . . . . . . . . . . . . . . . . . . . . . . . 39

C.14 Configuração Recepção Serial. . . . . . . . . . . . . . . . . . . . . . . . . . 40

C.15 Configuração Velocidade Serial. . . . . . . . . . . . . . . . . . . . . . . . . 40

5

Page 7: Aces Shard

D.1 Símbolo Resistor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

D.2 Foto Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

D.3 Símbolo Interruptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

D.4 Foto Interruptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

D.5 Símbolo Diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

D.6 Foto Diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

D.7 Símbolo LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

D.8 Foto LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

D.9 Símbolo Transistor NPN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

D.10 Foto Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

D.11 Símbolo Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

D.12 Foto Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

D.13 Símbolo Regulador de Tensão. . . . . . . . . . . . . . . . . . . . . . . . . . 45

D.14 Foto Regulador de Tensão. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

D.15 Símbolo Relé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

D.16 Foto Relé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

D.17 Conversor RS232/TTL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6

Page 8: Aces Shard

Lista de Tabelas

2.1 Tipos de Operação da porta paralela. . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Pinos da porta paralela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 Tipos de porta paralela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.4 Configuração porta Serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

C.1 Microcontrollers Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

C.2 Microcontroller Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

C.3 Special Microcontroller Features. . . . . . . . . . . . . . . . . . . . . . . . . 29

C.4 Peripheral Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

D.1 Código de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7

Page 9: Aces Shard

Resumo

Esse material tem como objetivo introduzir os conceitos básicos do uso de portas de comuni-cação de um computador, a programação necessária para criação dos softwares e o hardwarebásico para acesso e controle das portas . Os exemplos utilizados são válidos para os sistemasoperacionais Linux e Windows, mas podem ser convertidos para outros sistemas.

Page 10: Aces Shard

Capítulo 1

Introdução

Este documento tem como objetivo fornecer uma introdução a programação para controle dedispositivos externos pelo computador, utilizando linguagem c nos sistemas operacionais Linuxe Windows. São abordados métodos de programação para controle através da porta paralela,serial e USB (emulando porta serial) bem como os circuitos básicos de interface discretos emicrocontrolados.

Pré-requisitos: Conhecimento de uma linguagem de programação e noções básicas deeletrônica.

1

Page 11: Aces Shard

Capítulo 2

Portas de Comunicação do Computador esuas características

As portas de um computador tem a funcionalidade de permitir oacesso de comunicação econtrole entre dispositivos externos e o computador. Através das portas é possível interagir comdispositivos externos, enviando ou lendo sinais elétricospara eles. Cada tipo de porta tem suascaracterísticas e aplicações.

Figura 2.1: Porta Paralela

Figura 2.2: Porta Serial

2

Page 12: Aces Shard

Figura 2.3: Porta USB

2.1 Características Elétricas Porta Paralela

A porta paralela é um conector fêmea de 25 pinos (DB25) que ficasituada atrás do gabinete,originalmente utilizada para o controle de impressoras, seus pinos receberam os nomes relativosa essa atividade.

A porta paralela pode funcionar em 3 modos configuravéis na BIOS do computador:

Tabela 2.1: Tipos de Operação da porta paralela

Modo Direção Velocidade Máxima

SPP (Standard Parallel Port) Transmissão unidirecional 150KB/s(4 bits)EPP ( Enhanced Parallel Port ) Transmissão bidirecional 2 MB/s (8 bits)ECP (Enhanced Capabilities Port)Transmissão bidirecional+DMA 2 MB/s (8 bits)

O tamanho máximo do cabo de ligação é de 8 metros, quanto menoro cabo menosinterferências e maior a velocidade.

3

Page 13: Aces Shard

13

25

12

24

11

23

10

22

9

21

8

20

7

19

6

18

5

17

4

16

3

15

2

14

1 STROBE

AUTOFEED

D0

D1

D2

D3

D4

D5

D6

D7

AKNOWLEDGE

BUSY

PAPER END

SELECT OUT

GND

GND

GND

GND

GND

GND

GND

GND

SELECT IN

ERROR

INIT

Figura 2.4: Pinagem Porta Paralela

Tabela 2.2: Pinos da porta paralela

<= in DB25 Name of Reg=> out pin Signal Bit Function Notes

=> 1 -Strobe C0- Set Low pulse >0.5 us to send=> 2 Data 0 D0 Set to least significant data=> 3 Data 1 D1 ...=> 4 Data 2 D2 ...=> 5 Data 3 D3 ...=> 6 Data 4 D4 ...=> 7 Data 5 D5 ...=> 8 Data 6 D6 ...=> 9 Data 7 D7 Set to most significant data<= 10 -Ack S6+ IRQ Low Pulse 5 uS, after accept<= 11 +Busy S7- High for Busy/Offline/Error<= 12 +PaperEnd S5+ High for out of paper<= 13 +SelectIn S4+ High for printer selected=> 14 -AutoFd C1- Set Low to autofeed one line<= 15 -Error S3+ Low for Error/Offline/PaperEnd=> 16 -Init C2+ Set Low pulse > 50uS to init=> 17 -Select C3- Set Low to select printer== 18-25 Ground

Os sinais elétricos da porta paralela depende do seu tipo e são mostrados na Tabela2.3.

4

Page 14: Aces Shard

Tabela 2.3: Tipos de porta paralela

Normal UM82C11-C IEEE 1284 level II

Data output (>2.4V) 2.6 mA 2 mA 14 mAData line sink (<0.4V) 24 mA 24 mA 14 mAControl output (>2.4 V) 0.5 mA* 1.5 mA ?Signal lines (short circuit) 1 mA ? ?Control line sink (<0.4V) 7 mA 7 mA 14 mA

2.2 Características Elétricas Porta Serial

A porta serial é um conector macho de 9 pinos (DB9) ou de 25 pinos, situada atrás do gabinete,originalmente utilizada para dispositivos de comunicaçãoexternos (MODEMs), seus pinos re-ceberam nomes relativos sua utilização. Os sinais da porta serial seguem o padrão RS232, sendoo nível lógico 0 representado por uma tensão de +3 a +15Volts eo nível lógico 1 representadopor uma tensão de -3 a -15Volts.

5

9

4

8

3

7

2

6

1 DCD

DSR

RX

RTS

TX

CTS

DTR

RI

SG

Figura 2.5: Pinagem Porta Serial (DB9 Macho PC)

Figura 2.6: Conexão Porta Serial

Para utilizar a porta serial é necessário fazer sua configuração antes do uso, os parame-tros de configuração são mostrados na tabela2.4.

5

Page 15: Aces Shard

Tabela 2.4: Configuração porta Serial

Descrição Padrão para uso de microcontroladores

Velocidade 2400,4800,9600,19200 baudsNúmero de Bits de dados 7 ou 8 bits 8 bitsParidade Par, Ímpar ou Nenhuma NenhumaNúmero de stop bits 1 ou 2 1 bitControle de fluxo Hardware, Software ou NenhumNenhum

Figura 2.7: Sinais da porta serial

2.3 Características Elétricas Porta USB

A porta usb é um conector fêmea de 4 pinos, situada atrás ou na frente do gabinete Os sinaiselétricos da porta USB não podem ser utilizados diretamente, sempre necessitando de circuitosexternos para isso.

1

4

3

2VCC

D−

D+

GND

Figura 2.8: Pinagem Porta USB

6

Page 16: Aces Shard

Capítulo 3

Hardware para Acionamento deDispositivos Externos

Para se fazer um projeto deHardwarede um circuito eletrônico, é necessário o conhecimentode alguns conceitos de eletrônica e o conhecimento do funcionamento dos componentes quevão compor o projeto.

3.1 Circuito de Potência

Na Figura3.1é mostrado o circuito básico de acionamento de dispositivosde potência.

7

Page 17: Aces Shard

1

2

5

4

4N256

RELAY

1

3

2

BC547

Entrada

Dispositivo

Dispositivo

1K

4.7K

Vcc

D?

Figura 3.1: Circuito de acionamento de dispostivos de potência

8

Page 18: Aces Shard

Capítulo 4

Porta Paralela

4.1 Hardware

Figura 4.1: Circuito Porta Paralela

9

Page 19: Aces Shard

Figura 4.2: Foto Circuito Porta Paralela

4.2 Programação

Programas par linux e windows com a porta no modo SPPB.1 B.2.

10

Page 20: Aces Shard

Capítulo 5

Porta Serial

5.1 Hardware

Para utilização da porta serial normalmente é necessário umcircuito USART para se comunicarcom a USART interna do PC, esse circuito pode ser substituídopor um registrador de desloca-mento e algumas portas lógicas ou por um microcontrolador que já possua um circuito USARTinternamente ou consiga emular por software uma USART.

5.1.1 Condicionamento de Sinal RS232/TTL

A maioria dos circuitos não trabalha com os padrões RS232 descritos na Seção2.2, sendonecessário a conversão desse padrão para o padrão do circuito a ser construído, um dos padrõesmais utilizados é o TTL, já existindo soluções prontas com oscircuitos MAX232 ou HIN232.

11

Page 21: Aces Shard

Figura 5.1: Conversor RS232/TTL

5.1.2 Circuito Microcontrolado (PIC)

Um circuito simples para interface serial como o da Figura5.2pode ser montado com um micro-controlador PIC16F628A e um conversor MAX232, nesse circuito o PORTA do PIC é utilizadocomo entrada e o PORTB como saída, dois pinos do PORTB são utilizados para a comunicaçãoserial RB1(RX) e RB2(TX)

12

Page 22: Aces Shard

1RA2

2RA3

3RA4

4MCLR/RA5

5Vss

6RB0

7RB1

8RB2

9RB3

18RA1

17RA0

16RA7/OSC1

15RA6/OSC2

14Vdd

13RB7

12RB6

11RB5

10RB4

U1

2V+

3 C1−

4 C2+

5 C2−

6V−

7 Tx2 Out

8 Rx2 In 9Rx2 Out

10Tx2 In

11Tx1 In

12Rx1 Out13 Rx1 In

14 Tx1 Out

1 C1+

MAX232 U2

5

9

4

8

3

7

2

6

1

CONN1

R1 3301 2

LED1

R2 3301 2

LED2

R3 3301 2

LED3

R4 3301 2

LED4

R5 3301 2

LED5

R6 3301 2

LED6

21

S1

21

S2

21

S3

21

S4

21

S5

21

S6

+5V

+5V

R7

10k

R8

10k

R9

10k

R10

10k

R11

10k

R12

10k

12

C1

1uF

12

C2

1uF 1 2

C3

1uF

12

C4

1uF

+5V

PIC16F628ADB9 Femea

R13

10k

R14

10k

21

S6

21

S6

Figura 5.2: PIC porta serial

Figura 5.3: Foto PIC porta serial

13

Page 23: Aces Shard

5.1.3 Transmissão por Infravermelho (IR)

Figura 5.4: Circuito de comunicação Infravermelho

Figura 5.5: Foto do Foto-diodo e módulo receptor infravermelho

14

Page 24: Aces Shard

5.1.4 Transmissão por Rádio Freqüência (RF)

FILE: REVISION:

DRAWN BY: PAGE OF

TITLE

IN OUT

7805

GND

1

2

3

U2

12

C1

330uF

12

C2

100uF

12 LE

D1

R1

330R

+5VVcc

2 DATA

1 GND

3 VCC

4 ANT

TX

315

Mhz

U3

2

1

CONN2

1

ANT1

+5V

Transmissor serial PC

Luis Claudio Gamboa Lopes

2V+

3 C1−

4 C2+

5 C2−

6V−

7 Tx2 Out

8 Rx2 In 9Rx2 Out

10Tx2 In

11Tx1 In

12Rx1 Out13 Rx1 In

14 Tx1 Out

1 C1+

MAX232 U1

5

9

4

8

3

7

2

6

1

CONN1

2

1

3

CONN3

12

C?

12

C?

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

1 2

C?

12

C?

Jumper Debug serial

Figura 5.6: Circuito transmissor rádio frequência PC

15

Page 25: Aces Shard

FILE: REVISION:

DRAWN BY: PAGE OF

TITLE

U1

1RA2

2RA3

3RA4

4MCLR/RA5

5Vss

6RB0

7RB1

8RB2

9RB3

18RA1

17RA0

16RA7/OSC1

15RA6/OSC2

14Vdd

13RB7

12RB6

11RB5

10RB4

U2

IN OUT

7805

GND

1

2

3

C1

12

C2

12

LED

11

2

R1

U3

C3

C4

C5

+5VVcc

CONN1

2

4

6

1

3

5

U4

2DATA

1GND

3VCC

4ANT

TX

315

Mhz

CONN2

2

1

2

4

6

1

3

5

CONN3

2

4

6

1

3

5

CONN4

+5V

ANT?

1+5V

1000uF 100uF

280R

100nF

33pF

33pF

4MHz

+5V

+5V

+5V

R2

10K

R3

10K

R4

10K

R5

10K

R6

10K

R7

10K

R8

10K

R9

10K

R10

10K

R11

10K

R12

10K

R13

10K

Figura 5.7: Circuito transmissor rádio frequência PIC

16

Page 26: Aces Shard

FILE: REVISION:

DRAWN BY: PAGE OF

TITLE

1RA2

2RA3

3RA4

4MCLR/RA5

5Vss

6RB0

7RB1

8RB2

9RB3

18RA1

17RA0

16RA7/OSC1

15RA6/OSC2

14Vdd

13RB7

12RB6

11RB5

10RB4

U1

L293

CHIP INHIBIT1

INPUT 12

OUTPUT 13

GND4

GND5

OUTPUT 26

INPUT 27

VC8

VSS16

INPUT 415

OUTPUT 414

GND13

GND12

OUTPUT 311

INPUT 310

CHIP INHIBIT 29

U2

M1M2

+5V

+5V

+5V

IN OUT

7805

GND

1

2

3

U4

12

B1

10,8V

+5VC1

100uF

12

C2

330uF

U6 20MHz

C4 33pF

C5 33pF

R1

1.5K

12 LE

D1

+5V

1

ANT1

ROBO FUTEBOL V1.0

Luis Claudio Gamboa Lopes

+5V

Vcc

Vcc

C3

100nF

Luis Claudio Gamboa Lopes

2

1

CONN1

2

1

3

CONN2

+5V

LD293DNE (diodo interno/600mA)

Jumper selecao de alimentacao

Jumper debug serial

6G

ND

3D

AT

A

2D

AT

A

1G

ND

4+

5V

5+

5V

7G

ND

8A

NT

RX 315Mhz

U7

Figura 5.8: Circuito receptor de rádio frequência acionando 2 motores

Figura 5.9: Foto dos módulos receptor e transmissor de rádiofrequência

5.2 Programação

5.2.1 Microcontrolador (PIC)

O microcontrolador PIC16F628A já possuí uma USART interna,basta configurar a USARTinterna e a interrupção por recebimento de dados pela serialcomo no programaA.1.

17

Page 27: Aces Shard

5.2.2 PC

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

Figura 5.10: Programa terinal gtkterm (linux)

18

Page 28: Aces Shard

Capítulo 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 firmware for PICmodified from MicrochipCDC library.

6.1 Hardware

Specifications

• 8 Digital output

• 8 Digital input

• 8 Analog output

• No external power required

• Simple ASCII command

• 3 command to communicate PC with PIC

19

Page 29: Aces Shard

Figura 6.1: PIC porta USB

6.2 Programação

I use Delphi 6 on PC side to communicate with PIC18F4550 source code availible.Código

20

Page 30: Aces Shard

Referências

Minicurso Comunicação Serial - RS232, Edmur Canzian - CNZ Engenharia e Informática Ltda(http://www.professores.aedb.br/arlei/AEDB/Arquivos/rs232.pdf)

Linux I/O port programming mini-HOWTO- Riku Saikkonen - (http://tldp.org/HOWTO/IO-Port-Programming.html)

PIC16F627A/628A/648A Data Sheet, Microchip ,DS40044F

21

Page 31: Aces Shard

Apêndice A

Códigos fontes Pic

A.1 Serial

LIST P=16F628AINCLUDE <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 interrupcaoW_TEMPS_TEMPENDC

;inicoORG 0X0000GOTO INICIO

;interrupcaoORG 0X0004;salva contextoMOVWF W_TEMPSWAPF STATUS,WMOVWF S_TEMP;le serial; BTFSS PIR1,RCIF ;verifica se interuupcao é da porta serial; GOTO FIMSBANKSEL RCREGMOVFW RCREGMOVWF PORTB

MOVFW PORTAMOVWF TXREGBCF PIR1,RCIF;restaura contextoFIMS: SWAPF S_TEMP,W

MOVWF STATUSSWAPF W_TEMP,FSWAPF W_TEMP,WRETFIE

;programa principalINICIO:; configura portasMOVLW B’00000111’MOVWF CMCON ;configura RA0,RA1,RA2,RA3

BANKSEL TRISAMOVLW B’11111111’MOVWF TRISAMOVLW B’00000010’MOVWF TRISB ;PORTB ,RB1 INBANKSEL PORTB

; inicializa serialMOVLW B’10010000’MOVWF RCSTABANKSEL TXSTAMOVLW B’00100100’MOVWF TXSTAMOVLW D’25’;25 = 9600-8N1MOVWF SPBRGBANKSEL RCSTA

; habilita interrupcoesMOVLW B’11000000’;habilita GIE PEIEMOVWF INTCON

BANKSEL PIE1MOVLW B’00100000’;habilita RCIE

22

Page 32: Aces Shard

MOVWF PIE1BANKSEL PIR1

CLRF PORTB;loop infinitoMAIN: GOTO MAINEND

23

Page 33: Aces Shard

Apêndice B

Códigos fontes PC

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

#define BASEPORT 0x378

void main(){

unsigned char data;

//pede permissão de acessoif (ioperm (BASEPORT, 3, 1))

{printf ("Erro ioperm\n");exit (1);

};

/ *********************** Programa principal ************************** ///escreve dadosdata=0xA5;outb (data, BASEPORT);

//lê dadosdata = inb (BASEPORT+1);

/ ******************** Finalização ****************************** ///libera permissão de acessoif (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>

/ * endereço 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

Page 34: Aces Shard

short value;short des;unsigned char data;

HINSTANCE hLib;INP32 Inp32;OUT32 Out32;

/ ******************** Inicialização da biblioteca *********************** /

//carrega bibilotecaif ((hLib = LoadLibrary("inpout32.dll")) == NULL) {

printf("Unable to load inpout32.dll, did you copy it to the s ystem folder?\n");system("pause");return 0;

}

//carrega função de leituraif ((Inp32 = (INP32)GetProcAddress(hLib, "Inp32")) == NUL L) {

printf("Unable to establish handle to input function.\n") ;system("pause");return 0;

}

//carrega função de escritaif ((Out32 = (OUT32)GetProcAddress(hLib, "Out32")) == NUL L) {

printf("Unable to establish handle to output function.\n" );system("pause");return 0;

}

/ *********************** Programa principal ************************** /

//escreve dadosdata=5;Out32(BASE_ADDRESS, data);

//lê dadosdata = Inp32(BASE_ADDRESS+1);

/ ******************** Finalização ****************************** /

FreeLibrary(hLib);

system("pause");

return 1;}

B.3 Serial Linux#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <termios.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>

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

volatile int STOP=FALSE;

intmain(){

int fd,c;struct termios newtio;

//configuraçãofd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);if (fd <0) {perror(MODEMDEVICE); exit(-1); }

// tcgetattr(fd,&oldtio); / * save current port settings * /

bzero(&newtio, sizeof(newtio));newtio.c_cflag = BAUDRATE |CS8 | CLOCAL | CREAD;newtio.c_iflag = IGNPAR|ICRNL|IGNBRK;newtio.c_oflag = 0;

/ * set input mode (non-canonical, no echo,...) * /newtio.c_lflag = 0;

newtio.c_cc[VTIME] = 0; / * inter-character timer unused * /newtio.c_cc[VMIN] = 5; / * blocking read until 5 chars received * /

25

Page 35: Aces Shard

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

//programa

c=’0’;while (1) { / * loop for input * /

// lê dado do tecladoc=getchar();

//escreve na porta serialwrite (fd,&c,1);usleep(1000);

//lê porta serialc=’0’;read (fd,&c,1);usleep(1000);

//imprime caracter recebidoprintf("%c",c);fflush(stdout);

}

return 0;}

B.4 Serial Windows#include <conio.h>#include <stdio.h>#include <time.h>#include <windows.h>#include <string.h>

#define BAUDRATE 9600#define MODEMDEVICE "com1"

int main(){HANDLE hCom;char c;

DWORD nbytes;

// variables used with the com portBOOL bPortReady;DCB dcb;COMMTIMEOUTS CommTimeouts;

//configuração

hCom = CreateFile(MODEMDEVICE,GENERIC_READ | GENERIC_WRITE,0, // exclusive accessNULL, // no securityOPEN_EXISTING,0, // no overlapped I/ONULL); // 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/XOFFdcb.fOutX = FALSE; // XON/XOFF off for transmitdcb.fInX = FALSE; // XON/XOFF off for receive// set RTSCTSdcb.fOutxCtsFlow = FALSE; // turn off CTS flow controldcb.fRtsControl = RTS_CONTROL_DISABLE; //// set DSRDTRdcb.fOutxDsrFlow = FALSE; // turn off DSR flow controldcb.fDtrControl = DTR_CONTROL_DISABLE; //

bPortReady = SetCommState(hCom, &dcb);

// Communication timeouts are optional

bPortReady = GetCommTimeouts (hCom, &CommTimeouts);

CommTimeouts.ReadIntervalTimeout = MAXDWORD;

26

Page 36: Aces Shard

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 tecladoc=getchar();

//escreve na porta serialWriteFile(hCom, &c, 1, &nbytes,NULL);

Sleep(1);

//lê porta serialc=’0’;

ReadFile(hCom, &c, 1,&nbytes, NULL);Sleep(1);

//imprime caracter recebidoprintf("%c",c);fflush(stdout);

}

return 0;

}

27

Page 37: Aces Shard

Apêndice C

Microcontrolador PIC16F628A

O microcontrolador é um circuito integrado que pode ser programado para executardeterminas funções.

O PIC utilizado no projeto é o PIC16F628, suas características são mostradas nas Tabe-lasC.1, C.2, C.3eC.4.

Tabela C.1: Microcontrollers Memory

Device FLASH RAM EEPROMProgram Data Data

PIC16F627 1024 x 14 224 x 8 128 x 8PIC16F628 2048 x 14 224 x 8 128 x 8

Tabela C.2: Microcontroller Features

Operating speeds from DC - 20 MHzInterrupt capability8-level deep hardware stackDirect, Indirect and Relative Addressing modes35 single word instructionsAll instructions single cycle except branches

28

Page 38: Aces Shard

Tabela C.3: Special Microcontroller Features

Internal and external oscillator optionsPrecision Internal 4 MHz oscillator factory calibrated to +/-1%Low Power Internal 37 kHz oscillatorExternal Oscillator support for crystals and resonators.Power saving Sleep modeProgrammable weak pull-ups on PORTBMultiplexed Master Clear/Input-pinWatchdog Timer with independent oscillator for reliable operationLow voltage programmingIn-Circuit Serial Programming (via two pins)Programmable code protectionBrown-out ResetPower-on ResetPower-up Timer and Oscillator Start-up TimerWide operating voltage range. (2.0 - 5.5V)Industrial and extended temperature rangeHigh Endurance Flash/EEPROM Cell100,000 write Flash endurance1,000,000 write EEPROM endurance100 year data retention

Tabela C.4: Peripheral Features

16 I/O pins with individual direction controlHigh current sink/source for direct LED driveAnalog comparator module with:

Two analog comparatorsProgrammable on-chip voltage reference (VREF) moduleSelectable internal or external referenceComparator outputs are externally accessible

Timer0: 8-bit timer/counter with 8-bit programmable prescalerTimer1: 16-bit timer/counter with external crystal/clockcapabilityTimer2: 8-bit timer/counter with 8-bit period register, prescaler and postscalerCapture, Compare, PWM module

16-bit Capture/Compare10-bit PWM

Addressable Universal Synchronous/Asynchronous Receiver/Transmitter USART/SCI

A pinagem do microcontrolador é mostrada na FiguraC.1, onde pode se perceber quecada pino tem mais de uma função, a função utilizada pode ser programada viasoftwaree podeser mudada durante a execução do programa.

29

Page 39: Aces Shard

Figura C.1: Pinagem

Figura C.2: Foto Pic

Na FiguraC.3é mostrado os blocos lógicos internos do microcontrolador eseus perifé-ricos.

30

Page 40: Aces Shard

Figura C.3: Diagrama Interno do PIC16F628

As funções dos pinos e os tipos de sinais são descritos nas FigurasC.4e C.5.

31

Page 41: Aces Shard

Figura C.4: PORTA

32

Page 42: Aces Shard

Figura C.5: PORTB

O mapa de memória é mostrado na FiguraC.6 e os dois bancos mais utilizados sãomostrados nas FigurasC.7eC.8;

33

Page 43: Aces Shard

Figura C.6: memoria

34

Page 44: Aces Shard

Figura C.7: Bank 0

35

Page 45: Aces Shard

Figura C.8: Bank 1

As 35 instruções assembly do PIC16F628 são listadas na FiguraC.9.

36

Page 46: Aces Shard

Figura C.9: Opcodes

C.1 Configuração das Portas

O pic16f628a possui duas portas de 8 bits (PORTA e PORTB), os pinos das portas podem serconfigurados como entradas ou saídas, essa configuração é feita nos registradores TRISA parao PORTA e TRISB para o PORTB. Colocar um bit com o valor ’1’ no registrador TRISx indicaque o pino respectivo no PORTx será entrada, colocar ’0’ siginifica que o pino será uma saída.

No pic16f628 todos os pinos das duas portas podem ser usados com entrada, como saídaapenas o pino RA5 não pode ser utilizado e o pino RB4 é do tipo coletor aberto necessitandode um resistor de pull-up ligado a ele para funcionar.

37

Page 47: Aces Shard

Figura C.10: Configuração PORTA

o PORTA e o PORTB tem funções multiplexadas em vários pinos, se essas funçõesestiverem ativadas o pino do PORTx não pode ser utilizado como entrada e saída de dadosdigitais.

Figura C.11: Configuração PORTB

C.2 Configuração Interrupções

O pic16f628A possui três registradores de configuração de interrupção, todas as interrupçõessão tratadas no endereço 0x0004 da memória de programa.

38

Page 48: Aces Shard

Figura C.12: Configuração interrupções

C.3 Configuração Porta Serial Assíncrona

Para se configurar a USART para modo de comunicação serial assíncrono existem três registra-dores. Para leitura e escrita serial existem mais dois registradores, TXREG e RCREG respecti-vamente.

Figura C.13: Configuração Transmissão Serial

39

Page 49: Aces Shard

Figura C.14: Configuração Recepção Serial

Figura C.15: Configuração Velocidade Serial

40

Page 50: Aces Shard

Apêndice D

Componentes

D.1 Alguns Componentes Utilizados

Para facilitar o entendimento do projeto, é descrito uma breve explicação sobre as funções doscomponentes utilizados serem utilizados.

D.1.1 Resistor

Resistor é utilizado principalmente para limitar a corrente em outros componentes. Seu valor écalculado com a utilização da Lei deOhmI =

V

R.

Figura D.1: Símbolo Resistor

Figura D.2: Foto Resistor

Nos resitores comerciais seus valores são representados pelo código de cores descritona TabelaD.1.

41

Page 51: Aces Shard

Tabela D.1: Código de Cores

Cores 1o anel 2o anel 3o anel 4o anel1o digito 2o digito Multiplicador Tolerância

Prata - - 0,01 10%Ouro - - 0,1 5%Preto 0 0 1 -

Marrom 01 01 10 1%Vermelho 02 02 100 2%Laranja 03 03 1 000 3%Amarelo 04 04 10 000 4%

Verde 05 05 100 000 -Azul 06 06 1 000 000 -

Violeta 07 07 10 000 000 -Cinza 08 08 - -Branco 09 09 - -

D.1.2 Interruptor

Interruptores são chaves mecânicas são utilizados para mudança de estado (ligado ou desligadopor exemplo), são dispositivos de entrada que permitem o usuário interagir com circuito. Nor-malmente são necessários resistores de pull-up ou pull-down quando são utilizados junto comos microcontroladores, neste caso ainda é necessário a aplicação de uma técnica de debouncigporsoftware(anti-repique).

Figura D.3: Símbolo Interruptor

Figura D.4: Foto Interruptor

D.1.3 Diodo e LED

O diodo funciona como uma “válvula elétrica”, permitindo a passagem de corrente em ape-nas uma direção. Quando polarizado inversamente se comporta como um interruptor aberto,e quando polarizado diretamente como um interruptor fechado com uma queda de tensão deaproximadamente 0,7V para os diodos de silício.

42

Page 52: Aces Shard

Figura D.5: Símbolo Diodo

Figura D.6: Foto Diodo

O LED (Light Emitting Diode) é um diodo que quando polarizadodiretamente emiteluz, normalmente os LED de 5mm funcionam com uma corrente máxima de 50mA, sendonecessário a utilização de um resistor em série para limitara corrente.

Figura D.7: Símbolo LED

Figura D.8: Foto LED

43

Page 53: Aces Shard

D.1.4 Transistor Bipolar

O transistor serve para amplificar sinais elétricos. Os transistores do tipo bipolar são amplifica-dores de corrente, uma corrente (I) que entra na base (B) e saino emissor(E) faz aparecer umacorrente que entra no coletor (C) e sai no emissor (E) de valorβ vezes maior. No nosso projetovamos utilizar o transistor como interruptor, ou seja, o transitor conduzindo no máximo ou nãoconduzindo nada (regiões de saturação e corte). Existem dois tipos de transitor bipolar, os PNPe os NPN, utilizaremos o NPN.

Figura D.9: Símbolo Transistor NPN

Figura D.10: Foto Transistor

D.1.5 Capacitor

O capacitor serve para armazenar cargas elétricas, no projeto ele é usado para filtrar ruído nossinais de alimentação. Analogamente ao uso de uma caixa de água quando falta pressão na águaque vem da rua, o capacitor fornece energia quando por algum motivo ela não vem direto dafonte e quando a alimentação da fonte está normal ele se carrega.

Figura D.11: Símbolo Capacitor

44

Page 54: Aces Shard

Figura D.12: Foto Capacitor

D.1.6 Regulador de Tensão

Como o nome já diz, o regulador de tensão serve para manter a tensão num nível específico.Normalmente circuitos eletrônicos necessitam de um nível específico de tensão para seu corretofuncionamento, principalmente circuitos digitais. OS circuito integrados reguladores de tensãoda série 78XX são os mais comuns e amplamente utilizados em circuitos, o XX indica a tensãofixa de saída, um 7805 tem a tensão de saída fixa em 5Volts, a tensão de entrada tem que sermaior pelo menos 2 Volts da tensão de saída e o valor máximo de entrada é de 35 Volts e acorrente máxima fornecida é de 1 Ampére.

Figura D.13: Símbolo Regulador de Tensão

45

Page 55: Aces Shard

Figura D.14: Foto Regulador de Tensão

D.1.7 Relé

O relé é um tipo de interruptor acionado eletricamente que permite o isolamento elétrico dedois circuitos. O relé é formado por um eletroímã (uma bobinaenrolada sobre um núcleo dematerial ferromagnético) que quando acionado, através da atração eletromagnética, fecha oscontatos de um interruptor. Normalmente o interruptor de umrelé tem duas posições, com issoexistem dois tipos, os NF(normalmente fechado) e NA (normalmente aberto). Um relé pode tervários interruptores (conhecidos como contatos) de ambos os tipos, normalmente eles suportamcorrentes de ate dezenas de Ampéres e centenas de Volts. A bobina do relé é acionada por umatensão contínua que é especificada de acordo com o fabricante, bobinas de 5, 12 e 24 Volts sãoas mais comuns.

Figura D.15: Símbolo Relé

46

Page 56: Aces Shard

Figura D.16: Foto Relé

D.1.8 Conversor RS232/TTL

Figura D.17: Conversor RS232/TTL

47