joi, 27 martie 2014

Sursa de tensiune in comutatie cu LM2577

   Deoarece senzorii si afisajele care se conecteaza la o placa Arduino pot avea un consum ce depaseste "puterea" disipata pe regulatorul intern (LM1117 la Arduno Uno R3) si pot aparea defecte (cum am patit eu, vedeti articolul Utilizare placa Arduino cu interfata USB defecta), am hotarat sa folosesc un alimentator stabilizat separat pentru alimentarea acelor consumatori externi, iar placa Arduino doar sa dea comenzi si eventual sa alimenteze mici consumatori (LED-uri, de exemplu).
   Varianta uzuala pentru un consum de pana in 1A este cea in care se foloseste un stabilizator liniar de tensiune fixa LM7805 pe care l-am prezentat in articolul 78xx, dar merge foarte bine si un un stabilizator liniar de tensiune reglabila gen LM317 pe care l-am prezentat in mai multe articole, ultimul fiind Stabilizator reglabil de tensiune (1,2..12V) cu LM317T.
   O alta varianta este un alimentator in comutatie, gasindu-se pe ebay un modul care foloseste integratul LM2577:
   Caracterisiticile principale ale modulului sunt:
- tensiune de intrare: 3,5..35Vcc
- tensiune stabilizata la iesire: 4..35V (reglabila) 
- curent maxim: 3A (necesita radiator) ca si in cazul cand puterea deisipata e mai mare de 15W);
- randament: >92%
- frecventa de comutatie: 50kHz
- protectie la scurtcircuit: prin limitare de curent
- precizia de stabilizare a tensiunii la iesire: ±0.5%
- dimensiuni cablaj:48x23mm
   Pentru a realiza un alimentator se foloseste un transformator coborator, o punte redresaore si un condensator de filtraj. Daca se doreste modificarea tensiune de iesire, se poate inlocui semiregalbilul cu un potentiometru pe panou.
   Schema tipica de aplicatie este cea din fisa de catalog:
   Pe un site polonez am gasit o schema asemanatoare cu cea folosita la modulul prezentat:
iar pe altul taiwanez:
   O alta schema pentru un alimentator reglabil este pe un alt site:
   Mi-a sosit si mie un asemenea modul, pe care vreau sa-l integraz intr-un alimentator:
  

marți, 25 martie 2014

Utilizare placa Arduino cu interfata USB defecta

   In timpul testelor la un indicator date mediu pentru masina (temperatura exterioara citita de un senzor DS18B20, temperatura si umiditatea interioara citite de un senzor DHT11, tensiunea bateriei masurata cu un divizor rezistiv si afisare date pe un ecran LCD alfanumeric cu 16 coloane si 2 randuri) cand am alimentat placa Arduino cu 12V dintr-o sursa stabilizata, datorita consumului mare al perifericelor si a diferentei mari de tensiune (tensiune de intrare si cea stabilizata de 5V pentru alimentarea microcontrolerului ATmega328P-PU si a interfetei USB), am depasit puterea suportata de stabilizatorul de pe placa Arduino.
   Din pacate, incercam sa fac un filmulet de prezentare si nu am mai verificat temperatura stabilizatorului de tensiune, asa ca de pe placa Arduino Uno R2 am "prajit" interfata USB realizata cu ATmega8u2 si microcontoler-ul ATmega328P-PU.. nerealizand problema, am incercat sa mai fac un film cu alta placa Arduino Uno (de data asta R3), dar am reusit sa fac acelasi lucru si la asta, unde s-au "dus" interfata USB realizata cu ATmega16u2 si microcontoler-ul ATmega328P-PU.
   Solutia eleganta este inlocuirea microcontrolerului ATmega8u2 (sau ATmega16u2) si reprogramarea ca interfata USB, dupa cum e prezentat inclusiv pe site-ul Arduino in articolul Updating the Atmega8U2 and 16U2 on an Uno or Mega2560 using DFU, utile fiind si informatiile din discutia de pe forum-ul Arduino numita [Solved] Wipe out sketch from arduino the hard way - 8U2 firmware bug.
   Detaliat se prezinta pasii reprogramarii la Bring your dead Uno/Mega back to life! How to fix ATMEGAXXU2 issues.
   Respectivele microcontroler-e se gasesc in Romania la TME, cel putin acolo am gasit cautand pe net.
    Interfata USB folosita de mine este cu integratul CP2102 si am prezentat-o in articolul Arduino de casa cu interfata USB CP2102
   Schema de conectare este:
   Aceasta varianta a functionat la una din placi, cealalta are scurt in interfata USB cu ATmega16u2 si trebuie intai eliminat...
   Am facut si 2 filmulete:
   Deci, cand se folosesc mai multe periferice (afisaje, senzori, etc) trebuie folosit un stabilizator extern pentru 5V din care sa fie alimentati acestia...de exemplu cu LM7805 (vezi articolul 78xx) sau cu LM317 (vezi articolele LM317 si/sau Stabilizator reglabil de tensiune (1,2..12V) cu LM317T).
   Pentru a intelege mai bine partea de adaptare, puteti studia schemele placilor Arduino Uno:
Arduino Uno R1
Arduino Uno R2
- Arduino Uno R3

27.03.2014
   Ca exemplu, la placa Arduino Uno R3, conectarea interfetei USB cu CP2102 se poate face in 2 etape:
- eliminarea (dezlipirea) integratului/microcontrolerului ATmega16u2
- realizarea unor legaturi (strapuri) pe cablajul unde au fost pinii 8 cu 11, respectiv 9 cu 10, pentru a se aprinde LED-urile care indica comunicatia cu USB-ul 
- lipirea unor conductoare/fire: DTR de la modulul USB la fostul pin 13, TxD la fostul pin 9, RxD la fostul pin 8
- lipirea unor fire de la mufa USB de pe modul la mufa USB de la placa Arduino (la asta se poate renunta si se face comunicatia si alimentarea pe mufa modului): USB5V se leaga la fostul pin 31, GND la GND, D- la fostul pin 30, iar D- la fostul pin 29.

vineri, 21 martie 2014

Indicator date mediu pentru masina (2)

   In articolul anterior, prezentasem cum am de gand sa fac un indicator pentru temperatura exterioara (cu DS18B20), temperatura si umiditatea din masina cu DHT11 si masurarea tensiunii bateriei.
   Pe ecran, informatiile se prezinta asa:
   Schema exacta este:
   Are o mica modificare, in sensul ca rezistenta de 15k din prima schema am realizat-o din 2, una de 10k si una de 4k7.
   Am facut un film, numit indicator date mediu - masina in care am simulat toate situatiile, care am crezut eu ca pot exista, ca valori:
   Cand tensiunea de pe baterie este sub 10V, valoarea apare cu intermitenta.. la fel si la temepratura interioara cand temperatura e sub 00C apare un zero cu intermitenta.
   Fiind "baiat bun" postez si sketch-ul folosit la teste:
/*
original sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com
program original scris de mine (niq_ro) versiunea 1.0
..............................................................*/

#include <LiquidCrystal.h>
// folosesc libraria pentru afisaje LCD simple
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// indic modul de legare, vezi mai jos:
/*                                    -------------------
                                      |  LCD  | Arduino |
                                      -------------------
 LCD RS pin to digital pin 7          |  RS   |   D7    |
 LCD Enable pin to digital pin 6      |  E    |   D6    |
 LCD D4 pin to digital pin 5          |  D4   |   D5    |
 LCD D5 pin to digital pin 4          |  D5   |   D4    |
 LCD D6 pin to digital pin 3          |  D6   |   D3    |
 LCD D7 pin to digital pin 2          |  D7   |   D2    |
 LCD R/W pin to ground                |  R/W  |   GND   |
                                      -------------------
*/
// http://arduino.cc/en/Reference/LiquidCrystalCreateChar

byte grad[8] = {
  B01100,
  B10010,
  B10010,
  B01100,
  B00000,
  B00000,
  B00000,
};

// variables 

float R1, R2, R3; // rezsistors in voltage divisor
float k1; // adjustment for divisor
float u1, u11, u12; // for voltage

int ti; // temperature inside of car;

// data
int VPin = A0; // voltage pin
int DHTPin = A1; // data pin from DHT11
//int DSPin = 10; // 

// for DHT11 sensor
#include "DHT.h"
#define DHTPIN A1     // what pin we're connected to
#define DHTTYPE DHT11   // DHT 11 
DHT dht(DHTPIN, DHTTYPE);



#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 10 on the Arduino
#define ONE_WIRE_BUS 10
#define TEMPERATURE_PRECISION 9
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
// arrays to hold device addresses
DeviceAddress outsideThermometer;


void setup() {

R1 = 4.7; // R1 = 4k7
R2 = 10;  // R2 = 10k
R3 = 4.7; // R3 = 4k7
k1 = 1/1.033;


  lcd.createChar(0, grad);
    
  lcd.begin(16, 2); // set up the LCD's number of columns and rows: 
 
// initialing the DHT11 sensor;
dht.begin();

 lcd.clear(); // clear the screen
 lcd.setCursor(1, 0); // put cursor at colon 2 and row 0 = left/up
 lcd.print("indicator bord"); // print a text
 lcd.setCursor(2, 1); // put cursor at colon 0 and row 0 = left/down
 lcd.print("1.0 by niq_ro"); // print a text
 delay (2000);
 lcd.clear(); // clear the screen
 
// Start up the DS18B20 sensor
  sensors.begin();
// adress for ds sensor  
//   DeviceAddress outsideThermometer  = { 0x28, 0xAC, 0x7A, 0xD4, 0x04, 0x00, 0x00, 0x7E };
//  DeviceAddress outsideThermometer = { 0x28, 0xAC, 0x7A, 0xD4, 0x4, 0x0, 0x0, 0x7E };
// set the resolution to 9..12 bit
  sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);


} // END void setup




  
void loop(){
  
u1 = analogRead(VPin);
u11 = k1*5.0*u1/1023*(R1+R2+R3)/R1;
u12 = u11 + 0.05;
//u12=11.4; // for test
// u12=7.5;  //for test;

if (u12<10.0)
{
  lcd.setCursor(12, 0);
  lcd.print(u12,1);
  lcd.print("V");
  delay(500);
  lcd.setCursor(12, 0);
  lcd.print("    ");
  }  
else
{
  lcd.setCursor(11, 0);
  lcd.print(u12,1);
  lcd.print("V");
  delay(500);
}

// DHT11 part
 int h = dht.readHumidity();
 int ti = dht.readTemperature();

  lcd.setCursor(0, 1);
  lcd.print("int:");
//ti=0; // for test;
//ti=7;  // for test;
//ti=29;  // for test;
  if (ti<1) {
  lcd.setCursor(5, 1);
  lcd.print(" 0");
  lcd.write(byte(0));
  lcd.print("C");
  delay(500);
  lcd.setCursor(5, 1);
  lcd.print("     ");
  }
  else
  if (ti>=9) {
  lcd.setCursor(4, 1);
  lcd.print("+");
  lcd.print(ti);
  lcd.write(byte(0));
  lcd.print("C");
  }
  else
  //if (ti>=1 || ti<10)
  {
  lcd.setCursor(5, 1);
  lcd.print("+");
  lcd.print(ti);
  lcd.write(byte(0));
  lcd.print("C");
  }

  lcd.setCursor(11, 1);
  lcd.print(h);
  lcd.print("%um");

// 
 DeviceAddress outsideThermometer = { 0x28, 0xAC, 0x7A, 0xD4, 0x4, 0x0, 0x0, 0x7E };
 sensors.requestTemperatures();
 float te = sensors.getTempC(outsideThermometer);
// printTemperature(DeviceAddress outsideThermometer);
 delay(300);
//te=-24;
//te=-2;
//te=-0.4;
// te=0;
//te=0.3;
//te=5;
//te=17;
//te=17.6;


lcd.setCursor(0, 0);
lcd.print("ext:");


if (te<-10) {
 lcd.setCursor(4, 0);
 lcd.print(te,0);
lcd.write(byte(0));
lcd.print("C   ");
}
else
if (te>-10 || te<0) {
  lcd.setCursor(5, 0);
lcd.print(te,0);
lcd.write(byte(0));
lcd.print("C   ");
}

else
if (te=0) {
lcd.setCursor(5, 0);
lcd.print("=0");
lcd.write(byte(0));
lcd.print("C   ");
}

if (te>0) 
{
lcd.setCursor(5, 0);
lcd.print("+");
lcd.print(te,0);
lcd.write(byte(0));
lcd.print("C   ");
}

if (te>=10) {
lcd.setCursor(4, 0);
lcd.print("+");
lcd.print(te,0);
lcd.write(byte(0));
lcd.print("C   ");
}
}
   Pentru a functiona corect programiorul, trebuie sa aflati adresa unica a senzorului DS18B20, ruland un program cum e cel prezentat de mine in articolul Mai multi senzori de tip DS18B20 (sau MAX31820) in paralel
 
   Urmeaza transferarea proiectului pe un cablaj pentru a fi montat pe masina... schema de conectare la masina ar fi:
23.03.2014
   Am facut si mica modificare, rezultandu-mi:
24.03.2014
   Deoarece am reusit "performanta" de a strica 2 placi Arduino (partea de interfata USB + microcontroler ATmega328P-PU) din cauza consumului mare pe ramura de 5V, recomand utilizarea unui stabilizator extern pentru 5V...

miercuri, 19 martie 2014

Indicator date mediu pentru masina

   Cand ne aflam in masina, este util sa stim ce temperatura este afara, cat este tenmperatura si ce umiditate este in masina, tensiunea bateriei, asa ca m-am gandit sa vizualizez datele pe un afisaj LCD cu 16 coloane si 2 randuri, sub forma:
   Pentru exterior m-am gandit la un senzor DS18B20 in carcasa protejata, ceva de genul:
deoarece domeniul de masura este -55..+1250C, arhisuficient in zona noastra.
   Pentru interior, m-am gandit la senzorul DHT11, mai putin precis care masoara temperatura in domeniul 0..+500C, cu eroare de +20C, iar umiditate in domeniul 20..90%, cu eroare de +5%.
   Deoarece nu cred ca as putea sofa sau sta intr-o masina in care temperatura e sub zero grade, o sa pun sa apara cu intermitenta un simbol de temperatura scazuta, eventual o sa apelez la un alt senzor DS18B20, de exemplu.
   Pentru a masura tensiunea bateriei o sa folosesc un divizor rezistiv, care sa poata masura pana la cca. 20V (acoperitor pentru tensiunile de pe masina):
   Eu am prezentat senzorul de temperatura DS18B20 (si verisorul lui MAX31820) in mai multe articole:

   De asemenea, senzorul de temperatura si umiditate DHT11 l-am prezentat in mai multe articole, dar cel mai bine vedeti informatiile de la Ministatie meteo cu senzorul DHT11 si.. Arduino.
   Partea de voltmetru o gasiti in articolele:
   Pentru a fi montat pe masina, o sa fac trecerea pe un cablaj indpendent cu un microcontroler ATmega328P-PU programat ca Arduino sau voi folosi un Arduino Pro Mini, cum am prezentat in articolul Transferarea unui proiect Arduino pe un cablaj
sau 
20.3.2014
   O schema de conectare ar putea fi:

   Dupa cum se observa, pentru primele teste o sa folosesc:
- o placa de dezvoltare Arduino;
- un regulator de tensiune pentru 5V,pentru alimentarea placii Arduino, afisajului si senzorilor;
- un senzor de temperatura DS18B20, pentru exterior;
- un senzor DHT11 pentru temperatura si umiditatea din interior;
- un divizorul rezistiv, pentru a putea masura tensiunea de pe baterie

21.03.2014
   Am realizat ca nu am nevoie de stabilizator, ca are placa Arduino, asa ca schema se simplifica:

duminică, 16 martie 2014

Controlul unor fisiere din calculator cu Arduino

   Cautand informatii pentru a putea controla fisiere din calculator cu Arduino, am gasit numele unui program numit Gobetwino... 
   Am dat de niste articole, inclusiv la Arduino pe site, deci va recomand studierea urmatoarelor:
Using Gobetwino to Control Windows through Arduino
Gobetwino: Arduino talking to Excel
Fun with Gobetwino
Get real-time data directly into your DNN portal!
- manual de utilizare Gobetwino 0.5
   Pentru moment ma intereseaza deschiderea unor filmulete cand apas niste butoane, asa pentru asta am facut teste, dupa cum se vede in filmuletele:
Gobetwino & Arduino (1)
Gobetwino & Arduino (2)
Gobetwino & Arduino (3)
   Prima data trebuie sa vedem pe ce port se conecteaza placa Arduino (asta daca mutam Arduino pe mai multe calculatoate, cum fac eu):
   Deschidem programul Gobetwino manual sau automat (pus shortcut in Startup):
   Punem calea pentru comenzi, in cazul meu doua (FILM si FILM2):
   Putem modifica si portul folosit de program (trebuie sa fie acelasi cu cel folosit de Arduino)
   Am apasat pe butonul (tasta) care deschide cel de-al doilea film:
apoi pe butonul (tasta) care deschide primul film:
iar pe fereastra programului am comenzile primite si ce a executat el...
   Cele 2 butoane fara retinere (taste) sunt conectate la D2, respectiv D3 catre masa...
   Sketch-ul folosit de mine:
/*
 http://electronics.divinechildhighschool.org/Home/Arduino-Lessons/using-gobetwino-to-control-windows-through-arduino
 http://nicuflorica.blogspot.ro/2014/03/controlul-unor-fisiere-din-calculator.html 

 Reads a digital input on pin 2 or 3, prints the result to the serial monitor to control Gobetwino 
 This example code is in the public domain.
 */

int pushButton = 2;  // a pushbutton is attached digital pin2
int pushButton2 = 3; // a pushbutton is attached digital pin3

// the setup routine runs once when you press reset:
void setup() {
 // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
// make the pushbutton's pins an inputs:
  pinMode(pushButton, INPUT);
  pinMode(pushButton2, INPUT);

// pushbuttons are put in HIGH sofware  
digitalWrite(pushButton, HIGH);
digitalWrite(pushButton2, HIGH);
}

// the loop routine runs over and over again forever:
void loop() {
// pushbuttons are put in HIGH sofware  
digitalWrite(pushButton, HIGH);
digitalWrite(pushButton2, HIGH);
  // read the input pin:
  if (digitalRead(pushButton) == LOW)  
  {
  Serial.print("#S|FILM|[");
   Serial.println("]#");
   delay(10000);
//  Serial.println("---------------");
  }

if (digitalRead(pushButton2) == LOW)  
  {
  Serial.print("#S|FILM2|[");
   Serial.println("]#");
   delay(10000);
//  Serial.println("---------------");
  }

  delay(1000);        // delay in between reads for stability
}

sâmbătă, 15 martie 2014

Arduino ca multimetru (3)

   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:
iar modul de conectare intre module este:
   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
   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.