Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- // Medidor de Bateria -- Constantes
- #define V_BAT 34 // Bateria
- #define LED_ONBOARD 2 // Led onboard indicador de bateria fraca
- #define AMOS_FILTRO 100 // Quantidade de amostras para o filtro de media do medidor de bateria
- #define BAT_MAX_READ 1500 // Leitura da bateria com tensao maxima || VALOR A SER LIDO COM TENSAO A 8.4V
- #define BAT_MIN_READ 1000 // Leitura da bateria com tensao minima || VALOR A SER LIDO COM TENSAO A 6V
- #define BAT_MIN 6 // Tensao minima
- #define BAT_MAX 8.4 // Tensao maxima
- #define LOW_BAT 6.4 // Tensao de bateria fraca
- // Medidor de Bateria -- Variaveis
- double tensao_bateria = 0; // armazena valor de tensao da bateria de BAT_MIN à BAT_MAX V.
- int soma_filtro = 0; // variavel de soma do valor de tensao para o filtro de media
- int cont_filtro = 0; // variavel contadora para o filtro de media
- /************Leitura da tensão da bateria************/
- /****************************************************/
- double remap(int x, int in_min, int in_max, float out_min, float out_max)
- {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- }
- bool medeBateria(bool exibir){
- soma_filtro += analogRead(V_BAT);
- cont_filtro++;
- if(cont_filtro>=AMOS_FILTRO){
- soma_filtro/=cont_filtro;
- tensao_bateria = remap(soma_filtro, BAT_MIN_READ, BAT_MAX_READ, BAT_MIN, BAT_MAX); // Faz a leitura da porta analogica com resolucao de 12 bits e converte para Volts. || VERIFICAR VALOR MAXIMO DE TENSAO
- if(exibir){
- Serial.print("Bateria: ");
- Serial.print(tensao_bateria);
- Serial.print(" V || Read: ");
- Serial.println(soma_filtro);
- }
- if(tensao_bateria<LOW_BAT && tensao_bateria!=0){
- digitalWrite(LED_ONBOARD, HIGH);
- return false;
- }
- else{
- digitalWrite(LED_ONBOARD, LOW);
- return true;
- }
- soma_filtro=0;
- cont_filtro=0;
- }
- return false;
- }
- /*********************************************************************/
- /*********************************************************************/
- /*********************************************************************/
- void setup()
- {
- Serial.begin(9600); // Serial de run no terminal do arduino
- pinMode(V_BAT, INPUT); // Pino de leitura da tensao da bateria
- pinMode(LED_ONBOARD, OUTPUT); // Pino Led onboard
- /*
- if(!medeBateria(false)){ // Impede a inicialização do robo caso a bateria esteja fraca
- setup();
- }
- */
- }
- void loop()
- {
- medeBateria(false);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement