Coolquest, Inc. Home Products Support About Contact
cbold_logo_gif C++BOLD Example Design: IROD cbold_logo_gif

Design Home <<  File View  >> Class View Output (partial) Parts Library Examples Home

 

// THIS FILE IS IN THE PUBLIC DOMAIN.
// IT IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
#ifndef _ShuntOVPH_
#define _ShuntOVPH_
 
#include "ad1580.h"
#include "diodes.h"
 
// Overvoltage Protection Circuits
// Voltage reference + op-amp turn on Darlington power transistor to shunt current to ground.
// Low-threshold Schottky diode shunts negative voltages to ground.
 
// The user sets the overvoltage threshold by changing the value of Radjust via a call to SetTypeName().
// Radjust's value is Radjust = Rh/( Vthresh/Vref - 1 ) where:
//   Rh      = 10.2  kohm
//   Vref    = 1.225 V
//   Vthresh = user's desired threshold voltage--must be between 1.9V and 5.9V
 
// See ShuntOVPResistorValues.xls for a table of Rl values.
 
class CM_OVP_Base : public TModule {  // Helper module--not intended for general use
protected:
  CM_OVP_Base(){};                    // only descendants of this class can be instantiated by user
public:
  port Vp;       // voltage to be protected
  port GND;
 
  CP_AD1580     Reference;  // 1.225V voltage reference
  CP_R4_7K      Rb;         // bias resistor for reference
  CP_R10_2KP1   Rh;         // half of resistor divider, tied to Vp
  CP_RCHIP805   Radjust;    // other half of resistor divider (also known as Rl) -- user must specify actual value using SetTypeName()
  CP_R1K        Ro;         // resistor from output to ground, keeps SCR off until Vp is at least 1.8V
  CP_C2_2NF     Co;         // capacitor from output to ground, in case of turn-on transient on amplifier output
  CP_AD8517ART  Amp;        // low-voltage rail-to-rail op-amp
  CP_MBRS130LT3 Dprotect;   // low-threshold Schottky diode to clamp negative voltages on Vp
 
 
public:
  virtual void Register() {
    reg( Vp );
    reg( GND );
    reg( Reference );
    reg( Rb );
    reg( Rh );
    reg( Radjust );
    reg( Ro );
    reg( Co );
    reg( Amp );
    reg( Dprotect );
  }
 
  virtual void Connect() {
    Vp    << Amp.VPP;                      // power
    GND   << Reference.VNN << Amp.VNN;
    "/NC" << Reference.NC;
 
    Vp    << Dprotect.CATHODE;             // negative voltage protection
    GND   << Dprotect.ANODE;
 
    Vp ^ Rh ^ "IN_P" << Amp.IN_P ^ Radjust ^ GND;     // divided Vp to Amp + input
    "V_REF"          << Amp.IN_N  << Reference.VPP ^ Rb ^ Vp;  // Amp - input
 
    Amp.OUT ^ Ro ^ GND;    // try to avoid false triggers of SCR, e.g., during a valid turn-on ramp
    Amp.OUT ^ Co ^ GND;
  }
};
 
class CM_ShuntOVP_8A : public CM_OVP_Base {
public:
 
// ***** member ports ***** //
 
// ***** member modules and parts ***** //
  CP_MCR12DSNT4  SCR;
 
  virtual void Register() {
    CM_OVP_Base::Register();
 
    reg( SCR );
  }
 
  virtual void Connect() {
    CM_OVP_Base::Connect();
 
// current flows from anode to cathode after trigger current is applied to gate
    "GATE" << SCR.GATE    << Amp.OUT;
    Vp     << SCR.ANODE;
    GND    << SCR.CATHODE;
  }
};
 
 
 
class CM_ShuntOVP_16A : public CM_OVP_Base {
public:
 
// ***** member ports ***** //
 
// ***** member modules and parts ***** //
  CP_MCR12DSNT4  SCR0;
  CP_MCR12DSNT4  SCR1;
 
  virtual void Register() {
    CM_OVP_Base::Register();
 
    reg( SCR0 );
    reg( SCR1 );
  }
 
  virtual void Connect() {
    CM_OVP_Base::Connect();
 
// current flows from anode to cathode after trigger current is applied to gate
    "GATE" << SCR0.GATE    << SCR1.GATE     << Amp.OUT;
    Vp     << SCR0.ANODE   << SCR1.ANODE;
    GND    << SCR0.CATHODE << SCR1.CATHODE;
  }
};
 
 
class CM_ShuntOVP_24A : public CM_OVP_Base {
public:
 
// ***** member ports ***** //
 
// ***** member modules and parts ***** //
  CP_MCR12DSNT4  SCR0;
  CP_MCR12DSNT4  SCR1;
  CP_MCR12DSNT4  SCR2;
 
  virtual void Register() {
    CM_OVP_Base::Register();
 
    reg( SCR0 );
    reg( SCR1 );
    reg( SCR2 );
  }
 
  virtual void Connect() {
    CM_OVP_Base::Connect();
 
// current flows from anode to cathode after trigger current is applied to gate
    "GATE" << SCR0.GATE    << SCR1.GATE     << SCR2.GATE     << Amp.OUT;
    Vp     << SCR0.ANODE   << SCR1.ANODE    << SCR2.ANODE;
    GND    << SCR0.CATHODE << SCR1.CATHODE  << SCR2.CATHODE;
  }
};
 
#endif

 

Design Home <<  File View  >> Class View Output (partial) Parts Library Examples Home

Legal Copyright © 2007 by Coolquest, Inc. Contact