Universidade Federal de Santa Maria
Ci. e nat., Santa Maria, V. 42, Special Edition, 2020
DOI: http://dx.doi.org/10.5902/2179460X40518
Received: 10/10/2019 Accepted: 10/10/2019
Special Edition
I Universidade Federal de Santa Maria, Cachoeira do Sul, Brasil - limajoaoege@gmail.com
II Universidade Federal de Santa Maria, Cachoeira do Sul, Brasil - cunhalimaandrei1@gmail.com
III Universidade Federal de Santa Maria, Cachoeira do Sul, Brasil - cbtischer@gmail.com
By using FPGA (Field-Programmable Gate Array) technology it is possible to rule out the use of printed circuits for a specific process. In addition, process automation has been growing in the industry for financial returns and improved procedures. So, for the purpose of academic learning, it was proposed in the discipline of analysis and design of programmable logic systems of Electrical Engineering course at UFSM-CS the development of an automatic car wash system, usually found in gas stations, with autonomous execution. The project has two operation modules, where one module operates in a simplified way in the washing and the other mode is complete to obtain the effective cleaning of the vehicle. For system implementation, a code describing a state machine was developed in VHDL hardware description language., in which each state performs a system operation. A small scale prototype consisting of CD drives, stepper motors, DC motors and drivers has been developed.
1 Introdução
A lógica programável baseada em FPGA (Field Programmable Gate Array) vem ganhando espaço no meio industrial na obtenção de soluções específicas. A tecnologia do FPGA é dominada por diversos fabricantes de alcance mundial que atendem as mais variadas áreas, tais como, aeroespacial, militar, telecomunicação, algoritmo, entre outros. É também amplamente usada na prototipagem e testes a fim de produzir ou melhorar resultados de forma eficaz com baixo custo [3]. Tal tecnologia baseada em hardware viabiliza a sintetização de circuitos lógicos e descarta a necessidade de imprimir placas com componentes padrões que associa portas lógicas através de circuitos integrados.
FPGA é um circuito integrado composto por milhares de transistores subdivididos por unidades lógicas idênticas. Estas podem ser vistas como componentes configuráveis de maneira independente e interconectados a partir de uma matriz de trilhas condutoras e switches programáveis (MOORE e WILSON, 2017). Com isso os FPGA’s apresentam vantagens e características relevantes na sua utilização, como velocidade de processamento, flexibilidade em hardware, baixo custo e diminuição de ruídos nos sistemas.
Os circuitos digitais de alta complexidade podem ser implementados, ou descritos em FPGA, em uma linguagem de programação padrão, tais como AHDL, Verilog e VHDL caracterizadas como uma linguagem de descrição de hardware de alta performance. A linguagem VHDL de VHSIC Hardware Description Language e VHSIC (Very High Speed Integrated Circuit) suporta projetos com múltiplos níveis de hierarquias, favorece o projeto “top-down” e possibilita descrever hardware em diversos níveis de abstração (VAHID, 2008; D’AMORE, 2012). Essas vantagens fazem da linguagem VHDL ser uma das mais utilizadas para o desenvolvimento de ASIC e IC [5].
Desta forma, este trabalho desenvolvido na disciplina de análise e projeto de sistemas lógicos programáveis da UFSM - Campus Cachoeira do Sul apresenta uma lógica de circuito que possibilita a implementação efetiva de um sistema autônomo de lavagem de veículos cujos comandos são condicionados exclusivamente por um FPGA. Como pré-requisito do trabalho proposto o sistema possibilita definir dois modos de lavagem, sendo um de modo simples e outro de modo completo. A idealização do sistema proposto é baseada em estruturas de lavagens de veículos instaladas em postos de combustíveis, como exemplo mostrado na Figura 1.
Figura 1 – Máquina de lavagem de veículos em tamanho real
2 Desenvolvimento do projeto
O projeto do sistema de lavagem de veículos apresenta duas escovas verticais, nas laterais da estrutura, e uma escova horizontal para lavagem da superfície do veículo. Dividido em dois modos de operação, simples e completo, o programa executa repetidamente processos idênticos. Nos modos, as escovas laterais iniciam atuando na parte traseira do veículo aproximam-se com movimentos suaves. O bloco que carrega as escovas conduz em sua estrutura as mangueiras que esguicham água e sabão. A aplicação de sabão e água no veículo ocorre no primeiro percurso de avanço até chegar na parte frontal do veículo. No retorno, o sistema aplica um jato de água para realizar o enxágue.
No modo simples, chamado modo 1, o sistema realiza um único percurso de lavagem, já no modo completo, modo 2, as escovas seguem o mesmo padrão de inicialização, bem como de operação, porém realizam a atividade duas vezes, escovando em ambos estágios de avanço e de recuo, sendo que no segundo recuo realiza o enxágue.
2.1 Algoritmo proposto
Para inicializar o processo de lavagem é fundamental verificar toda a estrutura, os blocos que carregam as escovas devem estar na posição inicial, sendo as escovas que se orientam no sentido horizontal e as que se orientam no sentido vertical. Para isto, foram empregadas no código VHDL duas entradas que devem controlar estas atividades, com as funções RESET e a seleção do MODO.
- O RESET atua de maneira instantânea, quando permanece em nível lógico alto é responsável por retroceder o funcionamento da máquina, independente do estágio de atividade em que se encontre, fazendo com que a mesma volte às suas condições iniciais.
- O MODO é comandado através de um switch presente na placa FPGA, que define o tipo de serviço a ser realizado. Se posicionado em estado lógico baixo, o sistema deverá realizar a lavagem simples (modo 1). Se posicionado em estado lógico alto a lavagem deve ser realizada duas vezes (modo 2). O diagrama de blocos, representado na Figura 2, mostra o funcionamento da máquina, de acordo com os modos e o RESET.
Figura 2 –Diagrama de blocos representando o acionamento da máquina
No modo de operação 1, existem 12 estados como mostrado na Figura 3. O processo que ocorre em cada estado é descrito abaixo.
Estado A: Neste estado, liga-se o motor dos trilhos, fazendo com que a estrutura se mova para frente em direção ao veículo. Água e sabão são acionados, e um contador é incrementado até atingir um tempo de 28 segundos, chegando à parte traseira do veículo, passando assim para o estado B.
Estado B: No estado B, os motores de corrente contínua, que representam as escovas, são acionados. O motor dos trilhos é temporariamente desligado, e o motor de altura é acionado, fazendo com que a escova superior seja abaixada até a parte inferior traseira do carro. Após 28 segundos, a máquina vai ao próximo estado, o estado C.
Estado C: Ao chegar neste estado, o motor de altura é acionado de maneira reversa, fazendo com que a escova superior seja deslocada até a parte superior do veículo. O próximo estado ocorre quando o contador realiza a contagem de 8 segundos.
Estado D: Neste caso, a estrutura se desloca até o para-brisa do veículo. Para tanto, é necessário que o motor dos trilhos seja acionado, e o motor de altura seja travado, pois a parte superior do carro é uma parte plana. O estado E é atingido quando o contador realiza a contagem de 21,6 segundos.
Estado E: Neste estado, ambos os motores de passo são acionados para realizar a escovação do para-brisa do carro. Após 2,9 segundos, a máquina direciona-se ao estado F.
Estado F: Chegando ao estado, é realizada a escovação do capô do veículo. Para tanto, é necessário manter o motor de altura travado, e o motor dos trilhos em movimento constante. O próximo estado é atingido quando transcorre 4,8 segundos.
Estado G: Ao término dos 4,8 segundos do estado F, realiza-se a escovação do para-choque do veículo no estado G. Para isso, o motor de altura é acionado, fazendo com que a escova superior desça, e o motor dos trilhos é bloqueado, fazendo com que a estrutura permaneça imóvel durante este processo. Após 4,2 segundos, a máquina é direcionada ao estado H.
Estado H: No estado H, as escovas retornam da parte inferior do para-choque até o capô, e são desligadas. Para tanto, apenas a rotação do motor que controla a altura é invertida, fazendo com que a escova superior suba durante 4,2 segundos, onde a máquina é direcionada ao estado I. O sabão também é desligado neste processo.
Estado I: Dando início ao estado enxague, a estrutura é deslocada do capô até o para-brisa novamente, apenas colocando água. O motor dos trilhos é acionado para realizar tal processo. Após 4,8 segundos, a máquina troca de estado.
Estado J: Neste estado, a estrutura é deslocada do começo do para-brisa até a parte superior do carro. Para isso, ambos os motores de passo precisam estar acionados. O motor de altura é acionado para que a escova superior suba. Este processo permeia por 4 segundos.
Estado K: No estado K, a estrutura é deslocada do para-brisa até o final do veículo. O motor de altura é travado, de tal forma que a altura não varia. O motor permanece ligado por 19,6 segundos, chegando ao último estágio de lavagem.
Estado L: Este é o estado conclusivo, onde a máquina volta à posição inicial. A água é desligada, e o motor dos trilhos são acionados de forma que a estrutura é levada da parte traseira do carro até a parte dianteira, exatamente na mesma posição em que o processo inicializou. O motor de altura sobe até o nível inicializado no estado A. O motor de secagem é acionado neste estágio. Duas chaves fins de cursos são utilizadas neste processo, de modo a garantir que a estrutura volte exatamente para a mesma posição do estado A.
Figura 3 – Diagrama de blocos representando os estados da máquina no modo 1
O modo 2, assim como o 1, foi atribuído ao código através de uma máquina de estados, contendo o mesmo número de estados, porém, quando o sistema alcança o estado K pela primeira vez, o sistema coloca um indicador de ciclos em nível lógico alto, indicando que o primeiro ciclo do percurso de lavagem reforçada chegou ao final. Depois disso, o sistema retorna os estados a cada passo até atingir o estado B, que indica a finalização da segunda escovação. Quando atinge o estado B, retoma o sentido de progressão seguindo normalmente a sequência, e assim, realiza a terceira escovação na atividade da máquina. Ao atingir novamente o estado K (com indicador em nível lógico alto) passa para o estado L de onde segue o encerramento do modo 2. O diagrama de blocos correspondente a lavagem de veículos do modo completo está representada na figura 4.
Figura 4 – Diagrama de blocos representando os estados da máquina no modo 2
3. Estrutura do código VHDL desenvolvido
•Entity: A entidade criada no Software Quartus II foi chamada de lavajato, e nela, foram declaradas as entradas e saídas necessárias para o correto funcionamento da máquina. Como entrada, são declarados o clock da própria placa, de 50MHz, os modos de operação (switch), duas chaves fim de curso, e o switch do reset, sendo que todas as entradas relatadas são do tipo binário. Como saída, são declarados dois vetores binários de 7 posições para representar o estado em que a máquina se encontra, dois vetores binários de 4 posições para controlar os motores de passo dos trilhos e de altura, 2 sinais binários para controle dos motores CC, 2 sinais para identificação da água e sabão, e um sinal para acionar o motor CC de secagem.
•Function: Para efeitos de simplificação, o código contém uma função que atua de forma semelhante à um subprograma, porém é declarada dentro do código. Nesta função está registrado o funcionamento dos passos que os motores devem seguir, bem como os comandos que designam a sequência na qual os passos devem seguir. A implementação desta função faz com que não haja necessidade de declarar repetidas vezes os comandos que designam os caminhos para cada passo no código. Ao final desta função ela retorna para o código um vetor binário de 4 bits que corresponde ao passo atual de cada um dos motores de passo. São utilizados 2 motores, um para realizar o controle de altura da escova horizontal, e outro para realizar o controle dos trilhos. A velocidade dos motores de passo depende de contadores declarados como signals do tipo integer dentro da arquitetura do programa. Cada motor tem um contador próprio, que reinicia após alcançar um determinado valor. O contador do motor de altura conta 70 mil interações, a uma frequência de 50MHz para que o motor dê um passo. O contador dos trilhos conta 500 mil interações na mesma frequência para realizar um passo.
• Display: Para demonstrar o estágio que a máquina de estado se encontra, foi desenvolvido um subprograma com o nome de Display, que reserva um vetor de 7 bits para cada combinação possível dos vetores de 4 bits que são empregados na indexação dos estados. Este vetor de 7 bits por sua vez imprime um número correspondente ao estado atual. E se tratando de 12 estados, foram utilizados dois displays de 7 segmentos.
• Variável tipo estado: Foi criada, antes de inicializar a arquitetura, uma variável do tipo estado, onde a mesma possui a declaração dos 12 estados presentes na máquina. Os estados são designados dentro do código com letras do alfabeto. O primeiro estágio é referenciado com a letra A, o segundo estágio com a letra B, e assim por diante, até o 12º estágio, representado pela letra L. O critério de mudança de estado é estabelecido através de um contador, declarado também como signal do tipo integer. Cada estado possui um tempo de operação para chegar no próximo estado.
• Reset: Todas as variáveis são constantemente zeradas e a máquina é direcionada ao estado A enquanto o reset é mantido em nível lógico alto. Todos os contadores utilizados para os motores, o contador da própria máquina de estados, bem como os indicadores de água e sabão são forçados a zero.
4 Resultados
A implementação do sistema de lavagem de veículos ocorreu a partir da uma placa FPGA da Altera, Família Cyclone IV - Módulo 4CE115 programada por meio do software Quartus II Web Edition do mesmo fabricante. Para o desenvolvimento do protótipo foram empregados alguns componentes reaproveitados de descartes eletrônicos, como: (a) 2 Motores de passo de 5V; (b) 2 Motores CC de 3V3; (c) 2 Drivers de CD; (d) 2 Drivers de motor de passo, detalhados na Figura 5.
Figura 5 – Componentes empregados no protótipo
As ligações elétricas do sistema foram realizadas através do barramento de entrada e saída presente na FPGA. A injeção de sabão é representada pelo acionamento de um LED na placa FPGA, bem como a injeção de água, que atua de maneira constante na máquina. A estrutura do protótipo foi calibrada utilizando parâmetros de dimensionamento de um veículo de brinquedo, no qual é mostrada da Figura 6. Os tempos utilizados para incrementar os estados da máquina foram encontrados através de ensaios cronometrados a fim de obter o percurso completo dos modos de operação no veículo de brinquedo.
Figura 6 – Protótipo da máquina de lavagem automática de veículo
5 Conclusões
Diante das atividades realizadas e dos resultados obtidos, foi possível visualizar e compreender a dimensão da aplicabilidade dos dispositivos lógicos programáveis, como o FPGA no qual vem ganhando espaço em diversas áreas da engenharia. Ao projetar um mecanismo com inúmeras restrições, foi possível observar diversos caminhos pelos quais a lógica pode transcorrer, e ainda assim chegar em resultados iguais ou semelhantes. Cabe ressaltar que a motivação central para o desenvolvimento desta atividade fui aplicar os conhecimentos teóricos vivenciados em sala de aula em uma atmosfera física semelhante a aplicações reais, na qual pode observar na forma prática, uma dentre tantas funcionalidades que as linguagens de programação oferecem. Por fim o projeto idealizado na disciplina de dispositivos lógicos programáveis foi concluído com êxito obtendo a funcionalidade da lavagem automatizada de veículos.
Agradecimento
Os autores agradecem a colaboração do Prof. Celso Becker Tischer, responsável pela disciplina de análise e projeto de sistemas lógicos programáveis do curso de Engenharia Elétrica e a Universidade Federal de Santa Maria, Campus Cachoeira do Sul pela disponibilidade de componentes, bem como das suas instalações, que foram de fundamental importância na elaboração desta atividade.
Referências
DA COSTA, C. Projeto de Circuitos Digitais com FPGA. 3. ed. São Paulo: Érica, 2014.
D’AMORE, R. VHDL: Descrição e síntese de circuitos digitais. 2. ed. Rio de Janeiro: LTC, 2012.
MORENO E, PEREIRA F, PENTEADO C, PERICINI R. Projeto, desempenho e aplicações de sistemas digitais em circuitos lógicos programáveis (FPGAs). Pompéia: Bless, 2003.
VHDL & Verilog Compared & Contrasted - Plus Modeled Example Written in VHDL, Verilog and C. Douglas J. Smith. 1996.
Part 10: The 2016 Wilson Research Group Functional Verification Study. Disponível em: https://blogs.mentor.com/verificationhorizons/blog/2016/10/31/part-10-the-2016-wilson-research-group-functional-verification-study/