RE: čtení napětí z MCP3221 (1ch/12bit)

Zuffa Jan ZuffaJ na cgc.sk
Úterý Duben 2 08:25:06 CEST 2019


A vstup MCP ma aku impedanciu?
So zvysujucim sa napatim sa rozdiel zvacsuje alebo ostava konstantny?

j.

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of cizek.milan na seznam.cz
Sent: Tuesday, April 02, 2019 4:08 AM
To: 'HW-news'
Subject: čtení napětí z MCP3221 (1ch/12bit)

Ahoj,
potřeboval bych poradit, protože v bitových operacích nejsem tolik silný, hlavně nikde nevidím chybu.

Snažím se přes MCP3221 číst napětí v rozsahu 0-60V.
MCP3221 Vdd je 3V3 a Vss GND.
Nějak mi to funguje, ale ne přesně. Jsem cca -0,5V, což mi přijde hodně i s ohledem na toleranci děliče (47k a 2,74k +-1%).
Tak hledám chybu v kódu...

Jde mi hlavně o tu část přepočtu value, trochu jsem to celé okomentoval pro lepší orientaci a daný, řádek, jak jej chápu.

  int value = 0x0;
  float voltage = 0.0;
  const float mcp_vdd = 3.3;

  // ADC (MCP3221) dělič spočítán na 0-60V
  // vestavěná/pevná přesnost 12 bitů, žádný konfigurační registr, pouze read-only čip
  // při Vdd=3.3V (a Vss GND) jsme schopni měřit napětí v rozsahu -0.3V až 3.6V (Vss-0.3V a Vdd+0.3V)
  // (approx)  PoE-IN   Ain
  //      0     0.00   0.00V
  //   2048     30.0   1.65V (1.655V)
  //   4095     60.0   3.31V

  value = wiringPiI2CReadReg16(fd, 0x0);

  // čteme celé 2 bajty, ale zajímá nás jen 12 spodních bitů (z MSB 4 bity a z LSB všech 8 bitů)
  // první jsme ale přijali MSB[0] následně LSB[1], takže prohazujeme
  // první závorka vymaskuje spodní bajt a šoupne je o 8 bitů vlevo
  // druhá závorka vymaskuje horní bajt a šoupne ho o 8 bitů vpravo, následně se sečtou, prakticky je to tedy záměna pořadí 2 bajtů
  value = (value & 0xFF) << 8 | (value & 0xFF00) >> 8;

  // 12bitů = 4096 možností = 2^12; 60/3.3 = 18.18 (max. 60V před děličem odpovídá 3V3 za děličem)
  voltage = (float) (mcp_vdd / 4096.0) * value * (60 / mcp_vdd);


17.31V mi měří kód, měřák 17.74V.
Nemám problém v té úvaze/tabulce? Jestli hodnota 0 v registru neodpovídá -0.3V? Díky.
Milan


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list