Am reluat testele deoarece am primit un mesaj ca apar erori pe ecran...
In mare modul de conectare al lui Arduino la la un alimentator este prezentat in figura urmatoare:
Modulul are schema:
Conectarea am lasat-o ca in articolul original, cand am inceput testele cu Arduino, vedeti Arduino si un afisaj LCD clasic (16 caractere si 2 randuri)
Sketch-ul este cel prezentat in ultimul articol
/*
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);
}
Practic, montajul arata asa:Am facut si 3 filmulete:
- Arduino ca multimetru de panou pentru un alimentator (5)
In ultimul filmulet apare si un modul voltmetru de panou pe care l-am achizitionat de pe ebay, pentru a vedea cum se comporta si pare ok...
Descriere:
1. domeniul de masura: 0-100V (fir alb sau galben)
2. afisaj LED cu 7 segmente, cifre de 14mm
3. consum propriu redus
4. masuratori la fiecare: 500ms (0,5s)
5. montare usoara pe panou
6. culoare LED-uri: rosie
7.tensiune alimentare: 3..30V (fir rosu la +, fir negru la masa)
8. temperatura de functionare: -10℃..+65 ℃.
18.03.2014 27.04.2021
Amdesenat toata corectat schema:
1. domeniul de masura: 0-100V (fir alb sau galben)
2. afisaj LED cu 7 segmente, cifre de 14mm
3. consum propriu redus
4. masuratori la fiecare: 500ms (0,5s)
5. montare usoara pe panou
6. culoare LED-uri: rosie
7.tensiune alimentare: 3..30V (fir rosu la +, fir negru la masa)
8. temperatura de functionare: -10℃..+65 ℃.
Am
PS: Daca curentul indicat este mereu zero, verificati cu un aparat de masura pe voltmetru, ca avand borna neagra la GND si cea rosie la A5 tensiunea este pozitiva., daca nu este, inversati bornele de la ramura negativa, astfel incat pe sunt sa fie o tensiune pozitiva fata de GND-ul placii Arduino.
Am refacut monatjul dupa varianta de mai sus si functioneaza. Va multumesc pentru ajutor. O seara frumoasa
RăspundețiȘtergereMa bucur ca s-a rezolvat.. cu ocazia asta am depistat si eu eroarea.. asa ca multumesc si eu
ȘtergereDe unde se obtine constanta 27.27?
RăspundețiȘtergeree raportul de transformare al divizorului rezistiv pe care l-am reglat eu... vezi articolul de la ( http://nicuflorica.blogspot.ro/2013/02/arduino-ca-multimetru-2.html ).. in mare e valoarea tensiunii maxime masurate impartita la tensiunea maxim masurata (30V am ales eu), in cazul de fata 1,1V (ca e folosita referinta interna)...
ȘtergereMa ajutaţi şi pe mine va rog? Pot face ca datele sa fie afişare pe un monitor de PC?. Şi dacă se poate sa ma ajutaţi cu un cod sau ceva indrunari as fi foarte recunoscator.
RăspundețiȘtergereazi iti pot spune ca folosesti comanda Serial.print in loc de lcd.print... cauta pe net ca e multa informatie cu afisarea pe ecranul de monitorizare seriala...
Ștergereiti pui aici sketch-ul cu afisarea informatiilor pe ecranul de monitorizare seriala al calculatorului:
Ștergere/*
http://nicuflorica.blogspot.ro/2014/03/arduino-ca-multimetru-3.html
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
*/
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;
Serial.begin(9600);
// Print a message
Serial.println("http://www.tehnic.go.ro & http://nicuflorica.blogspot.ro creat de niq_ro");
delay(2000);
Serial.println("********************");
Serial.println("indicator panou tensiune-curent");
delay (2000);
Serial.println("********************");
Serial.println(" sketch ver.2.1");
Serial.println("Umax=30V&Imax=5A");
delay (2000);
}
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
Serial.println("********************");
Serial.print(tensiune);
Serial.println(" V");
Serial.print(curent);
Serial.println(" A");
if (curent > 0.01)
{
// calculeaza, apoi afiseaza puterea si curentul
Serial.print(putere);
Serial.println(" W");
Serial.print(rezistenta);
Serial.println(" ohms");
}
else
{
// daca curentul e mai mic de 10mA considera ca sursa e in gol
if (tensiune < 0.1)
{
// scurtcircuit
Serial.println("sursa oprita ");
}
else
if (tensiune < 0.8)
{
// scurtcircuit
Serial.println(" scurtcircuit ");
}
else
//
Serial.println("sursa e in gol ");
}
// se odihneste si el 1,5 secunde
delay(1500);
}
Am realizat si eu acest montaj insa pe partea te curent imi citeste numai valori de 0. Daca masor caderea de tensiune pe sunt, variaza in functie de consum insa arduino afiseaza doar 0. Suntul l-am pastrat de 0.1 Ohmi. Este suntul pe care il folosesc deja si pentru partea de protectie si limitare curent al sursei.
RăspundețiȘtergeresuntul este montat ca in schema pe ramura negativa? verifica cu atentie ce ai tu si ce am pus eu in articol...
ȘtergereDa, suntul este pus pe ramura negativa intre GND IN si GND OUT al sursei. Pin A5 de la arduino este conectat la GND IN inainte de sunt.
Ștergerepune schema, poza.. ceva e gresit la tine...
RăspundețiȘtergereAsta este schema https://s12.postimg.org/yy7bzhxgd/Capture.png. Ce este marcat cu albastru sunt suntul si intrarile arduino.
RăspundețiȘtergereda, e ok schema... daca alimentezi separat Arduino e cam dubios... pune fir direct de la AREF la A5 si vezi daca arata maximul, adica 5A... daca nu, muta pe A4, de exemplu si schimba si in sketch..
ȘtergereBuna seara, puteti sa-mi dati o adresa de e-mail pentru o discutie privata?
RăspundețiȘtergerenu prea imi place sa dau o adresa care e pusa pe blog... in coltul de jos din dreapta apre ceva cu "despre mine".. in fine, nicu.florica arond gmail.com
Ștergerear fi misto daca sar implementa si o protectie la scurt cu un releu sau mosfet care sa decupleze isirea
RăspundețiȘtergereacum doar anunta ca e scurt... crezi ca e greu de pus si ce zici tu? dar trebuie sa testezi si tu, si o sa vezi ca e simplu de implementat.. doar sa incerc..
RăspundețiȘtergerenu ma pricep absolut deloc la programare am un arduino nano cred ca ESTE OK
RăspundețiȘtergerehttp://www.instructables.com/id/Short-circuit-protection-for-almost-any-power-supp/ am gasit me net schema acesta ai realiza cumva stiti daca functioneaza?.multumesc
Ștergereo sa ma uit cand am timp, dar cred ca nu ai inteles ce am raspuns anterior... cum e facut programul Arduino acum pe ecran apare text cand e scurtcircuit, deci detecteaza asta, doar ar mai trebui un led, daca chiar se doreste...
Ștergereda am observat ca scrie pe lcd dar trebuie facut sa actioneze si fizic asupra esiri din sursa
RăspundețiȘtergereda, nu e greu de facut... o sa fac si asta, ca vad ca e ceruta, nu numai de tine ;)
ȘtergereHi i uploaded i2c script with liqliq crystal library and now my arduino is not accepting any nne code it gives me error. Can you help me out?? Thanks in advance
RăspundețiȘtergeresee good library at https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
ȘtergereIn this schematic LCD is in paralel mode not i2c.. I not understand what you want to do... I usual use this libraries: https://github.com/tehniq3/used_library
RăspundețiȘtergereHi I want to ask that wiwi library did you use in last picture ? 8,9,10,11,12,13
RăspundețiȘtergereit is use default library from Arduino IDE... I thing is usefull to study little bit Arduino before ask stupid question....
Ștergere