From 16d2df5844182b7d6a64842d21ebf5a32ebde34b Mon Sep 17 00:00:00 2001 From: klausw <> Date: Thu, 16 Feb 2017 22:06:16 +0000 Subject: [PATCH] =?UTF-8?q?52=5FI2C=5FMCP342x:=20values=20are=20now=20in?= =?UTF-8?q?=20V=20(instead=20of=20=C2=B5V),=20fixed=20handling=20of=20nega?= =?UTF-8?q?tive=20values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.fhem.de/fhem/trunk@13424 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/52_I2C_MCP342x.pm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/52_I2C_MCP342x.pm b/fhem/FHEM/52_I2C_MCP342x.pm index 54a3eada6..ad3d80948 100644 --- a/fhem/FHEM/52_I2C_MCP342x.pm +++ b/fhem/FHEM/52_I2C_MCP342x.pm @@ -279,15 +279,19 @@ sub I2C_MCP342x_GetVoltage ($$) { my $rawvolt; if ($resol == 18) { $rawvolt = ($raw[0] & 0b00000011) << 16 | $raw[1] << 8 | $raw[2]; + } elsif ($resol == 14) { + $rawvolt = ($raw[0] & 0b00111111) << 8 | $raw[1]; + } elsif ($resol == 12) { + $rawvolt = ($raw[0] & 0b00001111) << 8 | $raw[1]; } else { $rawvolt = $raw[0] << 8 | $raw[1]; } - #Log3 $hash, 1, "Kanal: $channel, rawvolt: $rawvolt, Aufloesung: $resol, Gain: $gain, LSB: $resols{$resol}{lsb}"; + Log3 $hash, 4, "Kanal: $channel, rawvolt: $rawvolt, Aufloesung: $resol, Gain: $gain, LSB: $resols{$resol}{lsb}"; $rawvolt -= (1 << $resol) if $rawvolt >= (1 << ($resol - 1)); - #Log3 $hash, 1, "Kanal: $channel, Unsignedrawvolt: $rawvolt"; + Log3 $hash, 4, "Kanal: $channel, Signedrawvolt: $rawvolt"; my $voltage = ( $rawvolt * $resols{$resol}{lsb} ) / $gain ; - #$voltage /= 1000000; + $voltage /= 1000000; # LSB Werte in µV $voltage *= AttrVal($hash->{NAME},("ch" . $channel . "factor"),"1"); $voltage = sprintf( '%.' . AttrVal($hash->{NAME}, ('ch' . $channel . 'roundDecimal'), 3) . 'f', @@ -295,7 +299,6 @@ sub I2C_MCP342x_GetVoltage ($$) { ); $voltage .= " overflow" if ( $rawvolt == ( (1<<($resol-1)) - 1) || $rawvolt == (1<<($resol-1)) ); readingsSingleUpdate($hash,"Channel$channel", $voltage, 1); - #Log3 $hash, 1, "Kanal: $channel, Fertig: $voltage"; } else { Log3 $hash, 3, $hash->{NAME} . " error, output conversion not finished"; }