Intro
Another element from our design kit is an LCD display. It is 4x20 unit made by Midas Displays and driven by RW1063 chipset, which seems to be designed with Hitachi HD44780 compatibility in mind, including pin-to-pin compatibility (as can be seen on pictures from official datasheets)
but with some enhancements, like additional communication interfaces, including:
- standard parallel interface (4 or 8 bit),
- I2C interface,
- SPI interface,
Our module was configured to support I2C protocol only.
Unboxing
Our display arrived with the rest of the kit, well protected from damage during the transport:
{gallery}LCD module unboxing |
---|
as can be seen from the photos above, even module connector is an familiar 16 pin SIL, but with different pinout than the parallel version:
One can even notice (unpopulated) field, usually used by LCD manufacturers to install voltage inverter for modules powered from the voltage lower than about 5V.
Software
Early in the project, javagoza have done great work researching usable libraries for this LCD module and then created and shared his own version of the library - more details in the thread below:
Forum thread about driving the LCD display
As my project doesn't involve connecting this LCD to the Raspberry PI, I have decided to use one of the libraries he referenced:
https://github.com/JeffVi/Arduino-I2C-RW1063-0B-002/
with minor modification - as I was going to use two displays with different libraries, naming conflict has occurred. Arduino-I2C-RW1063 library defines module's I2C address as a preprocessor directive:
#define addr 0x3C
which conflicted with the variable named "addr" in the other library, so I had to change it's name to something different.
What to test
During my research about the impact of environment to the operation of LCD displays, I have found interesting mentions about the necessity of adjusting contrast voltage for different temperatures, when Vo setting for room temperature can lead to excessive contrast in high temperatures (resulting in the increased visibility of the background) and limited contrast in low temperatures.
According to this data, there are auto-compensating LCD module versions available, but in other cases one should add Vo voltage thermal adjustment circuit when wide operating temperature range is expected.
https://www.orientdisplay.com/knowledge-base/lcd-basics/voltage-temperature-compensation/
https://pacificdisplay.com/lcd_cont_adj.htm
Based on this information, I have decided to test LCD display properties in different temperatures.
Test setup
As a test setup, I have built battery powered module around Arduino Pro Mini clone (selected because proper operating voltage: 5V and short length - allowing for installation along 16 pin LCD connector on the prototyping board), with two LCD modules:
- one Midas MC42005A6W-SPTLYI-V2
- and one typical HD44780 2x16 with PCF8574 add-on module for I2C communication (as a reference)
and AM2320 I2C temperature and humidity sensor.
and put inside a sealed food container, resulting in makeshift construction as below:
First observations
To obtain a reference, displays at room temperature were examined. First, our reference module
one can notice uneven backlight - not that noticeable in real operation but evident on the photo. Then - our test display:
as can be seen, backlight with series 33Ω resistor is barely visible, but equally distributed on the whole LCD surface. Fonts are sharp and background is not visible.
Heating test
My first test was to put the display in hot air stream (weather got worse so I didn't have access to direct sunlight as in previous tests).
as can be seen, the temperature is't very high (module is specified at up to 70°C when operating), but the display area isn't distorted - maybe the background is slightly more visible, but it is not impairing the operation.
Freezer test
As our test display is specified to work at the temperature range -20°C ÷ 70°C, it was put to the freezer next. After some time, enclosure was removed and display quality checked (initially without opening the box)
as can be seen, something happened to temperature measurement on our test display, but otherwise both are working correctly and fonts are readable, but the lid somewhat obscures the view. So - let's open it (and observe resulting condensation)
as can be seen, temperature reading has returned (probably there was a problem with parameters of calling floating point printing function - when resulting text was going to be too wide, it refused to write anything).
As a side note - we can see relative humidity reaches 100% and condensation form (not very visible on the photo, but both displays were quickly covered in ice forming from condensation appearing on cold surfaces - by the way, that was the effect I always wanted to obtain in Waterproof/Extreme challenges). Another observation is that display refresh slowed in noticeable way - one could see when characters were redrawn one-by-one.
After a while, image on the reference LCD deteriorated, probably because of the water inducted leakage
but this problem was not observed in our test display. Fortunately, after powering-down and letting them dry, both displays were operational again.
Conclussions
After the test we have learned that both reference and tested displays can operate in the temperature range of -12°C ÷ 40°C displaying readable text (without requiring contrast correction), but in low temperatures their speed is visibly impaired, that could be problematic for some types of user interfaces (for example menu based).