Featured Post

Site Navigation is in the Left Column

Wednesday, September 22, 2021

Designing a Software Testing Mode

To test some of the logic in the process code, I am building a testing module that will allow me to simulate temperature changes and pressure changes.  I have already confirmed the transducers are all working as planned.  But now I need to run through scenarios on the bench.


Quad Relay Library improvements

I redesigned the QR library to be easier to manage.  I converted the relay control portion into its own class that is wrapped in the QR class.  This allows one piece of code to be instantiated for all 4 relays. If modifications or features are added, this will allow them to be deployed in one location instead of 4.  It also allows the library to be easily expanded in the event the Quad Relay module is expanded to 8 relays in the future.

In addition to all of this, it makes a large portion of the code re-usable in memory.  This makes the program smaller.

Tuesday, September 14, 2021

Added Logging Improvements

Added temp and pressure units to the data log.  This was necessary in order to track changes to temperature and pressure options.  Otherwise changes in pressure units would appear to be anomalies in the data log.

I also improved the Log Library by adding the ability to write custom log headers to the log file at run-time.

Monday, September 13, 2021

HDI Updated to Include Dynamic Temperature Unit Conversion

I added the ability for the HDI to dynamically switch between temperature units.

I updated my MCP9600 library to deal with temperature unit symbology, too.

The library now supports C, F, K, and R temperature scales.

HDI Updated to Include Dynamic Pressure Unit Conversion

I have added the ability to dynamically convert the display between different pressure units.  The HDI currently uses Pa, kPa, and psi.  But my MPR library supports several other pressure units, including Pa, kPa, psi, atmospheres (both standard and technical) Torr, Bar, Bayre, inHg, mmHg, inH2O, mmH2O and others.

I added a Temperature unit symbology to the library, too.  This allows you to fetch the symbol for the the pressure you are using by function call.

Since I am using an absolute pressure transducer, I can easily convert between pressure units by a simple calculation using the conversion factors of the source unit and the target unit.

Sunday, September 5, 2021

24 Hours with no Error

Both pressure and temperature errata appears to be fixed.  Data collected every second for 24 hours has no sign of errata.

Saturday, September 4, 2021

Long-term Testing on Temperature and Pressure Errata

Testing has began to see if temperature and pressure errata is resolved. 

Pressure Errata Resolved

The pressure transducer had an issue similar to the temperature transducer.  Once again, the errata was a specific number being returned, so it could be easily filtered out.

Pressure Accuracy Confirmation

I was able to confirm the accuracy of the MPR pressure transducer.

I had a concern that it was not matching official barometric pressure readings for this area.  I found that the official measurements are always adjusted for temperature and altitude.  Effectively, official measurements are what the barometric pressure would be if the measurement was taken at 32F (0C) at sea level.

Once I discovered this, I found the official "station" measurements and found the MPR device is reading accurate to 100 Pa, or about 0.1%.  That is pretty good for a $20 pressure transducer.

Pressure Errata Realized

While troubleshooting the temperature errata, I discovered a similar issue with the pressure readings.  Once in a while, I will get a bogus pressure reading.  I have began a logging operation in an attempt to locate the issue.

Temperature Errata Resolved

I believe the temperature errata has been resolved.  The MCP9600 apparently has a glitch that causes it to return a full-scale reading once in a while.  I checked the data-ready flag processing etc. and found no issues.  Finally (using the new LogFile library) I was able to isolate the problem.  The raw data was coming from the MCP9600 incorrectly.

I was able to confirm that others were having this same issue.  So, I had to resolve the issue in software.  Fortunately, the errant data was uniform and I was able to filter out that particular value.  If that particular value is returned from the MCP9600, I simply poll it again for new data.

This will need to be monitored in a long-term test, but I am confident it is resolved.