Sistemas Embarcados: A computação invisível

Sistemas Embarcados: A computação invisível

Conforme a Wikipédia,

“Um sistema embarcado (ou sistema embutido, ou sistema embebido) é um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla . Diferentemente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos específicos. Já que o sistema é dedicado a tarefas específicas, através de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto.

Em geral tais sistemas não podem ter sua funcionalidade alterada durante o uso. Caso queira-se modificar o propósito é necessário reprogramar todo o sistema.

Sistemas como PDAs são geralmente considerados sistemas embarcados pela natureza de seu hardware, apesar de serem muito mais flexíveis em termos de software. Fisicamente, os sistemas embarcados passam desde MP3 players a semáforos.”

Nessas andanças pelas interwebs, encontrei um artigo muito Bacana sobre o assunto. Dei uma lida e acho que realmente vale a pena ser compartilhado. Meus amigos, conheça mais sobre esse fantástico mundo das placas que nos divertem tanto.

 

Introdução

 

Existe uma computação oculta no mundo, ela quase nunca é notada, é sorrateira, muito furtiva, mas faz o mundo moderno girar. Através dela, celulares tocam, brinquedos alegram, automóveis andam, aviões voam e marcapassos seguem mantendo pessoas cardíacas vivas. Estamos falando dos sistemas embebidos, os computadores projetados para trabalhar nos bastidores.

Sistemas embarcados são de longe o maior uso da computação no mundo, superam em muito o número de PCs, notebooks, servidores e correlatos. Eles estão por toda parte, no seu telefone, carro, relógio, bicicleta, roteador Wi-Fi , e agora estarão até mesmo nos seus óculos (vide Google Glass)!

Creio que todos já ouviram falar em injeção eletrônica de combustível, mas poucos já realmente viram um módulo em funcionamento. Isso porque, ao contrário de computadores de propósito geral, a computação envolvida no controle de fluxo de combustível em um automóvel trabalha embarcada e com um mínimo de interação com os usuários do veículo (basicamente através dos pedais e do câmbio do carro). Eles praticamente nem notam o complexo processo por traz dessa tarefa, nem o computador responsável por ela. O mesmo pode-se dizer de quando entramos em um elevador moderno e pressionamos o botão do andar ao qual queremos chegar. O pressionar de um botão no painel do elevador gera um sinal de interrupção a ser tratada por um computador, ele então a analisa e elabora suas paradas levando os passageiros aos seus respectivos destinos. Eles nem ficam sabendo como isso foi feito ou que decisões foram tomadas pela máquina no processo.

Sistemas embarcados podem interagir ou não com usuários humanos, dependendo de seu objetivo. Ao meu ver, o bom sistema embarcado é aquele que funciona sem ser notado.

 

O Conceito

 

Sistemas embarcados estão relacionados ao uso de hardware (eletrônica) e software (instruções) incorporados em um dispositivo com um objetivo pré-definido. A diferença entre um sistema embarcado e um computador de propósito geral está justamente na objetividade. Computadores como PCs, notebooks e afins são máquinas multiobjetivo, ou seja, foram criadas e dimensionadas para atuar num domínio de funções muito grande. Já os sistemas embarcados ou SEs possuem dimensionamento de recursos direcionado a um domínio de objetivos bem menor, ou mesmo singular.

Destrinchando um projeto de SE, normalmente encontramos um subdivisão clara, que corresponde à unidade de processamento, memória e periféricos. Como visto no exemplo da Ilustração 1.

Ilustração 1: Exemplo de modelo de subdivisão de um sistema embarcado

A unidade de processamento executa as instruções (software/firmware) responsáveis por realizar cálculos, tomar decisões e tratar eventos (como aquele do botão do elevador). Possui normalmente a arquitetura elementar clássica de um processador de computador convencional, como a unidade lógica/Aritmética (ULA), unidade de controle (UC), registradores, etc.

A memória armazena dados e instruções relacionados às operações da unidade de processamento. As instruções e dados podem dividir a mesma memória, como nos PCs (arquitetura Von Neumann) ou separados em memórias distintas (arquitetura Harvard), sendo a segunda a mais comum em SEs.

Os periféricos são as interfaces da unidade de processamento com o mundo externo, trazendo ou enviando informações para ele. Um exemplo de um periférico seria um conversor analógico/digital acoplado a um sensor térmico que converte a temperatura de um ambiente em números binários para que a unidade de processamento consiga interpretar e processar a informação.

O objetivo de um sistema embarcado é o de controlar processos, em outras palavras, atuar sobre um problema. Um processo pode ir de um simples acender e apagar de lâmpadas automatizado, até gerenciamento autônomo de um avião (piloto automático). Isso é feito por intermédio dos periféricos, que são escalados e dimensionados com base no problema alvo. Observe a Ilustração 2.


Ilustração 2: Periféricos atuadores e sensores

Duas categorias de periféricos se destacam em um SE, os sensores e os atuadores.

Sensores são responsáveis em adquirir informação do processo a ser controlado. Essas informações são primordiais para a unidade de processamento, pois com base nelas decisões podem ser tomadas. Bons sensores devem fornecer informação confiável e não promover alterações no processo alvo. Isso significa que um sensor não pode mudar os valores da grandeza física do qual é responsável por medir, como por exemplo diminuir a velocidade de um motor em monitoramento. Isso na prática pode difícil de conseguir dependendo da tecnologia do sensor (contato mecânico por exemplo). Exemplos desses tipos de periféricos são sensores de temperatura (termistores), pressão (piezos), contato (chaves mecânicas), toque (touchscreen), distância (sonar/infravermelho), movimento (acelerômetros), óticos (câmeras), etc. Esses são periféricos que enviam informação do processo para o SE.

Atuadores proporcionam ao SE a habilidade de intervir no meio onde atua. Como o próprio nome diz, são dispositivos que realizam ações que interferem no processo em controle, como motores, ventiladores, luzes, aquecedores, resfriadores, chaveadores, etc. Esses são periféricos que enviam informação do SE para o processo.

Normalmente a unidade de processamento toma a decisão de acionar os atuadores com base nas informações recebidas dos sensores, isso é conhecido como sistema em malha fechada ou sistema realimentado. Outra forma também usada para acionar os atuadores é com base no tempo, em um sistema conhecido como malha aberta, onde não há informações advindas do processo (não há sensores nele). Vou tentar exemplificar esse conceito com um pequeno projeto didático.

 

Um pequeno exemplo de Sistemas Embarcados

 

Supondo que tenhamos de projetar um sistema embarcado de uma estufa de papel para fotocopiadores (máquinas de xerox). O objetivo do SE é manter os papéis aquecidos evitando umidade que comprometa a qualidade das cópias (quem já trabalhou como copista sabe que esse é um problema incômodo). Primeiro vamos ver como poderia ser o sistema em malha aberta e em seguida em malha fechada.

Parte mecânica : a estufa é uma caixa de madeira com medidas necessárias para caber folhas de papel no formado A4 e demais componentes do sistema, com uma tampa superior afixada em uma dobradiça (vide Ilustração 3).


Ilustração 3: Estufa de papel para fotocopiadora e impressoras laser

Sistema embarcado: usaremos um chip microcontrolador como unidade de controle com memória já embutida no próprio chip. Como atuador usaremos uma lâmpada incandescente de 40 W acionada por intermédio de um relê ligado ao chip microcontrolador, que irá gerar o calor necessário para eliminar a umidade. Como trata-se de um sistema em malha aberta, não temos sensores de umidade aqui, então vamos programar o chip para estabelecer um tempo regular em que a lâmpada fique acesa e outro tempo em que ela fique apagada. Suponhamos que, com base em experimentos prévios, o tempo seja definido em 3 minutos acesa e 15 minutos apagada para manter uma temperatura adequada ao papel. Note que não há nenhum evento externo que influencie no acendimento da lâmpada, somente a contagem de tempo realizada pela unidade de processamento (chip) é que vai decidir quando ligar ou desligar a lâmpada. Esse é um sistema em malha aberta. O fluxograma de execução do programa ilustra esse processo (Ilustração 4).
Sistemas Embarcados diagrama
Ilustração 4: Fluxograma de operação do sistema em malha aberta

Numa abordagem em malha fechada, todos os componentes do projeto anterior estariam presentes, só que agora teríamos que adicionar um novo periférico que adquira informação de umidade do ar na caixa, ou seja, um sensor de umidade. Então agora temos o chip microcontrolador, uma lâmpada acionada por relê e mais um sensor de umidade ligado ao chip. Desse modo, temos no sistema embarcado uma configuração CPU, sensor, atuador, onde podemos acionar a lâmpada quando a umidade informada pelo sensor estiver acima do esperado, ou apagá-la quando estiver no nível desejado. O processo é exemplificado pelo fluxograma da Ilustração 5.

Ilustração 5: Fluxograma de operação do sistema em malha fechadaA desvantagem do sistema em malha aberta é evidente, ele não compensa variações de umidade de dias chuvosos ou mais secos, podendo gastar mais energia, porém é um sistema mais simples e barato de se produzir. Já o sistema em malha fechada é mais “inteligente” e consegue lidar com as variações de umidade sem problemas, mas acaba saindo mais caro devido ao adicional de componentes, além de ter uma programação um pouco mais complexa, já que agora temos que considerar a informação do sensor.Chips, periféricos e memória num só lugar Há algumas décadas atrás, com as novas necessidades do mercado, somadas à evolução galopante da microeletrônica, grandes fabricantes como a Intel, Motorola, Texas Instruments, entre outras, começaram a perceber que o mercado para dispositivos embarcados era promissor, e apostar na criação de chips otimizados para trabalhar nesse segmento poderia uma ótima ideia.

Foi então que começaram a surgir os microcontroladores, que são na verdade processadores mais simples com alguns periféricos embutidos no próprio chip (como contadores, conversores Analógico/Digitais, portas seriais, etc). Há também microcontroladores que possuem memória de programa/dados embutida no próprio chip. Uma nova era surgiu, trazendo o que estava fora para dentro através da eletrônica de escala microscópica. Isso trouxe uma grande melhoria, facilitando e barateando o projeto de SEs. Microcontroladores são direcionados a atuar em áreas mais específicas, por isso não possuem a necessidade de ter todo o poder de processamento de um microprocessador como um Core i3, i7, etc. Dessa forma são bem mais baratos, custando de centavos até algumas dezenas de dólares dependendo de sua configuração.

Outra alternativa muito usada hoje em dia nos SEs mais complexos são os PLDs (Programable Logic Devices – “Dispositivos Lógicos Programáveis”). Essa categoria de chip consiste basicamente em hardware de baixo nível multiprogramável, ou seja, é possível programar os chips PLDs para que desempenhem uma certa função desejada em hardware e não somente em software, como é o caso dos microcontroladores/processadores.

Nos dias atuais, também temos presenciado cada vez mais sistemas embarcados utilizando SOCs (System-On-a-Chip – “Sistema em um chip”), que possuem uma arquitetura semelhante aos microcontroladores, porém com um maior poder computacional e periféricos mais poderosos, sendo capazes de executar softwares mais complexos, como sistemas operacionais (Windows, Linux, etc).

A aplicação dessas tecnologias depende do processo a ser controlado. Processos mais simples podem ter um melhor custo-benefício ao se basear o SE em um microcontrolador. Em outros casos pode ser necessário um maior poder computacional para lidar com processos contendo variáveis mais complexas e em maior número. Nesses casos a utilização de SOCs ou até mesmo PLDs pode ser uma alternativa mais interessante.

 

Conclusão

 

É praticamente impossível imaginar o mundo moderno sem os sistemas embarcados. A maioria das pessoas simplesmente usufrui das facilidades cotidianas proporcionadas por esses sistemas sem nem mesmo se dar conta disso. A computação na prática vai muito além das máquinas que podemos reconhecer efetivamente como computadores, ela tornou-se parte da vida moderna e não dá sinais de que nos deixará tão cedo. Nota-se que esses sistemas agora começam a fazer parte de nosso vestuário e acredito que no futuro não tão distante os incorporemos em nossos próprios corpos, atribuindo a eles funcionalidades nunca antes vistas.

Sistemas embarcados são um segmento da eletrônica/computação extremamente interessante de se estudar. Atualmente existem no mercado kits de microcontroladores para iniciantes que permitem ao estudante avançar da teoria à prática em poucos minutos, como é o caso da famosa plataforma Arduino.

O assunto é amplo. Caso você tenha interesse, deixo abaixo algumas referências como sugestão de leitura. Caso algo não tenha ficado claro no artigo e tenha dúvidas, esteja à vontade para comentá-las.

 

Para saber mais

 

David J. de Souza. Desbravando o PIC, 12a ed., Editora Érica, 2009. – Livro sobre o microcontrolador PIC 16f628.

Fernando de S. Andrade. Sistemas Embarcados, 2a ed., Editora Érica, 2010. – Livro que aborda o tema de Sistemas Embarcados com dispositivos PIC.

João M. Rosário. Princípios de Mecatrônica, 1a ed., Pearson Education, 2005. – Ótimo livro sobre automação com conceitos que também se aplicam aos sistemas embarcados.

Massimo Banz. Primeiros Passos com Arduino, 1a ed., Novatec, 2011. – Livro introdutório sobre Arduino.

www.arduino.cc – web site da plataforma Arduino (acessado em 14/05/2013, em inglês).

William Stallings. Arquitetura e Organização de Computadores, 8a ed., Pearson Education, 2010. – Livro completo sobre arquitetura e organização de sistemas computacionais.

Que tal nos encontrar no SeuTubo para ver dicas, tutoriais e Reviews de placas? Canal Sistemas Embarcados

Que tal na página do Facebook?

 

Ou Instagram?

 

Quem sabe Google Plus?

 

Que tal no Pinterest?

 

Ou talvez nos encontrar no Twitter para receber as ultimas noticias quentinhas: @SEmbarcados

 

E não esqueça que também tem o email, [email protected]

 

Conheça também nossos grupos do Facebook:

Abraços e até o próximo embarcado!

Related Post