programando para controle de dispositivos pelo computadoredsonh/repositorio/mecatrônica... · d.13...
Post on 16-Dec-2018
217 Views
Preview:
TRANSCRIPT
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
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
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
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 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.
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
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
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
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
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
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
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
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
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 SPPB.1 B.2.
10
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
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
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
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)
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
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
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
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
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
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/IO-Port-Programming.html)
PIC16F627A/628A/648A Data Sheet, Microchip ,DS40044F
21
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
MOVWF PIE1BANKSEL PIR1
CLRF PORTB;loop infinitoMAIN: GOTO MAINEND
23
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
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
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
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
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
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
Figura C.1: Pinagem
Figura C.2: Foto Pic
Na FiguraC.3é mostrado os blocos lógicos internos do microcontrolador eseus perifé-ricos.
30
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
Figura C.4: PORTA
32
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
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 FiguraC.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 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
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
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
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 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
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
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
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
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
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
Figura D.16: Foto Relé
D.1.8 Conversor RS232/TTL
Figura D.17: Conversor RS232/TTL
47
top related