Skip to content
This repository was archived by the owner on Feb 28, 2024. It is now read-only.

Library revamping #106

Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
966f33d
AnalogIn class refactoring
leonardocavagnis Jul 10, 2023
0b73e34
create AnalogOutClass as separate module
leonardocavagnis Jul 12, 2023
86db1cc
AnalogOut class refactoring
leonardocavagnis Jul 12, 2023
fdc1c44
docs: cosmetics
leonardocavagnis Jul 12, 2023
e1d11c1
create DigitalOutputsClass as separate module
leonardocavagnis Jul 12, 2023
b01735b
DigitalOutputs class refactoring
leonardocavagnis Jul 12, 2023
273f4fd
docs: DigitalOutputsClass
leonardocavagnis Jul 13, 2023
0acb433
create ProgrammableDIOClass as separate module
leonardocavagnis Jul 13, 2023
bfec7b7
ProgrammableDIO class refactoring
leonardocavagnis Jul 25, 2023
321919b
create rogrammableDINClass as separate module
leonardocavagnis Jul 25, 2023
65a8eaf
ProgrammableDIN class refactoring
leonardocavagnis Jul 25, 2023
e5dda7d
create RTDClass as separate module
leonardocavagnis Jul 25, 2023
e651375
Class renaming: RTDClass -> TempProbesClass
leonardocavagnis Jul 25, 2023
478437f
TempProbes class refactoring
leonardocavagnis Jul 25, 2023
c28bb65
RtcController Class refactoring
leonardocavagnis Jul 26, 2023
4edfa60
create USBClass as separate module
leonardocavagnis Jul 26, 2023
e10ffbc
USBClass refactoring
leonardocavagnis Jul 26, 2023
02506aa
Encoder class refactoring
leonardocavagnis Jul 26, 2023
b0458ad
create COMMClass as separate module
leonardocavagnis Jul 26, 2023
a6af34e
COMM class refactoring
leonardocavagnis Jul 27, 2023
cee0a68
docs: update
leonardocavagnis Jul 28, 2023
01d4703
create two different classes for the comm protocol: CAN (CANCommClass…
leonardocavagnis Aug 1, 2023
30609f8
doc update: RS485CommClass
leonardocavagnis Aug 1, 2023
dc3631d
create two different classes for the temp probes: RTD (RTDTempProbeCl…
leonardocavagnis Aug 1, 2023
407b907
Encoder: remove operator [] to access encoder channel
leonardocavagnis Aug 2, 2023
50463b8
refactoring Ethernet example using Arduino Ethernet library
leonardocavagnis Aug 3, 2023
c091f4a
reimplement CANCommClass using Arduino_CAN library
leonardocavagnis Aug 4, 2023
1ab14b2
add pinout file (pins_mc)
leonardocavagnis Aug 7, 2023
a9d32a2
RTC alarm example: remove namespace
leonardocavagnis Aug 8, 2023
f0304db
doc: examples
leonardocavagnis Aug 8, 2023
228205c
MAX31855: fix constructor param
leonardocavagnis Aug 9, 2023
fe62475
doc: update README
leonardocavagnis Aug 11, 2023
ce11f9b
doc: removed unused keywords
leonardocavagnis Aug 11, 2023
c4c119b
doc: update docs/README.md
leonardocavagnis Aug 11, 2023
c8761a6
doc: add example folder links
leonardocavagnis Aug 11, 2023
83e97e3
doc: update docs/README.md
leonardocavagnis Aug 11, 2023
26bdb2a
doc: update API.md
leonardocavagnis Aug 17, 2023
b70a4b4
Update docs/README.md
leonardocavagnis Aug 17, 2023
dc6ae43
Update keywords.txt
leonardocavagnis Aug 22, 2023
7902817
Update library.properties
leonardocavagnis Aug 22, 2023
e3edfa7
AnalogIn: change sensor type management
leonardocavagnis Aug 24, 2023
c0bafb8
removing PT1000 example, not compatible
leonardocavagnis Sep 20, 2023
d418048
fix mispelling of RTC methods
leonardocavagnis Sep 21, 2023
3157745
Merge branch 'master' into lib_refactoring
leonardocavagnis Sep 29, 2023
00c8404
move PinDefinitions inclusion in cpp to avoid compilation issue
leonardocavagnis Nov 17, 2023
65c748c
add fast analog input read example using Arduino_AdvancedAnalog library
leonardocavagnis Nov 28, 2023
5edf8d8
Update compile-examples.yml
leonardocavagnis Dec 11, 2023
bbb3fe0
fix Thermocouple readings
leonardocavagnis Jan 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
create two different classes for the temp probes: RTD (RTDTempProbeCl…
…ass) and TC (TCTempProbeClass)
  • Loading branch information
leonardocavagnis committed Aug 1, 2023
commit dc3631d5e823e16ca8554c87be64ae988c1eada6
68 changes: 34 additions & 34 deletions examples/Temp_probes_RTD/Temp_probes_RTD.ino
Original file line number Diff line number Diff line change
Expand Up @@ -25,120 +25,120 @@
void setup() {
Serial.begin(9600);
Serial.println("MAX31865 PT100 Sensor Test!");
MachineControl_TempProbes.begin(TEMPPROBE_RTD, THREE_WIRE);
MachineControl_RTDTempProbe.begin(THREE_WIRE);
}

void loop() {
MachineControl_TempProbes.selectChannel(0);
MachineControl_RTDTempProbe.selectChannel(0);
Serial.println("CHANNEL 0 SELECTED");
uint16_t rtd = MachineControl_TempProbes.RTD.readRTD();
uint16_t rtd = MachineControl_RTDTempProbe.readRTD();
float ratio = rtd;
ratio /= 32768;

// Check and print any faults
uint8_t fault = MachineControl_TempProbes.RTD.readFault();
uint8_t fault = MachineControl_RTDTempProbe.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (MachineControl_TempProbes.RTD.getHighThresholdFault(fault)) {
if (MachineControl_RTDTempProbe.getHighThresholdFault(fault)) {
Serial.println("RTD High Threshold");
}
if (MachineControl_TempProbes.RTD.getLowThresholdFault(fault)) {
if (MachineControl_RTDTempProbe.getLowThresholdFault(fault)) {
Serial.println("RTD Low Threshold");
}
if (MachineControl_TempProbes.RTD.getLowREFINFault(fault)) {
if (MachineControl_RTDTempProbe.getLowREFINFault(fault)) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (MachineControl_TempProbes.RTD.getHighREFINFault(fault)) {
if (MachineControl_RTDTempProbe.getHighREFINFault(fault)) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (MachineControl_TempProbes.RTD.getLowRTDINFault(fault)) {
if (MachineControl_RTDTempProbe.getLowRTDINFault(fault)) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (MachineControl_TempProbes.RTD.getVoltageFault(fault)) {
if (MachineControl_RTDTempProbe.getVoltageFault(fault)) {
Serial.println("Under/Over voltage");
}
MachineControl_TempProbes.RTD.clearFault();
MachineControl_RTDTempProbe.clearFault();
} else {
Serial.print("RTD value: "); Serial.println(rtd);
Serial.print("Ratio = "); Serial.println(ratio, 8);
Serial.print("Resistance = "); Serial.println(RREF * ratio, 8);
Serial.print("Temperature = "); Serial.println(MachineControl_TempProbes.RTD.readTemperature(RNOMINAL, RREF));
Serial.print("Temperature = "); Serial.println(MachineControl_RTDTempProbe.readTemperature(RNOMINAL, RREF));
}
Serial.println();
delay(100);

MachineControl_TempProbes.selectChannel(1);
MachineControl_RTDTempProbe.selectChannel(1);
Serial.println("CHANNEL 1 SELECTED");
rtd = MachineControl_TempProbes.RTD.readRTD();
rtd = MachineControl_RTDTempProbe.readRTD();
ratio = rtd;
ratio /= 32768;

// Check and print any faults
fault = MachineControl_TempProbes.RTD.readFault();
fault = MachineControl_RTDTempProbe.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (MachineControl_TempProbes.RTD.getHighThresholdFault(fault)) {
if (MachineControl_RTDTempProbe.getHighThresholdFault(fault)) {
Serial.println("RTD High Threshold");
}
if (MachineControl_TempProbes.RTD.getLowThresholdFault(fault)) {
if (MachineControl_RTDTempProbe.getLowThresholdFault(fault)) {
Serial.println("RTD Low Threshold");
}
if (MachineControl_TempProbes.RTD.getLowREFINFault(fault)) {
if (MachineControl_RTDTempProbe.getLowREFINFault(fault)) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (MachineControl_TempProbes.RTD.getHighREFINFault(fault)) {
if (MachineControl_RTDTempProbe.getHighREFINFault(fault)) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (MachineControl_TempProbes.RTD.getLowRTDINFault(fault)) {
if (MachineControl_RTDTempProbe.getLowRTDINFault(fault)) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (MachineControl_TempProbes.RTD.getVoltageFault(fault)) {
if (MachineControl_RTDTempProbe.getVoltageFault(fault)) {
Serial.println("Under/Over voltage");
}
MachineControl_TempProbes.RTD.clearFault();
MachineControl_RTDTempProbe.clearFault();
} else {
Serial.print("RTD value: "); Serial.println(rtd);
Serial.print("Ratio = "); Serial.println(ratio, 8);
Serial.print("Resistance = "); Serial.println(RREF * ratio, 8);
Serial.print("Temperature = "); Serial.println(MachineControl_TempProbes.RTD.readTemperature(RNOMINAL, RREF));
Serial.print("Temperature = "); Serial.println(MachineControl_RTDTempProbe.readTemperature(RNOMINAL, RREF));
}
Serial.println();
delay(100);

MachineControl_TempProbes.selectChannel(2);
MachineControl_RTDTempProbe.selectChannel(2);
Serial.println("CHANNEL 2 SELECTED");
rtd = MachineControl_TempProbes.RTD.readRTD();
rtd = MachineControl_RTDTempProbe.readRTD();
ratio = rtd;
ratio /= 32768;

// Check and print any faults
fault = MachineControl_TempProbes.RTD.readFault();
fault = MachineControl_RTDTempProbe.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (MachineControl_TempProbes.RTD.getHighThresholdFault(fault)) {
if (MachineControl_RTDTempProbe.getHighThresholdFault(fault)) {
Serial.println("RTD High Threshold");
}
if (MachineControl_TempProbes.RTD.getLowThresholdFault(fault)) {
if (MachineControl_RTDTempProbe.getLowThresholdFault(fault)) {
Serial.println("RTD Low Threshold");
}
if (MachineControl_TempProbes.RTD.getLowREFINFault(fault)) {
if (MachineControl_RTDTempProbe.getLowREFINFault(fault)) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (MachineControl_TempProbes.RTD.getHighREFINFault(fault)) {
if (MachineControl_RTDTempProbe.getHighREFINFault(fault)) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (MachineControl_TempProbes.RTD.getLowRTDINFault(fault)) {
if (MachineControl_RTDTempProbe.getLowRTDINFault(fault)) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (MachineControl_TempProbes.RTD.getVoltageFault(fault)) {
if (MachineControl_RTDTempProbe.getVoltageFault(fault)) {
Serial.println("Under/Over voltage");
}
MachineControl_TempProbes.RTD.clearFault();
MachineControl_RTDTempProbe.clearFault();
} else {
Serial.print("RTD value: "); Serial.println(rtd);
Serial.print("Ratio = "); Serial.println(ratio, 8);
Serial.print("Resistance = "); Serial.println(RREF * ratio, 8);
Serial.print("Temperature = "); Serial.println(MachineControl_TempProbes.RTD.readTemperature(RNOMINAL, RREF));
Serial.print("Temperature = "); Serial.println(MachineControl_RTDTempProbe.readTemperature(RNOMINAL, RREF));
}
Serial.println();
delay(1000);
Expand Down
14 changes: 7 additions & 7 deletions examples/Temp_probes_Thermocouples/Temp_probes_Thermocouples.ino
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,31 @@
void setup() {
Serial.begin(9600);
// Initialize temperature probes
MachineControl_TempProbes.begin(TEMPPROBE_TC);
MachineControl_TCTempProbe.begin();
Serial.println("Temperature probes initialization done");
}

void loop() {
//Set CH0, has internal 150 ms delay
MachineControl_TempProbes.selectChannel(0);
MachineControl_TCTempProbe.selectChannel(0);
//Take CH0 measurement
float temp_ch0 = MachineControl_TempProbes.TC.readTemperature();
float temp_ch0 = MachineControl_TCTempProbe.readTemperature();
Serial.print("Temperature CH0 [°C]: ");
Serial.print(temp_ch0);
Serial.println();

//Set CH1, has internal 150 ms delay
MachineControl_TempProbes.selectChannel(1);
MachineControl_TCTempProbe.selectChannel(1);
//Take CH1 measurement
float temp_ch1 = MachineControl_TempProbes.TC.readTemperature();
float temp_ch1 = MachineControl_TCTempProbe.readTemperature();
Serial.print("Temperature CH1 [°C]: ");
Serial.print(temp_ch1);
Serial.println();

//Set CH2, has internal 150 ms delay
MachineControl_TempProbes.selectChannel(2);
MachineControl_TCTempProbe.selectChannel(2);
//Take CH2 measurement
float temp_ch2 = MachineControl_TempProbes.TC.readTemperature();
float temp_ch2 = MachineControl_TCTempProbe.readTemperature();
Serial.print("Temperature CH2 [°C]: ");
Serial.print(temp_ch2);
Serial.println();
Expand Down
3 changes: 2 additions & 1 deletion src/Arduino_MachineControl.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
#include "DigitalOutputsClass.h"
#include "ProgrammableDIOClass.h"
#include "ProgrammableDINClass.h"
#include "TempProbesClass.h"
#include "RTDTempProbeClass.h"
#include "TCTempProbeClass.h"
#include "RtcControllerClass.h"
#include "USBClass.h"
#include "EncoderClass.h"
Expand Down
2 changes: 1 addition & 1 deletion src/CANCommClass.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
* The `CANCommClass` is a subclass of `mbed::CAN` and provides methods to work with the CAN Bus communication protocol on the Portenta Machine Control board.
* It includes initialization of the corresponding LED for CAN.
*/
class CANCommClass: public mbed::CAN {
class CANCommClass: public mbed::CAN { //TODO: Check ARDUINO API VERSION to use Arduino_CAN
public:
/**
* @brief Construct a CANCommClass object.
Expand Down
71 changes: 26 additions & 45 deletions src/TempProbesClass.cpp → src/RTDTempProbeClass.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/**
* @file TempProbesClass.cpp
* @file RTDTempProbeClass.cpp
* @author Leonardo Cavagnis
* @brief Source file for the Temperature Probes connector of the Portenta Machine Control.
* @brief Source file for the Resistance Temperature Detector (RTD) temperature sensor connector of the Portenta Machine Control.
*/

/* Includes -----------------------------------------------------------------*/
#include "TempProbesClass.h"
#include "RTDTempProbeClass.h"

#if __has_include("portenta_info.h")
#include "portenta_info.h"
Expand All @@ -15,45 +15,33 @@ uint8_t* boardInfo();
#endif

/* Functions -----------------------------------------------------------------*/
TempProbesClass::TempProbesClass(PinName ch_sel0_pin,
PinName ch_sel1_pin,
PinName ch_sel2_pin,
PinName rtd_th_pin)
: _ch_sel0{ch_sel0_pin}, _ch_sel1{ch_sel0_pin}, _ch_sel2{ch_sel2_pin}, _rtd_th{rtd_th_pin}
RTDTempProbeClass::RTDTempProbeClass(PinName rtd_cs_pin,
PinName ch_sel0_pin,
PinName ch_sel1_pin,
PinName ch_sel2_pin,
PinName rtd_th_pin)
: MAX31865Class(rtd_cs_pin), _rtd_cs{rtd_cs_pin}, _ch_sel0{ch_sel0_pin}, _ch_sel1{ch_sel0_pin}, _ch_sel2{ch_sel2_pin}, _rtd_th{rtd_th_pin}
{ }

TempProbesClass::~TempProbesClass()
RTDTempProbeClass::~RTDTempProbeClass()
{ }

bool TempProbesClass::begin(uint8_t tempprobe_type, uint8_t io_address) {
bool status = true;

switch(tempprobe_type) {
case TEMPPROBE_RTD:
TempProbesClass::RTD.begin(io_address);
_enableRTD();
break;
case TEMPPROBE_TC:
TempProbesClass::TC.begin();
_enableTC();
break;
default:
status = false;
break;
}
bool RTDTempProbeClass::begin(uint8_t io_address) {
MAX31865Class::begin(io_address);

pinMode(_ch_sel0, OUTPUT);
pinMode(_ch_sel1, OUTPUT);
pinMode(_ch_sel2, OUTPUT);
pinMode(_rtd_th, OUTPUT);

pinMode(PI_0, OUTPUT);
pinMode(PA_6, OUTPUT);
pinMode(_rtd_cs, OUTPUT);

_enable();

return status;
return true;
}

void TempProbesClass::selectChannel(int channel) {
void RTDTempProbeClass::selectChannel(int channel) {

#ifdef TRY_REV2_RECOGNITION
// check if OTP data is present AND the board is mounted on a r2 carrier
Expand Down Expand Up @@ -98,28 +86,21 @@ void TempProbesClass::selectChannel(int channel) {
delay(150);
}

void TempProbesClass::end() {
_disableCS();
}

void TempProbesClass::_enableTC() {
digitalWrite(_rtd_th, LOW);

digitalWrite(PI_0, LOW);
digitalWrite(PA_6, HIGH);
void RTDTempProbeClass::end() {
MAX31865Class::end();

_disable();
}

void TempProbesClass::_enableRTD() {
void RTDTempProbeClass::_enable() {
digitalWrite(_rtd_th, HIGH);

digitalWrite(PI_0, HIGH);
digitalWrite(PA_6, LOW);
digitalWrite(_rtd_cs, LOW);
}

void TempProbesClass::_disableCS() {
digitalWrite(PI_0, HIGH);
digitalWrite(PA_6, HIGH);
void RTDTempProbeClass::_disable() {
digitalWrite(_rtd_cs, HIGH);
}

TempProbesClass MachineControl_TempProbes;
RTDTempProbeClass MachineControl_RTDTempProbe;
/**** END OF FILE ****/
Loading