collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino - Consumo em mA de um circuito  (Lida 9564 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline buu

  • Mini Robot
  • *
  • Mensagens: 13
Arduino - Consumo em mA de um circuito
« em: 18 de Janeiro de 2010, 23:43 »
Começei a umas semanas a mexer nos arduinos e claro começei nas coisas basicas, agora estou um pouco mais ambicioso e quero colocar num LCD 16x2 a voltagem, consumo e temperatura do meu circuito.

Por agora a voltagem esta limitada ao 5v para facilitar as ligações mas no futurovou actualizar para um divisor de voltagem, para usar a corrente de funcionamento do circuito 12v.
A parte da voltagem está controlada e a funcionar correctamente ( e o mais importante) precebo como se faz na teoria e consegui aplicar na pratica.

Agora relativo  a leitura de mA do circuito estou a usar um sensor da Allegro ACS 754, retirado do datasheet (já tinha usado este tipo de sensor num PIC) ele funciona tem um vcc a 5v e 0 amperes corresponde a metade do vcc ( vvc/2) e a sensibilidade é 13.3 mv/A. (ele não é mto sensivel por tem uma capacidade 150A mas por agora serve, se preceber como este funciona facilmente consigo actualizar para outro)

Eu consigo colocar a leitua em steps no LCD (essa é basica) não consigo é encontrar a formula para esta função.

Aqui vai o meu codigo a funcionar só com steps na entrada analogica 3

Código: [Seleccione]
#include <LiquidCrystal.h>

 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 const int voltPin = 1;  // inicializa o pino anologico 1 com entrada de 5v
 int ampPin = 3;          // inicializa o pino anologico 3 como entrada de 2.5v = 0A (ACS754)
 int amperes = 0;

 void setup() {
    lcd.begin(16, 2);  // Configura o LCD 16x2
     }

 void loop() {
 
   float volt = (analogRead(voltPin) + 1) * .00488; // 0v = 0,5v = 1023 (1024 steps) : .00488v = 1 step
   lcd.setCursor(1,0);
   lcd.print(volt);
   lcd.setCursor(6,0);
   lcd.print("Volt");
   
   amperes = (analogRead(ampPin));
   lcd.setCursor(3,1); //linha 2
   lcd.print(amperes);
   //lcd.setCursor(6,1);
   //lcd.print("mA");
   delay(200);
   }


Espero que alguem me possa ajudar  ;D
« Última modificação: 18 de Janeiro de 2010, 23:54 por TigPT »

Offline oxytech

  • Mini Robot
  • *
  • Mensagens: 75
Re: Arduino - Consumo em mA de um circuito
« Responder #1 em: 19 de Janeiro de 2010, 00:22 »
parece-me que estas a trocar linhas com colunas.

http://arduino.cc/en/Reference/LiquidCrystalSetCursor

de qualquer maneira não percebi bem qual era a duvida?

cumprimentos

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Arduino - Consumo em mA de um circuito
« Responder #2 em: 19 de Janeiro de 2010, 01:09 »
Se bem me lembro o chip mede -150 a 150. A 0A está com 5V / 2 = 2.5V como disseste.

O ADC tal como está configurado pelo analogRead() lê de 0 a 5V em 1024 passos. Para converter o valor lido (chamemos-lhe ADC) em tensão (V), V = ADC * 5.0 / 1024 (tal como está na datasheet do ATmega)

A partir daqui, a corrente (I) calcula-se como I = (V - 2.5) * 150 / 2.5

Mas melhor ainda é removeres a dependência da tensão e fazer apenas uma fórmula puramente raciométrica:

I = (ADC - 512) * 150 / 512.0

Pode estar a falhar-me 1 LSB, nunca sei isto de cor sem pegar em lápis e papel.
« Última modificação: 19 de Janeiro de 2010, 01:12 por Njay »

Offline buu

  • Mini Robot
  • *
  • Mensagens: 13
Re: Arduino - Consumo em mA de um circuito
« Responder #3 em: 19 de Janeiro de 2010, 14:18 »
parece-me que estas a trocar linhas com colunas.

http://arduino.cc/en/Reference/LiquidCrystalSetCursor

de qualquer maneira não percebi bem qual era a duvida?

cumprimentos


São 16 colunas por 2 filas, esta correcto! pelo menos funciona.
A minha dúvida é encontrar a formula para ler o sensor de corrente.

Pela explicação do Njay parece-me muito facil, bolas eu andava a fazer grandes formulas e a complicar... tive a fazer as contas e bate certo assim, vou testar a noite e dou novidades.

Offline buu

  • Mini Robot
  • *
  • Mensagens: 13
Re: Arduino - Consumo em mA de um circuito
« Responder #4 em: 20 de Janeiro de 2010, 10:06 »
Onten ainda exprimentei mudar o codigo para ver se tinha uma leitura correcta, mas sem sucesso.

Eu sei na teoria o que quero fazer não consigo é meter em codigo!

Se 5.0v = 1024 steps , o sensor a 0A tem 2.5v = 512 steps

O output do sensor é 1A = 0.0133v (limite do sensor 150A)

Amp = (analogRead(A3Pin) - 512);

Assim fico com um valor de 0 steps, para 0A = 2.5v.

Se por cada 1A = 0.0133v (150 * 0.0133) = 1.995v (será o maximo que o sensor consegue ler a temperatura de 25º)
Para escalar os 1024 step (1024 / 1.995) = 0.0019 step por cada 0.0133V

Isto esta correcto?
Como e que eu meto isto em codigo?

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Arduino - Consumo em mA de um circuito
« Responder #5 em: 20 de Janeiro de 2010, 10:25 »
Não te esqueças que o teu código tem que suportar números negativos.
Não penses em tensão, converte directamente da contagem do ADC para A.

512 = 0A, 511 ~ -0.293A, 513 ~ 0.293A, 514 ~ 0.586A, ... -> 1 contagem de ADC = 300A / 1024 = 150A / 512

int32_t ADC = ((int32_t)analogRead(A3Pin) - 512)
float I = (ADC - 512) * 150 / 512.0

O tipo int32_t é um tipo de 32 bits de tamanho e que suporta números negativos.

Como vês a resolução é pequena, portanto para conseguires ver o valor a sair do zero tens que medir uma corrente de pelo menos 300mA.

Actualização: alterado o tipo int16_t para int32_t, pois o resultado da multiplicação por 150 nem sempre cabe em 16 bits
« Última modificação: 20 de Janeiro de 2010, 18:04 por Njay »

Offline oxytech

  • Mini Robot
  • *
  • Mensagens: 75
Re: Arduino - Consumo em mA de um circuito
« Responder #6 em: 20 de Janeiro de 2010, 13:04 »
parece-me que estas a trocar linhas com colunas.

http://arduino.cc/en/Reference/LiquidCrystalSetCursor

de qualquer maneira não percebi bem qual era a duvida?

cumprimentos


São 16 colunas por 2 filas, esta correcto! pelo menos funciona.
A minha dúvida é encontrar a formula para ler o sensor de corrente.

Pela explicação do Njay parece-me muito facil, bolas eu andava a fazer grandes formulas e a complicar... tive a fazer as contas e bate certo assim, vou testar a noite e dou novidades.

sim tens razão, o erro foi meu  :D


Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Arduino - Consumo em mA de um circuito
« Responder #7 em: 20 de Janeiro de 2010, 18:06 »
Ois, desculpa mas tive que fazer uma alteração. Mudei o tipo da variável ADC de int16_t para int32_t, pois o resultado da multiplicação por 150 nem sempre cabe em 16 bits (por exmeplo quando ADC = 1024 ficamos com (1024 - 512) * 150 = 76800 que não cabe no máximo de 32767 de uma variável de 16 bits).

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Arduino - Consumo em mA de um circuito
« Responder #8 em: 01 de Março de 2010, 19:34 »
viva

apesar de nao estar a trabalhar com o arduino e sim com um PIC o meu sensor é parecido a este e para nao abrir outro topico, aproveito este para ver se me conseguem exclarecer uma duvida....

comprei este sensor na loja aqui da casa: http://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf

acontece que estou a tentar fazer um circuito para medir correntes na ordem de 100mA mas nao estou a ter sucesso...

metendo em serie com o sensor uma resistência de 100R e um potenciómetro de 470R a variação de tensão é mesmo mínima, de tal forma que não estou a conseguir ver alteração quase nenhuma na porta ADC.

sabem me dizer se ha forma de contornar este problema ou este sensor nao dá para este efeito?

Cumps

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Arduino - Consumo em mA de um circuito
« Responder #9 em: 02 de Março de 2010, 00:46 »
Essa datasheet é de vários sensores.... qual é a referência daquele que compraste?

De qualquer forma, na melhor das hipóteses tens cerca de 185mv/A, ou seja, medir 100mA dava-te um valor de 18.5mV. Num ADC de 10 bits com uma tensão de referência de 5V isto são quase 4LSBs (lês uma variação de "4" do ADC, em relação a 0A de corrente). Isto se o circuito eléctrico estiver bem concebido para não ter muito ruído (pelo menos bom desacoplamento da alimentação e tensão bem regulada) e fizeres a média de várias leituras do ADC para eliminar uma parte do ruído.
« Última modificação: 02 de Março de 2010, 00:53 por Njay »

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Arduino - Consumo em mA de um circuito
« Responder #10 em: 02 de Março de 2010, 15:55 »
viva

o meu é o 05B-T precisamente o 185mv/A

entao pensar em fazer um amperímetro de 0 a 5Amp esta completamente fora de questao certo?

Cumps

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino - Consumo em mA de um circuito
« Responder #11 em: 02 de Março de 2010, 18:29 »
E que tal juntar ai um op-amp ai com ganho de 10x para passar isso para 1,8v/A, com 5A daria mais de 5volts, mas podes usar um ganho de 5x ou 2x ou o que achares adequado, assim foges um bocado aos lsb do adc que são mais sensiveis a ruido que os mais significantes e assim deves ganhar um bom bocado na precisão, podes até usar um ganho multiplo de dois e depois para fazer a divisão basta um shift right com carry para não perderes precisão
Avr fanboy

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Arduino - Consumo em mA de um circuito
« Responder #12 em: 02 de Março de 2010, 19:55 »
viva

pois... realmente eu a pouco ante de vir aqui ler o teu comentario tinha pensado amplicar com um OPAMP a saida do sensor...

PS: a mais a cima disseram que o sensor media de -150 a 150 de que valor se trata? nao é corrente pois nao? :D mas ja agr so para ter a certesa o meu so mede de 0 a 5Amps certo?

Cumps

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Arduino - Consumo em mA de um circuito
« Responder #13 em: 03 de Março de 2010, 13:33 »
Na verdade até fiz mal as contas, fiz a pensar em 5A mas na verdade devia ter usado 10A (é -5 a 5), e portanto não são 4LSB para 100mA mas sim apenas 2LSB.

O teu, se é o 05x mede de -5A a 5A. E sim, outras variantes do mesmo modelo medem de -150A a 150A (tá tudo na datasheet!).

Alguns AVR têm um amplificador diferencial interno de até 20x antes do ADC, mas por acaso o ATmegax8x não tem.

Offline filjoa

  • Mini Robot
  • *
  • Mensagens: 321
Re: Arduino - Consumo em mA de um circuito
« Responder #14 em: 03 de Março de 2010, 16:58 »
e ja agr sabes se com o PIC18F252 é possivel fazer isso?

Cumps