- Técnicas de economia de energia para microcontroladores
- 1. Modos de dormir
- 2. Modificação dinâmica da frequência do processador
- 3. Estrutura de firmware do manipulador de interrupção
- 4. Firmware com otimização de energia
- Conclusão
Assim como o gás (gasolina / diesel) é importante para bicicletas, caminhões e carros (sim, excluindo Teslas!) Para se mover, o mesmo acontece com a energia elétrica para a maioria das aplicações eletrônicas e mais ainda, para aplicações baseadas em sistemas embarcados que geralmente são baterias (energia limitada) alimentada por telefones celulares regulares a dispositivos domésticos inteligentes, entre outros.
A natureza limitada da energia da bateria implica na necessidade de garantir que a taxa de consumo de energia desses dispositivos seja razoável para encorajar sua adoção e uso. Especialmente com dispositivos baseados em IoT, onde um dispositivo pode durar de 8 a 10 anos com uma única carga, sem substituição da bateria.
Essas tendências levaram à implementação de considerações de baixo consumo de energia no projeto de sistemas embarcados e, ao longo dos anos, designers, engenheiros e fabricantes desenvolveram várias maneiras inteligentes de gerenciar com eficácia a energia consumida pelos produtos, para garantir que durem mais em um carga única. Muitas dessas técnicas se concentram no microcontrolador, que é o coração da maioria dos dispositivos. No artigo de hoje, exploraremos algumas dessas técnicas e como elas podem ser usadas para minimizar o consumo de energia em microcontroladores. Embora um microprocessador consuma menos energia, mas pode ser usado colocado no microcontrolador em qualquer lugar, siga o link para saber como o microprocessador é diferente do microcontrolador.
Técnicas de economia de energia para microcontroladores
1. Modos de dormir
Os modos de hibernação (geralmente chamados de modos de baixo consumo de energia) são, sem dúvida, a técnica mais popular para reduzir o consumo de energia em microcontroladores. Geralmente envolvem a desativação de certos circuitos ou relógios que acionam certos periféricos dos microcontroladores.
Dependendo da arquitetura e do fabricante, os microcontroladores geralmente têm diferentes tipos de modos de hibernação, com cada modo possuindo a capacidade de desativar mais circuitos internos ou periféricos em comparação com o outro. Os modos de suspensão geralmente variam de sono profundo ou desligado até os modos inativo e soneca.
Alguns dos modos disponíveis são explicados a seguir. Deve-se observar que as características, bem como o nome desses modos, podem variar de fabricante para fabricante.
Eu. Modo inativo / repouso
Geralmente, esse é o modo de baixo consumo de energia mais simples para os projetistas implementarem. Este modo permite que o microcontrolador volte à operação total em uma taxa muito rápida. Portanto, não é o melhor modo, se o ciclo de energia do dispositivo exigir que ele saia do modo de hibernação com muita frequência, pois uma grande quantidade de energia é consumida, quando o microcontrolador sai do modo de hibernação. Retornar ao modo ativo a partir do modo de espera geralmente é baseado em interrupção. Este modo é implementado no microcontrolador desligando a árvore do relógio que aciona os circuitos da CPU enquanto o relógio primário de alta frequência MCU é mantido em execução. Com isso, a UCP pode retomar as operações imediatamente após a ativação do gatilho de wake-up. O clock gating foi empregado extensivamente para cortar sinais em modos de baixo consumo de energia para microcontroladores e este modo efetivamente bloqueia os sinais de clock na CPU.
ii. Modo de espera
O modo de espera é outro modo de baixo consumo de energia, fácil de implementar pelos designers. É muito semelhante ao modo inativo / hibernar, pois também envolve o uso de clock gating na CPU, mas uma grande diferença é que permite a mudança no conteúdo da memória RAM, o que normalmente não é o caso no modo inativo / hibernação. No modo Standby, periféricos de alta velocidade como DMA (acesso direto à memória), portas seriais, periféricos ADC e AES são mantidos em execução para garantir que estejam disponíveis imediatamente após a CPU ser ativada. Para certos MCUs, a RAM também é mantida ativa e pode ser acessada pelo DMA, permitindo que os dados sejam armazenados e recebidos sem intervenção da CPU. A energia consumida neste modo pode ser tão baixa quanto 50uA / MHZ para microcontroladores de baixa potência.
iii. Modo Sono Profundo
O modo de hibernação geralmente envolve a desativação de relógios de alta frequência e outros circuitos dentro do microcontrolador, deixando apenas o circuito de relógio usado para acionar elementos críticos como o temporizador de watchdog, detecção de queda de energia e circuitos de reinicialização de energia. Outros MCUs podem adicionar outros elementos para melhorar a eficiência geral. O consumo de energia neste modo pode ser tão baixo quanto 1uA dependendo do MCU específico.
iv. Modo parar / desligar
Certos microcontroladores têm diferentes variações deste modo adicional. Neste modo, os osciladores alto e baixo geralmente são desabilitados, deixando apenas alguns registros de configuração e outros elementos críticos ligados.
Os recursos de todos os modos de hibernação mencionados acima diferem de MCU para MCU, mas a regra geral é; quanto mais profundo o sono, maior será o número de periféricos desativados durante o sono e menor será a quantidade de energia consumida, embora isso geralmente também signifique; quanto maior a quantidade de energia consumida para fazer o sistema voltar a funcionar. Portanto, cabe ao projetista considerar esta variação e escolher a MCU certa para a tarefa, sem fazer concessões que afetem a especificação do sistema.
2. Modificação dinâmica da frequência do processador
Esta é outra técnica amplamente popular para reduzir com eficiência a quantidade de energia consumida por um microcontrolador. É de longe a técnica mais antiga e um pouco mais complicada do que os modos de espera. Envolve o firmware acionando dinamicamente o relógio do processador, alternando entre alta e baixa frequência, pois a relação entre a frequência do processador e a quantidade de energia consumida é linear (conforme mostrado abaixo).
A implementação dessa técnica geralmente segue esse padrão; quando o sistema está em um estado ocioso, o firmware ajusta a frequência do clock para uma velocidade baixa, permitindo que o dispositivo economize energia e quando o sistema precisa fazer cálculos pesados, a velocidade do clock é restaurada.
Existem cenários contraproducentes para modificar a frequência do processador, o que geralmente é resultado de um firmware mal desenvolvido. Esses cenários surgem quando a frequência do clock é mantida baixa enquanto o sistema está executando cálculos pesados. Uma baixa frequência neste cenário significa que o sistema levará mais tempo do que o necessário para realizar a tarefa definida e, portanto, consumirá de forma cumulativa a mesma quantidade de energia que os projetistas estavam tentando economizar. Portanto, cuidado extra deve ser tomado ao implementar essa técnica em aplicativos de tempo crítico.
3. Estrutura de firmware do manipulador de interrupção
Esta é uma das técnicas mais extremas de gerenciamento de energia em microcontroladores. Isso é possível graças a alguns microcontroladores como os núcleos ARM cortex-M, que têm um bit sleep-on-exit no registro SCR. Este bit fornece ao microcontrolador a capacidade de dormir após executar uma rotina de interrupção. Embora haja um limite para o número de aplicativos que funcionarão sem problemas dessa maneira, essa pode ser uma técnica muito útil para sensores de campo e outros aplicativos baseados em coleta de dados de longo prazo.
A maioria das outras técnicas, em minha opinião, são variações das já mencionadas acima. Por exemplo, a técnica de relógio periférico seletivo é essencialmente uma variação dos modos de hibernação em que o projetista seleciona os periféricos para ligar ou desligar. Esta técnica requer um conhecimento profundo do microcontrolador alvo e pode não ser muito amigável para iniciantes.
4. Firmware com otimização de energia
Uma das melhores maneiras de reduzir a quantidade de energia consumida por um microcontrolador é escrevendo firmware eficiente e bem otimizado. Isso afeta diretamente a quantidade de trabalho realizado pela CPU por vez e isso, por extensão, contribui para a quantidade de energia consumida pelo microcontrolador. Devem ser feitos esforços durante a gravação do firmware para garantir a redução do tamanho do código e dos ciclos, pois cada instrução desnecessária executada é uma parte da energia armazenada na bateria sendo desperdiçada. Abaixo estão algumas dicas comuns baseadas em C para desenvolvimento de firmware otimizado;
- Use a classe “Static Const” tanto quanto possível para evitar a cópia em tempo de execução de arrays, estruturas etc. que consomem energia.
- Use ponteiros. Eles são provavelmente a parte mais difícil da linguagem C de entender para iniciantes, mas são os melhores para acessar estruturas e sindicatos de forma eficiente.
- Evite o Módulo!
- Variáveis locais sobre variáveis globais sempre que possível. As variáveis locais estão contidas na CPU enquanto as variáveis globais são armazenadas na RAM, a CPU acessa as variáveis locais mais rapidamente.
- Os tipos de dados não assinados são seus melhores amigos sempre que possível.
- Adote a “contagem regressiva” para loops sempre que possível.
- Em vez de campos de bits para inteiros sem sinal, use máscaras de bits.
As abordagens para reduzir a quantidade de energia consumida por um microcontrolador não se limitam às abordagens baseadas em software mencionadas acima, existem abordagens baseadas em hardware, como a técnica de controle de tensão do núcleo, mas para manter o comprimento desta postagem dentro de uma faixa razoável, economizaremos eles para outro dia.
Conclusão
A implementação de produtos de baixa potência começa com a escolha do microcontrolador e pode ser bastante confuso quando se tenta repassar as diversas opções disponíveis no mercado. Durante a varredura, a folha de dados pode funcionar bem para obter o desempenho geral dos MCUs, mas para aplicações críticas de energia, pode ser uma abordagem muito cara. Para entender as verdadeiras características de potência de um microcontrolador, os desenvolvedores devem levar em consideração as especificações elétricas e as funcionalidades de baixa potência disponíveis para o microcontrolador. Os projetistas não devem se preocupar apenas com o consumo de corrente de cada um dos modos de energia anunciados pela folha de dados do MCU, eles devem olhar para o tempo de ativação, fontes de ativação e periféricos que estão disponíveis para uso durante os modos de baixo consumo.
É importante verificar os recursos do microcontrolador que você planeja usar para verificar as opções disponíveis para implementação de baixa energia. Os microcontroladores têm sido um dos maiores beneficiários do avanço da tecnologia e agora existem vários microcontroladores de ultra-baixa potência que garantem que você tenha recursos para ajudá-lo a ficar dentro do seu orçamento de energia. Vários deles também fornecem várias ferramentas de software de análise de energia das quais você pode tirar vantagem para um projeto eficaz. Um favorito pessoal é a linha MSP430 de microcontroladores da Texas Instrument.