Programando para Controle de dispositivos pelo Computador

Propaganda
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
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
3.1
Circuito de Potência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Porta Paralela
7
7
9
4.1
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.2
Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
5 Porta Serial
5.1
11
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
5.1.4
5.2
Transmissão por Rádio Freqüência (RF) . . . . . . . . . . . . . . . . .
15
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B Códigos fontes PC
B.1 Paralela Linux
22
24
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2 Paralela Windows
24
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 . . . . . . . . . . . . . . . . . . . . . . . . .
2
41
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
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
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
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
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
Resumo
Esse material tem como objetivo introduzir os conceitos básicos do uso de portas de comunicação de um computador, a programação necessária para criação dos softwares e o hardware
básico para acesso e controle das portas . Os exemplos utilizados são válidos para os sistemas
operacionais Linux e Windows, mas podem ser convertidos para outros sistemas.
Capítulo 1
Introdução
Este documento tem como objetivo fornecer uma introdução a programação para controle de
dispositivos externos pelo computador, utilizando linguagem c nos sistemas operacionais Linux
e 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 e
microcontrolados.
Pré-requisitos: Conhecimento de uma linguagem de programação e noções básicas de
eletrônica.
1
Capítulo 2
Portas de Comunicação do Computador e
suas características
As portas de um computador tem a funcionalidade de permitir o acesso de comunicação e
controle entre dispositivos externos e o computador. Através das portas é possível interagir com
dispositivos externos, enviando ou lendo sinais elétricos para eles. Cada tipo de porta tem suas
características e aplicações.
Figura 2.1: Porta Paralela
Figura 2.2: Porta Serial
2
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 fica situada atrás 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 configuravéis na BIOS do computador:
Tabela 2.1: Tipos de Operação da porta paralela
Modo
SPP (Standard Parallel Port)
EPP ( Enhanced Parallel Port )
ECP (Enhanced Capabilities Port)
Direção
Transmissão unidirecional
Transmissão bidirecional
Transmissão bidirecional+DMA
Velocidade Máxima
150KB/s(4 bits)
2 MB/s (8 bits)
2 MB/s (8 bits)
O tamanho máximo do cabo de ligação é de 8 metros, quanto menor o cabo menos
interferências e maior a velocidade.
3
1
STROBE
14
AUTOFEED
2
D0
15
ERROR
3
D1
16
INIT
4
D2
17
SELECT IN
5
D3
18
GND
6
D4
19
GND
7
D5
20
GND
8
D6
21
GND
9
D7
22
GND
10
AKNOWLEDGE
23
GND
11
BUSY
24
GND
12
PAPER END
25
GND
13
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+
C3-
Function Notes
Set Low pulse >0.5 us to send
Set to least significant data
...
...
...
...
...
...
Set to most significant data
IRQ Low Pulse 5 uS, after accept
High for Busy/Offline/Error
High for out of paper
High for printer selected
Set Low to autofeed one line
Low for Error/Offline/PaperEnd
Set Low pulse > 50uS to init
Set Low to select printer
Os sinais elétricos da porta paralela depende do seu tipo e são 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 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ção externos (MODEMs), seus pinos receberam nomes relativos sua utilização. Os sinais da porta serial seguem o padrão RS232, sendo
o nível lógico 0 representado por uma tensão de +3 a +15Volts e o nível lógico 1 representado
por uma tensão de -3 a -15Volts.
1
DCD
6
DSR
2
RX
7
RTS
3
8
4
9
TX
CTS
DTR
RI
5
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 parametros de configuração são mostrados na tabela 2.4.
5
Tabela 2.4: Configuração porta Serial
Descrição
Velocidade
Número de Bits de dados
Paridade
Número de stop bits
Controle de fluxo
7 ou 8 bits
Par, Ímpar ou Nenhuma
1 ou 2
Hardware, Software ou Nenhum
Padrão para uso de microcontroladores
2400,4800,9600,19200 bauds
8 bits
Nenhuma
1 bit
Nenhum
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 sinais
elétricos da porta USB não 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
6
Capítulo 3
Hardware para Acionamento de
Dispositivos Externos
Para se fazer um projeto de Hardware de um circuito eletrônico, é necessário o conhecimento
de alguns conceitos de eletrônica e o conhecimento do funcionamento dos componentes que
vão compor o projeto.
3.1 Circuito de Potência
Na Figura 3.1 é mostrado o circuito básico de acionamento de dispositivos de potência.
7
Vcc
Dispositivo
4N25
6
1
5
2
4
D?
1K
Entrada
RELAY
Dispositivo
1
4.7K
2
BC547
3
Figura 3.1: Circuito de acionamento de dispostivos de potência
8
Capítulo 4
Porta Paralela
4.1 Hardware
Figura 4.1: Circuito Porta Paralela
9
Figura 4.2: Foto Circuito Porta Paralela
4.2 Programação
Programas par linux e windows com a porta no modo SPP B.1 B.2.
10
Capítulo 5
Porta Serial
5.1 Hardware
Para utilização da porta serial normalmente é necessário um circuito USART para se comunicar
com a USART interna do PC, esse circuito pode ser substituído por um registrador de deslocamento e algumas portas lógicas 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 não trabalha com os padrões RS232 descritos na Seção 2.2, sendo
necessário a conversão desse padrão para o padrão do circuito a ser construído, um dos padrões
mais utilizados é o TTL, já existindo soluções 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 saída, dois pinos do PORTB são utilizados para a comunicação
serial RB1(RX) e RB2(TX)
12
10k
10k
10k
10k
10k
10k
10k
10k
R12
R7
R8
R9
R10
R11
R13
R14
+5V
S6
1
2
S6
1
2
S6
1
2
S5
1
+5V
1
C2
MAX232
1
1uF
C1+
2
S4
1uF
U2
V+
2
1
C3
2
S3
1
2
2
1
3
C1
1
CONN1
C1−
4
C2+
5
C2−
1uF
V−
6
1
2
U1
1
1
1uF
2
2
6
2
7
14
Tx1 Out
13
Rx1 In
Tx1 In
11
3
Rx1 Out
12
4
Tx2 In
10
3
8
4
5
7
Tx2 Out
8
Rx2 In
Rx2 Out
6
9
2
S2
C4
7
9
8
5
9
1
RA2
RA1
RA3
RA0
RA4
RA7/OSC1
MCLR/RA5
RA6/OSC2
Vss
Vdd
RB0
RB7
RB1
RB6
RB2
RB5
RB3
RB4
18
1
16
15
+5V
14
13
R1
330
R2
330
2
1
2
1
2
1
2
1
2
1
2
LED2
10
R3
DB9 Femea
LED1
1
12
11
330
LED3
PIC16F628A
R4
R5
R6
330
LED4
330
LED5
330
Figura 5.2: PIC porta serial
Figura 5.3: Foto PIC porta serial
13
2
S1
17
LED6
2
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
5.1.4 Transmissão por Rádio Freqüência (RF)
CONN2
U2
Vcc
+5V
1
1
IN
OUT
3
GND
1
2
7805
330R
2
100uF
R1
C1
2
C2
1
330uF
2
1
LED1
2
1
C?
CONN1
MAX232
1
C1+
U1
V+
C?
2
ANT1
1
2
2
1
6
C1−
4
C2+
C?
2
V−
2
5
1
4
9
14
13
Tx1 Out
Rx1 In
7
Tx2 Out
8
Rx2 In
VCC
3
2
DATA
2
1
GND
C?
C2−
3
8
ANT
3
6
2
7
+5V
4
Jumper Debug serial
CONN3
1
3
Tx1 In
11
Rx1 Out
12
Tx2 In
10
TX 315Mhz
1
1
U3
5
Rx2 Out
9
Nao esqueca dos pinos 15(GND) e 16 (VCC)
Transmissor serial PC
TITLE
FILE:
PAGE
REVISION:
OF
DRAWN BY:
Figura 5.6: Circuito transmissor rádio frequência PC
15
Luis Claudio Gamboa Lopes
CONN2
U2
Vcc
+5V
1
1
IN
OUT
3
10K
10K
10K
R3
R2
280R
CONN3
2
100uF
R4
7805
R1
C1
C2
1
2
1000uF
10K
1
2
R5
GND
2
1
1
2
LED1
2
3
4
+5V
5
10K
U1
CONN4
2
1
3
2
4
3
5
4
6
+5V
5
7
6
8
9
RA2
RA1
RA3
RA0
RA4
RA7/OSC1
MCLR/RA5
RA6/OSC2
Vss
Vdd
RB0
RB7
RB1
RB6
RB2
RB5
RB3
RB4
18
C3
17
33pF
16
U3
1
R6
10K
R7
10K
R8
R9
10K
6
15
14
+5V
13
4MHz
C4
33pF
C5
CONN1
12
100nF
11
1
10
2
3
ANT?
4
+5V
TX 315Mhz
10K
U4
R13
1
10K
GND
10K
2
R12
DATA
R11
3
10K
4
VCC
+5V
R10
1
ANT
TITLE
FILE:
PAGE
REVISION:
OF
DRAWN BY:
Figura 5.7: Circuito transmissor rádio frequência PIC
16
5
6
U7
RX 315Mhz
GND
GND
+5V
ANT
ANT1
8
7
6
5
4
3
3
2
OUT
1
IN
+5V
+5V
1
DATA
GND
U4
DATA
Vcc
1
C2
GND
1
C1
2
B1
330uF
1
7805
2
+5V
100uF
10,8V
C3
2
100nF
2
3
4
5
6
7
8
1.5K
9
RA2
RA1
RA3
RA0
RA4
RA7/OSC1
MCLR/RA5
Vss
RA6/OSC2
Vdd
RB0
RB7
RB1
RB6
RB2
RB5
RB3
RB4
18
2
17
16
3
20MHz
U6
1
1
33pF
C4
4
M2
15
5
+5V
C5
14
33pF
6
13
7
12
8
Vcc
U2
L293
+5V
U1
+5V
CHIP INHIBIT
INPUT 1
VSS
INPUT 4
OUTPUT 1
OUTPUT 4
GND
GND
GND
GND
OUTPUT 2
INPUT 2
VC
OUTPUT 3
INPUT 3
CHIP INHIBIT 2
16
15
14
13
12
M1
11
10
9
+5V
CONN2
11
10
1
LD293DNE (diodo interno/600mA)
R1
2
3
Jumper selecao de alimentacao
+5V
1
2
1
ROBO FUTEBOL V1.0
Jumper debug serial
LED1
2
TITLE
CONN1
FILE:
PAGE
OF
REVISION:
Luis Claudio Gamboa Lopes
DRAWN BY:
Luis Claudio Gamboa Lopes
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ádio frequência
5.2 Programação
5.2.1 Microcontrolador (PIC)
O microcontrolador PIC16F628A já possuí uma USART interna, basta configurar a USART
interna e a interrupção por recebimento de dados pela serial como no programa A.1.
17
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
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 PIC modified from Microchip
CDC 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
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
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/IOPort-Programming.html)
PIC16F627A/628A/648A Data Sheet, Microchip ,DS40044F
21
Apêndice A
Códigos 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 B’00000111’
MOVWF CMCON ;configura RA0,RA1,RA2,RA3
BANKSEL TRISA
MOVLW B’11111111’
MOVWF TRISA
MOVLW B’00000010’
MOVWF TRISB ;PORTB ,RB1 IN
BANKSEL PORTB
; inicializa serial
MOVLW B’10010000’
MOVWF RCSTA
BANKSEL TXSTA
MOVLW B’00100100’
MOVWF TXSTA
MOVLW D’25’;25 = 9600-8N1
MOVWF SPBRG
BANKSEL RCSTA
; habilita interrupcoes
MOVLW B’11000000’;habilita GIE PEIE
MOVWF INTCON
BANKSEL PIE1
MOVLW B’00100000’;habilita RCIE
22
MOVWF PIE1
BANKSEL PIR1
CLRF PORTB
;loop infinito
MAIN: GOTO MAIN
END
23
Apêndice B
Códigos 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 permissão 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);
/******************** Finalização ******************************/
//libera permissão 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>
/* 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
short
value;
short
des;
unsigned char data;
HINSTANCE hLib;
INP32
Inp32;
OUT32
Out32;
/******************** Inicialização 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 função de leitura
if ((Inp32 = (INP32)GetProcAddress(hLib, "Inp32")) == NULL) {
printf("Unable to establish handle to input function.\n");
system("pause");
return 0;
}
//carrega função 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);
/******************** Finalização ******************************/
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;
//configuração
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;
//configuração
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
Apêndice C
Microcontrolador PIC16F628A
O microcontrolador é um circuito integrado que pode ser programado para executar
determinas funções.
O PIC utilizado no projeto é o PIC16F628, suas características são 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 função, a função utilizada pode ser programada via software e pode
ser mudada durante a execução do programa.
29
Figura C.1: Pinagem
Figura C.2: Foto Pic
Na Figura C.3 é mostrado os blocos lógicos internos do microcontrolador e seus periféricos.
30
Figura C.3: Diagrama Interno do PIC16F628
As funções dos pinos e os tipos de sinais são descritos nas Figuras C.4 e C.5.
31
Figura C.4: PORTA
32
Figura C.5: PORTB
O mapa de memória é mostrado na Figura C.6 e os dois bancos mais utilizados são
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 instruções assembly do PIC16F628 são listadas na Figura C.9.
36
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 ser
configurados como entradas ou saídas, essa configuração é 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’ siginifica que o pino será uma saída.
No pic16f628 todos os pinos das duas portas podem ser usados com entrada, como saída
apenas o pino RA5 não 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: Configuração PORTA
o PORTA e o PORTB tem funções multiplexadas em vários pinos, se essas funções
estiverem ativadas o pino do PORTx não pode ser utilizado como entrada e saída de dados
digitais.
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ções
são tratadas no endereço 0x0004 da memória de programa.
38
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 registradores. Para leitura e escrita serial existem mais dois registradores, TXREG e RCREG respectivamente.
Figura C.13: Configuração Transmissão Serial
39
Figura C.14: Configuração Recepção Serial
Figura C.15: Configuração Velocidade Serial
40
Apêndice D
Componentes
D.1 Alguns Componentes Utilizados
Para facilitar o entendimento do projeto, é descrito uma breve explicação sobre as funções dos
componentes 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 de Ohm I = VR .
Figura D.1: Símbolo Resistor
Figura D.2: Foto Resistor
Nos resitores comerciais seus valores são representados pelo código de cores descrito
na Tabela D.1.
41
Tabela D.1: Código 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
Tolerância
10%
5%
1%
2%
3%
4%
-
D.1.2 Interruptor
Interruptores são chaves mecânicas são utilizados para mudança de estado (ligado ou desligado
por exemplo), são dispositivos de entrada que permitem o usuário interagir com circuito. Normalmente são necessários resistores de pull-up ou pull-down quando são utilizados junto com
os microcontroladores, neste caso ainda é necessário a aplicação de uma técnica de debouncig
por software(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 apenas 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 de
aproximadamente 0,7V para os diodos de silício.
42
Figura D.5: Símbolo 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 máxima de 50mA, sendo
necessário a utilização de um resistor em série para limitar a corrente.
Figura D.7: Símbolo LED
Figura D.8: Foto LED
43
D.1.4 Transistor Bipolar
O transistor serve para amplificar sinais elétricos. Os transistores do tipo bipolar são amplificadores 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 máximo ou não
conduzindo nada (regiões de saturação e corte). Existem dois tipos de transitor bipolar, os PNP
e 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 nos
sinais de alimentação. Analogamente ao uso de uma caixa de água quando falta pressão na água
que vem da rua, o capacitor fornece energia quando por algum motivo ela não vem direto da
fonte e quando a alimentação da fonte está normal ele se carrega.
Figura D.11: Símbolo Capacitor
44
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 correto
funcionamento, principalmente circuitos digitais. OS circuito integrados reguladores de tensão
da série 78XX são os mais comuns e amplamente utilizados em circuitos, o XX indica a tensão
fixa de saída, um 7805 tem a tensão de saída fixa em 5Volts, a tensão de entrada tem que ser
maior pelo menos 2 Volts da tensão de saída e o valor máximo de entrada é de 35 Volts e a
corrente máxima fornecida é de 1 Ampére.
Figura D.13: Símbolo Regulador de Tensão
45
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 de
dois circuitos. O relé é formado por um eletroímã (uma bobina enrolada sobre um núcleo de
material ferromagnético) que quando acionado, através da atração eletromagnética, fecha os
contatos de um interruptor. Normalmente o interruptor de um relé tem duas posições, com isso
existem dois tipos, os NF(normalmente fechado) e NA (normalmente aberto). Um relé pode ter
vários interruptores (conhecidos como contatos) de ambos os tipos, normalmente eles suportam
correntes de ate dezenas de Ampéres e centenas de Volts. A bobina do relé é acionada por uma
tensão contínua que é especificada de acordo com o fabricante, bobinas de 5, 12 e 24 Volts são
as mais comuns.
Figura D.15: Símbolo Relé
46
Figura D.16: Foto Relé
D.1.8 Conversor RS232/TTL
Figura D.17: Conversor RS232/TTL
47
Download