Go Down

Topic: Sensor de corrente(programação) (Read 10637 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy