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]
Tags:
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!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por