test — Arduino Uno simulation

An interactive Arduino Uno circuit simulation you can run free in your browser on Velxio, by knlkmr2004.

Components

Sketch code

/*
  ============================================================
        EXPERIMENTAL ACTIVE BRIDGE BATTERY CHARGER
        Arduino UNO + 2 x IR2110 + 4 x N-MOSFET
        + ACS712 + 20x4 I2C LCD + AC RELAY
  ============================================================

  MOSFET / IR2110 CONTROL
  ------------------------

  IR2110 #1
      HIN -> D9  -> Q1
      LIN -> D10 -> Q3

  IR2110 #2
      HIN -> D11 -> Q2
      LIN -> D3  -> Q4

  SENSOR INPUTS
  -------------
      D2  = Zero-cross detector
      A0  = Battery voltage
      A1  = ACS712 current
      D4  = Fault input, LOW = fault

  RELAY
  -----
      D5 = 5V relay module input

      Relay ON  = transformer primary connected
      Relay OFF = transformer primary disconnected

  ASSUMPTION
  ----------
      Relay module is ACTIVE-LOW.
      Change RELAY_ACTIVE_LOW to false if yours is active-HIGH.

  BATTERY
  -------
      Target = 14.40 V
      Stop   = 14.45 V

  CURRENT
  -------
      Normal target = 0.30 A
      Hard shutdown = 0.50 A

  PWM
  ---
      20 kHz Timer1 PWM timing

  IMPORTANT
  ----------
  This is experimental power-electronics firmware.
  Verify the IR2110 gate outputs with the power stage
  disconnected before applying battery/transformer power.
*/


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);


// ============================================================
// PIN DEFINITIONS
// ============================================================

#define Q1_PIN  9
#define Q3_PIN  10

#define Q2_PIN  11
#define Q4_PIN  3

#define ZCD_PIN 2

#define BAT_PIN A0
#define ACS_PIN A1

#define FAULT_PIN 4

#define RELAY_PIN 5


// ============================================================
// RELAY CONFIGURATION
// ============================================================

#define RELAY_ACTIVE_LOW true

bool relayState = false;


// ============================================================
// BATTERY SETTINGS
// ============================================================

const float BAT_TARGET = 14.40;
const float BAT_STOP   = 14.45;


// ============================================================
// CHARGE CURRENT SETTINGS
// ============================================================

const float CHARGE_CURRENT = 0.30;
const float HARD_CURRENT   = 0.50;


// ============================================================
// ACS712-30A
// ============================================================

const float ACS_SENSITIVITY = 0.066;

float acsZero = 512.0;


// ============================================================
// BATTERY VOLTAGE DIVIDER
//
// 30k TOP
// 10k BOTTOM
//
// Ratio = 4
// ============================================================

const float R_TOP    = 30000.0;
const float R_BOTTOM = 10000.0;

const float ADC_REFERENCE = 5.0;


// ============================================================
// PWM SETTINGS
//
// Arduino UNO:
//
// 16 MHz / 800 = 20 kHz
//
// TOP = 799
// =======================

More projects by knlkmr2004