Técnicas para reduzir o consumo em sistemas com microcontroladores

consumo em microcontroladores

Quando desenvolvemos um novo projeto ou trabalhamos na melhoria de suas características, nos deparamos com diversos desafios relacionados à economia de energia. Caso o aparelho a ser desenvolvido seja móvel e/ou alimentado à bateria, a preocupação com diferentes aspectos técnicos a fim de nos certificarmos que o projeto é econômico do ponto de vista de consumo energético é mais evidente. Mesmo que o projeto eletrônico a ser desenvolvido nao precise ser tão econômico com relação ao seu consumo, o mundo em que vivemos agradece quando nos preocupamos com esses pontos. Muitas vezes os equipamentos que projetamos são utilizados em países em que a energia elétrica vem majoritariamente de termoelétricas. Com a crise de água em todo o planeta e preço do barril do petróleo em queda, até mesmo em países que têm sua energia vinda de usinas hidrelétricas, estamos utilizando grande parte de nossa energia também provinda dos combustíveis fósseis. Isso torna mais importante ainda um projeto consciente e sustentável, do ponto de vista de economia de energia.

 

A redução do consumo de um sistema com microcontrolador ou FPGA parte da escolha correta/adequada desses componentes. Um microcontrolador com uma quantidade mínima de memórias RAM e Flash, e o mesmo para um FPGA com a quantidade de elementos lógicos mínima necessária para a aplicação é fundamental para se obter um consumo bem pequeno do sistema a ser projetado (o menor possível). No caso dos microcontroladores, se for escolhido um processador que tenha mais recursos de memórias Flash e RAM que os necessários para o sistema, os circuitos eletrônicos dessas memórias serão alimentados, porém não serão utilizados. É claro que, para uma quantidade maior de memória é necessária uma quantidade maior de energia. É interessante também verificar as características de todas as memórias internas, quando comparamos dois microcontroladores. Determinadas tecnologias, como a FRAM, garantem um menor consumo de energia durante o seu uso.

 

Deve-se prestar atenção também à escolha de microcontroladores apenas com o número de periféricos mínimos necessários ao projeto ou à aplicação, além de uma frequência de operação adequada. Um microcontrolador com diversos periféricos, além de sair bem mais caro, consome mais e é mais complexo, mesmo desligando os periféricos não utilizados, se compararmos a micros sem esses periféricos. Economiza-se, assim, em valor e complexidade de firmware e de hardware, uma vez que microcontroladores com diversos periféricos normalmente também possuem mais pinos de I/Os ou mesmo encapsulamento maiores.

 

Claro que a escolha do melhor microcontrolador possível pode demorar bastante e diversos layouts podem ser necessários. Isso demanda tempo e dinheiro. Sabemos que projeto perfeito não existe. No entanto, é sempre interessante deixar em mente todos esses pontos acima e procurar sempre caminhar pro melhor possível para o projeto.

 

 

I/Os

 

Em determinados microcontroladores é possível desligar o clock de determinada faixa de I/Os que não estiverem sendo utilizados. Também é possível diminuir a frequência de operação de cada um dos conjuntos de I/Os, o que também pode economizar energia no momento da operação do mesmo. Diversos modos de funcionamento são possíveis com I/Os e cada um deles pode ser habilitado, conforme as necessidades específicas para cada pino, tais como:

  • Pull-up interno;

  • Pull-down interno;

  • Open-drain habilitado;

  • Filtro digital ativo (elimina a necessidade de debouncer, por exemplo), entre outros.

 

Caso o I/O não estiver sendo utilizado, o configure para operar como entrada e com resistor de pull-down ativo. Caso não possua a opção de resistor de pull-down interno, é interessante preparar o hardware para que possua um resistor externo conectado do pino para o sinal de referência terra, além de configurar o pino como entrada. Caso não haja essa possibilidade, o hardware já estiver pronto ou microcontrolador não possua o recurso de resistor de pull-down interno, configure o pino como saída e o coloque em nível zero.

 

 

Controle de dispositivos externos

 

Caso o microcontrolador possua pinos de I/Os conectados a outros dispositivos eletrônicos, deve-se tomar cuidado com os níveis de tensão em caso de desligamento do microcontrolador. Por exemplo, caso houver níveis de tensão alto (3V3 ou 5V) no barramento e algum pino do microcontrolador esteja sendo forçado a níveis baixo (0V), esse conflito pode queimar o pino do microcontrolador ou dispositivo eletrônico.

 

Utilize os pinos do microcontrolador para que ele controle dispositivos externos que podem consumir muita energia no sistema. Por exemplo, um Modem celular, bluetooth ou Wi-Fi podem ter sua alimentação controlada por um circuito externo auxiliar (reles, transistores, MOSFETs...) e os comandos de desligar e ligar podem ser feitos por um I/O do microcontrolador. Pode-se controlar também a alimentação de CIs externos, como memórias externas, ou controlar o enable de diversos controladores externos, o que pode também contribuir com a economia de energia do sistema como um todo.

 

 

Periféricos

 

Desligue todos os periféricos que não são utilizados e diminua ao máximo a frequência de operação dos periféricos em operação, caso isso for possível em seu processador e esteja de acordo com as especificações do que planejou para seu sistema. Ao ligar os periféricos novamente, aguarde o tempo necessário a cada periférico para que ele volte à operação normal. Verifique no datasheet e manual do usuário do microcontrolador que diferentes periféricos exigem diferentes tempos de espera. Faça, então, os cálculos para verificar se os intervalos de tempo que esses periféricos têm que ficar desligados, se forem pequenos, se vale a pena mesmo desligá-los, conforme os tempos encontrados.

 

Um exemplo pode ilustrar isso. Caso for utilizar um circuito integrado externo de RTC (Real Time Clock) externo ao microcontrolador conectado ao barramento de comunicação I2C, verifique qual é a velocidade de comunicação adequada e também confira no datasheet dos componentes se a velocidade de comunicação faz diferença. No caso de leitura de tempo, Horas, Minutos e Segundos, nem todas as leituras precisam ser feitas a todo segundo. Algumas linhas de código podem deixar o sistema mais inteligente, diminuir o tráfego de informações no barrmento I2C e, assim economizar energia, já que o barramento ativo despende muito mais energia. É interessante habilitar o RTC apenas na hora de sua leitura e escolher os resistores do barramento I2C de acordo com o padrão e de forma a diminuir o consumo do barramento no momento da comunicação.

 

 

Conversores A/D

 

Apenas os ligue se os forem utilizá-los. Esses periféricos gastam bastante energia e medições mais precisas exigem mais tempo de amostragem. Balanceie o que é melhor para sua aplicação, conforme a precisão e tempo necessários versus o consumo de energia.

 

 

Modo Padrão

 

O modo padrão de funcionamento de determinado aparelho eletrônico pode ser configurado preferencialmente de forma que previlegie a economia de energia, caso esse fato não interfira nos requisitos fundamentais do sistema. Para equipamentos que utilizam display com backlight ou iluminação em geral, por exemplo, requisitos de software devem ser pensados para que se possa encontrar facilmente nos menus ou na configuração dos equipamentos formas de se economizar energia, dimuindo o tempo de backlight e/ou iluminação ligado(s) e brilho do backlight do display, caso exista.

 

 

Frequência de operação do microcontrolador

 

Verifique exatamente o que o microcontrolador tem que executar e otimize ao máximo o seu consumo diminuindo sua frequência de operação em períodos em que o mesmo estiver ocioso ou não demandar poder de processamento. Determinados RTOSs permitem a configuração facilitada e de forma transparente de diferentes modos de operação, dependendo das tarefas que tiverem que ser executadas no momento. Em caso de haver falta de tarefas a processar, a tarefa idle que sempre executa nesse caso, pode colocar o microcontrolador em estado de economia de energia. Isso facilitaria um primeiro nível de otimização conforme a demanda por performance de sistemas com microcontroladores.

 

É interessante, no entanto, entender o funcionamento do seu microcontrolador para que possa conseguir uma melhor otimização do seu processador. Vários microcontroladores possuem circuitos RC internos e/ou osciladores que podem ser base de clock para o funcionamento do micro. Também existe a possibilidade clássica de se conectar externamente um cristal ou oscilador externo e essa frequência pode ser multiplicada internamente por circuitos de precisão do tipo PLL. Ele faz com que uma frequência, por exemplo de 12 MHz de um cristal externo conectado aos pinos corretos do micro possa se “transformar” em frequências tais como 24, 60 ou 72 MHz, dependendo das configurações de software, realizadas no firmware. Tais multiplicações consomem bastante energia e o microcontrolador operando com o PLL ativo consome muito mais energia que a operação com esse “acelerador” desligado. Uma tática de economia seria, portanto, somente ligar o PLL em momentos em que a atividade de processamento assim o exigir.

 

É interessante verificar a possibilidade de conexão de um cristal de 32 KHz externo ao microcontrolador para o micro possa operar em uma frequência bem baixa para economizar energia. Nessa situação, o clock principal seria desligado e o micro apenas operaria conforme o clock desse segundo cristal. Conforme ocorresse algum evento, ele poderia novamente voltar a operar na frequência determinada pelo cristal principal.

 

Determinados micros possuem também um segundo circuito interno com menos precisão e com frequência também da ordem de alguns KHz e que permite a operação em um estado de extremente baixo consumo de energia. Esse modo de operação é possível com o auxílio de interrupções externas que auxiliam a tomada de decisão da retomada do processamento normal.

 

 

Modos de operação de baixo consumo para microcontroladores

 

Atualmente todos os novos microcontroladores e processadores já vêm com modos de operação de baixo consumo prontos para serem utilizados, principalmente os pensados para sistemas de baixo consumo. Eles permitem que se possa ir a um estado de “sleep” e, assim, conservar energia. A volta à operação normal seria, conforme citado anteriormente, através de interrupções causadas de diferentes formas, por eventos simples de I/Os, combinação ou sequência de eventos de diferentes periféricos. É possível até mesmo em alguns micros apenas deixar alguns periféricos atentos a alguma sequência que caracterizaria uma interrupção.

 

Existem diferentes denominações para os modos de operação de baixo consumo. Vou citar algumas possibilidades de nomes de modo de operação, alertando que podem mudar ou funcionar de diferentes formas, além das colocadas a seguir conforme o CI microcontrolador escolhido:

 

  • Slow down – Diz-se do modo de operação onde se trabalha com frequência de clock reduzida. As memórias e os periféricos permanecem trabalhando normalmente;
  • Sleep – Afeta a operação apenas do core, do processador em si, que para de operar. As memórias e os periféricos permanecem ativos e operantes;
  • Deep Sleep – A memoria Flash e memória RAM permanecem em estado de espera. O clock dos periféricos também é desligado e todo o core fica inoperante;
  • Power Down – A memória Flash é desligada e a RAM continua em estado de espera, ou seja, seus dados são conservados e nada é alterado.
  • Power Off – Nesse estado, o core está desligado, as memórias estão desligadas (todos os dados são perdido da RAM), mas é possível manter os estados dos pinos de entrada e saída. Existem diferentes formas especificas de voltar ao funcionamento – Um evento de interrupção de um timer de extremo baixo consumo ou uma interrupção externa específica estão entre as formas específicas de “acordar” o CI.

 

Não foi citado o Active mode, que é o modo de operação normal, com o core, periférico e memórias operando adequadamente.

 

 

Interrupções

 

Como a tarefa de retomar o processamento ao modo active mode é de alta prioridade, o atendimento a essa interrupção precisa, claro ser colocada em foreground, ou seja, em uma rotina de tratamento de interrupção que trata um evento assíncrono, seja ele interno ou externo. Antes, então, de se entrar em um estado de menor consumo de energia, seria necessário programar o microcontrolador de tal forma que determinados eventos gerariam uma interrupção que seria tratada pela ISR (Rotina de atendimento à Interrupção) que faria com que o micro “acordasse” e mudasse de estado – o estado de descanso terminou!

 

Essa interrupção poderia ser interrupção por timer, que seria um despertador programado para que o micro voltasse à operação em active mode. Outra forma clássica seria a volta à ativa através de interrupção de pino externo ou através da leitura de determinado periférico, que deveria estar ativo para que pudesse ser capaz de processar determinada interrupção. Alguns micros permitem programar uma sequência de acontecimentos de diversos periféricos diferentes. Também é possível contar determinada sequência de pulsos antes que a ISR seja ativada ou que um determinado nível de tensão seja atingido, utilizando-se para isso comparadores internos.

 

Interessante notar que é importante programar de forma exata como o micro deve atender à ISR e essa pode não ser uma tarefa muito trivial. Detalhes do manual de usuário e datasheet devem ser observados com cuidado. Dentro das ISR o trabalho deve ser rápido. Deve-se, preferencialmente ativar o modo ativo e apenas isso. Não é demais sempre lembrarmos que ISRs muito longas podem sim impactar o tempo de resposta de todo o sistema, além de não ser uma boa prática de programação de sistemas embarcados.

 

 

Referências

 

- User Manual – NXP LPC800

- User Manual – Freescale Kinetis K60

- Livro Making Embedded Systems by Elecia White O'Reilly Copyright, ISBN:9781449302146

- Desenvolvendo com o FreeRTOS, Por Sergio Prado. São Paulo, Julho de 2012, ® Copyright Embedded Labworks 2004-2012.

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Thiago Lima
Sou formado em Engenharia Elétrica na USP Sao Carlos, com mestrado em Engenharia Elétrica no Rochester Institute of Technology pelo CsF. Tenho 17 anos de experiência em projetos de circuitos eletrônicos. Escrevo regularmente para o Embarcados, adoro eventos sobre tecnologia, onde posso rever amigos e conhecer pessoas do ramo.

Deixe um comentário

avatar
 
  Notificações  
Notificar