anunciador por voz de baixo custo para cabina de elevadores

Propaganda
UNIVERSIDADE FEDERAL DO PARANÁ
SETOR DE TECNOLOGIA
DEPARTAMENTO DE ELETRICIDADE
ANUNCIADOR POR VOZ DE BAIXO CUSTO
PARA CABINA DE ELEVADORES
Curitiba, Paraná
Novembro de 2005
OTÁVIO JOSÉ SILVEIRA
ANUNCIADOR POR VOZ DE BAIXO CUSTO
PARA CABINA DE ELEVADORES
Projeto Final apresentado como requisito para
conclusão do Curso de Graduação em
Engenharia Elétrica, do Setor de Tecnologia da
Universidade Federal do Paraná.
Orientador Professor Dr. Ewaldo Luiz de Mattos
Mehl.
Curitiba/PR, Novembro de 2005
Resumo
O estudo aqui apresentado tem por objetivo apresentar uma solução de baixo custo
para sistemas de anunciação por voz de paradas de elevadores, tentando abranger o maior
número possível de modelos e tecnologias. É conhecido que em nosso país muitas pessoas e
instituições são obrigadas a se privar de coisas relativamente simples por falta de poder
aquisitivo. Assim, foi pesquisado o que o mercado oferece de soluções, procurando usar como
referência produtos que pudessem representar tão bem quanto possível uma situação que
possa ser considerada típica, tanto do lado de tecnologia e forma de funcionamento, quanto de
custos de aquisição e instalação. A partir deste ponto, procurou-se minimizar a necessidade de
dispositivos extras que façam parte apenas do sistema de anunciação, tais como conjuntos de
sensores de posição, e que de alguma forma tenham funções similares com outras do próprio
quadro de comando, resultando em uma solução que demande pouco investimento e possa
explorar recursos já existentes e que muitas vezes já são considerados obsoletos e se tornam
lixo eletrônico.
Palavras-chave: Anunciador por voz, baixo custo, deficiente visual, acessibilidade.
ii
Sumário
1
INTRODUÇÃO ................................................................................................................. 1
2
UMA BREVE DESCRIÇÃO DO CIRCUITO DE CONTROLE DE UM ELEVADOR ................... 2
2.1
2.2
2.3
2.4
FECHAMENTO DA PORTA ......................................................................................... 2
PARTIDA .................................................................................................................. 3
PARADA ................................................................................................................... 4
ABERTURA DA PORTA .............................................................................................. 4
3
O ANUNCIADOR POR VOZ .............................................................................................. 6
4
O MERCADO ATUAL ....................................................................................................... 9
4.1
4.2
SITUAÇÃO EXISTENTE .............................................................................................. 9
SITUAÇÃO PROPOSTA ............................................................................................. 10
5
DESCRIÇÃO DO PROJETO ............................................................................................ 12
6
O SOFTWARE GERENCIADOR ...................................................................................... 14
6.1
6.2
6.3
ESCOLHENDO O AMBIENTE DE TRABALHO ............................................................. 14
A LINGUAGEM VISUAL BASIC ................................................................................ 15
CRIAÇÃO DO SOFTWARE ........................................................................................ 17
6.3.1
Botoeira virtual ............................................................................................ 18
6.3.2
Indo ao próximo andar................................................................................. 19
6.3.3
Porta fechada, elevador descendo ............................................................... 20
6.3.4
Porta aberta, andar térreo ........................................................................... 20
6.4
OBTENDO OS DADOS NECESSÁRIOS DO ELEVADOR ................................................. 23
MÓDULO ELETRÔNICO ................................................................................................ 25
7
7.1
7.2
VALORES DE PICO E MÉDIO: TENSÃO ALTERNADA ................................................. 25
DETECÇÃO DE ABERTURA DE PORTA ...................................................................... 28
7.2.1
O redutor de tensão ...................................................................................... 28
7.2.2
Ponte de Diodos .......................................................................................... 29
7.2.3
Um circuito RC paralelo ............................................................................. 30
7.2.4
Um buffer final ............................................................................................ 33
7.3
DETECÇÃO DA DIREÇÃO DE MOVIMENTO ................................................................ 34
7.4
IDENTIFICAÇÃO DO ANDAR ATUAL ........................................................................ 34
7.4.1
Divisor de tensão ......................................................................................... 34
7.4.2
Detector de pulsos negativos ....................................................................... 35
7.4.3
Formando o pulso de acionamento do contador ........................................ 36
7.4.4
O contador e a conversão para serial ......................................................... 37
7.5
ENVIANDO DADOS PARA O COMPUTADOR .............................................................. 40
7.6
FONTE DE ALIMENTAÇÃO ...................................................................................... 41
8
CUSTOS DO ANUNCIADOR POR VOZ PROPOSTO ........................................................... 44
iii
CONCLUSÃO ........................................................................................................................ 45
REFERÊNCIAS ..................................................................................................................... 46
ANEXO A - CÓDIGO-FONTE DO SOFTWARE ....................................................................... 47
ANEXO B - TESTES PRÁTICOS E IDÉIAS DE MELHORIAS .................................................... 52
ANEXO C - DESENHO ESQUEMÁTICO DO MÓDULO ............................................................ 54
GLOSSÁRIO ......................................................................................................................... 55
iv
Lista de Figuras
Figura 1 - Acionamento do anunciador no fechamento da porta .......................................... 7
Figura 2 - Acionamento do anunciador no fechamento da porta .......................................... 8
Figura 3 - Janela do Visual Basic ....................................................................................... 16
Figura 4 - Janela do programa ........................................................................................... 18
Figura 5 - Fluxograma com a lógica do software ............................................................... 22
Figura 6 - A forma de onda de uma tensão alternada ......................................................... 26
Figura 7 - Polarização direta e polarização reversa ............................................................ 29
Figura 8 - Ponte de diodos e sua atuação com tensões positivas e negativas ..................... 30
Figura 9 - Forma de onda obtida da ponte de diodos ......................................................... 30
Figura 10 - Forma do sinal após a inserção de um capacitor e um resistor na saída... ...... 32
Figura 11 - Circuito completo para detecção de abertura e fechamento de porta .............. 33
Figura 12 - Circuito final do módulo. ................................................................................. 41
Figura 13 - Circuito da fonte de alimentação ..................................................................... 43
v
Lista de Tabelas
Tabela 1 - Duração dos arquivos WAV usados pelo software ........................................... 23
Tabela 2 - Situações possíveis para acionamento do contador........................................... 36
vi
1 Introdução
Hoje em dia é cada vez maior a preocupação da sociedade em permitir que pessoas
portadoras de deficiências de qualquer natureza tenham melhores oportunidades de levar uma
vida normal, sem que sua deficiência resulte necessariamente em alguma limitação. Rampas e
elevadores em lugares onde antes só haviam escadas, escrita braile e o recurso closed caption
presente em televisores mais modernos são alguns exemplos desta preocupação.
Mesmo assim, ainda há muita coisa que pode ser feita ou aperfeiçoada. Ainda é
pequeno o número de estabelecimentos comerciais ou residenciais de qualquer natureza que
permitem que deficientes visuais façam uso de elevadores sem a necessidade de um
ascensorista para lhes auxiliarem, garantindo de alguma forma que este chegue sem
dificuldade ao andar desejado.
É fato que existem dispositivos eletrônicos integrados ao circuito de comando e outros
facilmente instaláveis em vários modelos de elevadores, que sintetizam voz e são capazes de
anunciar o andar sempre que houver uma parada do elevador. Mesmo assim, em muitos
prédios antigos ainda é inviável financeiramente tal implantação, devido a limitações de oferta
de opções do próprio mercado que sejam compatíveis com orçamentos limitados.
Desta forma, é apresentado neste trabalho uma solução capaz de se adaptar a
elevadores de qualquer natureza, sejam eles com comando de tecnologia eletromecânica ou
digital e com baixo custo de aquisição e implementação.
1
2 Uma breve descrição do circuito de controle de um elevador
No dia 27 de outubro de 2005, foi feita uma visita ao local onde se situa as instalações
da empresa JOSS Elevadores. Nesta visita, conversou-se com técnicos com a finalidade de se
obter informações com o máximo de detalhes possível sobre como funcionam elevadores
eletromecânicos e digitais. Durante a permanência no local, foi fornecido o material citado na
referência [1] e com este, juntamente com conteúdo informado verbalmente, foi possível
conhecer de uma maneira geral como opera um elevador.
Um elevador consiste em um importante meio de transporte para pessoas e cargas em
nosso mundo, possibilitando um deslocamento vertical com mais rapidez e conforto, em
edificações de qualquer natureza. Por conseqüência, permite uma maior acessibilidade a
pessoas idosas e/ou deficientes, além de contribuir para a melhoria da qualidade de vida e das
condições de trabalho das pessoas, especialmente aquelas que trabalham com transporte de
objetos pesados.
Independente da tecnologia e do projeto de cada elevador, pode-se citar quatro funções
básicas que são executadas após cada registro de chamada: fechamento da porta, partida,
parada e abertura da porta.
2.1 Fechamento da porta
Uma vez realizada uma chamada, seja através da botoeira da cabina ou de qualquer um
dos pavimentos, um sinal elétrico é enviado ao quadro de comando, localizado na casa de
máquinas. No quadro de comando está o circuito responsável pela operação e gerenciamento
de todas as quatro funções citadas, e parte deste circuito tem uma função de eletricamente,
usando uma matriz de relês ou células de memórias em CI´s, reproduzir/emular a exata
situação da cabina a cada momento, assim como as chamadas ainda pendentes.
Sem esta matriz, o comando não é capaz de saber onde se encontra a cabina e em
muitos casos de falta de energia, principalmente em elevadores eletromecânicos, esta matriz é
2
“resetada” tornando-se necessário que o elevador vá até o extremo inferior do poço para haver
o ajuste correto de sua posição no circuito de comando.
Havendo a chamada, imediatamente o quadro de comando enviará um sinal para o
motor e operador da porta da cabina, que a fechará. Prevendo a segurança dos usuários, as
portas de pavimento possuem um trinco eletromecânico que garante que:
a) a porta da cabina não fechará, nem o elevador irá se movimentar com a porta do
pavimento aberta. Caso isso ocorra, o elevador pára automaticamente.
b) a porta do pavimento não abrirá caso a cabina não esteja devidamente nivelada no
respectivo andar.
2.2 Partida
A porta está fechada. O passo seguinte é colocar o elevador em movimento.
Similarmente à porta dos pavimentos, a porta da cabina também possui um dispositivo capaz
de informar ao quadro de comando que esta se encontra fechada.
Quando isto acontece, a parte do circuito localizado no quadro de comando que é
responsável pelo motor é acionada, fazendo com que a corrente possa alimentar o motor de
tração, ao mesmo tempo em que o freio mecânico que o mantém parado é liberado. Através
de um conjunto de polias e cabos de aço, a cabina e o contrapeso entram em movimento.
Durante a viagem, o quadro de comando precisa obter informações sobre a posição da
cabina no poço do elevador. Para isso, podem ser usados diversos meios, como sensores
colocados a cada andar no caso de elevadores mais modernos ou que sofreram modificações.
Nos eletromecânicos, é mais comum o uso de escovas distribuídas ao longo do poço de modo
que estas são acionadas por um contato fixado na própria cabina, ou por uma fita que
acompanha o movimento dos cabos de aço e dotada de pequenos contatos metálicos, com a
forma de dentes, movendo pinças e gerando pulsos que são enviados ao quadro de comando.
Quando há o contato nas escovas de cada andar ou um contato passa pelas pinças, uma nova
célula ou relê na matriz de memória é ativado(a), atualizando a posição do elevador na matriz.
3
Tal alteração é refletida nos indicadores de posição localizados tanto na cabina quanto
nos pavimentos, que também receberão pulsos elétricos indicando cada mudança de andar
para cima ou para baixo.
2.3 Parada
Quando o elevador chegar ao andar de destino, ocorrerá a parada, cujas etapas
ocorrerão de forma inversa à da partida. Assim como acontece em cada mudança de um andar
para outro, sensores, escovas ou dentes na fita são usados para marcação da exata posição de
parada da cabina, havendo também marcos um pouco antes, tanto para cima quanto para
baixo, para se saber quando iniciar a frenagem (note que nenhum elevador pára bruscamente
em situações normais). Sensores que indicam mudança de pavimento se localizam em
posições intermediárias.
Ao se atingir o primeiro destes sensores, o de início de parada, o quadro de comando
começará a atuar sobre o motor. Elevadores eletromecânicos possuem uma lógica capaz de
operar o motor em duas velocidades. Na maior parte do tempo, ele opera em sua velocidade
mais alta e só fará uso da mais baixa quando passar no primeiro marco, que indica o momento
de início da parada. No caso de elevadores digitais, pode-se conseguir uma parada constante e
progressiva, ao contrário dos eletromecânicos, trazendo um conforto maior a seus usuários.
O segundo sensor é o responsável pela posição exata onde a cabina deve parar. O mau
posicionamento deste poderá fazer com que um degrau entre o piso da cabina e do pavimento
se forme, gerando risco de acidentes. A parada definitiva significa a cessão da corrente ao
motor de tração e o acionamento de seu freio.
2.4 Abertura da porta
Com a cabina parada na posição correta, resta apenas a última etapa para completar o
atendimento da chamada: abrir a porta. Já atingimos a condição essencial para isso, que é a
4
cabina parada. Assim, o quadro de comando envia um novo sinal ao motor e operador da
porta da cabina, permitindo ao usuário seu acesso ao pavimento desejado.
Deste momento em diante, novamente todo o circuito ficará em modo de espera até
que a próxima chamada seja efetuada e se reinicie o ciclo aqui descrito.
5
3 O anunciador por voz
Tendo uma noção de como um elevador funciona, torna-se mais fácil imaginar a
implantação do anunciador por voz desejado. Baseado em estudo de campo, consistindo na
visita a várias lojas e prédios da cidade, foram destacados alguns pontos em comum com
todos eles, servindo posteriormente para a elaboração da lógica do módulo eletrônico.
O correto funcionamento de um anunciador que informe as paradas e as partidas
depende de três variáveis, capturáveis no próprio quadro de comando ou através de conjunto
de sensores:
a) Abertura e fechamento de porta: é a principal variável. Ela irá fazer com que o software
do anunciador saiba quando agir, enviando os sons para o alto-falante localizado na
cabina assim que a porta abra ou feche.
b) Direção de deslocamento: alguns anunciadores também informam o fechamento da porta
e a direção de deslocamento, função esta que também está prevista para ser executada no
protótipo aqui apresentado.
c) Pavimento atual: número do pavimento de parada, a ser anunciado no momento da
abertura da porta da cabina.
Eis um exemplo prático do que acontece, imaginando que uma pessoa no térreo deseje
ir até o 4º andar. Supõe-se também que a cabina não está no térreo, sendo necessário chamar o
elevador.
Primeiramente, o painel de comando na casa de máquinas agirá deslocando a cabina
até o térreo atendendo à chamada. Ao chegar, a porta irá se abrir e o controle do anunciador
será capaz de detectar que a abertura ocorreu. Neste momento, um software fará a leitura tanto
deste sinal quanto do andar onde está ocorrendo a parada. Sabendo que a porta se abriu no
andar térreo, ele vai selecionar o(s) som(ns) correto(s) para ser dito “PORTA ABERTA.
ANDAR TÉRREO”, audível no alto-falante localizado no interior da cabina. Na figura 1 é
ilustrado o momento da abertura da porta, ativando o anunciador e havendo a veiculação da
mensagem.
6
Quarto
andar
Figura 1 - Acionamento do anunciador na abertura da porta
Sabendo que o elevador se encontra no térreo e com a porta aberta, o usuário entrará e
poderá apertar o botão relativo ao 4º andar (deve-se de alguma forma assegurar que
deficientes visuais possam localizar os botões corretos, dotando-os de números em código
braile, por exemplo). Novamente o quadro de comando será acionado, comandando o
fechamento da porta, que sendo detectado fará o software acionar a próxima seqüência de
sons. Primeiramente, será anunciado “PORTA FECHADA”.
Após este anúncio, será checada a direção de deslocamento da cabina (para cima ou
para baixo). Tomou-se esta decisão tendo em vista que os componentes eletromecânicos como
relês, chaves e mesmo motores de porta da cabina tenham um tempo de acionamento milhares
de vezes maior do que os componentes MOS usados no PC, ou mesmo no módulo detector de
sinais. Fazendo-se um “passo a passo” de sinais, dá-se um tempo maior no intuito de evitar
leituras errôneas. No caso específico deste exemplo, o anúncio poderá ser finalizado com a
mensagem “ELEVADOR SUBINDO”. Caso a indicação de subida ou descida seja a única ou
a primeira informação anunciada, pode-se programar o anunciador para aguardar alguns
poucos décimos de segundo antes de veicular a mensagem.
A figura 2 ilustra o acionamento do anunciador no momento em que a porta se fecha,
sendo informado o sentido no qual o elevador irá se deslocar.
7
Elevador
Subindo
Figura 2 - Acionamento do anunciador no fechamento da porta
Agora o elevador está subindo até parar no 4º andar. Ao chegar, acontecerá o mesmo
procedimento descrito para quando o elevador parou no térreo, dessa vez anunciando
“PORTA ABERTA. QUARTO ANDAR”.
Pequenas variações deste exemplo são possíveis se considerarmos outros modelos.
Alguns elevadores apenas anunciam o andar durante a parada, enquanto outros possam
desempenhar as mesmas funções ou até mais do que o aqui exposto, permitindo que enquanto
ocioso, o sinal de uma rádio qualquer possa ser enviado à cabina. Pode-se em lojas grandes,
instaladas em vários pavimentos interligados por elevador, anunciar qual a seção instalada
naquele determinado pavimento.
8
4 O mercado atual
4.1 Situação existente
Consideremos inicialmente um elevador eletromecânico com quadro de comando a
relê. Há já no mercado várias soluções disponíveis. Em algumas delas, é necessário conectar
ao painel de relês um módulo eletrônico capaz de, de alguma forma, identificar algum sinal
elétrico referente ao posicionamento da cabina. Outras propõem um sistema independente do
circuito de comando do elevador, sendo nesses casos obrigatório a instalação de um conjunto
de sensores ao longo de todo o poço.
Tal topologia implica em um custo adicional com um conjunto de sensores e fiação,
cuja quantidade aumenta proporcionalmente ao número de pavimentos. Além disto, esta
instalação requer mais mão de obra e constitui uma fonte extra de risco aos técnicos que farão
o serviço. Há, conseqüentemente, um aumento de custo que depende do número de andares da
edificação.
Na casa de máquinas torna-se necessário haver um espaço adicional para a alocação da
placa ou do controlador responsável pelo gerenciamento das mensagens na cabina.
Geralmente este espaço está localizado no próprio quadro de comando. Caso, por algum
motivo, este já não esteja disponível ou presente, será necessário que de alguma forma seja
criada um espaço físico para alocação do controlador, e que para a correta alocação do
equipamento, demanda custos extras ao cliente.
Se o elevador tiver controle digital, existem vários modelos de placas, algumas delas
já contendo o recurso de anunciação por voz no próprio quadro de comando, porém o
interesse neste ponto está focado naquelas que não o possuam.
Devido a essa enorme gama de casos (considerando também diferenças existentes
entre cada modelo já produzido pelas tantas fabricantes atuantes ou que já atuaram na área de
fabricação de elevadores), torna-se difícil fixar até mesmo uma faixa de custo total de
implementação.
9
Um exemplo de equipamento existente para elevadores eletromecânicos é o Cortex
Voice 40 RDEA da JBN Electronics. Este modelo é bastante completo e seu custo total já
instalado, ou de modelos similares, pode facilmente passar de R$ 2.000,00. Suas principais
características são, segundo referência [4]:
a) sensores de posição e transmissão de dados de posição da cabina ao controlador feitas
opticamente.
b) permite que um canal de rádio FM seja transmitido à cabina enquanto nenhuma
mensagem é veiculada.
c) saída própria para indicador de posição fornecido separadamente JBN Electronics.
4.2 Situação proposta
Embora para prédios aparentemente não represente um preço final tão elevado, os
custos estimados para um equipamento já existente no mercado, e onde possa haver um maior
número de pessoas para dividir a despesa. Prédios onde venham a se instalar empresas ou
associações de pessoas preocupadas em prestar auxílio às pessoas que mais necessitam é onde
mais se faz mais necessário qualquer tecnologia que aumente a acessibilidade de deficientes.
Em casos como este tal custo por si só se faz um fator que inviabiliza a implantação.
Não é raro vermos pessoas pedindo ajuda em campanhas de todas as formas, o que mostra que
recursos financeiros já são escassos até mesmo para o objetivo principal destas
empresas/pessoas.
No caso de edificações com vários elevadores, há a necessidade de se implantar um
dispositivo anunciador em cada um deles. Com isso o custo se torna cada vez mais alto a cada
nova cabina equipada.
10
Pensando justamente na redução de custos, tentou-se aproveitar ao máximo o que já
existe no próprio circuito do elevador, incluindo:
a) leitura do sinal enviado aos indicadores de posição, eliminando a necessidade de sensores
extras.
b) uso do sensor de porta aberta e de contatos e chaves para detecção de abertura de portas e
direção de deslocamento.
c) gerenciamento de mensagens através de um microcomputador de baixo custo. Pela
simplicidade do software, qualquer computador, por mais obsoleto que seja, tem
condições de executá-lo. Com isso eliminamos o componente de maior custo em um
anunciador convencional.
É conveniente lembrar que uma vez que se usa um computador comum, torna-se uma
alternativa o uso de algum que já esteja instalado no prédio, seja ele para uso relacionado com
serviços da própria administração ou não, para executar a funções do software, reduzindo
ainda mais qualquer custo de implantação.
11
5 Descrição do projeto
Visando apresentar uma solução mais barata para elevadores eletromecânicos, foi
desenvolvido um novo sistema operado via microcomputador, com a capacidade de se adaptar
a uma vasta gama de modelos de elevadores e com instalação relativamente simples.
Alguns estudos de viabilidade mostram num primeiro momento ser pouco viável
investir em um equipamento também capaz de desempenhar sua função em elevadores com
tecnologia digital.
Empresas de grande porte do ramo de projeto e construção destes não têm interesse em
divulgar detalhes construtivos e da arquitetura de seus projetos, o que dificulta o acesso a
estas informações, além do próprio circuito por si só, claramente de maior complexidade.
Provavelmente haja uma diversidade de circuitos de quadros de comando bastante
grande dentro da tecnologia digital. Se assim for, torna-se inviável para qualquer pessoa
interessada em desenvolver novas funções para comandos digitais, caso ela não faça parte do
quadro de funcionários de alguma empresa responsável por fabricar ou construir elevadores.
É muito arbitrária qualquer tentativa de desenvolvimento de anunciadores para
operação subordinada a circuitos digitais nestas condições. Caso haja condições favoráveis ao
projeto no futuro, o módulo poderá ter sua versão para comando digital desenvolvida.
Mesmo assim, os conceitos básicos não mudam, com a vantagem de que já
trabalharíamos com pulsos, e é de se esperar que em alguns casos seja possível usá-los
diretamente para acionar os contadores responsáveis por indicar o andar atual.
Dessa forma, serão considerados no projeto apenas elevadores eletromecânicos.
12
Basicamente ele será dividido em duas partes:
a) Um microcomputador para leitura de sinais do módulo eletrônico e decodificação,
identificando quais sons deverão ser reproduzidos. Para isto, um software simples deverá
ser instalado, já acompanhado de todos os arquivos em formato WAV necessários.
b) Um módulo eletrônico para leitura de sinais. Este será anexado a locais específicos do
circuito de comando do elevador de modo a estar recebendo os sinais com as informações
necessárias.
13
6 O software gerenciador
6.1 Escolhendo o ambiente de trabalho
O ambiente Linux, segundo análise feita em fase de planejamento, apresenta diversas
vantagens práticas que justificam o desenvolvimento neste ambiente. Primeiramente, o Linux
apresenta-se como um sistema de considerável estabilidade, proporcionando a qualquer
software uma vulnerabilidade nula a falhas do próprio sistema operacional, tanto de falhas do
próprio processamento quanto de vírus, que pouca ou nenhuma ação consegue ter neste
ambiente.
Ele também exige bem menos recursos de processamento de informações que seu
concorrente, o Windows. Isso fica ainda mais evidente quando nossa intenção é ter um
programa que não tenha necessidade de uma interface gráfica com o usuário, a qual não é
fundamental para o funcionamento do Linux com todas as suas vantagens aqui descritas,
tornando-o ainda mais acessível a qualquer computador.
Há a opção de se poder executar um programa qualquer automaticamente assim que o
Linux for iniciado, assim como é possível se fazer em outros sistemas operacionais
conhecidos, como o próprio Windows. Isso garante que mesmo pessoas que não tenham
conhecimento algum do sistema operacional sejam capazes de ativá-lo. Como um último
ponto positivo, dá-se assim uma contribuição para o combate à pirataria, já que o Linux é de
distribuição livre e pode ser adquirido legalmente até mesmo pela Internet sem custos ao
usuário.
Entretanto, a pouca familiaridade do autor com o sistema operacional, assim como a
pouca bibliografia sobre desenvolvimento de software em linguagem C em ambiente Linux,
em particular informações sobre os recursos do SDL (Simple DirectMedia Layer) necessários
para se reproduzir sons em C e o tempo limitado para desenvolvimento, forçaram mudanças
nos planos, fazendo com que o software fosse desenvolvido em Visual Basic, em ambiente
Windows.
14
6.2 A linguagem Visual Basic
O Visual Basic é uma linguagem bastante poderosa e dinâmica desenvolvida pela
Microsoft. Sua origem está no antigo Basic, porém muita coisa mudou: a antiga linguagem
não visual e baseada em programas formados por seqüências de linhas de comandos, escritas
em modo texto, deu lugar ao dinamismo e à praticidade.
A linguagem é baseada na programação orientada a objetos e eventos, ou seja, o
programador pode trabalhar diretamente numa interface gráfica e de forma não linear. Os
objetos são todos os elementos visuais, como botões de comando e barras de rolagem, e não
visuais, como temporizadores, que possuem uma função bem definida para a aplicação
desenvolvida. Eventos são uma espécie de comando capaz de acionar blocos de código,
disparados a partir de qualquer interação usuário/programa ou de situações específicas
relacionadas com falhas, temporizadores e portas de comunicação.
Cada objeto criado possui uma série de eventos pré-definidos. Se estes eventos
possuírem algum código associado a eles, através de uma Event Procedure, cada vez que
estes ocorrerem, o código será executado. As Event Procedures são funções criadas com
nomes especiais, na forma “NomeDoObjeto_NomeDoEvento”, e devido ao seu nome, o
Visual Basic é capaz de estabelecer a relação entre os objetos e eventos, segundo descreve a
referência [9].
Em uma linguagem de programação orientada a objetos e eventos, não há uma ordem
pré-estabelecida para que as linhas de código sejam executadas. De fato, as instruções são
executadas apenas quando é necessário. Por exemplo: quando se usa um programa para enviar
e-mails, este fica ocioso na memória enquanto o usuário redige a mensagem. Apenas quando
se deseja enviar a mensagem o programa irá voltar a ficar ativo, executando todas os passos
necessários para se realizar o envio da mensagem, voltando a ficar sem ação em seguida.
A janela do Visual Basic se divide em quatro partes principais:
a) As barras de ferramentas e menus, localizadas na parte superior da tela, possibilitam o
acesso aos principais recursos oferecidos, permitindo que rapidamente se adicionem
15
novos formulários, conhecidos popularmente como as janelas do programa, faça testes na
aplicação em desenvolvimento ou até mesmo faça uso de assistentes que criam algumas
aplicações quase instantaneamente.
b) A barra de componentes, localizada à esquerda da tela, que permite que objetos sejam
incluídos a um formulário em um clique. Além dos componentes padrão, outros podem
ser adicionados facilmente, de forma que o programador possa ser capaz de criar uma
variedade ainda maior de aplicações, ou apenas dar a seu programa um visual diferente.
c) Barra de projeto, localizada na parte superior direita, permite a navegação entre os
diversos formulários, módulos (onde se pode desenvolver funções e declarar variáveis que
podem ser chamadas de qualquer parte do programa) e rotinas que compõem a aplicação.
d) Barra de propriedades, localizada na parte inferior direita, mostra várias características do
objeto atualmente selecionado, permitindo que sua aparência, posição, tamanho e outras
características específicas para cada tipo de objeto sejam alteradas.
e) Área de trabalho, ocupando a maior parte da tela, onde são exibidos formulários e rotinas
criadas, e também permitindo que elas sejam editadas.
A figura 3 mostra a janela do Visual Basic 5.0 em espanhol, versão usada para o
desenvolvimento do software aqui descrito.
Figura 3 - Janela do Visual Basic
16
6.3 Criação do software
A lógica básica desenvolvida foi a de ler os dados vindos da porta serial e agir sempre
que um novo valor lido seja diferente do anterior. A forma como o programa deverá agir
nesses casos é discutida mais à frente.
O software é sensível a qualquer mudança nos dados presentes na porta serial, usando
esta para leitura de dados, a qual também permite ser programada mais facilmente. Há um
evento específico, chamado OnComm, do objeto MSComm que é gerado sempre que uma
quantidade de bytes definíveis através da propriedade InputLen é transmitida. Ocorrendo o
evento, é acionada a rotina responsável pela decisão do que deve ser feito em função da
natureza da mudança do valor.
Assim que o programa é carregado, ele vai procurar estabelecer uma conexão com
uma porta serial. Neste momento ela será aberta para o recebimento de dados. Deve-se ter
cuidado com que porta escolher. Portas seriais na informática são as chamadas portas COM,
havendo por padrão sempre duas portas habilitadas, porém é importante atentar que a primeira
delas, COM1, por padrão é usada para receber comandos do mouse e dessa forma pode-se
impor limitações indesejadas ao usuário do sistema.
A outra porta disponível é COM3. Geralmente esta porta é usada para ativar modem´s
usados para acesso à Internet via conexão discada. No entanto, este não é considerado um
fator relevante neste momento, uma vez que se supõe ser muito improvável que um mesmo
computador seja usado para acesso discado à Internet e anunciadores de voz. Não havendo
outras aplicações “populares” que façam uso de COM3, a escolha é o uso desta para o
recebimento das informações.
Uma vez iniciada a transferência de dados, o princípio básico de funcionamento do
software é o uso de um temporizador para controlar os tempos de espera entre a reprodução
de cada arquivo usado a se fechar ou abrir a porta da cabina. Assim que detectada a mudança
na condição da porta, o primeiro som é executado e o respectivo temporizador entra em ação.
17
Todo a lógica do código-fonte do programa é descrito nas próximas seções, sendo
usada a referência [3] para se obter conhecimento dos principais comandos e suas respectivas
sintaxes e a referência [2] para um entendimento satisfatório de como manipular dados através
da porta serial. Por fim, o desenvolvimento do programa gerou o código reproduzido no
Anexo A e a janela de programa mostrada na figura 4.
Figura 4 - Janela do programa.
Como forma de se conseguir a melhor lógica de manipular os arquivos WAV, foi
usado um pacote de funções já desenvolvidas pela Microsoft para possibilitar que estes
fossem facilmente carregados, sem uma aparente necessidade inicial de se usar um objeto
tocador de som para cada um dos arquivos usados para anunciação. Graças a estas foi possível
usar o código empregado. Sua versão original encontra-se disponível na referência [6].
6.3.1 Botoeira virtual
Para efeitos de testes e demonstração rápida de como o anunciador funciona, criou-se
também uma botoeira virtual abaixo do display do andar, capaz de reproduzir o virtualmente
um quadro de comando, a menos de funções de gerenciamento de paradas. Esta botoeira é
18
capaz de fazer o software funcionar gerando os valores corretos a serem lidos pelo programa e
em seguida chamando a função que decide qual ação deve ser tomada.
A botoeira é formada por uma matriz de objetos “botão de comando”, funcionando
similarmente às matrizes de variáveis, bastante conhecidas de qualquer linguagem de
programação existente. Com isso, atribui-se índices a cada um dos botões. Assim que um
deles é clicado, seu índice na matriz representa o andar para onde ele deve ir.
Primeiramente ele simula o fechamento da porta, já ativando um temporizador
auxiliar, colocado para simular o deslocamento da cabina ao longo dos andares, evitando que
esta chegue ao andar de destino quase que imediatamente. Este temporizador possui uma
rotina bastante simples, fazendo uso também de uma variável auxiliar. Essa variável tem a
mesma função indicar a direção de movimento do elevador, recebendo o mesmo valor do bit
de direção de deslocamento da cabina, fazendo com que uma vez ativado o timer (similar ao
acionamento do motor de tração na casa de máquinas) a cada evento OnTimer gerado haja
uma mudança de andar.
Chegando ao andar de destino, simula-se a abertura da porta e este temporizador é
desativado até a próxima chamada.
6.3.2 Indo ao próximo andar
A leitura do andar onde o elevador está passando ocorre junto com seu movimento.
Como descrito mais à frente, o módulo eletrônico atualiza seus dados assim que identifica o
pulso enviado ao indicador de posição e já disponibiliza seu valor à porta serial.
Neste momento, o software já identifica que um novo valor está disponível. Como só
houve uma mudança de andar, somente estes bit´s serão lidos e o valor é dividido em duas
variáveis, sendo D recebendo a dezena do andar e U a unidade. Estas duas variáveis serão
utilizadas assim que o elevador realizar a parada e abrir a porta.
19
6.3.3 Porta fechada, elevador descendo
O fechamento de porta é o mais simples de todos: quando a porta se fecha, é
instantaneamente acionado o som PFE.WAV que contém a mensagem “Porta Fechada”. No
mesmo momento, o temporizador “tm_fporta” é ativado, gerando um evento chamado
OnTimer assim que a primeira mensagem acabar de ser transmitida.
Este evento é gerado pelo temporizador periodicamente, sendo que o tempo entre cada
evento é definida pela sua propriedade Interval. Seu valor indica o intervalo em
milissegundos. Este valor foi configurado para 1600, baseado no tempo de gravação de
PFE.WAV, de 1,5 segundos, mais um pequeno tempo extra que se tornou necessário na
prática para que o programa estivesse pronto para prosseguir com a mensagem. O motivo de
se tornar necessário mais 0,1s não se sabe exatamente, sendo atribuído a outras aplicações ou
rotinas que o Windows estivesse executando no momento ou até mesmo tempo de acesso ao
disco rígido. De qualquer forma, o desempenho geral do software continuou satisfatório.
Uma vez que o temporizador gere o evento OnTimer, é verificado o bit recebido que
contém a informação relativa ao deslocamento da cabina, havendo nessa hora a seleção entre
UP.WAV e DOWN.WAV, contendo respectivamente as mensagens “Elevador Subindo” e
“Elevador Descendo”. Após este momento, não é mais necessário que outros arquivos sejam
reproduzidos, e assim o temporizador “tm_fporta” é novamente desabilitado para evitar que a
direção do elevador seja anunciada repetidamente.
6.3.4 Porta aberta, andar térreo
A abertura da porta exige uma rotina ligeiramente mais complexa, visto que temos
diversos sons a serem executados em seqüência, precisando para isso criar uma lista de
reprodução. Quando a porta se abre, três ou quatro arquivos devem ser reproduzidos: o
primeiro é o PAB.WAV contendo a mensagem “Porta aberta”, seguido da dezena e da
unidade do andar, cujos arquivos que serão reproduzidos são dependentes do número do andar
e terminando é reproduzido ANDAR.WAV, com a palavra “andar”. Quando o elevador pára
no térreo, a ordem se inverte um pouco, sendo que neste caso torna-se necessário um
20
tratamento diferenciado: o arquivo ANDAR.WAV deve executado antes de TERREO.WAV,
portador da palavra “térreo”.
Acionado da mesma forma que no caso anterior, a primeira atitude do programa é
reproduzir PAB.WAV, enquanto aciona o outro temporizador, chamado de “tm_aporta”.
Nesse ponto, ele já está preparado para esperar até que PAB.WAV seja finalizado, sendo
atribuído à propriedade Interval um valor adequado. O funcionamento daí em diante estará
subordinado a uma variável de controle que indicará qual arquivo, entre a dezena, unidade e a
própria palavra “andar” é o próximo da lista. Essa variável, arbitrariamente chamada de OP
começa em 0. Este valor indica que o segundo arquivo da seqüência deve ser executado, o
primeiro já foi a anunciação da abertura da porta.
Com OP igual a zero, há duas opções: se for o térreo, ANDAR.WAV será
reproduzido, se for um andar do primeiro ao nono, nada irá acontecer, e se for do décimo para
cima, Dx.WAV, onde x representa a dezena do andar atual, contendo mensagens como
“Décimo” e “Vigésimo”. Em qualquer um destes casos, novamente a propriedade Interval do
temporizador receberá um novo valor compatível com a duração do arquivo tocado no
momento. Caso seja um andar entre o primeiro e nono, um valor bem baixo é atribuído a
Interval para que logo se reproduza o próximo arquivo. A partir de agora, OP é 1.
OP sendo 1 indica que o terceiro arquivo será tocado, novamente de acordo com a
necessidade. Estando no térreo, o próximo arquivo é TERREO.WAV, e para os outros casos,
Uy.WAV, sendo y a unidade do andar atual, com exceção dos casos onde o elevador esteja
em algum pavimento cujo número seja múltiplo de 10, como o 10º ou 20º. Novamente o
temporizador é reconfigurado para o próximo caso da mesma forma citada no parágrafo
anterior. O próximo passo é atualizar OP, mas agora haverá uma diferenciação: sendo térreo,
OP vai direto para 3, enquanto que nos outros casos se torna 2.
A seleção dos casos nos quais deve ser feito algo quando OP é 2 já foi feita ainda no
passo anterior. Em todos eles, ANDAR.WAV será tocado. Sendo este o último arquivo
necessário, não há necessidade de se preocupar com um novo ajuste do temporizador, e
apenas OP é atualizado para 3.
21
Esta última situação só existe devido ao fato de haver um número variável de arquivos
de som tocados, e está presente como uma forma de finalizar a mensagem e desativar player
até que este novamente tenha que entrar em ação. OP igual a 3 apenas torna novamente o
temporizador “tm_aporta” inativo.
Para facilitar o entendimento da lógica do software, a figura 5 traz um fluxograma que
a representa. Como já descrito, há um ciclo que se inicia cada vez que um byte chega pela
porta serial. Enquanto um byte não é recebido, o software estará em estado de espera. Assim,
este ficará a maior parte do tempo na ação “Aguarda Recebimento de novo byte”, sendo este
também o ponto de início da lógica.
Figura 5 - Fluxograma com a lógica do software
22
Para os arquivos citados, segue-se a tabela 1, que apresenta uma relação da duração de
cada um deles:
Tabela 1 - Duração dos arquivos WAV usados pelo software
Nome do arquivo Duração [s]
u1.wav
1,10s
u2.wav
1,25s
u3.wav
1,19s
u4.wav
1,00s
u5.wav
0,91s
u6.wav
1,15s
u7.wav
1,37s
u8.wav
1,27s
u9.wav
1,09s
d1.wav
1,10s
d2.wav
1,47s
d3.wav
1,46s
d4.wav
1,67s
d5.wav
1,69s
d6.wav
1,87s
d7.wav
1,81s
d8.wav
1,80s
d9.wav
1,73s
up.wav
1,89s
down.wav
1,98s
pab.wav
1,48s
pfe.wav
1,61s
terreo.wav
2,02s
andar.wav
0,97s
Valor de Interval
1220
1370
1310
1120
1030
1270
1490
1390
1210
1220
1590
1580
1790
1810
1990
1930
1920
1850
2010
2100
1600
1730
2140
1090
conteúdo
“primeiro”
“segundo”
“terceiro”
“quarto”
“quinto”
“sexto”
“sétimo”
“oitavo”
“nono”
“décimo”
“vigésimo”
“trigésimo”
“quadragésimo”
“qüinquagésimo”
“sexagésimo”
“setuagésimo”
“octogésimo”
“nonagésimo”
“Elevador subindo”
“Elevador descendo”
“Porta aberta”
“Porta fechada”
“Andar Térreo”
“andar”
6.4 Obtendo os dados necessários do elevador
Na comunicação entre o software e o circuito do elevador, feita através da porta serial,
observa-se diferenças bastante grandes nos níveis de tensão e formato de sinais, tornando
necessária que tal recepção de informações seja feita com o intermédio de um circuito
eletrônico, que converterá sinais em corrente alternada com valores de tensão elevados para
sinais digitais inteligíveis ao computador.
23
Sua ligação com o módulo eletrônico usando a porta serial é feita através de uma
palavra de oito bits, assim constituídas:
P D A5 A4 A3 A2 A1 A0
- P constitui o bit mais significativo e indica a situação da porta. 0 significa porta aberta e 1
porta fechada.
- D informa a direção de deslocamento da cabina do elevador. 1 se estiver subindo, 0 se
estiver descendo. Caso esteja parado (porta aberta) o valor deste bit é ignorado.
- A5 a A0: 6 bits que indicam efetivamente o andar onde a cabina do elevador está,
independente de estar em movimento ou não. No caso do protótipo desenvolvido, é
conveniente alertar que não foi considerado um prédio contendo pavimentos exclusivos para
garagem, salão de festas, sub-solo, etc., os quais poderão ser posteriormente incluídos
conforme seja necessário. É conveniente salientar que no momento o limite é de 64
pavimentos, sendo este um valor compatível com qualquer prédio hoje existente até mesmo
nas grandes metrópoles brasileiras.
A leitura e atualização das informações acontece sempre que o valor presente na porta
serial é alterado. Sempre que há uma leitura, as informações são processadas, havendo três
possibilidades de ação:
a) A porta estava aberta e se fechou: o elevador está começando a se deslocar. Deverão ser
anunciados o fechamento da porta e a direção de deslocamento.
b) A porta estava fechada e continua fechada: mudou-se os dados, havendo apenas um
deslocamento para outro andar. Apenas o valor exibido na janela do programa é
atualizado.
c) A porta estava fechada e se abriu: houve uma parada e deverá ser anunciados a abertura
da porta e o andar.
O programa não é ainda capaz de detectar situações que não sejam estas. Qualquer
outro evento como, por exemplo, uma mudança de andar com a porta aberta é ignorado. A
razão para isso é que todo gerenciamento eletrônico envolvido no correto funcionamento de
todos os componentes do elevador é função do próprio quadro de comando.
24
7 Módulo eletrônico
Cabe ao módulo eletrônico a leitura de todos os três sinais necessários:
a) Porta Aberta/fechada. Detecção da condição do contato da porta da cabina. Como
pesquisado, com o contato aberto, pode-se medir uma tensão alternada de 60Hz com
amplitude aproximada de 55Vrms entre seus terminais. (informação verbal)
b) Subida ou descida da cabina. Há um relê no quadro de comando que pode fornecer esta
informação. Sua localização exata pode variar de um modelo para outro, assim como a
direção representada em cada um de seus estados. Estando aberto, também é mensurável
uma tensão alternada de 55Vrms entre seus terminais.
c) Andar/posição. Este sinal é o mesmo enviado ao indicador de posição. Sua lógica consiste
em um pulso de tensão positiva para deslocar o indicador um andar acima e um de tensão
negativa para um andar abaixo, ambos da ordem de 55V também.
A função deste módulo é fazer a adequação do sinal para viabilizar sua leitura com
segurança ao computador. Os constantes picos de aproximadamente 78V fatalmente
queimariam um computador em poucos segundos. Em prol de uma segurança ainda maior, o
circuito foi projetado para a queima de componentes do próprio módulo antes que qualquer
pico possa de alguma forma atingir o computador usado. Esses componentes funcionam como
buffers e consistem em portas lógicas com tecnologia CMOS e serão detalhadas
posteriormente.
7.1 Valores de pico e médio: tensão alternada
Essas diferenças entre os valores nominais e seus valores de pico se justificam porque
tensões alternadas possuem amplitudes variáveis ao longo do tempo, tendo um
comportamento que segue o da variação da função seno, originado pelo movimento giratório
dos ímãs ou enrolamentos de um gerador. Por este comportamento no tempo, a forma de onda
é chamada senóide.
25
Um ciclo completo de uma senóide se inicia no momento em que a tensão é nula e
crescente e dura até que novamente a tensão seja nula e crescente, conforme demonstrado na
figura 5, onde se dá um exemplo de uma senóide de 60Hz e 78V de tensão de pico. Semiciclo
é o nome usado comumente para se falar do período enquanto a tensão for sempre negativa ou
sempre positiva.
Figura 6 - A forma de onda de uma tensão alternada.
No caso em questão, 55V é usado como valor nominal por representar um valor médio
de todos os que a tensão assuma ao longo de um ciclo. Para efeito de podermos comparar
grandezas elétricas variáveis no tempo, incluindo as tensões alternadas de interesse ao projeto,
usa-se um valor médio quadrático.
A média quadrática que empregamos para achar este valor garante que tanto os
semiciclos positivos quanto os negativos irão ser considerados da mesma forma, sem que haja
uma anulação entre os dois, o que ocorreria caso usássemos uma média aritmética, resultando
em um valor nulo.
Outra razão para se usar um valor médio quadrático é que desta forma obtém-se uma
espécie de potência média. Isso significa que médias iguais significam potências médias
fornecidas iguais. Assim, um equipamento qualquer alimentado por uma tensão contínua,
imutável no tempo, de 127V, receberá a mesma potência/energia que receberia se conectado a
uma tomada comum.
26
É desnecessário, no contexto e ênfase deste estudo, apresentar uma justificativa
matemática para a equação (1), a qual relaciona valores médios e máximos. Valores médios
são conhecidos e os máximos serão necessários para dimensionamento do circuito
posteriormente:
Ap = 2 . Arms
(1)
Onde:
Ap é a amplitude máxima
Arms é a amplitude média (do inglês, root mean square)
2 = 1,414
E o que fazer com essa tensão alternada?
Essas magnitudes encontradas no quadro de comando devem ser convertidas
primeiramente a sinais digitais de 0V ou 5V para seu processamento lógico. Mesmo antes de
seu processamento é razoável que haja uma redução destes níveis, uma vez que vários
componentes semicondutores precisam ter contato direto com a forma de onda vinda do
quadro de comando e muitos deles não suportam mais do que 30V, e mesmo usar desde esse
ponto do circuito níveis compatíveis com a entrada da porta serial, onde a diferença entre eles
é de 24V, pode causar queimas constantes de circuitos MOS. Por isso, será necessário usar
divisores de tensão desde a captura que abaixem a tensão a níveis mais baixos do que isso.
Dessa forma, no final ainda será necessário fazer mais uma adaptação nos níveis de
sinais, visto que será necessário enviar à porta serial bits 0 representados por +12V e bits 1
por -12V, conforme referência [8].
Convencionou-se ser mais oportuno usar diretamente as condições de chave dos relês
para se obter diretamente um sinal já com uma natureza digital, de amplitudes 0V e 55V.
Pode parecer um pouco estranho aos mais leigos, porém mesmo manipulando uma tensão
alternada, esta só assume dois valores médios, condição suficiente para ser tratado como um
sinal digital.
Através de uma lógica para decodificar os pulsos, será armazenado num contador
digital, implantado através de um microcontrolador 8051, o andar onde se encontra a cabina.
27
O circuito para processamento dos outros dois sinais (porta e direção) é bastante simples,
consistindo ambos em uma operação de retificação e eventual inversão do bit gerado.
7.2 Detecção de abertura de porta
Esta parte do circuito pode ser dividida em quatro partes menores: um redutor de
tensão, uma ponte de diodos, um circuito RC e um buffer. A leitura será feita em cima dos
dois contatos que formam o sensor, sendo que com a porta fechada não haverá diferença de
potencial (tensão) entre os contatos, fornecendo ao módulo um bit 0 (zero).
Antes de qualquer processamento de sinais, é importante saber que todo o circuito de
quadro de comando do elevador funciona com fase flutuante, ou seja, não há um neutro para
ser usado como referência de tensão. Nessa condição, é bom fazer a ligação entre o módulo e
qualquer relê usando capacitores de acoplamento. No caso de haver qualquer diferença de
tensão entre o neutro da rede de energia que alimenta o elevador e o ground fornecido pelo
microcomputador, esta diferença ficará retida nos capacitores de acoplamento sem oferecer
riscos ao circuito do computador principalmente.
7.2.1 O redutor de tensão
O redutor é formado por dois resistores ligados em série entre si, ou seja, são
percorridos pela mesma corrente, fazendo com que a queda de tensão em cada um deles seja
proporcional a seus valores. Por haver esta distribuição entre os resistores, essa associação
também pode ser chamado de divisor de tensão.
Como será justificado um pouco mais à frente, é preciso usar valores de pico em todos
os cálculos realizados. Aplicando (1) aos 55Vrms presentes nos relês dos quadros de controle,
tem-se na Eq. 2:
V p = 2 .Vrms = 2 .55 = 77,8V
28
(2)
Disto, será usado apenas 5,7V, sendo 5V do próprio sinal digital e mais 0,7V devido
aos diodos do retificador. Assim, precisaremos de um resistor R1 com uma queda de tensão
de 5,7V e um outro R2 com os demais 72,1V. Como já dito anteriormente, as quedas de
tensão são proporcionais às resistências.
Assim, temos na Eq. 3:
R1 R 2
R2
=
=> R1 =
=> R 2 = 12,65R1
5,7 72,1
12,65
(3)
7.2.2 Ponte de Diodos
A parte seguinte do circuito é uma ponte de diodos, formada por quatro diodos,
dispostos de forma a poderem “inverter” a polaridade dos semiciclos negativos, tornando-os
também positivos. Diodos funcionam como chaves unidirecionais, ou seja, permitem que a
corrente circule por eles em apenas uma direção.
É conhecido que diodos geram uma queda de tensão de aproximadamente 0,7V
entre seus terminais quando diretamente polarizado para haver a condução. Devido a esta
característica, esta pequena tensão adicional foi adicionada aos 5V necessários para
alimentação da parte digital do módulo, resultando nos 5,7V usados no dimensionamento dos
resistores do redutor de tensão e na dedução da equação (3). A Figura 4 ilustra as tensões
entre os terminais do diodo nos casos de polarização direta e reversa, na qual o corte do diodo
faz com que ele concentre em seus terminais toda a tensão vinda da fonte ou o estágio anterior
do circuito.
Figura 7 - Polarização (A) direta e (B) polarização reversa.
29
Com essa lógica, é possível obter a inversão do semiciclo negativo. Na figura 7 é
mostrado um circuito com os quatro diodos da ponte e o trajeto da corrente durante os
semiciclos positivos e negativos. Note como na saída obtém-se sempre tensão positiva, uma
vez que a corrente na carga circula em apenas um sentido.
Figura 8 - Ponte de diodos e sua atuação com tensões (A) positivas e (B) negativas.
Devido a esse comportamento da ponte, pode-se já conseguir a forma de onda
mostrada na figura 8, considerando a saída em aberto (sem carga e alta impedância de saída):
Figura 9 - Forma de onda obtida da ponte de diodos
7.2.3 Um circuito RC paralelo
Embora já retificado, ainda temos apenas um sinal que pode ser considerado pulsante,
que se enviado através de uma porta serial ou aplicado diretamente a qualquer outro
30
dispositivo digital, certamente gerará uma leitura errônea pelo software, que o identificará
como um trem de pulsos. Desta forma, um pequeno circuito RC paralelo é inserido na saída
da ponte.
Este circuito RC paralelo consiste em um capacitor e um resistor ligados em paralelo,
ou seja, submetidos à mesma tensão. A função principal é do capacitor que deverá ser capaz
de alimentar o buffer enquanto a tensão na saída da ponte estiver em seus valores mais baixos,
ou seja, próximos de 0V (zero volt).
Para isso, a corrente fornecida pela ponte em tensões próximas das de pico (que neste
caso já é aproximadamente 5V) deverá ser suficiente para carregar o capacitor de uma
maneira que ele possa manter o nível de tensão próximo do pico o tempo todo. É como se
fosse uma bateria: quando há fornecimento de energia (próximo do pico) ela pode ser
carregada para quando for necessário.
O resistor tem apenas a função de permitir que o capacitor se descarregue quando não
houver mais tensão nos terminais de entrada do circuito. Pode-se notar que não havendo mais
sinal na entrada do circuito, como no caso do fechamento do relê correspondente no quadro
de comando, o capacitor estará carregado e não poderá se descarregar por diodos
reversamente polarizados.
Por isso, o resistor é a única forma do capacitor se descarregar. Essa descarga precisa
ser rápida o suficiente para uma rápida atualização do sinal digital, porém essa não pode ser
excessivamente rápida também, o que comprometeria a qualidade do sinal digital que
desejamos uma vez que o capacitor pode passar a atuar de maneira insuficiente e ainda manter
o sinal retificado bastante pulsante.
Uma forma de se avaliar o bom desempenho do circuito RC é achar uma relação entre
os dois componentes através da chamada freqüência de corte. Seu efeito é mais visível em
filtros, porém poderá ser aplicada ao menos para uma primeira aproximação para um valor de
resistência e capacitância. Após esta primeira aproximação, os valores de R e C foram
otimizados por meio de simulação. A relação a ser usada é mostrada na equação (4).
31
1
= 2πf
RC
(4)
Onde:
R o valor do resistor em Ω (ohm)
C o valor do capacitor em F (Farad)
f a freqüência estudada em Hz (Hertz)
π = 3,1416
Apesar do sinal que vem da ponte de diodos ser de 120 Hz, o cálculo pode considerar
a freqüência inicial, de 60 Hz, resultando após efetuar os cálculos a relação indicada na
equação (5):
RC =
1
377
(5)
Mesmo não atingindo nessa primeira aproximação valores satisfatórios, já é visível o
quanto a característica pulsante reduziu. Apesar de ser notável uma tensão de ripple, ou seja,
oscilações ainda presentes mesmo com a tensão retificada, não haverá prejuízos de qualidade
do sinal, uma vez que dispositivos digitais são pouco sensíveis a pequenas variações de
tensão. Na figura 9, é feito um comparativo entre valores estimados e obtidos por simulação.
Figura 10 - Forma do sinal com o capacitor e o resistor na saída da ponte de diodos. Acima:
onda obtida com (5). Abaixo: sinal melhorado via simulação.
32
7.2.4 Um buffer final
Completando o circuito, há um buffer, cuja função principal é bastante simples:
corrigir bit´s gerados que não estejam de acordo com a lógica computacional usada. No caso
da porta, o contato estará fechado no momento em que a porta também esteja, fazendo com
que a ligação deste sinal com o módulo curto-circuite a entrada. Desta forma, teríamos um
uma tensão nula na saída, o que representa um bit 0. No entanto, como já descrito
anteriormente, convencionou-se que a porta fechada é representada pelo bit 1.
É necessário, então, que este bit seja invertido através de uma porta NOT, também
conhecida como inversor. Inversores permitem entradas e saídas nos 0V ou 5V que são
usados no circuito em questão, sendo que sua saída é sempre a tensão que não está na entrada,
motivo pelo qual é conhecido por este nome. Por exemplo, se a entrada é 0V, a saída é 5V.
Por ser um componente digital, este também será capaz de corrigir pequenas falhas de
nivelamento de sinal que possam ainda estar presentes, sejam elas de imprecisões de
componentes utilizados, da própria rede de distribuição de energia ou até mesmo variações do
valor exato de tensões encontradas no quadro de comando. Ao passar por este dispositivo
digital, certamente será obtido na saída um valor fixo e constante, sem ripple e transitórios se
tornam quase instantâneos, colaborando para que o circuito adquira uma imunidade ainda
maior a oscilações de tensões advindas da rede de distribuição de energia, que poderiam se
refletir de alguma forma tanto no módulo quanto quadro de comando do elevador. A figura 10
mostra o circuito detector do status da porta, sendo a fonte V1 a entrada do sinal vindo da
porta da cabina, e o bit gerado disponível na saída do inversor.
Figura 11 - Circuito completo para detecção de abertura e fechamento de porta.
33
7.3 Detecção da direção de movimento
Consistindo um sinal elétrico da mesma forma do sensor da porta da cabina, é um
circuito que possui as mesmas características do anterior, possuindo apenas a diferença de que
o buffer é composto por duas portas NOT, sendo que a primeira estará sempre ativa,
exercendo a mesma função do outro buffer. A segunda é habilitada se for necessário, por meio
de um jumper. Não é possível generalizar um padrão de relê aberto ou fechado para se saber
se o elevador vá subir, sendo possível encontrar os dois casos. Prevendo estas duas
possibilidades, são usadas duas portas NOT, sendo possível a adaptação a qualquer um dos
casos.
7.4 Identificação do andar atual
Não mais complexo que os anteriores, a última seção do circuito faz apenas uma
função de identificador de pulsos. Como nos dois itens anteriores, é identificável um divisor
de tensão, um inversor de pulsos negativos, uma junção dos dois sinais e o contador.
7.4.1 Divisor de tensão
O divisor de tensão aqui usado é similar com os anteriores, porém aqui se deve tomar
um cuidado extra com outras resistências ligadas diretamente no nó de onde se coleta o pulso
já atenuado pelo divisor. Estas interferem diretamente no valor da tensão, uma vez que irão se
comportar como resistências em paralelo com o R1 do divisor. Com o intuito de minimizar
este efeito durante o projeto, o divisor é feito com valores de resistores bem abaixo dos
demais, sendo arbitrados inicialmente valores de 10 a 15 vezes mais baixos do que os usados
no restante do circuito.
Desta forma, considera-se ainda válida a equação (3) para este caso, uma vez que os
níveis de tensão dos pulsos lidos são similares aos lidos nos relês relacionados à porta e à
direção de deslocamento.
34
7.4.2 Detector de pulsos negativos
A inversão de pulsos negativos é realizada por um amplificador operacional, também
conhecido como AMPOP, em sua configuração inversora. Nesta configuração, o amplificador
recebe uma malha de realimentação, ou seja, parte de um circuito, que liga a saída novamente
à entrada e outra malha na entrada, conectando a entrada inversora do amplificador com o
sinal recebido. Ambas as malhas são bastante simples, constituídas por um resistor cada uma.
Sabe-se que toda a corrente que vem da fonte de sinal passa pela malha de
realimentação. Além disso, os dois terminais de entrada formam um curto-circuito virtual, ou
seja, as duas entradas sempre terão um mesmo valor de tensão. Mesmo assim, a corrente não é
capaz de entrar no amplificador, e por isso circula em sua integridade pela malha de
realimentação. Pode-se chegar a uma relação que nos fornece o ganho, ou seja, o quanto o
sinal fica maior em amplitude na saída se comparado com a entrada. O sinal negativo na
relação indica a inversão do sinal, o que significa que quando o sinal de entrada tem um
aumento de tensão, é refletido com uma redução na saída. Essa relação é dada pela equação
(6):
A=−
R4
R3
(6)
Sendo:
A o ganho do amplificador
R4 o resistor da realimentação
R3 o resistor conectado à entrada do amplificador.
O objetivo neste momento é inverter pulsos negativos e manter o mesmo nível do sinal
da entrada. O ganho, então, precisa ser unitário, indicando a manutenção do nível de entrada e
negativo. Assim, o A na equação (7) deve ser -1.
−1 = −
R4
=> R3 = R 4
R3
(7)
É sempre bom lembrar que no caso de pulsos positivos, eles não serão invertidos, e
sim ignorados. Isso ocorre pelo fato do amplificador ter seu terminal destinado à inserção da
35
alimentação negativa ligado ao terra. Ligado ao terra, não há como obter na saída um valor
abaixo deste, evitando que os pulsos positivos sofram alguma alteração.
7.4.3 Formando o pulso de acionamento do contador
A esta altura, as duas situações possíveis para os pulsos são detectadas em pontos
distintos do circuito, um apenas na entrada (positivo), e o outro apenas na saída do
amplificador (negativo). É necessário agora juntar os dois em um único sinal reconhecível
pelo contador, visto que a necessidade é se saber apenas se há pulso, não mais como ele é.
Como já descrito no item anterior, os dois pontos citados fornecem pulsos positivos de
5V de amplitude. A presença de qualquer um deles terá que acionar um contador e atualizar a
informação do andar onde a cabina se localiza, segundo a lógica abaixo, onde 1 significa a
presença do pulso, e 0 sua ausência. A tabela 2 resume as situações possíveis.
Tabela 2 - Situações possíveis para acionamento do contador
Pulso positivo
0
0
1
1
Pulso negativo
0
1
0
1
Aciona contador?
não (0)
sim (1)
sim (1)
indiferente (x)
No último caso, torna-se indiferente por ser impossível que tal situação aconteça, uma
vez que não há como se enviar ao mesmo tempo os dois tipos de pulso, o que resultaria em
duas tensões diferentes em um mesmo ponto do circuito e ao mesmo tempo.
Com uma análise das três primeiras situações, conclui-se que a combinação presente
está de acordo com uma função OR (onde pelo menos um dos pulsos esteja presente para
haver o acionamento) ou uma função XOR (pela qual só haveria o acionamento caso um dos
pulsos estivesse presente).
Foi escolhido o uso de uma porta XOR. O desempenho de qualquer porta feita com
transistores MOS será suficiente para esta aplicação. A vantagem desta escolha em relação a
uma porta OR é que no caso de haver alguma falha do circuito que resulte numa situação onde
36
este se comporte como recebendo os dois tipos de pulsos ao mesmo tempo, não haverá
qualquer atualização de andar na saída do contador. Em qualquer uma das alternativas, no
entanto, um pulso de 5V será gerado na saída da porta lógica escolhida e enviado ao contador.
E como evitar que o pulso negativo chegue até a porta lógica? Para isso, próximo à
entrada destinada a receber os pulsos positivos, foi adicionado um diodo de forma a conectar
esta entrada da porta com 0V. No caso de ser enviado um pulso positivo, o diodo estará com
polarização reversa e não fará qualquer efeito no circuito.
No entanto, há um último problema a se levar em consideração: com o diodo
conduzindo, surgirá a pequena queda de tensão da ordem de 0,7V. O ponto negativo dessa
situação é que desta forma a entrada do pulso negativo vai estar diretamente conectada ao
terra através do diodo, anulando o pulso de nosso interesse, tornando-o indetectável. Para isso,
colocou-se mais um resistor entre a entrada do sinal e o diodo.
A melhor alternativa é usar um valor alto de resistor para minimizar seus efeitos no
resto do circuito no sentido de reduzir mais do que o esperado o nível de tensão do pulso lido.
Para a porta lógica, não haverá problemas. Suas entradas possuem uma altíssima resistência
na entrada, similarmente ao AMPOP. Isso significa que estas são alimentadas com correntes
milhares, ou até milhões de vezes mais baixas do que as presentes em qualquer outro ponto do
circuito deste módulo detector de sinais, insuficientes para impedir uma correta passagem dos
pulsos positivos.
7.4.4 O contador e a conversão para serial
O contador forma a parte final do circuito. Ele sozinho tem a função de gerar os bits
contendo a informação de onde o elevador se encontra, a ser enviada ao PC via porta serial.
Como já citado antes, ele deve atualizar seu valor (o conjunto de bits que informam o andar
atual) cada vez que recebe um pulso vindo da porta XOR descrita no item anterior.
É necessário também ao contador poder ler o bit de direção de deslocamento do
elevador, fundamental para se saber se o elevador está se deslocando um andar para cima ou
37
para baixo. Aproveitando as informações já existentes, esta é obtida do próprio bit que
informará o computador a direção de deslocamento.
A implementação de apenas um contador usado um microcontrolador não se
justificaria, uma vez que existem circuitos integrados capazes de facilmente executar esta
função de forma eficiente. No entanto, contadores convencionais não conseguem gerar
informações em modo serial, como é necessário neste caso, e mesmo realizando pesquisas
pela internet não se encontrou informações sobre algum circuito capaz de realizar
satisfatoriamente conversões paralelo-serial. A única opção disponível é saída paralela, onde
os bits são disponibilizados um a cada pino, podendo ser lidos todos simultaneamente, a qual
não é compatível para as necessidades de projeto, uma vez que pela porta serial só trafegam
dados de forma que os bits são transmitidos individualmente e em seqüência.
Escolheu-se o microcontrolador 8051 para se desenvolver este pequeno software do
contador. Sua escolha se apóia na facilidade que este apresenta para se manipular
transferência de dados através de porta serial. Além disso, o 8051 possui um conjunto de
instruções que torna a programação em linguagem Assembler mais simples, em comparação a
outros microcontroladores, como os da família do PIC, e por isso será utilizado para se gerar o
código do contador de andares. (referência [9] é fonte de toda informação e estudo sobre o
8051)
Uma última razão para este ser usado é a grande variedade de interrupções
programáveis, sendo que das cinco disponíveis, serão usadas três, que serão detalhadas mais a
frente, sendo uma externa para acionar a contagem dos andares, uma de temporizador e outra
relacionada com a própria porta serial.
O 8051 também possui quatro portas paralelas, das quais serão usadas duas delas para
recebimento e envio de dados. As portas 0 e 2 não possuem uma função associada a elas nesta
aplicação, mesmo assim, terão seus pinos disponíveis para acesso e conexão de outros
dispositivos, já se prevendo que recursos adicionais podem ser adicionados ao módulo
posteriormente.
38
A porta 1 será usada para recepção dos dados vindos de porta e direção, usando por
uma questão de facilidade os pinos 6 e 7. O uso destes dois pinos permite que o valor lido
possa ser usado diretamente na formação do byte a ser enviado ao computador, que sendo
recebidos já como os mais significativos, não precisarão ser deslocados posteriormente para
sua posição correta. Os demais pinos são ligados ao terra, forçando uma cadeia de seis bits 0.
Dessa forma, o número do andar poderá ser apenas somado ao número contido nesse byte
recebido.
A segunda porta importante é a Porta 3, na qual só estarão ativos efetivamente os três
primeiros pinos: o primeiro deles, recebe dados vindos de uma porta serial. O segundo deles é
responsável pela transmissão: estes dois pinos juntos formam a porta serial do 8051,
permitindo que haja transmissão e recebimento de dados ao mesmo tempo, e que será usada
para a comunicação com o computador. O terceiro pino importante recebe o sinal que ativará
uma interrupção externa. Esta interrupção acontece sempre na borda positiva (quando se
muda de um bit 0 para um bit 1) do bit enviado a esse pino, fazendo com que o
microcontrolador seja ativado, executando uma rotina específica, assim que a borda é
detectada. A ativação dessa interrupção será feita pelo pulso enviado ao indicador de posição.
Quando isso acontecer, os dados disponíveis na Porta 1 serão lidos. A partir deste
ponto, dois endereços da memória são importantes: o primeiro deles armazena o número do
andar atual. Ocorrendo a leitura, verifica-se o bit 6. Este bit informa a direção do
deslocamento da cabina, e de acordo com seu valor, o andar será incrementado ou
decrementado.
Além desta interrupção, é ainda necessário que seja habilitado um dos temporizadores
do 8051. A interrupção externa apenas é responsável por atualizar a posição da cabina, no
entanto, pode haver variações no status da porta ou o elevador entrar em movimento para
qualquer uma das direções, o que não pode ser detectado apenas quando ocorre uma mudança
de um andar para outro. Para garantir que estas informações sejam atualizadas e enviadas ao
computador assim que se alterem, é preciso que uma verificação periódica seja efetuada na
porta 1. A cada verificação, o byte a ser transmitido é atualizado.
39
O outro endereço importante é, na verdade um buffer, responsável pela saída de dados
pela porta serial. Cada vez que houver uma atualização do byte, seja pelo temporizador ou
pela interrupção externa, este será novamente enviado ao buffer.
Pela própria arquitetura do 8051, é necessário usar seu segundo temporizador, assim
como configurá-lo de maneira compatível com a velocidade de transferência desejada, para
que este possa ter um controle sobre a taxa de transmissão e saber o exato momento de enviar
um novo bit.
7.5 Enviando os dados ao computador
Neste ponto, a transmissão já se iniciou, uma vez que a porta serial no 8051 está
pronta e já enviando dados. A última fase é adequar novamente os níveis de tensão, para que
estes possam ser recebidos. Embora a transmissão e recepção já se efetuem em modos
compatíveis, o computador só consegue “entender” tensões um pouco mais elevadas em
relação àquelas usadas na parte digital do circuito do módulo. Segundo a referência [8], a
porta serial é capaz de identificar bits 1 pela tensão de -12V e bits 0 por +12V.
De acordo com o texto da referência [5], a solução mais simples para este caso é usar
um conversor MAX232 (ou qualquer outro cujo nome termine em 232), já projetado para
realizar esta função de converter os bits na forma de 0V e 5V para os compatíveis com a porta
receptora, bastando apenas que este receba a seqüência de bits gerados. Uma grande vantagem
deste circuito integrado é não ser preciso usar uma fonte extra de alimentação apenas para
fornecer as tensões de saída. Pela própria lógica interna dele, pouco conhecida em detalhes,
torna-se suficiente apenas a alimentação já disponível de 5V.
Usou-se um canal de recepção e um de transmissão do MAX232, de forma a permitir
uma comunicação de duplo sentido, reservando o sentido computador-módulo (chamado aqui
de canal de recepção) para funções futuras. Estes canais definem em qual sentido de fluxo de
bits o circuito irá atuar. Canais de recepção permitem que a conversão seja feita com o fluxo
ocorrendo do lado de +/-12V para 0-5V, ocorrendo o processo inverso nos canais de
transmissão.
40
Selecionado um canal de transmissão qualquer, basta que os terminais de um cabo
serial sejam conectados às suas saídas do lado +/-12V, sendo os dois mais importantes a
conexão com os pinos 2, por onde irão chegar os bits até o computador, e o pino 3, pelo qual o
computador será capaz de os enviar.
Um esquemático completo do circuito aqui descrito é mostrado na figura 11. Por
simplicidade, o microcontrolador 8051 e o conversor MAX232 são exibidos como blocos.
Figura 12 - Circuito final do módulo. Na parte superior o leitor de andares. Abaixo, à
esquerda o leitor da direção de deslocamento e à direita o leitor da condição da porta da
cabina.
7.6 Fonte de alimentação
Nenhum circuito é capaz de operar sem energia, portanto é necessário que haja uma
fonte de alimentação. O objetivo é transformar os 127V alternados da tomada em 5V
contínuos.
41
Primeiramente, será usado um transformador abaixador de tensão 127V-12V com tap
central. Este tap é um pequeno fio, formando um terceiro terminal de saída, internamente
conectado na parte central do enrolamento do transformador, ou seja, é como se agora
houvesse dois “meio-enrolamentos” com um número igual de espiras. Se este tap for usado
como terminal de terra, os dois meio-enrolamentos agem como se houvessem duas fontes
distintas, fornecendo os mesmos 12V em corrente alternada, porém com polaridades opostas
entre si. Na prática, sempre haverá um semiciclo positivo e um negativo disponíveis. Desta
forma, o retificador pode ser feito com apenas dois diodos e aproveitando apenas os
semiciclos positivos. Os negativos podem ser descartados.
Ao contrário dos retificadores já usados para detecção de estados de relês, aqui o
ripple deve ser minimizado, e para isso, uma alta capacitância deve ser colocada logo na saída
dos diodos, de forma a já receber o sinal retificado ainda pulsante, com a mesma forma
apresentada na Figura 6, diferindo apenas em amplitude. Esta capacitância deve ser tão alta
quanto possível para se atingir o resultado mais próximo possível do ideal.
Em paralelo ao capacitor, é conveniente se colocar um LED para indicação de que o
circuito está ligado. LED´s são diodos que emitem luz, e devem estar diretamente polarizados
para acenderem. Suas tensões de polarização são mais altas do que de diodos convencionais,
atingindo valores próximos de 1,5V e, sendo mais sensíveis, têm sua vida útil bastante
reduzida se percorridos por correntes superiores a 20mA, sendo que em série com ele é
necessário colocar um resistor para limitar sua corrente a este valor.
Por (1), tem-se que a tensão de pico dos 12Vrms é 17V. Destes, 1,5V estarão nos
terminais do LED, enquanto que nos terminais do resistor ficam os outros 15,5V. Segundo a
lei de Ohm, a queda de tensão em um resistor é igual a sua resistência em ohms multiplicada
pela corrente em amperes que circula por ele. Sendo que a corrente deve ser de 20mA, devese usar um resistor de 775 Ω. Devido ao limitado número de valores de resistência
encontrados no mercado, pode-se usar aquele que mais se aproxima, ou seja, 820 Ω.
Finalmente, 17V devem ser baixados a 5V, porém sem o uso de divisores de tensão. A
demanda de potência do circuito é variável, fazendo com que o uso de um divisor não forneça
um valor fixo, podendo ocorrer variações em alta freqüência capazes de causar interferências
e prejudicar bastante a qualidade da alimentação. A melhor alternativa é usar o circuito
42
integrado 7805, que age como um limitador, garantindo uma tensão máxima de 5V em sua
saída, garantindo que este será constante, independente de quantos Volts sejam aplicados na
entrada, desde que sejam mais de 5V. Na sua entrada, é conectada a saída do retificador,
havendo também um pino de terra usado para referência.
Segundo recomendação do próprio fabricante do 7805, entre a entrada e o terra, podese conectar um capacitor de 100 μF o mais próximo possível da saída para supressão de
ruídos de alta freqüência. Devido à sua construção, pode haver o risco de queima do circuito
se, por algum motivo qualquer, a tensão na saída for superior à de entrada. Se isso ocorrer,
pode haver a queima deste, e por segurança, é adicionado mais um diodo conectando a saída à
entrada. No caso disso acontecer, o diodo servirá como uma fonte de fuga da corrente,
evitando que ela circule pelo interior do CI.
Por ser um dispositivo de potência com componentes internos de dimensões reduzidas,
a dissipação de calor faz com que ele se aqueça bastante, sendo também necessário que seja
usado um dissipador de calor para evitar superaquecimento, capaz de danificar o componente.
Tomando todos estes cuidados, tem-se no final do circuito mostrado abaixo a saída em 5V
responsável pela alimentação do módulo. O circuito final da fonte é mostrado na figura 12.
Figura 13 - Circuito da fonte de alimentação
43
8 Custos do anunciador por voz proposto
No formato aqui proposto, o custo de aquisição do equipamento não chega a 10% do
custo total do modelo apresentado acima. Para ele, os seguintes custos são estimados:
a) Computador: modelos antigos que suportam o software podem ser encontrados por
valores a partir de R$ 300,00.
b) Módulo eletrônico: placa de fácil fabricação e já dotado de capa plástica protetora e fonte
de alimentação de +12V e -12V. Seu custo total de produção é de R$ 45,00 já incluído
fonte de alimentação e cabo para conexão com o computador via porta serial.
c) Os cabos necessários para ligações quadro de comando/módulo variam de acordo com
cada caso, dependendo da distância entre a casa de máquinas e o computador e da altura
do poço. Um prédio com 10 andares e com o computador localizado a 20 metros do
quadro de comando terá aproximadamente 35 metros de cabo paralelo específico para
áudio ao longo do poço, mais os 20 metros entre o extremo superior do poço até o
computador, totalizando 55 metros de cabo ligando a saída de som no PC até o altofalante instalado na cabina. Entre o quadro de comando e o módulo, que se supõe estar
próximo ao PC, são necessários mais 20 metros de cabo para cada um dos três sinais a
serem lidos, totalizando 60 metros, sendo também aplicável o uso de cabo paralelo
específico para aplicações envolvendo tensões na faixa dos 127V. Pode-se considerar que
estes dois tipos de cabo tenham preços por metro próximos de R$ 1,00. Para os 115
metros previstos do total de cabeamento, tem-se um custo de R$ 115,00.
d) Mão de obra: um técnico pode realizar o serviço de instalação em uma hora ou menos,
cabendo à empresa responsável pela instalação definir quanto irá cobrar do cliente.
Com base nestes valores, estima-se um custo total para se ter o anunciador instalado
de R$ 500,00 a R$ 700,00, e conforme já descrito, tais valores podem cair significativamente
caso já haja um computador disponível para executar o software.
44
Conclusão
Ao contrário do previsto inicialmente, não foi possível abranger todas as tecnologias
de elevadores existentes, limitando-se apenas à tecnologia de quadros de comando
eletromecânicos baseados em relês, uma vez que elevadores digitais podem apresentar muitas
diferenças em relação à codificação dos pulsos que circulam por seus quadros de comando.
Apenas com um pequeno módulo eletrônico desenvolvido para tradução de sinais e
um software executado até em computadores de baixo custo, criou-se um anunciador de fácil
produção e instalação, capaz de usar recursos e fontes de dados já existentes ou de fácil
aquisição, como o próprio quadro de comando e um computador, dispensando a necessidade
de qualquer sensor adicional.
O mais importante é que não foi necessário que um projeto muito complexo fosse
elaborado para que os resultados esperados aparecessem. A redução na quantidade de
equipamentos necessários fez com que o custo máximo de aquisição e instalação de um
anunciador de voz para cabinas de elevador seja comparável àqueles dos modelos mais
simples e baratos existentes hoje no mercado ou até menor.
Para o futuro, é viável que o protótipo sofra mais melhorias em sua arquitetura,
possibilitando que seu preço final caia ainda mais, e dessa forma fazendo com que mais e
mais pessoas possam ter acesso a coisas simples, mas que possam contribuir para a melhoria
de suas vidas.
45
Referências
[1] Apostila de orientação Geral - Elevadores - 1ª etapa. JOSS Elevadores. 4 pg. Curitiba, PR.
29/08/2005.
[2] CROWLEY, James. COM Ports and the MSComm control - Receiving Data. [Portas
COM e o controle MSComm - Recebendo Dados] [on line]. Disponível na Internet:
http://www.developerfusion.co.uk/show/21/6/. Visitado em 14/10/2005.
[3] GUREWICH, Ori e Natan. Como Criar Aplicações de Mundo-Real com Visual Basic 3
For Windows. Sams Publishing, 1994. Traduzido por RIBAS, Rodolfo, Axcel Books
do Brasil. 722 pg.
[4] JBN Electronics. Manual de Instalação e Operação - Cortex Voice 40 RDEA. [on line].
Pág. 2. Disponível na Internet: http://www.jbn.com.br/manual40rdea.pdf. Visitado em
12/11/2005.
[5] MESSIAS, Antônio Rogério. Comunicação com a porta serial. [on line]. Rogercom,
2004. Disponível na Internet: http://www.rogercom.com/PortaSerial/PortaSerial.htm.
Visitado em 07/11/2005.
[6] MICROSOFT, Sample: playwave.exe Demonstrates How To Play a Sound File, Help and
Support [on line]. Disponível na Internet: http://support.microsoft.com/default.aspx?
scid=kb;EN-US;q182983&GSSNB=1. Visitado em 17/10/2005
[7] PASTRO, Ademar Luiz. Microcontroladores - Microcontrolador 8051. 45 pg. [Curitiba],
2004.
[8] Serial Port. [on line]. Disponível na Internet: http://www.ctv.es/pckits/tpserie.html.
Visitado em 14/10/2005.
[9] Visual Basic, Toda a Potencialidade do Windows em programação. Colégio Spei. Ed.
Única. P. 3, 25-28, 43-44, 47-48. Curitiba, 1997.
46
Anexo A - Código-fonte do software
As seis funções aqui listadas juntas são responsáveis por todo o funcionamento do
anunciador, ao que se refere a reprodução dos sons, e são exibidas uma a uma, para melhor
visualização individual.
Interrompe: função de teste do tipo de mudança no valor da porta serial aconteceu,
sendo eles abertura ou fechamento de portas e mudança de um andar para outro. As primeiras
linhas indicam variáveis usadas em várias funções do software.
Dim
Dim
Dim
Dim
Dim
Dim
Dim
u, d
op
porta
direcao
pser, pser_old
tamanho(1, 9)
andar
'posição da cabine (andar)
'controle de arquivo a ser tocado
'1 para porta da cabine aberta e 0 para porta fechada
'1 para elevador subindo e 0 para descendo ou parado
'valores lidos da porta serial, último valor e o anterior
'matriz com as durações de cada WAV de nº de andar
'andar de parada (reservado para emulação de comandos)
Private Sub Interrompe()
If pser < 128 Then
'a porta está fechada
Porta_status.Caption = "PORTA FECHADA"
Porta_status.ForeColor = RGB(255, 0, 0)
If pser_old > 127 Then
'verifica se estava aberta antes
tm_fporta.Enabled = True
LoadFile "C:\ProjetoFinal\pfe.wav"
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
Else
'ja estava fechada, provavelmente mudou de andar
d = pser Mod 64
n_andar.Caption = Right(Str(d), Len(Str(d) - 1))
If d < 10 Then n_andar.Caption = "0" + n_andar.Caption
If d = 0 Then n_andar = "00"
u = d Mod 10
d = d \ 10
End If
ElseIf pser_old < 127 Then
'a porta abriu agora
op = 0
tm_aporta.Interval = 1600
tm_aporta.Enabled = True
LoadFile "C:\ProjetoFinal\pab.wav"
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
Porta_status.Caption = "PORTA ABERTA"
Porta_status.ForeColor = RGB(0, 255, 0)
End If
pser_old = pser
End Sub
47
tm_aporta_Timer e tm_fporta_Timer: relacionam os temporizadores associados às
funções respectivamente de abertura e fechamento de porta de cabina, tocando os arquivos
durante a anunciação.
Private Sub tm_aporta_Timer()
If op = 0 Then
If u = 0 And d = 0 Then
LoadFile "C:\ProjetoFinal\terreo.wav"
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
op = 3
Else
tm_aporta.Interval = tamanho(0, d)
If d > 0 Then
LoadFile "C:\ProjetoFinal\d" + Right(Str(d), 1) + ".wav"
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
End If
op = 1
End If
ElseIf op = 1 Then
tm_aporta.Interval = tamanho(1, u)
If u > 0 Then
LoadFile "C:\ProjetoFinal\u" + Right(Str(u), 1) + ".wav"
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
End If
op = 2
ElseIf op = 2 Then
LoadFile "C:\ProjetoFinal\andar.wav"
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
op = 3
ElseIf op = 3 Then
tm_aporta.Enabled = False
End If
End Sub
Private Sub tm_fporta_Timer()
If pser Mod 128 < 64 Then
LoadFile "C:\ProjetoFinal\down.wav"
Else
LoadFile "C:\ProjetoFinal\up.wav"
End If
Module1.drawFrom = 0
Module1.drawTo = Module1.numSamples
If (Module1.fPlaying = False) Then
Play -1
End If
tm_fporta.Enabled = False
End Sub
48
SetaTempos: define os valores que os temporizadores devem esperar até que cada
arquivo de numeração de andar seja tocado integralmente. Os tempos de arquivos que
indicam abertura ou fechamento de portas, “térreo” e “andar” são definidas na hora em que
são tocados. A principal função de se definir apenas os arquivos de andares é permitir que se
tenha uma rápida referência a eles, uma vez que apenas no caso de numeração de andar é de
fato necessário uma escolha de arquivos que inevitavelmente possuem durações diferentes.
Private Sub SetaTempos()
tamanho(0, 0) = 100
tamanho(0, 1) = 1220
tamanho(0, 2) = 1590
tamanho(0, 3) = 1580
tamanho(0, 4) = 1790
tamanho(0, 5) = 1810
tamanho(0, 6) = 1990
tamanho(0, 7) = 1930
tamanho(0, 8) = 1920
tamanho(0, 9) = 1850
tamanho(1, 0) = 100
tamanho(1, 1) = 1220
tamanho(1, 2) = 1370
tamanho(1, 3) = 1310
tamanho(1, 4) = 1120
tamanho(1, 5) = 1030
tamanho(1, 6) = 1270
tamanho(1, 7) = 1490
tamanho(1, 8) = 1390
tamanho(1, 9) = 1210
End Sub
Form_Load: definição de alguns valores iniciais quando o programa é carregado.
Private Sub Form_Load()
u = 0
d = 0
op = 3
porta = 1
direcao = 1
pser_old = 0
SetaTempos
' Configuração da porta COM3 e abertura para recebimento de dados
MSComm1.RThreshold = 1
MSComm1.InputLen = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.DTREnable = False
MSComm1.CommPort = 3
MSComm1.PortOpen = True
andar = 0
pser = 0
End Sub
49
MSComm_OnComm: evento gerado cada vez que um byte é transferido pela porta
serial. Sendo este um byte recebido, este vai ser lido e processado pela função “Interrompe”.
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
pser = MSComm1.Input
Interrompe
End If
End Sub
Além destas, mais duas funções extras foram colocadas fazendo a lógica empregada
na botoeira virtual:
tm_aux_Timer: temporizador auxiliar e principal responsável pela seqüência de
valores gerados via emulação.
Private Sub tm_aux_Timer()
Dim aux
aux = 2 * ((pser Mod 128) \ 64) - 1
u = u + aux
pser = pser + aux
If u = -1 Then
u = 9
d = d - 1
ElseIf u = 10 Then
u = 0
d = d + 1
End If
Interrompe
If andar = (10 * d + u) Then
pser = pser + 128
tm_aux.Enabled = False
Interrompe
End If
End Sub
50
Command1_Click: identificação do número do andar chamado através do índice do
botão na matriz e ignorando chamados para o mesmo andar.
Private Sub Command1_Click(Index As Integer)
' simulação do circuito de comando
If (Index = 10 * d + u) Then Exit Sub
andar = Index
If Index > 10 * d + u Then
pser = 64 + 10 * d + u
Else
pser = 10 * d + u
End If
Interrompe
tm_aux.Enabled = True
End Sub
51
ANEXO B - Testes práticos e idéias de melhorias
Devido a alguns fatores como falta de local apropriado ou elevadores em miniatura, a
solução aqui apresentada não pôde ser testada em condições reais de uso até a data de
conclusão deste trabalho, limitando estes a simples testes de aplicação da lógica do circuito.
Havendo tais condições, o anunciador poderá ser testado em uma situação prática para se
certificar de que funciona conforme o esperado.
Algumas alternativas poderão ser estudadas para uma ainda maior redução de custos
e/ou praticidade e atingir uma boa aceitação no mercado em um momento futuro. Algumas
idéias são:
Produção do módulo eletrônico na forma de uma placa para PC:
Desta forma, tem-se um equipamento mais compacto e de mais fácil instalação,
estando este situado dentro do próprio computador. Conseqüentemente, ganha-se também na
não necessidade do uso da porta serial, liberando-a para outras aplicações que o usuário
deseje. Para isto, um ponto negativo importante a ser considerado é o risco de se gerar uma
excessiva poluição eletromagnética devido às altas tensões vindas do quadro de comando
possam causar em placas próximas, comprometendo o correto funcionamento do computador.
Suporte multicabinas:
O protótipo inicial apresentado suporta apenas um elevador, ainda gerando um custo
que cresce proporcionalmente com o número de cabinas a serem atendidas por anunciadores.
Concentrando todo o gerenciamento dos sinais recebidos de vários quadros de controle em um
único módulo, é possível atingir um valor total pouco dependente da quantidade de cabinas.
Correção de falhas na indicação do posicionamento:
Não se pode ter certeza se um sistema é confiável sem testá-lo em todas as condições
reais. Faltas de energia, principalmente quando um elevador está situado em um pavimento
que não seja o térreo, podem causar falhas na indicação do andar correto que forcem o
responsável pela instalação (síndico ou zelador, por exemplo) a ir até o módulo e efetuar
alguma correção, como resetar seu valor com o elevador no térreo. Havendo uma forma do
52
próprio software executar a correção no contador que registra o andar atual, tão logo o
elevador volte à atividade todas as indicações estariam automaticamente corrigidas.
Inclusão de um sintetizador de voz no próprio módulo:
Esta é até o momento uma das principais desvantagens deste anunciador: é necessário
que uma placa de som esteja instalada no computador para enviar o som ao alto-falante na
cabina. Além de tudo, longos cabos são conectados à saída de som da placa, não garantindo
que o som seja reproduzido com qualidade suficiente para manter uma boa inteligibilidade. Se
o computador for usado para outras funções que de alguma forma exijam som, não poderá ter
o software instalado. Como uma conseqüência indireta, deixa de existir a possibilidade de
implantar um suporte para várias cabinas no mesmo módulo, por não haver mais que uma
saída de áudio.
53
Anexo C - Desenho esquemático do módulo
54
Glossário
Botoeiras: conjunto de botões localizados tanto nos pavimentos quando na cabina que
permite ao usuário efetuar chamadas.
Cabina: compartimento onde são transportadas pessoas e carga.
Casa de máquinas: espaço físico localizado na parte superior do prédio onde é instalado o
sistema de comando e tração do elevador.
Circuito aberto: condição elétrica na qual a corrente não tem caminho para passar, ficando
impedida de circular.
Forma de onda: maneira como se comporta a variação de uma grandeza elétrica, geralmente
tensão ou corrente, ao longo do tempo.
Indicador de posição: dispositivo de informação visual que informa a localização (andar) da
cabina naquele momento. Os indicadores digitais também informam a direção de
deslocamento.
Máquina de tração: conjunto formado pelas polias e motor de tração.
Motor de tração: é o motor do elevador propriamente dito, responsável pela movimentação
da cabina.
Poço: espaço físico por onde se desloca a cabina, apoiada em guias.
Porta da cabina: sistema de portas de acionamento automático ou mecânico localizada na
cabina, permitindo uma maior segurança na entrada e saída da cabina.
Porta do pavimento: porta localizada no pavimento que provê segurança ao usuário, não
permitindo que a porta se abra caso o elevador não esteja nivelado no andar.
Quadro de comando: parte do circuito responsável pelo funcionamento em si do elevador.
Contém a parte lógica e gerencia todas as funções necessárias, como acionamento do motor
de tração, gerenciamento do atendimento de chamadas e abertura da porta da cabina na hora
certa.
55
Download