<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; INA3221]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=674</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=674&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «INA3221».]]></description>
		<lastBuildDate>Tue, 01 Oct 2024 14:10:25 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: INA3221]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=10793#p10793</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/10/6b4710f1053eb74d04889bf56a419d0f.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/10/6b4710f1053eb74d04889bf56a419d0f.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/10/0a1ee22d6d669c34c4720cad18ceb944.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/10/0a1ee22d6d669c34c4720cad18ceb944.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/10/9e5d5da9828000aa3440fd801ed6c623.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/10/9e5d5da9828000aa3440fd801ed6c623.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/10/0b828dcec7ad127f2d93fcf4b66c2cd0.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/10/0b828dcec7ad127f2d93fcf4b66c2cd0.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/10/5df2ccf22de86f7eb325fa5de69ff28f.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/10/5df2ccf22de86f7eb325fa5de69ff28f.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/10/10f68420453233ebd8d7f56dd65177a7.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/10/10f68420453233ebd8d7f56dd65177a7.png" /></span></p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 01 Oct 2024 14:10:25 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=10793#p10793</guid>
		</item>
		<item>
			<title><![CDATA[Re: INA3221]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=10791#p10791</link>
			<description><![CDATA[<div class="codebox"><pre><code>#define ADDR 0x40 // I2C address
#define UR   0.1    // R (Om)
#define AVG  0B001
#define VBUS 0B111
#define CH   0B111
#define VSH  0B111
#define MODE 0B111

#define I_ogr 0.6 // A

#include &lt;Wire.h&gt;
#include &lt;U8glib.h&gt;            // https://github.com/olikraus/u8glib/

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);

int ogr_i;

void setup() {
    Wire.begin();
    Serial.begin(9600);
    delay(100);
    I2C_write(0x00, 0x00|(CH&lt;&lt;12)|(AVG&lt;&lt;9)|(VBUS&lt;&lt;6)|(VSH&lt;&lt;3)|MODE); // Configuration Register
    I2C_write(0x0F, 0b111&lt;&lt;12);
    ogr_i = (int)(I_ogr/0.0004)&lt;&lt;1;
    I2C_write(0x0E, ogr_i); // CRI | REG 0X0F BIT 6 | LED3
    Serial.print(&quot;Manufacturer ID &quot;);Serial.println(I2C_read(0xFE),HEX);
    Serial.print(&quot;Die ID &quot;);Serial.println(I2C_read(0xFF),HEX);
}

void loop() {
    int ur1=(I2C_read(0x01)&gt;&gt;3);
    int u1=(I2C_read(0x02)&gt;&gt;3);
    int ur2=(I2C_read(0x03)&gt;&gt;3);
    int u2=(I2C_read(0x04)&gt;&gt;3);
    int ur3=(I2C_read(0x05)&gt;&gt;3);
    int u3=(I2C_read(0x06)&gt;&gt;3);
    int ur_s=(I2C_read(0x0D)&gt;&gt;1);
    bool err = (I2C_read(0x0f)&gt;&gt;6)&amp;1;
  
    Serial.print(&quot;Ur_1 &quot;);Serial.print(ur1,BIN);Serial.println(&quot; mV&quot;);
    Serial.print(&quot;I_1 &quot;);Serial.print(ur1*0.04/UR,1);Serial.println(&quot; mA&quot;);
    Serial.print(&quot;U_1 &quot;);Serial.print(u1*0.008);Serial.println(&quot; V&quot;);
    Serial.println();
    Serial.print(&quot;Ur_2 &quot;);Serial.print(ur2*0.04,3);Serial.println(&quot; mV&quot;);
    Serial.print(&quot;I_2 &quot;);Serial.print(ur2*0.04/UR,1);Serial.println(&quot; mA&quot;);
    Serial.print(&quot;U_2 &quot;);Serial.print(u2*0.008);Serial.println(&quot; V&quot;);
    Serial.println();
    Serial.print(&quot;Ur_3 &quot;);Serial.print(ur3*0.04,3);Serial.println(&quot; mV&quot;);
    Serial.print(&quot;I_3 &quot;);Serial.print(ur3*0.04/UR,1);Serial.println(&quot; mA&quot;);
    Serial.print(&quot;U_3 &quot;);Serial.print(u3*0.008);Serial.println(&quot; V&quot;);
    
    u8g.firstPage();  
    do {
    u8g.setFont(u8g_font_profont15r);
    u8g.drawLine(0, 52, 128, 52);
    u8g.setPrintPos(0, 12);u8g.print(u1*0.008);u8g.drawStr(45,12,&quot;V&quot;);
    u8g.setPrintPos(70, 12);u8g.print(ur1*0.00004/UR,3);u8g.drawStr(115,12,&quot;A&quot;);

    u8g.setPrintPos(0, 30);u8g.print(u2*0.008);u8g.drawStr(45,30,&quot;V&quot;);
    u8g.setPrintPos(70, 30);u8g.print(ur2*0.00004/UR,3);u8g.drawStr(115,30,&quot;A&quot;);

    u8g.setPrintPos(0, 48);u8g.print(u3*0.008);u8g.drawStr(45,48,&quot;V&quot;);
    u8g.setPrintPos(70, 48);u8g.print(ur3*0.00004/UR,3);u8g.drawStr(115,48,&quot;A&quot;);

    u8g.setPrintPos(70, 64);u8g.print(ur_s*0.00004/UR,3);u8g.drawStr(115,64,&quot;A&quot;);
    if(err==1){u8g.drawStr(0,64,&quot;ERROR&quot;);}
    } while( u8g.nextPage() );
    delay(1000);
}


unsigned int I2C_read(byte reg){
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.endTransmission();
  Wire.requestFrom(ADDR,2);
  while(Wire.available()&lt;1);
  unsigned int value = (Wire.read()&lt;&lt;8) | Wire.read();
  return value;
  } 

void I2C_write(byte reg, unsigned int data){  
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.write((data&amp;0xFF00)&gt;&gt;8);
  Wire.write(data&amp;0x00FF);
  Wire.endTransmission();
  }  </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 01 Oct 2024 03:59:13 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=10791#p10791</guid>
		</item>
		<item>
			<title><![CDATA[Re: INA3221]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=10790#p10790</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/09/39f4332c8b6ca2d8993481486a34b8be.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/09/39f4332c8b6ca2d8993481486a34b8be.png" /></span> </p><div class="codebox"><pre><code>#define ADDR 0x40 // I2C address
#define UR   0.1    // R (Om)
#define AVG  0B100
#define VBUS 0B111
#define CH   0B111
#define VSH  0B111
#define MODE 0B111

#include &lt;Wire.h&gt;

void setup() {
    Wire.begin();
    Serial.begin(9600);
    delay(100);
    I2C_write(0x00, 0x00|(CH&lt;&lt;12)|(AVG&lt;&lt;9)|(VBUS&lt;&lt;6)|(VSH&lt;&lt;3)|MODE); // Configuration Register
    Serial.print(&quot;Manufacturer ID &quot;);Serial.println(I2C_read(0xFE),HEX);
    Serial.print(&quot;Die ID &quot;);Serial.println(I2C_read(0xFF),HEX);
}

void loop() {
    int ur1=(I2C_read(0x01)&gt;&gt;3);
    int u1=(I2C_read(0x02)&gt;&gt;3);
    int ur2=(I2C_read(0x03)&gt;&gt;3);
    int u2=(I2C_read(0x04)&gt;&gt;3);
    int ur3=(I2C_read(0x05)&gt;&gt;3);
    int u3=(I2C_read(0x06)&gt;&gt;3);
    
    Serial.print(&quot;Ur_1 &quot;);Serial.print(ur1*0.04,3);Serial.println(&quot; mV&quot;);
    Serial.print(&quot;I_1 &quot;);Serial.print(ur1*0.04/UR,1);Serial.println(&quot; mA&quot;);
    Serial.print(&quot;U_1 &quot;);Serial.print(u1*0.008);Serial.println(&quot; V&quot;);
    Serial.println();
    Serial.print(&quot;Ur_2 &quot;);Serial.print(ur2*0.04,3);Serial.println(&quot; mV&quot;);
    Serial.print(&quot;I_2 &quot;);Serial.print(ur2*0.04/UR,1);Serial.println(&quot; mA&quot;);
    Serial.print(&quot;U_2 &quot;);Serial.print(u2*0.008);Serial.println(&quot; V&quot;);
    Serial.println();
    Serial.print(&quot;Ur_3 &quot;);Serial.print(ur3*0.04,3);Serial.println(&quot; mV&quot;);
    Serial.print(&quot;I_3 &quot;);Serial.print(ur3*0.04/UR,1);Serial.println(&quot; mA&quot;);
    Serial.print(&quot;U_3 &quot;);Serial.print(u3*0.008);Serial.println(&quot; V&quot;);
    Serial.println();
    delay(2000);
}


unsigned int I2C_read(byte reg){
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.endTransmission();
  Wire.requestFrom(ADDR,2);
  while(Wire.available()&lt;1);
  unsigned int value = (Wire.read()&lt;&lt;8) | Wire.read();
  return value;
  } 

void I2C_write(byte reg, unsigned int data){  
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.write((data&amp;0xFF00)&gt;&gt;8);
  Wire.write(data&amp;0x00FF);
  Wire.endTransmission();
  }  </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 30 Sep 2024 07:42:38 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=10790#p10790</guid>
		</item>
		<item>
			<title><![CDATA[INA3221]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=10789#p10789</link>
			<description><![CDATA[<p>Основная статья - <a href="http://rcl-radio.ru/?p=132614">http://rcl-radio.ru/?p=132614</a></p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/09/249a346749df0888926c4d00c92464de.png" alt="http://forum.rcl-radio.ru/uploads/images/2024/09/249a346749df0888926c4d00c92464de.png" /></span> </p><br /><div class="codebox"><pre><code>#include &lt;Wire.h&gt;
#include &lt;INA3221.h&gt;

#define SERIAL_SPEED     9600  // serial baud rate
#define PRINT_DEC_POINTS 3       // decimal points to print

// Set I2C address to 0x41 (A0 pin -&gt; VCC)
INA3221 ina3221(INA3221_ADDR40_GND);

void setup() {
    Serial.begin(SERIAL_SPEED);

    while (!Serial) {
        delay(1);
    }

    ina3221.begin();
    ina3221.reset();

    // Set shunt resistors to 10 mOhm for all channels
    ina3221.setShuntRes(100, 100, 100);

    // Set series filter resistors to 10 Ohm for all channels.
    // Series filter resistors introduce error to the current measurement.
    // The error can be estimated and depends on the resitor values and the bus
    // voltage.
    ina3221.setFilterRes(100, 100, 100);
}

void loop() {
    float current[3];
    float current_compensated[3];
    float voltage[3];

    current[0]             = ina3221.getCurrent(INA3221_CH1);
    current_compensated[0] = ina3221.getCurrentCompensated(INA3221_CH1);
    voltage[0]             = ina3221.getVoltage(INA3221_CH1);

    current[1]             = ina3221.getCurrent(INA3221_CH2);
    current_compensated[1] = ina3221.getCurrentCompensated(INA3221_CH2);
    voltage[1]             = ina3221.getVoltage(INA3221_CH2);

    current[2]             = ina3221.getCurrent(INA3221_CH3);
    current_compensated[2] = ina3221.getCurrentCompensated(INA3221_CH3);
    voltage[2]             = ina3221.getVoltage(INA3221_CH3);

    Serial.print(&quot;Channel 1: \n Current: &quot;);
    Serial.print(current[0], PRINT_DEC_POINTS);
    Serial.print(&quot;A\n Compensated current: &quot;);
    Serial.print(current_compensated[0], PRINT_DEC_POINTS);
    Serial.print(&quot;\n Voltage: &quot;);
    Serial.print(voltage[0], PRINT_DEC_POINTS);
    Serial.println(&quot;V&quot;);

    Serial.print(&quot;Channel 2: \n Current: &quot;);
    Serial.print(current[1], PRINT_DEC_POINTS);
    Serial.print(&quot;A\n Compensated current: &quot;);
    Serial.print(current_compensated[1], PRINT_DEC_POINTS);
    Serial.print(&quot;\n Voltage: &quot;);
    Serial.print(voltage[1], PRINT_DEC_POINTS);
    Serial.println(&quot;V&quot;);

    Serial.print(&quot;Channel 3: \n Current: &quot;);
    Serial.print(current[2], PRINT_DEC_POINTS);
    Serial.print(&quot;A\n Compensated current: &quot;);
    Serial.print(current_compensated[2], PRINT_DEC_POINTS);
    Serial.print(&quot;\n Voltage: &quot;);
    Serial.print(voltage[2], PRINT_DEC_POINTS);
    Serial.println(&quot;V\n&quot;);

    delay(1000);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 30 Sep 2024 07:26:32 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=10789#p10789</guid>
		</item>
	</channel>
</rss>
