Voltmetro - mcworkshop

MC   WORKSHOP
Vai ai contenuti

Menu principale:

Voltmetro

Questo voltmetro è stato realizzato con Arduino Uno R3 compatibile, un display LCD I2C, e un partitore di tensione. Può misurare tensioni comprese tra 0 e 20 Volt. In realtà potremmo applicare tensioni molto più alte in ingresso, ma per le nostre necessità, questo fondo scala, è sufficiente. Il partitore è costituito da due resistori; uno da 10K e l'altro da 100K. Il positivo della tensione che si vuole misurare va applicato al resistore da 100K. Non invertite le polarità!
This voltmeter was made with Arduino Uno R3 compatible, an I2C LCD display, and a voltage divider. It can measure voltages between 0 and 20 Volts. In reality we could apply much higher voltages at the entrance, but for our needs, this full scale is sufficient. The divider consists of two resistors; one from 10K and the other from 100K. The positive voltage to be measured must be applied to the 100K resistor. Do not reverse the polarities!

clic to enlarge
Tensione applicatatensione in arrivo sul pin A0corrente nel partitore
30V2,7V0,26mA
25V2,25V
20V1,8V0,17mA
12V1V
5V0,450,03mA
Se il partitore fosse costruito con i valori dei resistori da 220 Ohm e 470 Ohm avremmo applicando 15,7 Volt all'ingresso 5,0 Volt sul pin A0 e una corrente di 23mA.
If the divider was built with the values of 220 Ohm and 470 Ohm resistors we would have applied 15.7 Volts to the 5.0 Volt input on pin A0 and a current of 23mA.

Per il collegamento con LCD:
VCC verso 5V
GND verso GND
SCL verso SCL
SDA verso SDA

For connection with LCD:
VCC to 5V
GND to GND
SCL to SCL
SDA to SDA
Sketch

//voltmetro con LCD
//mcworkshop.it
//ottobre 2019
//This example code is in the public domain.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
float analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; //(100000 Ohm)Partitore di tensione
float R2 = 10000.0; //(10000 Ohm)Partitore di tensione
float value = 0;
void setup() {
 pinMode(analogInput, INPUT);
 lcd.init();
 lcd.begin(16, 2);
 lcd.backlight();
 Serial.begin(9600);
}
void loop() {
 value = analogRead(analogInput);
 vout = (value * 5.0) / 1024.0;
 vin = vout / (R2 / (R1 + R2));
 if (vin < 0.09)
 {
   vin = 0.00;
 }
 lcd.setCursor(0, 0);
 lcd.print ("   ");
 lcd.print (vin);
 lcd.print (" Volt   ");
 Serial.println (vin);
 if (vin >= 20) {
   lcd.setCursor(0, 1);
   lcd.print (" Tensione alta!");
 }
 else {
   lcd.setCursor(0, 1);
   lcd.print ("                ");
 }
 delay (500);
}
 
Copyright 2015. All rights reserved.
Torna ai contenuti | Torna al menu