Você está na página 1de 4

Arduino como multímetro (3)

A principios del año pasado, escribí 2 artículos sobre el uso de Arduino como
multímetro del panel: en Arduino como multímetro presentamos más cálculos, y
en Arduino como multímetro (2) también pusimos experimentos, incluidos bocetos.
Reanudamos las pruebas porque recibimos un mensaje de que aparecen errores en
la pantalla ...
De la gran manera que la conexión de Arduino a un alimentador se muestra en la
siguiente figura:
y la conexión modular entre módulos es:
El módulo tiene el esquema:

Conectándolo, lo dejé en el artículo original, cuando comencé las pruebas de


Arduino, ves Arduino y una pantalla LCD clásica (16 caracteres y 2 filas)

El boceto es el que se presenta en el último artículo.

/*
LiquidCrystal Library
The circuit
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

Library originally added 18 Apr 2008


by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe
This example code is in the public domain.

http://www.tehnic.go.ro
http://www.niqro.3x.ro
http://nicuflorica.blogspot.ro
amper & voltmeter by niq_ro, 02.2013, Craiova, Romania
vers. 1.3 - see http://nicuflorica.blogspot.ro/2013/02/arduino-ca-multimetru-2.html
*/
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int Pintensiune = A3; // divizorul rezistiv pentru tensiune e legat la intrarea A3


int Pincurent = A5; // rezistenta inseriata este conectata la A5

void setup() {

analogReference(INTERNAL); // punem referinta interna de 1,1V;

// set up the LCD's number of columns and rows:


lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("www.tehnic.go.ro");
lcd.setCursor(0, 1);
lcd.print("creat de niq_ro");
delay(2500);
lcd.clear();

lcd.print("indicator panou");
lcd.setCursor(0, 1);
lcd.print("tensiune-curent");
delay (2500);
lcd.clear();

lcd.print(" sketch ver.2.1");


lcd.setCursor(0, 1);
lcd.print("Umax=30V&Imax=5A");
delay (2500);
lcd.clear();

void loop() {
float sumatens =0;
float sumacurent = 0;

for (int i=1; i <= 20; i++){

// citire valoare pe intrarea analogica


float tensiune = analogRead(Pintensiune);
tensiune = 27.27 * 1.1 * tensiune / 1023.0 ;
sumatens = sumatens + tensiune;

float curent = analogRead(Pincurent);


curent = 1.1 / 0.22 * curent / 1023.0 ;
sumacurent = sumacurent + curent;
delay (20);
}

float tensiune = sumatens / 20.0 ;


float curent = sumacurent /20.0 ;

float putere = tensiune * curent ;


float rezistenta = tensiune / curent;

// partea de afisare
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(tensiune);
lcd.print(" V");

lcd.setCursor(9, 0);
lcd.print(curent);
lcd.print(" A");

if (curent > 0.01)


{
// calculeaza, apoi afiseaza puterea si curentul
lcd.setCursor(0, 1);
lcd.print(putere);
lcd.print(" W");

lcd.setCursor(8, 1);
lcd.print(rezistenta);
lcd.print(" ");
lcd.write(0b11110100);;

}
else
{
// daca curentul e mai mic de 10mA considera ca sursa e in gol
if (tensiune < 0.1)
{
// scurtcircuit
lcd.setCursor(1, 1);
lcd.print("sursa oprita ");
}
else
if (tensiune < 0.8)
{
// scurtcircuit
lcd.setCursor(1, 1);
lcd.print(" scurtcircuit ");
}
else
//
lcd.setCursor(1, 1);
lcd.print("sursa e in gol ");
}
// se odihneste si el 1,5 secunde
delay(1500);
}

Você também pode gostar