Boa noite pessoal,

Tive uma ideia pra fazer um projeto pela faculdade, porem como nunca programei to tendo bastante dificuldade.

* Em primeiro lugar, ja estou tendo problema quanto a leitura do meu sensor de corrente DC ( ACS712). Os valores lidos pelo sensor não batem com o lido pelo multimetro.

* O valor monitorado no "MONITOR SERIAL", nunca fica em zero. Ex: se eu desligar o motor, ele ainda indica valor;

RESOLVENDO ISSO:

Essas informações serão apresentadas no MATLAB e em uma tela NOKIA -5110

* A leitura no MATLAB ta ok!

* A leitura na tela: Não consigo deixar esse valor aparecendo na tela ( online)!

E PRA FINALIZAR :

* Pesquisei e vi que a resposta de autonomia em tempo e de ( CAPACIDADE DA BAT. mAh) / CONSUMO (mA).

* Gostaria de mostrar essa informação.

------------------------------------------------------------------------

Segue as fotos do meu esquema e parte do código que foi dando certo. rsrs...

[code]

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <SPI.h>

// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS/CE)
// pin 12 - LCD reset (RST)

int sensorPin = A0;

int sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.0195503421309873; // 20%1023
float autonomia =0;

Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);

void setup()
{
  Serial.begin(9600);
  Serial.begin(9600);
  display.begin();
  display.setContrast(50); //Ajusta o contraste do display
  display.clearDisplay(); //Apaga o buffer e o display
  display.setTextSize(1); //Seta o tamanho do texto
  display.setTextColor(BLACK); //Seta a cor do texto
  display.setCursor(0 ,0); //Seta a posição do cursor
  display.println(" IESAM ");

  //Texto invertido - Branco com fundo preto
  display.setTextColor(BLACK);

  display.println(" Eng. Eletrica ");

  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.println(" PI ");
  display.display();
  delay(2000);

}
 
 void loop()
{
  for(int i=500; i>0; i--)
  {
  sensorValue_aux = (analogRead(sensorPin) - 511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
  sensorValue += pow(sensorValue_aux, 2); // soam os quadardos das leituras no laco
  }
 
  sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
  currentValue = (sensorValue/0.010); // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)

  // calculando Autonomia

  autonomia = ( 16000 /currentValue);
  
 // mostra o resultado no terminal
 
 
  Serial.print(currentValue,3);
  Serial.print(" mA \n" );
 
  Serial.print(autonomia);
  Serial.println(" autonomia");
  
  sensorValue =0;
 
  delay(500);
 
}
 

[/code]

Exibições: 627

Responder esta

Respostas a este tópico

Olá,

Procure dar uma olhada neste exemplo no blog do Leonardo Dutra (um garagista aqui do LDG).

Monte o circuito e estude o código, assim você consegue validar o hardware e começa a entender como funciona a programação, depois pode adaptar pras sua necessidades.

https://dutraleo.wordpress.com/2013/01/29/sensor-de-corrente-acs712...

Abraço.

Bom pessoal terminei uma parte do codigo, porem não consigo mostrar a variavel na tela. Peço a ajuda de vcs!!!

Se abaixo, como ta o codigo,


#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <SPI.h>

// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS/CE)
// pin 12 - LCD reset (RST)

int sensorPin = A0;
int sensorValue_aux = 0;
float sensorValue = 0;

Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);

void setup()
{
Serial.begin(9600);
display.begin();
display.setContrast(50); //Ajusta o contraste do display
display.clearDisplay(); //Apaga o buffer e o display
display.setTextSize(1); //Seta o tamanho do texto
display.drawRect(0,0, 84,48, BLACK); //Desenha o retangulo da borda
display.drawRect(1,1, 82,46, BLACK); //Desenha o retangulo da borda
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(0 ,0); //Seta a posição do cursor
display.display();


}

void loop()
{
for(int i=514; i>0; i--)
{
sensorValue_aux = (analogRead(sensorPin) - 514);
sensorValue += pow(sensorValue_aux, 2);
}
sensorValue = (sqrt(sensorValue / 514)) * 33,00 / 1024;


display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(5,3); //Seta a posição do cursor
display.print(sensorValue);
display.print(" A ");

// mostra o resultado no terminal
Serial.println(sensorValue,2);

sensorValue =0;

delay(500);

}

O desenho esta pequeno, mas você quer medir o consumo de um motor??

Não comece assim, pois o motor gera muitos ruidos. 

Recomendo colocar um resistor de potencia como carga. 

E assim que obtiver um resultado preciso, faça outros testes. 

Vai por mim...

Positivo! estou utilizando um resistor um resistor, melhorou bastante.

Porem agora é saber como colocar essa variavel analogica na tela, e a autonomia e formato de horas. ex: HH:MM:SS

Agradeço a força! 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço