diff --git a/phosphor-power-sequencer/src/meson.build b/phosphor-power-sequencer/src/meson.build
index 8f74c7e..4ea4b9c 100644
--- a/phosphor-power-sequencer/src/meson.build
+++ b/phosphor-power-sequencer/src/meson.build
@@ -8,6 +8,7 @@
     'power_control_main.cpp',
     'power_control.cpp',
     'power_interface.cpp',
+    'ucd90320_monitor.cpp',
     dependencies: [
         libgpiodcxx,
         phosphor_logging,
diff --git a/phosphor-power-sequencer/src/power_control.cpp b/phosphor-power-sequencer/src/power_control.cpp
index 6e9fa58..aa47598 100644
--- a/phosphor-power-sequencer/src/power_control.cpp
+++ b/phosphor-power-sequencer/src/power_control.cpp
@@ -17,6 +17,7 @@
 #include "power_control.hpp"
 
 #include "types.hpp"
+#include "ucd90320_monitor.hpp"
 
 #include <fmt/format.h>
 #include <sys/types.h>
@@ -92,12 +93,13 @@
 
     if (i2cBus && i2cAddress && name && !name->empty())
     {
-        log<level::INFO>(
+        log<level::DEBUG>(
             fmt::format(
                 "Found power sequencer device properties, name: {}, bus: {} addr: {:#02x} ",
                 *name, *i2cBus, *i2cAddress)
                 .c_str());
         // Create device object
+        device = std::make_unique<UCD90320Monitor>(bus, *i2cBus, *i2cAddress);
     }
 }
 
diff --git a/phosphor-power-sequencer/src/power_control.hpp b/phosphor-power-sequencer/src/power_control.hpp
index 1699dcc..62dfce2 100644
--- a/phosphor-power-sequencer/src/power_control.hpp
+++ b/phosphor-power-sequencer/src/power_control.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "power_interface.hpp"
+#include "power_sequencer_monitor.hpp"
 #include "utility.hpp"
 
 #include <gpiod.hpp>
@@ -69,6 +70,11 @@
     sdbusplus::bus::bus& bus;
 
     /**
+     * The power sequencer device to monitor.
+     */
+    std::unique_ptr<PowerSequencerMonitor> device;
+
+    /**
      * Indicates if a state transistion is taking place
      */
     bool inStateTransition{false};
diff --git a/phosphor-power-sequencer/src/power_sequencer_monitor.hpp b/phosphor-power-sequencer/src/power_sequencer_monitor.hpp
new file mode 100644
index 0000000..e714d08
--- /dev/null
+++ b/phosphor-power-sequencer/src/power_sequencer_monitor.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+namespace phosphor::power::sequencer
+{
+
+/**
+ * @class PowerSequencerMonitor
+ * Define a base class for monitoring a power sequencer device.
+ */
+class PowerSequencerMonitor
+{
+  public:
+    PowerSequencerMonitor() = default;
+    PowerSequencerMonitor(const PowerSequencerMonitor&) = delete;
+    PowerSequencerMonitor& operator=(const PowerSequencerMonitor&) = delete;
+    PowerSequencerMonitor(PowerSequencerMonitor&&) = delete;
+    PowerSequencerMonitor& operator=(PowerSequencerMonitor&&) = delete;
+    virtual ~PowerSequencerMonitor() = default;
+};
+
+} // namespace phosphor::power::sequencer
diff --git a/phosphor-power-sequencer/src/ucd90320_monitor.cpp b/phosphor-power-sequencer/src/ucd90320_monitor.cpp
index 698b0d0..36301b4 100644
--- a/phosphor-power-sequencer/src/ucd90320_monitor.cpp
+++ b/phosphor-power-sequencer/src/ucd90320_monitor.cpp
@@ -14,7 +14,22 @@
  * limitations under the License.
  */
 
-int main()
+#include "ucd90320_monitor.hpp"
+
+#include <fmt/format.h>
+
+#include <string>
+
+namespace phosphor::power::sequencer
 {
-    return 0;
+
+UCD90320Monitor::UCD90320Monitor(sdbusplus::bus::bus& bus, std::uint8_t i2cBus,
+                                 std::uint16_t i2cAddress) :
+    PowerSequencerMonitor(),
+    bus{bus}, interface {
+    fmt::format("/sys/bus/i2c/devices/{}-{:04x}", i2cBus, i2cAddress).c_str(),
+        "ucd9000", 0
 }
+{}
+
+} // namespace phosphor::power::sequencer
diff --git a/phosphor-power-sequencer/src/ucd90320_monitor.hpp b/phosphor-power-sequencer/src/ucd90320_monitor.hpp
new file mode 100644
index 0000000..9512190
--- /dev/null
+++ b/phosphor-power-sequencer/src/ucd90320_monitor.hpp
@@ -0,0 +1,47 @@
+#pragma once
+
+#include "pmbus.hpp"
+#include "power_sequencer_monitor.hpp"
+
+#include <sdbusplus/bus.hpp>
+
+namespace phosphor::power::sequencer
+{
+
+/**
+ * @class UCD90320Monitor
+ * This class implements fault analysis for the UCD90320
+ * power sequencer device.
+ */
+class UCD90320Monitor : public PowerSequencerMonitor
+{
+  public:
+    UCD90320Monitor() = delete;
+    UCD90320Monitor(const UCD90320Monitor&) = delete;
+    UCD90320Monitor& operator=(const UCD90320Monitor&) = delete;
+    UCD90320Monitor(UCD90320Monitor&&) = delete;
+    UCD90320Monitor& operator=(UCD90320Monitor&&) = delete;
+    virtual ~UCD90320Monitor() = default;
+
+    /**
+     * Create a device object for UCD90320 monitoring.
+     * @param[in] bus D-Bus bus object
+     * @param[in] i2cBus The bus number of the power sequencer device
+     * @param[in] i2cAddress The I2C address of the power sequencer device
+     */
+    UCD90320Monitor(sdbusplus::bus::bus& bus, std::uint8_t i2cBus,
+                    const std::uint16_t i2cAddress);
+
+  private:
+    /**
+     * The D-Bus bus object
+     */
+    sdbusplus::bus::bus& bus;
+
+    /**
+     * The read/write interface to this hardware
+     */
+    pmbus::PMBus interface;
+};
+
+} // namespace phosphor::power::sequencer
