Advertisement
hiagophp

Acs712

Nov 22nd, 2022
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | Source Code | 0 0
  1. int pino_sensor = 36;
  2. int menor_valor;
  3. int valor_lido;
  4. int menor_valor_acumulado = 0;
  5. int ZERO_SENSOR = 0;
  6. float corrente_pico;
  7. float corrente_eficaz;
  8. double maior_valor=0;
  9. double corrente_valor=0;
  10.  
  11. void setup() {
  12. Serial.begin(9600);
  13. pinMode(pino_sensor,INPUT);
  14. delay(3000);
  15. //Fazer o AUTO-ZERO do sensor
  16. Serial.println("Fazendo o Auto ZERO do Sensor...");
  17.  
  18. menor_valor = 4095;
  19.  
  20. for(int i = 0; i < 10000 ; i++){
  21. valor_lido = analogRead(pino_sensor);
  22. if(valor_lido < menor_valor){
  23. menor_valor = valor_lido;
  24. }
  25. delayMicroseconds(1);
  26. }
  27. ZERO_SENSOR = menor_valor;
  28. Serial.print("Zero do Sensor:");
  29. Serial.println(ZERO_SENSOR);
  30. delay(3000);
  31.  
  32.  
  33. }
  34.  
  35.  
  36. void loop() {
  37.  
  38. //Zerar valores
  39. menor_valor = 4095;
  40.  
  41. for(int i = 0; i < 1600 ; i++){
  42. valor_lido = analogRead(pino_sensor);
  43. if(valor_lido < menor_valor){
  44. menor_valor = valor_lido;
  45. }
  46. delayMicroseconds(10);
  47. }
  48.  
  49.  
  50. Serial.print("Menor Valor:");
  51. Serial.println(menor_valor);
  52.  
  53. //Transformar o maior valor em corrente de pico
  54. corrente_pico = ZERO_SENSOR - menor_valor; // Como o ZERO do sensor é 2,5 V, é preciso remover este OFFSET. Na leitura Analógica do ESp32 com este sensor, vale 2800 (igual a 2,5 V).
  55. corrente_pico = corrente_pico*0.805; // A resolução mínima de leitura para o ESp32 é de 0.8 mV por divisão. Isso transforma a leitura analógica em valor de tensão em [mV}
  56. corrente_pico = corrente_pico/185; // COnverter o valor de tensão para corrente de acordo com o modelo do sensor. No meu caso, esta sensibilidade vale 185mV/A
  57. // O modelo dele é ACS712-05B. Logo, precisamos dividir o valor encontrado por 185 para realizar esta conversão
  58.  
  59. Serial.print("Corrente de Pico:");
  60. Serial.print(corrente_pico);
  61. Serial.print(" A");
  62. Serial.print(" --- ");
  63. Serial.print(corrente_pico*1000);
  64. Serial.println(" mA");
  65.  
  66.  
  67. //Converter para corrente eficaz
  68. corrente_eficaz = corrente_pico/1.4;
  69. Serial.print("Corrente Eficaz:");
  70. Serial.print(corrente_eficaz);
  71. Serial.print(" A");
  72. Serial.print(" --- ");
  73. Serial.print(corrente_eficaz*1000);
  74. Serial.println(" mA");
  75.  
  76. delay(5000);
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement