Sursa de tensiune liniară (bazat pe LM317) - cu transformator TS 70/16 (16.6 V / 2 A) si afisor de tensiune (10) - Finalizat

Ca urmare a unui incident, sursa mea de tensiune liniara a avut nevoie de o reparație, astfel am decis să-i montez senzorul de tensiune și curent INA219 pe care l-am testat într-un mini proiect din octombrie. Tensiunea afișată este pentru al doilea rând de conectori (-/+) de la stânga la dreapta(vezi în imaginea de mai jos). Primi doi conectori (-/+) (tot de la stânga la dreapta) îmi dau 9 V, următorii doi 0 - 12 V, apoi iar 9 V și ultimii 0 - 18 V.
Codul sursă adaptat pentru un afișor 16x2:
#include "Wire.h"
// include the library code:
#include "LiquidCrystal.h"
#include "Adafruit_INA219.h"

Adafruit_INA219 ina219;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#if defined(ARDUINO_ARCH_SAMD)
// for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
   #define Serial SerialUSB
#endif

void setup(void) 
{
  #ifndef ESP8266
    while (!Serial);     // will pause Zero, Leonardo, etc until serial console opens
  #endif
  uint32_t currentFrequency;
    
  Serial.begin(9600);
  Serial.println("Hello!");
   // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Voltmetru");
  
  // Initialize the INA219.
  // By default the initialization will use the largest range (32V, 2A).  However
  // you can call a setCalibration function to change this range (see comments).
  ina219.begin();
  // To use a slightly lower 32V, 1A range (higher precision on amps):
  ina219.setCalibration_32V_1A();
  // Or to use a lower 16V, 400mA range (higher precision on volts and amps):
  //ina219.setCalibration_16V_400mA();

  lcd.print("Measuring voltage and current with INA219 ...");
}

void loop(void) 
{
  String lcd_buffer;
  float shuntvoltage = 0.0f;
  float busvoltage = 0.0f;
  float current_mA = 0.0f;
  float current_A = 0.0f;
  float power = 0.0f;
  
  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  current_A = ina219.getCurrent_mA()/1000.0;
  power = busvoltage * (current_mA/1000.0); // Calculate the Power
  
  lcd.setCursor(0, 0);
  lcd.print("Volts:");
  lcd.print(busvoltage,1); 
  lcd.print("V      ");
  
  lcd.setCursor(0, 1);
  lcd.print("C:");
  lcd.print(current_A,1); 
  lcd.print("A");
  lcd.print(" P:");
  lcd.print(power,1); 
  lcd.print("W  ");

  delay(1000);
}
Merge brici ! Weekend plăcut și Sărbători fericite !