ProtoVoltaics RTD Shield with RS232 and RS485 Transceivers  Version 8
 All Classes Functions Variables Pages
PV_RTD_RS232_RS485_Shield.h
1 #ifndef PV_RTD_SHIELD
2 #define PV_RTD_SHIELD
3 
4 #include <Arduino.h>
5 #include <Print.h>
6 
8 #ifdef _VARIANT_ARDUINO_DUE_X_
9  #define I2C_RTD_PORTNAME Wire1
10 #else
11  #define I2C_RTD_PORTNAME Wire
12 #endif
13 
14 
15 //#define RTD_DEBUG true ///< Verbose debugging flag.
16 
17 
371 
374 class PV_RTD_RS232_RS485 : public Print {
375  public:
376 
378 
383  PV_RTD_RS232_RS485( byte i2c_address, float R0 );
384 
386  void Reset();
387 
389  void Factory_Reset();
390 
392 
400  float Get_RTD_Idac( byte wires, byte channel );
401 
403 
413  float Set_RTD_Idac( byte wires, byte channel, float new_idac_value );
414 
416 
422  float Get_RTD_Vref( byte wires, byte channel );
423 
425 
432  float Get_RTD_PGA( byte wires, byte channel );
433 
435 
717  float Set_RTD_PGA( byte wires, byte channel, byte new_gain_value );
718 
720 
724  unsigned int Get_RTD_SPS();
725 
727 
733  unsigned int Set_RTD_SPS( unsigned int new_sps_value );
734 
736 
743  float Get_RTD_Bit_Weight( byte wires, byte channel );
744 
746 
751  unsigned long Get_RTD_ADC_Reading( byte wires, byte channel, int timeout_ms = PV_RTD_COMMUNICATION_TIMOUT_MS );
752 
754 
759 
761 
769  byte Get_Enabled_RTD_Channels( byte wires );
770 
772 
779  boolean Is_Valid_RTD_Channel( byte wires, byte channel );
780 
782 
787  int Enable_RTD_Channel( byte wires, byte channel );
788 
790 
793  void Print_Registers();
794 
796 
801  byte Read_Register( int register_address );
802 
804 
810  int Write_Register( int register_address, byte data );
811 
813 
822  boolean Set_RS232_Configuration( unsigned long baud = 115200, byte data_bits = 8, byte parity = 'N', byte stop_bits = 1, boolean polarity = false );
823 
825 
834  boolean Set_RS485_Configuration( unsigned long baud = 115200, byte data_bits = 8, byte parity = 'N', byte stop_bits = 1, boolean polarity = false );
835 
837 
841  int Write_RS232( byte data );
842 
844 
848  int Write_RS485( byte data );
849 
851 
854  byte Read_RS232();
855 
857 
860  byte Read_RS485();
861 
863 
866  boolean Has_RS232_Data();
867 
869 
872  boolean Has_RS485_Data();
873 
875 
881  float Get_RTD_Voltage( byte wires, byte channel );
882 
884 
890  float Get_RTD_Resistance( byte wires, byte channel );
891 
893 
899  float Get_RTD_Temperature_degC( byte wires, byte channel );
900 
902 
908  float Get_RTD_Temperature_degF( byte wires, byte channel );
909 
911 
917  float Get_RTD_Temperature_K( byte wires, byte channel );
918 
920 
926  float Get_RTD_Temperature_degR( byte wires, byte channel );
927 
929 
934  void Set_RTD_Alarm_Upper_Limit( byte wires, byte channel, long limit );
935 
937 
942  void Set_RTD_Alarm_Lower_Limit( byte wires, byte channel, long limit );
943 
945 
950  byte Get_Alarm_Enables();
951 
953 
957  void Enable_Alarm( byte alarm );
958 
960 
964  void Disable_Alarm( byte alarm );
965 
967 
977  void Configure_RTD_Alarm( byte alarm, boolean below, boolean above, byte wires, byte channel );
978 
980 
989  void Set_Alarm_Source( byte alarm, boolean rtd, boolean rs232, boolean rs485 );
990 
992 
996  byte Get_RTD_Channel_Limit( byte wires );
997 
999 
1005  size_t write( uint8_t data );
1006 
1008 
1013  void Connect_Print_To( boolean rs232, boolean rs485 );
1014 
1016 
1024  byte Get_Signature();
1025 
1027 
1036  boolean Is_Signature_Ok( byte signature );
1037 
1039  static const int PV_RTD_COMMUNICATION_TIMOUT_MS = 100;
1040 
1042 
1046  float Get_RTD_Rbias();
1047 
1048 
1049 
1050  private:
1051 
1053 
1057  int Set_Register( int register_address );
1058 
1060 
1065  byte Get_RTD_Idac_PGA_Configuration( byte wires, byte channel );
1066 
1068 
1073  int Get_RTD_Idac_PGA_Register( byte wires, byte channel );
1074 
1076 
1083  byte Get_UART_Configuration_Byte( byte data_bits, byte parity, byte stop_bits, boolean polarity );
1084 
1086 
1092  byte Get_Enabled_RTD_Channels_Byte( byte wires );
1093 
1094 
1095 
1098 
1100  float m_R0;
1101 
1104 
1107 };
1108 
1109 
1110 #endif