Professional Documents
Culture Documents
CETRO TECOLÓGICO
DEPARTAMETO DE EGEHARIA ELÉTRICA
PROJETO DE GRADUAÇÃO
VITÓRIA – ES
JULHO/2009
JEFFERSO ZORTEA MORO
VITÓRIA – ES
JULHO/2009
JEFFERSO ZORTEA MORO
COMISSÃO EXAMIADORA:
___________________________________
Prof. Dr. Evandro Ottoni Teatini Salles
Orientador
___________________________________
Eng. Marcelo Souza Fassarella
Co-orientador
___________________________________
Profa. Dra. Eliete Maria de Oliveira
Caldeira
Examinadora
___________________________________
Eng. Alex Brandão Rossow
Examinador
i
AGRADECIMETOS
ii
LISTA DE FIGURAS
Figura 1 – Código para níveis de ocupação - Cortesia Prof. Ronaldo Balassiano. .....13
Figura 2 – Características do sensor infravermelho onde se observa uma forma de
onda típica do sinal elétrico obtido na saída do PIR [4]. .............................................16
Figura 3 – Lente de Fresnell [4]. .................................................................................16
Figura 4 – Capacitor com meio dielétrico variável .....................................................18
Figura 5 – Disposição física de um sensor do tipo Strain Gage [5]. ...........................21
Figura 6 – Strain Gage em ponte de Wheatstone [5]. .................................................22
Figura 7 – Aspecto de um sensor térmico, modelo TPA81 [11]. ................................23
Figura 8 – Transmissor e receptor de luz infravermelho [6]. ......................................24
Figura 9 – Sensor ótico por interrupção de feixe [5]. ..................................................25
Figura 10 – Sensor ótico por reflexão [5]. ...................................................................26
Figura 11 – Funcionamento do sensor óptico por triangulação...................................27
Figura 12 – Curva tensão de saída x distância. ............................................................29
Figura 13 – Espectro eletromagnético da luz visível [6]. ............................................29
Figura 14 – Característica de transmissão de um sensor PIR comercial [12]. ............30
Figura 15 – Módulo GSM 1.0 fabricado na Geocontrol, com partes destacadas. .......32
Figura 16 – Visão geral do projeto. .............................................................................33
Figura 17 – Fonte de alimentação do circuito contador. .............................................34
Figura 18 – Um modelo aplicável ao capacitor eletrolítico.........................................35
Figura 19 – Arbitragem no barramento CAN [7]. .......................................................36
Figura 20 – Datagrama CAN normal [7]. ....................................................................37
Figura 21 – Datagrama CAN estendido [7]. ................................................................38
Figura 22 – Pacote RS232 [8]. .....................................................................................40
Figura 23 – Modelo do sinal da comunicação RS232 [8]. ..........................................40
Figura 24 – Diagrama de blocos da arquitetura do MSP430f149 [9]..........................42
Figura 25 – Diagrama de blocos do TSOP32238 e configuração recomendada pelo
fabricante [10]. .............................................................................................................43
iii
Figura 26 – Curvas de sensibilidade e de resposta em freqüência, respectivamente,
do TSOP32238 [10]. ....................................................................................................44
Figura 27 – Modelo de uma das rodas do codificador do mouse e uma possível saída
dos sensores. ................................................................................................................45
Figura 28 – Modelo de como contar pessoas através de reflexão. ..............................47
Figura 29 – Layout do 1º circuito montado. ................................................................48
Figura 30 – Protótipo anterior ao projeto final do Guaiamu. ......................................49
Figura 31 – Guaiamu, lado dos LEDs e dos fotorreceptores. ......................................50
Figura 32 – Guaiamu, lado dos componentes de controle e de comunicação. ............50
Figura 33 – Diagrama de bolhas do processo de contagem. .......................................52
Figura 34 – Teste dos fotorreceptores realizado em dia ensolarado............................55
Figura 35 – Guaiamu instalado no alto da porta para realização de testes. .................57
Figura 36 – Guaiamu colocado na lateral da porta para propósito de testes. ..............58
Figura 37 – Quatro imagens mostrando detalhes do contador por corte de feixe de
luz.................................................................................................................................61
iv
LISTA DE TABELAS
v
GLOSSÁRIO
GPRS – General Packet Radio Service (Serviço Geral de Pacotes por Rádio)
GPS – Global Positioning System (Sistema de Posicionamento Global)
PWM – Pulse width modulation (Modulação por Largura de Pulso)
PIR – Pyroelectric InfraRed (Infravermelho Piroelétrico)
LED – Ligth Emition Diode (Diodo Emissor de Luz)
LASER – Light Amplification by Stimulated Emission of Radiation (Amplificação da
luz por Emissão Estimulada de Radiação)
IR – InfraRed (Infravermelho)
DSP – Detector Sensível à Posição
ERB – Estação Rádio Base
CA – Controller Area Network (Rede de Controle de Área)
PTC – Positive Temperature Coefficient (Coeficiente Positivo de Temperatura)
VDR – Voltage Dependent Resistor (Resistor Dependente da Tensão)
CSMA/CD+AMP – Carrier Sense Multiple Access with Collision Detection and
Arbitration on Message Priority (Acesso Múltiplo com Detecção de Portadora
/ Detecção de Colisão + Arbitragem na Prioridade da Mensagem)
EIA – Electronic Industries Association (Associação das Indústrias de Eletrônicos)
AGC – Automatic Gain Control (Controle Automático de Ganho)
RISC – Reduced Instruction Set Computer (Computador com Conjunto Reduzido de
Instruções)
LCD – Liquid Cristal Display (Display de Cristal Líquido)
JTAG – Joint Test Action Group (Grupo de Ação Conjunta de Testes)
USART – Universal Synchronous/Asynchronous Receiver/Transmitter
(Receptor/Transmissor Síncrono/Assíncrono Universal)
vi
SUMÁRIO
DEDICATÓRIA........................................................................................................... I
AGRADECIMETOS ...............................................................................................II
LISTA DE FIGURAS ............................................................................................... III
LISTA DE TABELAS ................................................................................................ V
GLOSSÁRIO ............................................................................................................. VI
SUMÁRIO ................................................................................................................VII
RESUMO ................................................................................................................... IX
1 MOTIVAÇÃO ................................................................................................10
1.1 O transporte público ..........................................................................................10
1.1.1 Melhorias .................................................................................................11
1.2 Como contar passageiros ..................................................................................11
1.2.1 A nova forma de contar ...........................................................................13
1.3 Objetivos do trabalho ........................................................................................13
2 TECOLOGIAS PARA COTAR PASSAGEIROS ................................15
2.1 Câmeras .............................................................................................................15
2.2 Sensor infravermelho passivo (PIR) .................................................................15
2.3 Sensor capacitivo ..............................................................................................17
2.4 Sensor por ultra-som .........................................................................................19
2.5 Sensores de força ..............................................................................................21
2.6 Sensor Térmico .................................................................................................23
2.7 Sensores óticos ..................................................................................................24
2.7.1 Sensor ótico por interrupção de feixe ......................................................25
2.7.2 Sensor ótico por reflexão da luz ..............................................................26
2.7.3 Sensor ótico por triangulação ..................................................................27
2.8 Discussão sobre sensores infravermelho passivos e ativos ..............................29
3 O PROJETO “GUAIAMU” ..........................................................................32
3.1 Visão geral do projeto .......................................................................................32
3.2 Descrição da unidade sensora ...........................................................................33
vii
3.2.1 Fonte ........................................................................................................34
3.2.2 Rede CAN ...............................................................................................36
3.2.3 Comunicação serial RS232 .....................................................................38
3.2.4 O microcontrolador .................................................................................41
3.2.5 O circuito de contagem............................................................................43
4 MÉTODO DE COTAGEM ........................................................................45
4.1 A codificação em quadratura ............................................................................45
4.2 Algoritmo ..........................................................................................................46
4.3 O protótipo ........................................................................................................47
4.3.1 Máquina de estados .................................................................................52
4.3.2 O Firmware .............................................................................................53
5 TESTES E RESULTADOS ...........................................................................54
5.1 Primeiros testes .................................................................................................54
5.2 Testes com o Guaiamu (versão final) ...............................................................56
5.3 Os problemas.....................................................................................................58
5.3.1 Controlador CAN externo .......................................................................59
5.3.2 JTAG .......................................................................................................59
5.4 Adaptações ao projeto .......................................................................................60
6 COCLUSÕES ..............................................................................................63
APÊDICE A .............................................................................................................65
REFERÊCIAS BIBLIOGRÁFICAS.....................................................................75
viii
RESUMO
Desenvolveu-se nessa monografia um dispositivo microcontrolado, capaz de
contar quantos passageiros estão dentro de um ônibus. O protótipo desenvolvido foi
avaliado em um típico coletivo que presta transporte público em Vitória-ES.
No protótipo foi previsto uma interface de comunicação CAN para permitir
sua integração com outros módulos digitais, como um rastreador via satélite de
veículos, que emprega tecnologia GPS+GPRS/GSM. Desta forma, além da localização
do ônibus, as empresas que exploram o serviço e os órgãos competentes também
podem ter uma estimativa, em tempo real, da lotação de cada veículo e assim, se
necessário, acrescentar novas linhas para atender pontos estratégicos da cidade.
Durante o trabalho algumas tecnologias foram avaliadas e optou-se por aquela
que apresentou uma boa relação custo x benefício, dadas as restrições impostas de
custo baixo, pequeno tempo de desenvolvimento, facilidade de instalação, metodologia
pouco intrusiva e baixa sensibilidade a fatores externos como temperatura e
iluminação.
Finalmente, testes foram realizados e os resultados alcançados foram
satisfatórios.
ix
10
1 MOTIVAÇÃO
1.1.1 Melhorias
Melhorias no transporte urbano devem ser feitas. Em 2014 o Brasil sediará a
Copa do Mundo de futebol. As cidades sedes, ou aquelas que aspiram em receber uma
base de imprensa, assumiram o compromisso de melhorar significantemente suas
infra-estruturas, a começar pelo transporte público. De acordo com o Ministério do
Turismo, um montante de 38,51 bilhões de reais serão necessários para fazer a
correção suficiente para atender à demanda por transporte nos locais de interesse para
a Copa [1]. Dessa quantia, São Paulo leva a maior parte, sendo que só para o
transporte rodoviário será gasto nessa cidade 3 bilhões de reais.
Diante dessa realidade, cabe refletir sobre o que seria qualidade no transporte
urbano. Podem-se enumerar várias palavras que remetem a esse assunto, em suma,
tem-se: conforto, pontualidade, segurança, rapidez e tudo isso com um preço acessível.
De uma forma direta, pode-se apresentar uma solução para o problema da falta de
pontualidade e do conforto.
A construção de dispositivos eletrônicos capazes de “saber” quantas pessoas
estão dentro do coletivo em um determinado intervalo de tempo, numa determinada
região pode ser uma boa solução. De posse desta informação, seria possível saber
quais os pontos e horários de pico e, com isso, linhas dedicadas para aquele
horário/trecho poderiam ser criadas. Além disso, o usuário poderia verificar através da
internet, por exemplo, o estado de lotação do ônibus que ele pretende embarcar e, se as
condições do coletivo não forem bem vistas, uma linha alternativa poderia ser
procurada.
calcular a tarifa. Para tanto, uma estimativa do uso do transporte deveria ser feita. O
que se usava era colocar fiscais em pontos estratégicos da cidade (ponto de pesquisa),
munidos com uma ficha (Tabela 1) para anotar, dentre outras coisas, qual a linha, o
horário e a lotação do coletivo (código de ocupação). A forma de avaliar o quão cheio
estava o carro era bem interessante: os fiscais também levavam consigo uma segunda
ficha (vide Figura 1) com a ilustração de cinco possíveis configurações de lotação
diferentes para os ônibus, sendo essas configurações rotuladas com letras de ‘A’ a ‘E’,
onde ‘A’ aponta para ônibus vazio e ‘E’ para ônibus superlotado. A EBTU foi extinta
em 1990 pelo Plano Collor, a partir daí o governo parou de subsidiar o transporte
público, deixando o gerenciamento a cargo de cada município.
O sistema a ser desenvolvido deve ser capaz de transmitir, em tempo real, uma
estimativa da lotação do ônibus para ações rápidas, a fim de melhorar a qualidade do
serviço prestado à população. Portanto, uma interface de comunicação CAN deve ser
prevista para possibilitar sua integração com outros módulos digitais, como um
rastreador via satélite de veículos, já em fase de implantação no transporte público de
Vitória. O dispositivo deve apresentar também as seguintes características:
• Facilidade de instalação, minimizando as necessidades de cabeamento em um
coletivo;
• Metodologia de medição pouco intrusiva, de modo a causar muito pouco
desconforto aos passageiros, e alterar o menos possível a estrutura do veículo;
• Capacidade de detectar pessoas que sobem e descem pela mesma porta;
• Pouca sensibilidade a fatores externos como temperatura e iluminação;
• Barato, para ser instalado em toda a frota de ônibus;
• Confiável, com uma boa taxa de acertos.
15
2.1 Câmeras
Durante o processo de pesquisa para a construção dessa monografia, não se
encontrou nenhuma tecnologia que apresentasse melhor precisão do que as que usam
câmeras de vídeo juntamente com circuitos e softwares de tratamento de imagens, para
contar passageiros. Todavia, não era esse o foco do trabalho, pois câmeras são caras e
suas imagens exigem um tratamento muito elaborado para funcionarem corretamente.
Além disso, como foi apresentado no capítulo 1, os métodos antigos de contagem não
exigiam precisão e assim sendo, essa qualidade pode ser deixada de lado como uma
escolha de projeto.
Figura 2 – Características do sensor infravermelho onde se observa uma forma de onda típica do sinal elétrico
obtido na saída do PIR [4].
duas placas condutoras paralelas separadas por um meio dielétrico (por exemplo, o ar),
conforme se observa na Figura 4.
= , [1]
onde :
A é a área em das placas paralelas,
d é distância em entre as placas,
ε é a permissividade do espaço livre (em ⁄),
ε
é a permissividade relativa do meio (adimensional).
o sensor numa faixa de atuação que ignore essas perturbações. Os sensores capacitivos
apresentam baixa deriva térmica (a capacitância varia pouco com a temperatura), pois
a constante dielétrica varia pouco com a temperatura.
Um dos problemas em se usar sensores capacitivos para contar pessoas é que a
distância de sensibilidade a obstáculos dos sensores comerciais não passam de 15cm.
Além disso, gastar-se-ia muita energia para criar um campo elétrico que fizesse
funcionar o sensor proposto na Figura 4.
algum objeto coberto pelo ângulo de detecção, esse reflete parte do sinal de volta para
o receptor que se encontra no mesmo local ou próximo ao transmissor. Quando a onda
refletida atinge o receptor, a temporização é encerrada e dessa forma é medido o
chamado tempo de vôo (ô ) que é o tempo gasto pela onda sonora para viajar do
emissor para o objeto e do objeto para o receptor. Tendo-se esse tempo e sendo
conhecida a velocidade de propagação do som no ar ≅ 330m/s, pode-se
determinar a distância até o objeto (no caso estudado aqui, pessoas).
onde:
! é a distância em entre o sensor e o objeto a se medir a distância,
é a velocidade em ⁄$ do som no ar, e
ô é o tempo de vôo, de ida e de volta, da onda sonora emitida pelo emissor
de ultra-som (dado em $).
módulo comprado.
Um contador de passageiros pode ser feito com esse material. Basta espalhar
esses sensores pelas escadas do veículo e processar as informações que deles vierem.
Por exemplo, se for detectado a presença de alguém no degrau inferior, depois no
degrau superior e inferior, e por último somente no superior, pode-se inferir que
alguém subiu no coletivo. Se a seqüência acontecer partindo do degrau superior e
terminar no inferior, pode ser que alguém deixou o veículo.
Um problema desse tipo de sensor é que ele deve ser tocado para funcionar, o
passageiro necessariamente deve pisar no dispositivo, causando possível desgaste,
22
afinal o ônibus é um sistema muito movimentado e o seu piso torna-se, por isso, um
lugar hostil.
Para aumentar percepção à variação na resistência e para compensar possíveis
flutuações de temperatura, os strain gages são muitas vezes utilizados numa
configuração “em ponte de Wheatstone”- apresentada na Figura 6. Para tanto, um
strain gage “dummy” (falso) é introduzido e não fica sujeito à tensão mecânica
aplicada, mas apenas às mudanças climáticas e aos ruídos que ocorrem no meio. Isto
elimina o efeito da flutuação da temperatura na medida da carga, além de reduzir erros
por ação de sinais perturbadores, pois V0 é um sinal diferencial - vide Equação 3.
'( ',
% = & − . . % , [3]
'( )'* ', )'-
onde:
Vs é a tensão em % da fonte de alimentação do circuito,
V0 é a tensão em %, cuja a variação informa a deformação no strain gage
ativo,
01 é um resistor, normalmente da mesma ordem de grandeza de 0 ,
02 é um potenciômetro para ajuste de ganho,
03 é o strain gage ativo, que efetivamente vai servir como sensor de força, e
0 é o strain gage dummy que não será usado como sensor, servirá apenas
para balancear a ponte de Wheatstone.
23
coletivo, o que torna a locomoção difícil. Veja que detectar é diferente de contar. Para
conhecer o sentido da caminhada de uma pessoa, faz-se necessário o uso de dois
sensores de interrupção de feixes, pelo menos. Se a seqüência de bloqueio dos feixes
for da direita para esquerda, tem-se algo se movendo nesse sentido, caso a seqüência
seja da esquerda para a direita, o sentido de caminhada do alvo é oposto ao anterior.
problema do excesso de potência que deve ser usada na transmissão, uma vez que
somente uma pequena parcela do sinal transmitido chega ao receptor. Mas melhorias
para isso já foram discutidas anteriormente.
onde:
%4 é a tensão de saída do sensor, em %,
6789:; é a uma tensão que varia de acordo com a posição que a luz atinge o
elemento DSP, mostrado na Figura 11,
= é a separação em entre as regiões centrais das duas lentes,
> é distância em entre o elemento sensor, DSP, e a lente da etapa receptora,
! é a distância em da lente da etapa de transmissão até o objeto alvo de
medida.
1
Wilhelm Wien (1864-1928).
30
faz-se confusão entre calor e luz, afinal ela relaciona comprimento de onda com a
temperatura.
onde:
> é uma constante e vale 2,898 H 10I1 J,
é o valor da temperatura absoluta do corpo (em J), e
KáL é o comprimento em de onda para o qual a intensidade de radiação
emitida é máxima.
Tome como exemplo o corpo humano, cuja pele está a temperatura de 306K.
Sabendo o valor da constante B, tem-se KáL = 9,47μm. Veja através da indicação
por uma seta na Figura 14 que esse valor está dentro da região de absorção dos
sensores PIR comercial.
onde:
6WXY é a potência líquida em Watts,
= é a área em do corpo em análise,
Z é a constante de Boltzmann, que vale 5,67H10I\ ]I J I3 ,
^ é a emissividade do corpo (^_`W` abcdc = 0,98),
é a temperatura em J do corpo e
é a temperatura em J do ambiente no qual o corpo está envolvido.
2
Joseph Stefan (1835-1893); Ludwig Eduard Boltzmann (1844-1906).
32
3 O PROJETO “GUAIAMU”
Os módulos Guaiamu, que são instalados sobre cada porta do coletivo, podem
se comunicar entre si via barramento CAN e sempre que houver uma atualização do
número de passageiros, um dos módulos (o da esquerda na Figura 16) fica encarregado
de fornecer ao rastreador, via RS232, informações de quantos passageiros existem
dentro do ônibus. Tais informações podem ser repassadas pelo circuito
microcontrolado para um módulo GPRS, que as envia para ERB’s espalhadas pela
cidade. Dessa forma, os dados que informam a posição do veículo e a quantidade total
de passageiros podem chegar até a um servidor, e a partir daí serem usados da melhor
forma possível.
3.2.1 Fonte
De acordo com [3], na bateria de um carro podem aparecer elevados níveis de
tensão, o que representa sérios riscos para uma carga desprotegida. Essas tensões
podem ser geradas por diversas fontes que são enumeradas na Tabela 2.
Para evitar danos aos componentes, faz-se necessário a construção de uma boa
fonte de alimentação. A Figura 17 apresenta o esquema de uma fonte desse tipo.
Deste circuito, pode-se afirmar que em baixas freqüências o capacitor tem seu
comportamento determinado pela capacitância . À medida que se aumenta a
freqüência, no entanto, o elemento indutivo h` se torna mais significativo, sendo
dominante em altas freqüências. A resistência 0` se deve, basicamente, ao eletrólito e
às conexões, variando de forma apreciável com a temperatura. A resistência tem um
36
equipamentos, criada no início dos anos 60, por um comitê conhecido atualmente
como “Electronic Industries Association” (EIA). Naquele tempo, a comunicação de
dados compreendia a troca de dados digitais entre um computador central (mainframe)
e terminais de computador remotos, ou entre dois terminais sem o envolvimento do
computador. Estes dispositivos poderiam ser conectados através de linha telefônica, e
conseqüentemente necessitavam de um modem em cada lado para fazer a
decodificação dos sinais. Dessas idéias nasceu o padrão RS232. Ele especifica as
tensões, temporizações e funções dos sinais, um protocolo para troca de informações, e
as conexões mecânicas [8].
Embora tenha sofrido poucas alterações desde sua concepção até os dias atuais,
muitos fabricantes adotaram diversas soluções que tornaram impossível a
simplificação da padronização proposta. Se, por exemplo, a norma EIA232 completa
for implementada, 22 dos 25 pinos do conector DB25 (conector normatizado) devem
ser utilizados para sinais ou terra! Para uso em microcontroladores, geralmente usa-se
uma configuração bem mais simples onde somente três fios são necessários (TxD,
RxD e GND). A comunicação se dá de forma assíncrona, sendo o datagrama similar ao
apresentado na Figura 22. O uso de bit de paridade é opcional, assim como o uso de
um segundo bit de stop bit.
40
Sinais com tensão entre –3 volts e –25 volts, em relação ao terra, são
considerados nível lógico “1”, e tensões entre +3 volts e +25 volts são considerados
nível lógico “0”. A faixa de tensões entre –3 volts e +3 volts é considerada uma região
de transição para a qual o estado do sinal é indefinido – Vide Figura 23.
3.2.4 O microcontrolador
O microcontrolador escolhido para o projeto foi o MSP430F149 fabricado pela
Texas Instruments. Trata-se de um microcontrolador com arquitetura RISC de 16 Bits
que possui como característica marcante seu baixo consumo de energia
(aproximadamente 280 µA/MIPS em modo ativo, 1.6 µA em modo standby e 0.1 µA
em modo de repouso). O modelo MSP430F149 possui capacidade de 60 kbytes de
memória flash de programação, 2 kbyte de memória RAM e 256 bytes de memória
flash/ROM que podem ser usadas para gravar informações de maneira não volátil. A
Figura 24 ilustra a arquitetura do microcontrolador em questão.
42
4 MÉTODO DE COTAGEM
Figura 27 – Modelo de uma das rodas do codificador do mouse e uma possível saída dos sensores.
quadratura, a distância entre os sensores deve ser menor do que a largura do objeto que
ativa os sensores (no caso do mouse, o objeto seria os dentes da roda).
Considerando que quando um dos dentes da roda obstrui o sensor tem-se
nível lógico alto nesse sensor, então a seqüência mostrada à direita na Figura 27 expõe
o caso em que a roda gira no sentido anti-horário. Em tal situação, podem-se distinguir
quatro estados: primeiramente ambos os sensores estavam desobstruídos, então se
tinha o estado 1 (AB = 00), depois o sensor B foi bloqueado e A continuou livre, tem-
se então o estado 2 (AB = 01), após isso passa-se para o estado 3 onde ambos sensores
foram bloqueados (AB = 11), na seqüência o sensor B é desbloqueado e A permanece
obstruído, caracterizando o estado 4 (AB = 10), e quando chega-se novamente ao
estado 1, conclui-se que o sentido do giro foi o anti-horário. O caso em que o sentido
de giro é o horário é semelhante, todavia tem-se o estado 4 substituído pelo 2 e o
estado 2 substituído pelo 4. Veja que a codificação dos estados é feita por código de
Gray, isso é uma característica dos codificadores em quadratura.
4.2 Algoritmo
Agora que já se sabe o princípio de funcionamento do codificador em
quadratura aplicado ao mouse, poder-se-á expandir essas idéias para outro tipo de
aplicação.
Imagine como ficaria a seqüência de estados se os dentes da roda do mouse
fossem substituídos por objetos discretos de mesma dimensão e espaçamento
deslocando-se na direção tangencial ao sentido de giro da engrenagem. Ter-se-ia a
mesma seqüência que a gerada por uma roda de mouse. Se substituir-se os dentes da
roda por pessoas, e preparar um aparato sensor adequado, tal princípio pode ser
explorado para contar passageiros em um coletivo.
Se for usado LEDs para construir um sensor em quadratura, duas configurações
distintas podem ser arranjadas. Uma usando sensores óticos por interrupção de feixe, e
outra usando sensores óticos por reflexão da luz. O Guaiamu faz uso do segundo caso.
Para detectar o sentido de circulação de passageiros, basta um receptor IR e dois
LEDs emissores. Acende-se um emissor de cada vez e avalia-se qual a situação do
47
4.3 O protótipo
No caminho seguido até o projeto Guaiamu ficar pronto, algumas versões
foram montadas. A Figura 29 mostra o esquema com drive adotado para excitar os
LEDs e a polarização do fotorreceptor. Os sinais ESQUERDA e DIREITA são
responsáveis em “autorizar” o acendimento dos LEDs. Os LEDs são autorizados a
48
O circuito controlador foi feito com base no teclado IHM 2.0, produzido na
Geocontrol (Figura 30). Ele foi usado porque possui fonte, display LCD e um
microcontrolador MSP430F149, servindo assim como kit de desenvolvimento
microcontrolado.
O segundo protótipo é uma evolução do primeiro – Vide Figura 30. Veja que o
projeto é composto basicamente de 6 LEDs transmissores de luz, um fotorreceptor e o
teclado.
A montagem sobre um pedaço de canaleta foi feita para oferecer uma base
rígida ao circuito e para possibilitar a variação da posição dos pares transmissores de
49
luz. Isso foi importante para, de forma experimental, localizar uma boa separação entre
os LEDs.
A versão final do Guaiamu pode ser vista nas Figuras 31 (lado dos LEDs e dos
fotorreceptores) e Figura 32 (lado dos demais componentes), nela podem-se identificar
suas partes principais. Veja que os LEDs estão envoltos por uma espécie de espaguete
opaco. Isso foi necessário porque de alguma forma, a luz dos LEDs estava chegando
aos fotorreceptores.
50
4.3.2 O Firmware
O firmware foi desenvolvido usando a linguagem C, e a plataforma de
desenvolvimento utilizada foi o Quadravox 2.0.6.9.
Como os LEDs que compõem os emissores de luz do circuito são idênticos e
oscilam na mesma freqüência, faz-se necessário acendê-los um de cada vez para assim
decidir qual LED está gerando o sinal de luz que possivelmente foi refletida. O que se
faz é deixar cada emissor aceso por um intervalo de tempo superior a 10 vezes o
período do sinal multiplexador (10⁄k ), e instantes antes de apagá-lo, verifica-se se
existe sinal de luz no fotorreceptor. Se sim, considera-se que a há algo abaixo dele.
Veja que somente dois LEDs e um fotorreceptor são suficientes para verificar o
sentido (entrada ou saída) do movimento de alguém. Contudo, o que se fez no
Guaiamu foi construir 3 linhas paralelas com quatro LEDs em cada uma. Se os LEDs
de uma linha forem considerados como um sensor linear, tem-se um aumento na área
de detecção.
No firmware do Guaiamu, acende-se primeiramente os LEDs que estão mais
internos ao ônibus e em seguida, os mais externos. Como somente um LED é aceso a
cada instante, sabe-se exatamente qual deles é responsável pela luz que chega no
receptor. Uma função chamada “VerificaGente” retorna quatro valores diferentes para
os quatro casos possíveis: a luz de algum LED externo está sendo refletida, a luz de
algum LED interno está sendo refletida, a luz de LEDs internos e externos está sendo
refletida, ou ainda não há luz refletida.
Se essa função for chamada freqüentemente, é possível monitorar e atualizar
os estados da máquina de estados da Figura 33.
Maiores detalhes a respeito do firmware podem ser encontrados no apêndice
A.
54
5 TESTES E RESULTADOS
piso que está sob o circuito contador, assim maximizar-se-ia o contraste entre o
passageiro e o piso do carro.
Para fazer a calibração num ponto ideal onde a luz refletida no chão não
consiga excitar o receptor foi criada uma rotina com o nome “calibra”. Trata-se de
uma função feita em linguagem C que faz chavear os LEDs na freqüência de 38opq.
Se houver recepção de sinal de luz, aumenta-se a freqüência de chaveamento dos
LEDs, por meio do controle de PWM do microcontrolador, e verifica-se novamente se
a luz chega ao receptor. O ciclo se repete até o ponto em que a luz refletida seja
incapaz de ser percebida pelo receptor. Para um melhor entendimento, recorra à Figura
26, nela pode-se verificar que a sensibilidade do TSOP32238 cai à medida que a
freqüência de modulação dos LEDs se afasta de k = 38opq.
É importante frisar que, por se tratar de um aparelho que funciona com luz
infravermelho modulada, a irradiação proveniente de outros tipos de fontes, como a
solar, não surte efeito sobre os receptores de luz. Na Figura 34 observa-se um
momento de teste dos fotorreceptores, realizado em dia ensolarado. O resultado dos
testes não foram diferentes dos realizados em laboratório, mostrando assim a
imunidade dos sensores aos efeitos externos.
O funcionamento correto em condições tão adversas é uma vantagem dos
sensores de infravermelho ativo. O sensor PIR, quando foi exposto as mesmas
condições de clima, mostrou-se bem irregular, não funcionando corretamente.
Um problema que aparece quando erros são inevitáveis é o efeito acumulativo.
Após um dia todo de circulação, no final o aparelho poderá estar marcando lotação
média quando o ônibus está vazio, por exemplo. Para solucionar esse tipo de caso,
podem-se aproveitar os dados do GPS e zerar os dados do aparelho sempre que o
coletivo se encontrar no local correspondente ao seu ponto final.
Em relação ao local de instalação no ônibus, um bom ponto é a região
exatamente sobre a porta, onde fica normalmente a lâmpada que ilumina as escadas.
Numa versão futura, LEDs brancos de alta intensidade luminosa podem ser acoplados
a placa do contador para substituir essa lâmpada.
solução já foi apresentada no item 5.1. A Figura 35 ilustra a montagem feita para este
teste.
(contador no teto) é maior que a do segundo caso, pois a porta é mais alta do que larga.
Numa instalação lateral, essa informação pode ser considerada: na seção 5.1, sugeriu-
se pintar o chão do carro de preto para diminuir os efeitos de reflexão. Ora, gastar-se-
ia menos tinta pintando uma pequena área lateral do que uma grande área no piso do
carro. Além disso, quanto mais longe a pessoa estiver do contador, mais espaço ela
andará sendo “percebida” pelo aparelho, e isso dá margem a erros previsíveis na
máquina de estados.
5.3 Os problemas
Quando se executa um projeto de engenharia com complexidades um pouco
maiores em relação aquelas que você está acostumado a enfrentar, é possível que se
aprenda algo de novo, nem que seja uma forma de não realizar aquilo. No projeto
59
Guaiamu isso aconteceu. Várias escolhas foram bem feitas, outras nem tanto. Nas
seções 5.3.1 e 5.3.2 falar-se-á desses problemas.
5.3.2 JTAG
O Joint Test Action Group (JTAG) que é uma especificação criada para fazer
testes de placas de circuito impresso (PCB), pois a tarefa se tornou muito dispendiosa
com a aplicação cada vez mais crescente dos circuitos integrados. Em adição aos testes
nas placas, muitos chips estão incluindo à interface JTAG novas tarefas, como
programação e depuração. No projeto do Guaiamu o JTAG foi usado para gravar o
firmware no microcontrolador, mas também poderia ser usada para depuração.
A interface JTAG consiste de cinco sinais lógicos: Reset (TRST), Clock (TCK),
Mode Select (TMS), Data In (TDI), e Data Out (TDO). O sinal Reset é opcional.
60
quanto de firmware. Além disso, circuitos de peça única, que podem ser montados
completamente numa só placa, são interessantes já que se evita excesso de cabos e
conseqüente dificuldades de instalação, e também são compactos e de pouco impacto
visual. Por ser constituído por uma placa com diversas facilidades tais como fonte,
interface RS232 e CAN, o Guaiamu pode ainda ser usado como plataforma de
desenvolvimento de outros produtos.
Usando os mesmos dispositivos que os usados no Guaiamu (LEDs e
fotorreceptores), montou-se um contador por corte de feixe de luz. A Figura 37 traz a
versão montada em protoboard e controlada pelo teclado citado na seção 4.3. Todavia,
com duas placas de circuito impresso do Guaiamu, pode-se melhorar esse outro
modelo de contador, bastando para isso soldar os LEDs e os respectivos drivers numa
placa, e os módulos receptores e demais componentes em outra. Dessa forma, ao
contrário do sensor por reflexão de luz, separa-se a placa do emissor da do receptor,
mas elas se comunicam por meio de cabos.
Figura 37 – Quatro imagens mostrando detalhes do contador por corte de feixe de luz.
62
6 COCLUSÕES
APÊDICE A
Abaixo segue o código escrito na linguagem C, do arquivo principal do
firmware gravado no microcontrolador do Guaiamu. Nele podem-se encontrar as
principais funções utilizadas, bem como a descrição em código da máquina de estados,
ilustrada na Figura 33.
/*******************************************************************************/
/* FIRMWARE "GUAIAMÚ2" - Interface com PC
FUNCIONAMENTO BÁSICO COM LEDS EXTERNOS
GEOCONTROL JULHO DE 2009 */
/*******************************************************************************/
#include <msp430x14x.h>
#include "SI_UART.h"
//estados
#define espera 0
#define entrando 1
#define ambos_ent 2
#define quase_den 3
#define entrou 4
#define saindo 5
#define ambos_sai 6
#define quase_for 7
#define saiu 8
#define indeciso 9
/*********************************************************************/
/* DECLARAÇÃO DAS FUNÇÕES */
/*********************************************************************/
INT8U DetectouLuz(void);
INT8U VerificaGente(void);
void Calibra(void);
/*************************************************************************/
/* DECLARAÇÃO DAS VARIÁVEIS GLOBAIS */
/*************************************************************************/
INT8U TEMPO_ATIVO = 108;
INT8U PERIODO = 217;
/************************************************************************/
/* FUNÇÃO PRINCIPAL */
/************************************************************************/
void main(void){
/************************************************************************/
/* DECLARAÇÃO DAS VARIÁVEIS LOCAIS+ INICIALIZAÇÃO DE PINOS */
/************************************************************************/
67
INT8U aux;
INT8U estado = espera;
P1DIR |= BIT4 + BIT5 + BIT6 + BIT7; // Define P1.4...P1.7 como saída (LEDs)
P2DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7; //define P2.0....P2.7 como saída (LEDs)
P1OUT &= ~(BIT4 + BIT5 + BIT6 + BIT7); //inicia com 0V na saída
P2OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7); //inicia com 0v na saída
P6DIR &= ~(BIT5 + BIT6 + BIT7); //Define P6.5 .. P6.7 como entrada (sensores)
/*************************************************************************************/
/* INICIALIZANDO AS CONFIGURAÇÕES DO uCONTROLADOR */
/*************************************************************************************/
// clock
BCSCTL1 &= ~XT2OFF;
do {
IFG1 &= ~OFIFG;
Delay(1);
}
while(IFG1 & OFIFG);
BCSCTL2 |= SELM_2 + SELS;
// timerA (38kHz)
TEMPO_ATIVO = PERIODO >> 1; //divide por dois
TACTL = TASSEL_2 + TACLR; // SMCLK, limpa Tar
CCR0 = (PERIODO - 1); // PWM Periodo
CCTL1 = OUTMOD_7; // CCR1 reset/set (modo de saída 7)
CCR1 = TEMPO_ATIVO; // CCR1 PWM duty cycle
P1DIR |= BIT2; // P1.2 output (37kHz)
P1SEL |= BIT2; // P1.2 e P1.3 TA1/2 opção (ligado a periférico)
TACTL |= MC0; // Start Timer_A em up mode
Formata(passageiros,convertido);
put_string(PC,"CONTADOR DE PASSAGEIROS"); //escreve mensagem inicial na tela do PC
Formata(PERIODO,convertido);
68
put_string(PC,convertido); //escreve o tento de período de clock p/ não ver chão
/**********************************************************************/
/* LOOP INFINITO (MÁQUINA DE ESTADOS) */
/***********************************************************************/
while(1) {
aux = VerificaGente();
switch (estado){
case espera:
if(aux == FORA) //verifica lado de FORA
estado = entrando;
else if(aux == DENTRO) //verifica lado de DENTRO
estado = saindo;
else
estado = espera;
break;
case entrando:
if(aux == FORA) //para permanecer aqui
estado = entrando;
else if(aux == DENTRO + FORA) //ambos refletindo
estado = ambos_ent;
else
estado = espera; //caso a pessoa voltar ou a máquina se perder
break;
case ambos_ent:
if(aux == DENTRO + FORA)
estado = ambos_ent;
else if(aux == DENTRO) //ou a máquina passa para o próximo estado...
estado = quase_den;
else if(aux == FORA) //ou ela volta para o estado anterios.
estado = entrando;
else
estado = espera;
break;
case quase_den:
if(aux == DENTRO)
69
estado = quase_den;
else if(aux == 0)
estado = entrou;
else if(aux == DENTRO + FORA)
estado = ambos_ent;
else
estado = espera;
break;
case entrou:
passageiros++; //incrementa "passageiros"
estado = espera;
Formata(passageiros,convertido);
put_string(PC,convertido); //manda dado pela serial
break;
case saindo:
if(aux == DENTRO)
estado = saindo;
else if(aux == DENTRO + FORA)
estado = ambos_sai;
else
estado = espera;
break;
case ambos_sai:
if (aux == DENTRO + FORA)
estado = ambos_sai;
else if(aux == FORA)
estado = quase_for;
else if (aux == DENTRO)
estado = saindo;
else
estado = espera;
break;
case quase_for:
if(aux == FORA)
estado = quase_for;
else if(aux == 0)
estado = saiu;
else if (aux == DENTRO + FORA)
estado = ambos_sai;
70
else
estado = espera;
break;
case saiu:
passageiros--; //decrementa passageiros
estado = espera;
Formata(passageiros,convertido);
put_string(PC,convertido); //mandar algum dado pela serial
break;
default:
estado = espera;
} //fim switch
} //fim while
} //fim da main
/**************************************************************/
/* FUNÇÕES */
/**************************************************************/
/*************************************************************
ATRASO
*************************************************************/
void Delay(INT32U tempo){ //função atraso. Delay de "0.01*tempo" [ms]
tempo = tempo * 80; //8000 periodos de clock para 1 ms
while(tempo){
tempo--;
}
/*************************************************************
VERIFICA SE HÁ LUZ NOS FOTORRECEPTORES
*************************************************************/
INT8U DetectouLuz(void){ //verifica se ha luz no sensor
INT16U i=200; //"debounce" para garantir sinal correto ERA 500
Delay(13); //3*0.01 ms para estabilização (cerca de 10 periodos do 37khz)(mudei:2)
71
while(i){
if((P6IN & BIT5)&&(P6IN & BIT6)&&(P6IN & BIT7)){ //Todos com 3V3, "sem sinal de luz"
return 0; //não é luz plena
}
i--;
}
return 1; //luz plena!!
}
/***************************************************************
TRANSFORMA DE INTEIRO PARA CARACTER PARA
SER ENVIADO VIA SERIAL RS232
***************************************************************/
void Formata(int converter, INT8U *vetor){
vetor[0] = ' ';
if(converter < 0){
converter = ~converter + 1; //complemento de 2
vetor[0] = '-';
}
vetor[1] = (converter/100) + '0'; //quociente + 48
converter = (converter % 100); //resto
vetor[2] = (converter/10) + '0'; //quociente + 48
converter = (converter % 10); //resto
vetor[3] = converter + '0';
/************************************************************
LIGA O LED PASSAFO COMO PARÂMETRO "led"
************************************************************/
void LigaLed(INT8U led){
if(led == L1)
P1OUT |= BIT4;
else if(led == L2 )
P1OUT |= BIT5;
else if(led == L3 )
P1OUT |= BIT6;
else if(led == L4 )
P1OUT |= BIT7;
else if(led == L5 )
P2OUT |= BIT0;
else if(led == L6 )
72
P2OUT |= BIT1;
else if(led == L7 )
P2OUT |= BIT2;
else if(led == L8 )
P2OUT |= BIT3;
else if(led == L9 )
P2OUT |= BIT4;
else if(led == L10 )
P2OUT |= BIT5;
else if(led == L11 )
P2OUT |= BIT6;
else
P2OUT |= BIT7;
}
/**************************************************************
DESLIGA O LED PASSAFO COMO PARÂMETRO "led"
**************************************************************/
void DesligaLed(INT8U led){
if(led == L1)
P1OUT &= ~BIT4;
else if(led == L2 )
P1OUT &= ~BIT5;
else if(led == L3 )
P1OUT &= ~BIT6;
else if(led == L4 )
P1OUT &= ~BIT7;
else if(led == L5 )
P2OUT &= ~BIT0;
else if(led == L6 )
P2OUT &= ~BIT1;
else if(led == L7 )
P2OUT &= ~BIT2;
else if(led == L8 )
P2OUT &= ~BIT3;
else if(led == L9 )
P2OUT &= ~BIT4;
else if(led == L10 )
P2OUT &= ~BIT5;
else if(led == L11 )
P2OUT &= ~BIT6;
else
P2OUT &= ~BIT7;
73
}
/************************************************************************
ESSA FUNÇÃO RETORNA "FORA" SE HA ALGUEM ENTRANDO
RETORNA "DENTRO" SE HÁ ALGUÉM SAINDO
RETORNA "FORA + DENTRO" SE HÁ ALGUEM NO MEIO DO TRAJETO
*************************************************************************/
INT8U VerificaGente( ){
INT8U RetornaValor = 0;
INT8U voto = 0;
INT8U led;
voto = 0;
return RetornaValor;
/*******************************************************************
FUNÇÃO USADA PARA DEFINIR A FREQUÊNCIA DE OSCILAÇÃO
DOS LEDs, DE FORMA A PERDER O BACKGROUND
74
*********************************************************************/
void Calibra(void){ //função que ajusta a sensibilidade do sensor
Delay(50);
while(VerificaGente( )){
Delay(50);
}
75
REFERÊCIAS BIBLIOGRÁFICAS