From 74d12a5c3a2e5514855483afc5f68133e3ff3c3d Mon Sep 17 00:00:00 2001 From: Avi Singh Date: Wed, 20 Jan 2021 15:39:18 -0500 Subject: [PATCH 1/5] Remove "/*" within comments --- Arduino/MCP3428_Arduino_Library/MCP3428.cpp | 4 +--- Arduino/MCP3428_Arduino_Library/MCP3428.h | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp index d1715a4..a85bf6d 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp @@ -1,12 +1,10 @@ /**************************************************************************** - /* Distributed with a free-will license. Use it any way you want, profit or free, provided it fits in the licenses of its associated works. MCP3428 This code is designed to work with the MCP3428_I2CADC I2C Mini Module available from ControlEverything.com. https://www.controleverything.com/content/Analog-Digital-Converters?sku=MCP3428_I2CADC#tabs-0-product_tabset-2 - */ -/****************************************************************************/ +****************************************************************************/ #include #include diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.h b/Arduino/MCP3428_Arduino_Library/MCP3428.h index 6028499..0e053c8 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.h +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.h @@ -1,12 +1,10 @@ /**************************************************************************** -/* Distributed with a free-will license. Use it any way you want, profit or free, provided it fits in the licenses of its associated works. MCP3428 This code is designed to work with the MCP3428_I2CADC I2C Mini Module available from ControlEverything.com. https://www.controleverything.com/content/Analog-Digital-Converters?sku=MCP3428_I2CADC#tabs-0-product_tabset-2 - */ -/****************************************************************************/ +****************************************************************************/ #include #include From 5f82b59db9f98d65579fe1cbbe26a7cd5e4f8617 Mon Sep 17 00:00:00 2001 From: Avi Singh Date: Wed, 20 Jan 2021 15:48:12 -0500 Subject: [PATCH 2/5] Convert devAddr to hex --- Arduino/MCP3428_Arduino_Library/MCP3428.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp index a85bf6d..bbade0d 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp @@ -17,7 +17,7 @@ MCP3428::MCP3428(uint8_t devAddress) { Wire.begin(); - devAddr = 1101<<3; + devAddr = 0x68; devAddr |= devAddress; } From cddd20ff828df66fd13cfb35a5047ccc7387fe51 Mon Sep 17 00:00:00 2001 From: Avi Singh Date: Tue, 26 Jan 2021 10:47:00 -0500 Subject: [PATCH 3/5] Mutliply raw ADC value by LSB value --- Arduino/MCP3428_Arduino_Library/MCP3428.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp index bbade0d..b39aa34 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp @@ -131,7 +131,7 @@ long MCP3428::readADC() raw_adc = raw_adc - 4096; } - // raw_adc = raw_adc*1000/GAIN; + raw_adc = raw_adc*1000/GAIN; break; @@ -146,7 +146,7 @@ long MCP3428::readADC() raw_adc = raw_adc - 16384; } - // raw_adc = raw_adc*250/GAIN; + raw_adc = raw_adc*250/GAIN; break; @@ -161,7 +161,7 @@ long MCP3428::readADC() raw_adc = raw_adc - 65536; } - // raw_adc = raw_adc*62.5/GAIN; + raw_adc = raw_adc*62.5/GAIN; break; } From 3e22b845d1b9d98afd56ccf7212d70cacbef2ae2 Mon Sep 17 00:00:00 2001 From: Avi Singh Date: Tue, 26 Jan 2021 11:35:29 -0500 Subject: [PATCH 4/5] Delay when waiting for conversion --- Arduino/MCP3428_Arduino_Library/MCP3428.cpp | 25 ++++++++++++++++++++- Arduino/MCP3428_Arduino_Library/MCP3428.h | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp index b39aa34..1b2b2a0 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp @@ -115,7 +115,15 @@ long MCP3428::readADC() raw_adc = 0; - while(CheckConversion() == 1); + while(CheckConversion() == 1) { + unsigned long convTime = getConversionTime(SPS); + if (convTime > 16383) { + convTime /= 1000; + delay(convTime); + } else { + delayMicroseconds(convTime); + } + } switch (SPS) { @@ -167,3 +175,18 @@ long MCP3428::readADC() } return raw_adc; } + +unsigned long MCP3428::getConversionTime(uint8_t resolution) { + switch (resolution) { + case 12: + return 4167; // 240 SPS + case 14: + return 16667; // 60 SPS + case 16: + return 66667; // 15 SPS + case 18: + return 266667; // 3.75 SPS + default: + return 0; + } +} diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.h b/Arduino/MCP3428_Arduino_Library/MCP3428.h index 0e053c8..cab779a 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.h +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.h @@ -21,6 +21,7 @@ class MCP3428 long readADC(); private: + unsigned long getConversionTime(uint8_t resolution); uint8_t devAddr; long raw_adc; From 08ea5dc4126d05aae1be180c939139bd9959b9bb Mon Sep 17 00:00:00 2001 From: Avi Singh Date: Thu, 18 Feb 2021 15:12:21 -0500 Subject: [PATCH 5/5] Limit read retries --- Arduino/MCP3428_Arduino_Library/MCP3428.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp index 1b2b2a0..0fcf6e9 100755 --- a/Arduino/MCP3428_Arduino_Library/MCP3428.cpp +++ b/Arduino/MCP3428_Arduino_Library/MCP3428.cpp @@ -114,8 +114,8 @@ long MCP3428::readADC() { raw_adc = 0; - - while(CheckConversion() == 1) { + int tries = 0; + while(CheckConversion() == 1 && tries++ < 5) { unsigned long convTime = getConversionTime(SPS); if (convTime > 16383) { convTime /= 1000;