Go Down

Topic: Sensor de corrente(programação) (Read 9561 times) previous topic - next topic

wilsonalves

Boas pessoal estou a desenvolver um projeto onde vou utilizar estes 3 sensores (Links em baixo) de medição de corrente gostaria de saber se eventualmente já alguem trabalhou com eles ou parecidos e se sabem como se programam no nosso amigo arduino.

http://pt.mouser.com/ProductDetail/Honeywell/CSLA2DH/?qs=%2fha2pyFaduiuRkBEznpsXGHvKzNwCO9a0MDKcPProZsprrnYA2Rc5Q%3d%3d
http://pt.mouser.com/ProductDetail/Honeywell/CSLA1CF/?qs=%2fha2pyFaduiuRkBEznpsXMihzBv1C9LKTjpVYCRpdxR5zm6%2f4FKF5Q%3d%3d
http://pt.mouser.com/ProductDetail/Honeywell/CSLH3A45/?qs=%2fha2pyFadui3h1hLwbvtoi2i2TSxMeMHx0K4MyfwyxPXcrih3EjNMw%3d%3d

Cumprimentos

zurgbr

vendo o datasheet, vi que a saida é voltagem..
então, tenta usar umas 3 correntes conhecidas para fazer uma tabelinha de conversão..
ai depois é só mapear no arduino..
mas deve ter formas mais faceis..  :D :D

wilsonalves

Sim realmente tens razão vou aumentando a corrente na fonte de tensão gradualmente e logo chegarei a uma conclusão o meu problema é como vou fazer isso em relação à programação

zurgbr

ai é só usar como o potenciometro..
quando medir as correntes, é so mapea
val = analogRead(sensor);

ai de acordo com as correntes que vc medir vai anotando..
ex:
corrente (mAh)        val
0mAh          =      0
100 mAh        =    100
200 mAh        =     200
.
.
.
1000mAh                 =   1000

ai é so jogar no map...
Code: [Select]

val = (val  inicial_pwm, final_pwm, inicial_mAh, final_mAh);
Serial.println(val);
delay(1000);


mais ou menos isso..

wilsonalves

Fiz este bocado de código para o sensor de 100A:

int S100A = A0;


void setup(){
pinMode (S100A,INPUT);
}

void loop()
{
analogRead(S100A);
delay(1000);
}

Não me está a aparecer valor absolutamente nenhum o que está a faltar pessoal??

Mortis

veja no final da última mensagem do zurgbr, para simplificar removi o map:
Code: [Select]

int S100A = A0;

void setup(){
pinMode (S100A,INPUT);
}

void loop()
{
val = analogRead(S100A);
Serial.println(val);
delay(1000);
}


Assim verás o resultado no serial monitor ;)

wilsonalves

Muito obrigado mas não tenho de pôr por exemplo um println(val) ou um float(val) para conseguir ver os dados??

wilsonalves

int S100A = A0;
float val = analogRead(S100A);
void setup(){
pinMode (S100A,INPUT);
}

void loop()
{
val = analogRead(S100A);
Serial.println(val);
delay(1000);
float(val);
}

Fiz o código assim e compilou
O sensor lê até 100A e eu coloquei-o no fio positivo com uma lampada ligada será que a corrente consumida pela lampada e muito pequena e o sensor não lê ou continua a ser um erro no código??

zurgbr

não vai aparecer nada porque você mandou o arduino apenas Ler os dados..
No setup
Serial.begin(9600);

e antes do delay no loop
Serial.println(val);

ai é so abrir o monitor serial e ser feliz..  :D :D

Mortis

Wilson, é preferível colocar os códigos dentro das tags Code (botão #), para que ele apareça como abaixo :)

Comentei o código para identificarmos o que se passa
Code: [Select]

int S100A = A0; //declara a variável S100A como zero (que identificará a porta analógica zero) OK
//float val = analogRead(S100A); não tem sentido usar analogRead neste momento
//e analogRead(pino) retorna um valor entre 0 e 1023, veja em http://arduino.cc/en/Reference/analogRead
//então é melhor usar integer
int val = 0;

void setup(){
//perdoe-me, faltou iniciar a serial com o abaixo
Serial.begin(9600); //deverá ser definido no serial monitor a mesma velocidade

pinMode (S100A,INPUT); //Defione o pino S100A como imput OK
}

void loop()
{
val = analogRead(S100A); //lê o conteúdo da porta e guarda em val OK
Serial.println(val); //imprime o valor val na porta serial OK
delay(1000); //pausa o loop para não choverem dados na porta serial OK
float(val); //não vejo sentido aqui ;)
}


Testa o código com essas alterações, e me desculpe por esquecer de colocar o "Serial.begin(9600);"

zurgbr


int S100A = A0;
float val = analogRead(S100A);
void setup(){
pinMode (S100A,INPUT);
}

void loop()
{
val = analogRead(S100A);
Serial.println(val);
delay(1000);
float(val);
}

Fiz o código assim e compilou
O sensor lê até 100A e eu coloquei-o no fio positivo com uma lampada ligada será que a corrente consumida pela lampada e muito pequena e o sensor não lê ou continua a ser um erro no código??



qual o sensor vc está usando?

wilsonalves

Agradeço imenso pela ajuda o sensor que estou a usar é este:
http://pt.mouser.com/ProductDetail/Honeywell/CSLA1CF/?qs=%2fha2pyFaduiuRkBEznpsXMihzBv1C9LKTjpVYCRpdxR5zm6%2f4FKF5Q%3d%3d

wilsonalves

Já está a bombar pessoal, está a dar valores tipo 519 segundo a segundo, agora vou po-lo na fonte de tensão  e vou aumentando a corrente gradualmente para tentar perceber a que valores correspondem e construir uma tabela só assim consigo penso eu.

Muito obrigado pela ajuda

zurgbr

você alimentou o sensor com quantos vouts?

wilsonalves

Com os 5 do arduino
Não está correto??

Go Up