-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathADS7828.h
More file actions
100 lines (85 loc) · 4.83 KB
/
ADS7828.h
File metadata and controls
100 lines (85 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/**************************************************************************/
/*
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.
ADS7828
This code is designed to work with the ADS7828_I2CADC I2C Mini Module available from ControlEverything.com.
https://www.controleverything.com/content/Analog-Digital-Converters?sku=ADS7828_I2CADC#tabs-0-product_tabset-2
*/
/**************************************************************************/
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Wire.h>
/**************************************************************************
I2C ADDRESS/BITS
**************************************************************************/
#define ADS7828_DEFAULT_ADDRESS (0x48) // 1001 000 (ADDR = GND)
#define ADS7828_VDD_ADDRESS (0x49) // 1001 001 (ADDR = VDD)
#define ADS7828_SDA_ADDRESS (0x4A) // 1001 010 (ADDR = SDA)
#define ADS7828_SCL_ADDRESS (0x4B) // 1001 011 (ADDR = SCL)
/**************************************************************************
CONVERSION DELAY (in mS)
**************************************************************************/
#define ADS7828_CONVERSIONDELAY (100)
/**************************************************************************
COMMAND BYTE REGISTER
**************************************************************************/
#define ADS7828_REG_COMMAND_SD_MASK (0x80) // Single-Ended/Differential Inputs
#define ADS7828_REG_COMMAND_SD_DIFF (0x00) // Bit = 0, Differential Inputs
#define ADS7828_REG_COMMAND_SD_SINGLE (0x80) // Bit = 1, Single-Ended Inputs
#define ADS7828_REG_COMMAND_CH_MASK (0x70) // Input multiplexer COMMANDuration
#define ADS7828_REG_COMMAND_CH_DIFF_0_1 (0x00) // Differential P = CH0, N = CH1
#define ADS7828_REG_COMMAND_CH_DIFF_2_3 (0x10) // Differential P = CH2, N = CH3
#define ADS7828_REG_COMMAND_CH_DIFF_4_5 (0x20) // Differential P = CH4, N = CH5
#define ADS7828_REG_COMMAND_CH_DIFF_6_7 (0x30) // Differential P = CH6, N = CH7
#define ADS7828_REG_COMMAND_CH_DIFF_1_0 (0x40) // Differential P = CH1, N = CH0
#define ADS7828_REG_COMMAND_CH_DIFF_3_2 (0x50) // Differential P = CH3, N = CH2
#define ADS7828_REG_COMMAND_CH_DIFF_5_4 (0x60) // Differential P = CH5, N = CH4
#define ADS7828_REG_COMMAND_CH_DIFF_7_6 (0x70) // Differential P = CH7, N = CH6
#define ADS7828_REG_COMMAND_CH_SINGLE_0 (0x00) // Single-ended P = CH0, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_1 (0x10) // Single-ended P = CH1, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_2 (0x20) // Single-ended P = CH2, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_3 (0x30) // Single-ended P = CH3, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_4 (0x40) // Single-ended P = CH4, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_5 (0x50) // Single-ended P = CH5, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_6 (0x60) // Single-ended P = CH6, N = COM
#define ADS7828_REG_COMMAND_CH_SINGLE_7 (0x70) // Single-ended P = CH7, N = COM
#define ADS7828_REG_COMMAND_PD_MASK (0x0C) // Power-Down Selection
#define ADS7828_REG_COMMAND_PD_PDADCONV (0x00) // Power Down Between A/D Converter Conversions
#define ADS7828_REG_COMMAND_PD_IROFF_ADON (0x04) // Internal Reference OFF and A/D Converter ON
#define ADS7828_REG_COMMAND_PD_IRON_ADOFF (0x08) // Internal Reference ON and A/D Converter OFF
#define ADS7828_REG_COMMAND_PD_IRON_ADON (0x0C) // Internal Reference ON and A/D Converter ON
typedef enum
{
SDMODE_DIFF = ADS7828_REG_COMMAND_SD_DIFF,
SDMODE_SINGLE = ADS7828_REG_COMMAND_SD_SINGLE
} adsSDMode_t;
typedef enum
{
PDADCONV = ADS7828_REG_COMMAND_PD_PDADCONV,
PDIROFF_ADON = ADS7828_REG_COMMAND_PD_IROFF_ADON,
PDIRON_ADOFF = ADS7828_REG_COMMAND_PD_IRON_ADOFF,
PDIRON_ADON = ADS7828_REG_COMMAND_PD_IRON_ADON
} adsPDMode_t;
class ADS7828
{
protected:
// Instance-specific properties
uint8_t ads_i2cAddress;
uint8_t ads_conversionDelay;
adsSDMode_t ads_sdmode;
adsPDMode_t ads_pdmode;
public:
void getAddr_ADS7828(uint8_t i2cAddress);
void begin(void);
uint16_t Measure_SingleEnded(uint8_t channel);
int16_t Measure_Differential(uint8_t channel);
void setSDMode(adsSDMode_t sdmode);
adsSDMode_t getSDMode(void);
void setPDMode(adsPDMode_t pdmode);
adsPDMode_t getPDMode(void);
private:
};