Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Arduino Power

Componentes e suprimentos

Adafruit PowerBoost Charger Shield
× 1
Bateria Lipoly recarregável (genérica)
3,7 - 4,2 V
× 1
Arduino UNO
× 1

Sobre este projeto


Projetos envolvendo a família Arduino de placas de microcontrolador normalmente não precisam de nenhum circuito especial de gerenciamento de energia. Você conecta uma fonte de alimentação, o dispositivo inicializa, faz seu trabalho e então para quando a energia é desconectada. Ao contrário de um sistema Raspberry Pi, não há risco de corromper um cartão de memória SD.

Mas, para alguns aplicativos, você pode querer monitorar o status de energia e responder de uma forma mais gerenciada, em vez de apenas desligar.

Considere um dispositivo de sensoriamento remoto que registra dados de temperatura, por exemplo. Se a bateria acabar sem supervisão, os registros simplesmente param. Não há como saber imediatamente se o problema era a bateria fraca. Pode ter sido falha de software ou hardware.

Da mesma forma, para um sistema portátil, seria útil saber quanto resta da bateria e quando ela precisa ser recarregada.

Este projeto apresenta várias abordagens para o gerenciamento de energia do Arduino com circuitos, software e descrições para cada um deles. Começando com um simples botão liga / desliga até um sistema de registro de dados que inclui o status da bateria, destinado ao monitoramento de ambiente autônomo.

Você pode escolher em qual dos subsistemas está interessado. Descreverei todos eles em complexidade crescente, mas você pode comentar as partes nas quais não está interessado.

O projeto é baseado nas ideias dos projetos LiPoPi e Pi Power, que fornecem funcionalidade semelhante para sistemas Raspberry Pi.





Visão geral


O sistema oferece várias funções:
  • Ligar / desligar usando um botão de pressão
  • Monitore a tensão da bateria usando o Arduino ADC
  • Desligue o sistema em baixa tensão
  • Registre a tensão da bateria e uma mensagem de desligamento para o arquivo
  • Exibir o status da bateria usando um LED vermelho / verde

Apresentarei cada um deles, mas o traço comum a todos eles é a combinação do Adafruit PowerBoost e do Arduino.

Com cada um deles, você adiciona e personaliza duas funções, arduinoPowerSetup () e arduinoPowerMonitor ( ) , para o setup () padrão e loop () funções em seu código.





Escudo Adafruit PowerBoost


O sistema usa uma bateria LiPoly recarregável e um escudo do carregador Adafruit PowerBoost, que pode carregar a bateria e aumentar sua saída para 5V.

A Adafruit faz três versões do Power Boost - duas placas breakout e um Arduino Shield. A maior parte do trabalho descrito aqui usa o Power Shield, mas falarei sobre como usar as placas de breakout mais tarde.

Leia esta página sobre como configurar o PowerBoost Shield. Para preparar o kit Shield, você precisa:
  • Solda nas tiras de cabeçalho de empilhamento
  • Mas não conecte o interruptor
  • Solde um pedaço de fio (4 polegadas, núcleo sólido 22AWG) para ativar o pino
  • Faça a ponte das almofadas para o pino analógico A0 na parte inferior da blindagem





Circuito de ligar / desligar


Este circuito básico usa o pressionamento de um botão momentâneo para ligar o sistema e, quando em execução, para desligá-lo - semelhante ao funcionamento do meu telefone.

Quando você pressiona e segura um sistema desligado, o PowerBoost é ligado e fornece energia para o Arduino, que então inicializa e executa o programa que você carregou nele.

Ao pressionar o botão novamente e soltá-lo, o Arduino desativa o PowerBoost e, por não estar mais fornecendo energia, o Arduino é desligado.

Por favor, leia esta página para os detalhes. Aqui está o esquema:

Nota: Você não precisa deste circuito para usar o resto deste projeto. Você pode usar a chave opcional fornecida com o escudo PowerBoost. A principal diferença é que a opção básica apenas desliga o sistema sem nenhuma maneira de registrar uma mensagem de log.





Monitore a tensão da bateria


O Arduino tem 6 conversores analógico para digital (ADCs) nos pinos analógicos de 0 a 5, o que torna a medição de tensão direta. A blindagem PowerBoost permite que você conecte a tensão da bateria ( Vbat ) a um deles ligando os blocos de solda apropriados, conforme descrito na página PowerBoost Shield. Neste exemplo, associei-o ao pino analógico 0 .

A voltagem das baterias LiPoly varia em torno de 4,25 V quando totalmente carregado para cerca de 3,7 V quando descarregado. O ADC converte a faixa de tensão de 0V a 5V no intervalo inteiro de 0 a 1023 , e acessamos esse valor chamando analogRead () .

Este trecho de código mostra como fazer isso, bem como calcular o estado relativo da bateria usando as tensões mínimas e máximas da bateria.
  float maxVoltage =4,25; float minVoltage =3,75; arduinoPowerVoltage =float (analogRead (arduinoPowerVoltagePin)) / 1024.0 * 5.0; float fractionalVoltage =(arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage);  

As baterias LiPoly não perdem voltagem linearmente à medida que se descarregam, mas está perto o suficiente que podemos estimar a vida útil restante da bateria usando a tensão fracionária.

Portanto, podemos obter a tensão da bateria e estimar a vida útil restante, mas precisamos de uma forma de comunicar isso ao usuário. Poderíamos usar um display alfanumérico e, na próxima seção, mostrarei como registrar isso em um arquivo em um cartão SD. Mas isso pode ser um exagero para muitos projetos.

Uma abordagem mais simples é usar um RGB e alterar a cor para refletir a vida útil da bateria. Por exemplo:
  • Verde - mais de 50%
  • Amarelo - 20% a 50%
  • Vermelho - menos de 20% - tempo para recarregar

Para implementar isso, basta adicionar um Led RGB e dois resistores de 1K ao circuito e adicionar um pouco de código ao arduinoPowerMonitor () .

LEDs RGB normalmente usam um ânodo comum então este circuito funciona com isso:

NOTA: Na prática, uso a alimentação de 3,3 V com meus LEDs.

NOTA: Como mostrarei mais tarde, pode haver uma 'oscilação' significativa na tensão medida, por motivos que não entendo. Se a bateria estiver próxima de um dos valores em que a cor do LED muda, você pode vê-la alternar entre os dois estados - muito chato. Uma solução rápida é colocar um capacitor 0,1uF entre o pino analógico A0 e terreno .

Este layout de breadboard não mostra a bateria ou o Arduino. O esboço arduino_2_voltage_led implementa Power On / Power Off e display LED de tensão. O código define o alfinete verde ou vermelho para baixo para ligar o led e alto para desligá-lo.

NOTA: Você pode verificar as tensões medidas e / ou depurar removendo o comentário das chamadas para Serial no código e executando o Serial Monitor no IDE. Você verá a tensão real e fracionada da bateria. Por algum motivo, a primeira chamada está incorreta.





Registro da tensão da bateria em um cartão SD


O indicador LED de voltagem é útil para sistemas Arduino portáteis alimentados por bateria, onde você não se preocupa muito com os detalhes, apenas quer saber quando precisa recarregar a bateria.

Mas se você estiver monitorando sensores em um sistema autônomo, digamos, talvez queira registrar a tensão da bateria junto com os dados do sensor para ter uma ideia melhor do consumo de energia ao longo do tempo.

Para esta parte do projeto, estou usando o Adafruit Data Logging Shield, que pode registrar dados em um CSV formato de arquivo no cartão SD anexado, junto com carimbos de data / hora. O Guia Adafruit explica como o SD e RTC bibliotecas funcionam e você deve entender isso antes de trabalhar nesta parte do projeto.

O circuito não mudou em relação ao exemplo anterior - vale a pena manter o LED, pois ele fornece feedback imediato sobre o status da bateria, mas isso não é necessário.

Como estamos registrando dados no cartão, é importante registrarmos uma mensagem de desligamento. Assim podemos saber se o desligamento foi intencional ou se ocorreu algum erro no sistema.

Além disso, como estamos monitorando a tensão, podemos verificar quando a tensão cai abaixo de algum nível mínimo e desligar o sistema com segurança. Novamente, podemos registrar uma mensagem sobre isso antes do desligamento.

O esboço para isso está em arduino_3_voltage_logging. Isso inclui algumas rotinas de utilitários para gerar uma string de carimbo de data / hora devidamente formatada, etc. e inclui um hack para piscar o LED vermelho se você esquecer de inserir um cartão SD, o que eu faço o tempo todo.

Toda a pilha de Arduino Uno, Data Logging Shield, PowerBoost Shield e breadboard se parece com isto:





Dados de tensão


Aqui está um gráfico da tensão da bateria ao longo do tempo, mostrando o declínio gradual ao longo de um período de cerca de 20 horas. O declínio não é verdadeiramente linear, mas, para fins de estimativa da potência restante, é próximo o suficiente.

Como mencionei anteriormente, realmente ajuda adicionar um capacitor de 0,1 uF entre o Pino analógico A0 e terreno . Nesta amostra, a linha roxa mostra o impacto do capacitor em comparação com o original em azul.





Registro de dados ambientais em um cartão SD


Para finalizar, aqui está mais um acréscimo ao projeto. Um projeto que tenho em mente é um monitor ambiental autônomo para meu jardim - temperatura, umidade do solo, etc.

Vou instalar o Arduino, etc, em uma caixa lacrada que ficará desacompanhada por algum tempo. Assim como a bateria está acabando, quero verificar se nenhuma umidade entra no gabinete e se ele não sofre temperaturas extremas que podem danificar o sistema. Uma maneira barata e fácil de medir a temperatura e a umidade é o sensor DHT22 - confira o Tutorial do Adafruit para os detalhes.

Em meu código de exemplo, uso o pino digital 5 em vez do pino 2, visto que já o estou usando para interromper o botão Desligar.

O código para isso está em arduino_4_voltage_temp_humidity_logging. Depois de fazer isso funcionar em uma placa de ensaio, conectei-o a um escudo protótipo Adafruit. O sensor DHT22 é bem volumoso - mas é barato. Dê uma olhada em outras placas de breakout da Adafruit, Sparkfun, etc. para outras alternativas.





Conservação de energia em projetos Arduino


A próxima etapa do meu projeto é reduzir o consumo de energia e estender a vida útil da bateria.

Meu ponto de partida para isso é um excelente tutorial da Adafruit sobre registro de dados em baixa potência de Tony DiCola.

Código

Github
https://github.com/craic/arduino_powerhttps://github.com/craic/arduino_power
Github
https://github.com/NeonHorizon/lipopihttps://github.com/NeonHorizon/lipopi
Github
https://github.com/craic/pi_powerhttps://github.com/craic/pi_power

Processo de manufatura

  1. Dissipação de energia
  2. Fontes de energia
  3. Bulldozer
  4. Bateria
  5. Arduino Spybot
  6. FlickMote
  7. TV B-Gone caseiro
  8. Relógio mestre
  9. Força do vento
  10. Como a redução de subsídios afeta a indústria de baterias de energia