Dupa ce m-am "jucat" un pic cu un convertor de semnal dreptunghiular in tensiune continua si am fost multumit de rezultate, am zis sa continui testele si sa realizez o sursa de tensiune controlata de Arduino, dupa cum e prezentat in articolul A Powerful Little Arduino Programmable 10V Supply in care se foloseste un integrat specializat MCP4725 de conversie din digital in analogic (DAC) pe 12 biti:
In articolul Convertisseur PWM / Tension 001 este prezentat o sursa controlata cu semnal dreptunghiular cu factor de umplere variabil (PWM):
Schema mea de test, in care folosesc un integrat Beta M324 din 1988 iarna, este
iar consumator a fost un bec cu leduri de 12V si 3W, care se deschide doar la tensiune de peste 7V...
Am facut 2 filmulete, in care se vede cresterea si scaderea lenta a tensiunii la iesire:
- sursa de tensiune controlata de Arduino in care folosit sketch-ul fade_pwm_control3a.ino cu variere factor ce umplere de la 0 la 255 din total 255 trepte cu pas de 5 trepte:
La inceputul anului trecut, am scris 2 article despre folosirea lui Arduino ca multimetru de panou: in Arduino ca multimetru am prezentat mai mult calcule, iar in Arduino ca multimetru (2) am pus si experimente, inclusiv sketch-uri.. 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:
/* 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.rohttp://www.niqro.3x.rohttp://nicuflorica.blogspot.roamper & voltmeter by niq_ro, 02.2013, Craiova, Romaniavers. 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 pinsLiquidCrystal 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 A5voidsetup() {
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();
}
voidloop() {
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 golif (tensiune < 0.1)
{
// scurtcircuit
lcd.setCursor(1, 1);
lcd.print("sursa oprita ");
}
elseif (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 secundedelay(1500);
}
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.201427.04.2021 Am desenat toata corectat schema:
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.