Sensor de corrente(programação)

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

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.. :smiley: :smiley:

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

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...

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

mais ou menos isso..

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??

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

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 :wink:

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

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??

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.. :smiley: :smiley:

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

Comentei o código para identificarmos o que se passa

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);"

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??

qual o sensor vc está usando?

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

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

você alimentou o sensor com quantos vouts?

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

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

no site ele diz que tensão de operação é de 8 a 12 v
cuidado pra não exeder a corrente de entrada na porta do arduino..
se vc tiver um amperimetro pra medir essa corrente antes de acoplar no arduino, seria muito bom..
nao tou conseguindo ver o datasheet.

Agora alimentei-o a 3.3Volts e os valores baixaram para 485,486,487.
Mantenho nos 3.3 ou 5 Volts o que acham?

Alimentei o sensor a 3.3 volts e realmente os valores reduziram para 485,486,487.
Mantenho a 5 Volts ou passo para 3.3Volts?
O que acham?

wilsonalves:
Alimentei o sensor a 3.3 volts e realmente os valores reduziram para 485,486,487.
Mantenho a 5 Volts ou passo para 3.3Volts?
O que acham?

Product Specifications
Product Type Inductive Analog Current Sensor
Sensed Current Type ac or dc
Sensed Current Range ±100 A
Package Type PCB Bottom Mount
Output Type Voltage
Sensitivity 29.7 mV N* ±2.7 mV N* @ 12 Vdc
Supply Current 19 mA max.
Offset Voltage Vcc/2 ±10 %
Supply Voltage 8.0 Vdc to 16.0 Vdc
Offset Shift ±0.05
Response Time 3 µs
Operating Temperature -25 °C to 85 °C [-13 °F to 185 °F]
Storage Temperature -40 °C to 100°C [-40 °F to 212 °F]
Housing Material PBT Polyester
Mounting PCB on 3 Pins
Pinout Style 3 Pin
Availability Global
Comment * N = Number of Turns
UNSPSC Code 411121
UNSPSC Commodity 411121 Transducers
Series Name CSLA

Então quer dizer que o tenho de alimentar a 8 Volts e depois sim converter??