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
TempProbes class refactoring
  • Loading branch information
leonardocavagnis committed Jul 25, 2023
commit 478437fc1174a10fba4df3aad1895570a3c3b017
69 changes: 34 additions & 35 deletions examples/Temp_probes_RTD/Temp_probes_RTD.ino
Original file line number Diff line number Diff line change
Expand Up @@ -25,121 +25,120 @@
void setup() {
Serial.begin(9600);
Serial.println("MAX31865 PT100 Sensor Test!");
temp_probes.rtd.begin(THREE_WIRE);
temp_probes.enableRTD();
MachineControl_TempProbes.begin(TEMPPROBE_RTD, THREE_WIRE);
}

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

// Check and print any faults
uint8_t fault = temp_probes.rtd.readFault();
uint8_t fault = MachineControl_TempProbes.RTD.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (temp_probes.rtd.getHighThresholdFault(fault)) {
if (MachineControl_TempProbes.RTD.getHighThresholdFault(fault)) {
Serial.println("RTD High Threshold");
}
if (temp_probes.rtd.getLowThresholdFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowThresholdFault(fault)) {
Serial.println("RTD Low Threshold");
}
if (temp_probes.rtd.getLowREFINFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowREFINFault(fault)) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (temp_probes.rtd.getHighREFINFault(fault)) {
if (MachineControl_TempProbes.RTD.getHighREFINFault(fault)) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (temp_probes.rtd.getLowRTDINFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowRTDINFault(fault)) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (temp_probes.rtd.getVoltageFault(fault)) {
if (MachineControl_TempProbes.RTD.getVoltageFault(fault)) {
Serial.println("Under/Over voltage");
}
temp_probes.rtd.clearFault();
MachineControl_TempProbes.RTD.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(temp_probes.rtd.readTemperature(RNOMINAL, RREF));
Serial.print("Temperature = "); Serial.println(MachineControl_TempProbes.RTD.readTemperature(RNOMINAL, RREF));
}
Serial.println();
delay(100);

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

// Check and print any faults
fault = temp_probes.rtd.readFault();
fault = MachineControl_TempProbes.RTD.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (temp_probes.rtd.getHighThresholdFault(fault)) {
if (MachineControl_TempProbes.RTD.getHighThresholdFault(fault)) {
Serial.println("RTD High Threshold");
}
if (temp_probes.rtd.getLowThresholdFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowThresholdFault(fault)) {
Serial.println("RTD Low Threshold");
}
if (temp_probes.rtd.getLowREFINFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowREFINFault(fault)) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (temp_probes.rtd.getHighREFINFault(fault)) {
if (MachineControl_TempProbes.RTD.getHighREFINFault(fault)) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (temp_probes.rtd.getLowRTDINFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowRTDINFault(fault)) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (temp_probes.rtd.getVoltageFault(fault)) {
if (MachineControl_TempProbes.RTD.getVoltageFault(fault)) {
Serial.println("Under/Over voltage");
}
temp_probes.rtd.clearFault();
MachineControl_TempProbes.RTD.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(temp_probes.rtd.readTemperature(RNOMINAL, RREF));
Serial.print("Temperature = "); Serial.println(MachineControl_TempProbes.RTD.readTemperature(RNOMINAL, RREF));
}
Serial.println();
delay(100);

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

// Check and print any faults
fault = temp_probes.rtd.readFault();
fault = MachineControl_TempProbes.RTD.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (temp_probes.rtd.getHighThresholdFault(fault)) {
if (MachineControl_TempProbes.RTD.getHighThresholdFault(fault)) {
Serial.println("RTD High Threshold");
}
if (temp_probes.rtd.getLowThresholdFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowThresholdFault(fault)) {
Serial.println("RTD Low Threshold");
}
if (temp_probes.rtd.getLowREFINFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowREFINFault(fault)) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (temp_probes.rtd.getHighREFINFault(fault)) {
if (MachineControl_TempProbes.RTD.getHighREFINFault(fault)) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (temp_probes.rtd.getLowRTDINFault(fault)) {
if (MachineControl_TempProbes.RTD.getLowRTDINFault(fault)) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (temp_probes.rtd.getVoltageFault(fault)) {
if (MachineControl_TempProbes.RTD.getVoltageFault(fault)) {
Serial.println("Under/Over voltage");
}
temp_probes.rtd.clearFault();
MachineControl_TempProbes.RTD.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(temp_probes.rtd.readTemperature(RNOMINAL, RREF));
Serial.print("Temperature = "); Serial.println(MachineControl_TempProbes.RTD.readTemperature(RNOMINAL, RREF));
}
Serial.println();
delay(1000);
Expand Down
17 changes: 7 additions & 10 deletions examples/Temp_probes_Thermocouples/Temp_probes_Thermocouples.ino
Original file line number Diff line number Diff line change
Expand Up @@ -21,34 +21,31 @@
void setup() {
Serial.begin(9600);
// Initialize temperature probes
temp_probes.tc.begin();
MachineControl_TempProbes.begin(TEMPPROBE_TC);
Serial.println("Temperature probes initialization done");
// Enables Thermocouples chip select
temp_probes.enableTC();
Serial.println("Thermocouples enabled");
}

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

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

//Set CH2, has internal 150 ms delay
temp_probes.selectChannel(2);
MachineControl_TempProbes.selectChannel(2);
//Take CH2 measurement
float temp_ch2 = temp_probes.tc.readTemperature();
float temp_ch2 = MachineControl_TempProbes.TC.readTemperature();
Serial.print("Temperature CH2 [°C]: ");
Serial.print(temp_ch2);
Serial.println();
Expand Down
89 changes: 80 additions & 9 deletions src/TempProbesClass.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
/**
* @file TempProbesClass.cpp
* @author Leonardo Cavagnis
* @brief Source file for the Temperature Probes connector of the Portenta Machine Control.
*/

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

#if __has_include("portenta_info.h")
Expand All @@ -7,6 +14,45 @@ uint8_t* boardInfo();
#define PMC_R2_SKU (24 << 8 | 3)
#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}
{ }

TempProbesClass::~TempProbesClass()
{ }

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;
}

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

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

return status;
}

void TempProbesClass::selectChannel(int channel) {

#ifdef TRY_REV2_RECOGNITION
Expand All @@ -27,28 +73,53 @@ void TempProbesClass::selectChannel(int channel) {
}
#endif
#undef TRY_REV2_RECOGNITION

for (int i=0; i<3; i++) {
ch_sel[i] = (i == channel ? 1 : 0);
switch(channel) {
case 0:
digitalWrite(_ch_sel0, HIGH);
digitalWrite(_ch_sel1, LOW);
digitalWrite(_ch_sel2, LOW);
break;
case 1:
digitalWrite(_ch_sel0, LOW);
digitalWrite(_ch_sel1, HIGH);
digitalWrite(_ch_sel2, LOW);
break;
case 2:
digitalWrite(_ch_sel0, LOW);
digitalWrite(_ch_sel1, LOW);
digitalWrite(_ch_sel2, HIGH);
break;
default:
digitalWrite(_ch_sel0, LOW);
digitalWrite(_ch_sel1, LOW);
digitalWrite(_ch_sel2, LOW);
break;
}
delay(150);
}

void TempProbesClass::enableTC() {
rtd_th = 0;
void TempProbesClass::end() {
_disableCS();
}

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

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

void TempProbesClass::enableRTD() {
rtd_th = 1;
void TempProbesClass::_enableRTD() {
digitalWrite(_rtd_th, HIGH);

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

void TempProbesClass::disableCS() {
void TempProbesClass::_disableCS() {
digitalWrite(PI_0, HIGH);
digitalWrite(PA_6, HIGH);
}

TempProbesClass temp_probes;
TempProbesClass MachineControl_TempProbes;
/**** END OF FILE ****/
Loading