From dd8c8fc3c8858855a2af220659db91cbc33ab244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20R=C3=B6mer?= Date: Sun, 30 Jul 2023 15:53:16 +0200 Subject: [PATCH] disable SPI between display updates, fix schematic (#24) - fix high power consumption of display in sleep mode by disabling SPI (driving SCK low) - remove "unconnected" from MCU pin 20 (AREF) as it is connected - update README and manual --- README.md | 14 +++++++++++--- thermidity-avr/thermidity.c | 18 +++++++++++++++++- thermidity-kicad/thermidity.kicad_pcb | 14 +++++++------- thermidity-kicad/thermidity.kicad_sch | 1 - thermidity-manual/Thermidity-de.odt | Bin 895028 -> 895052 bytes thermidity-manual/Thermidity-de.pdf | Bin 251265 -> 251264 bytes 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b7f1848..2cb68b9 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,9 @@ A precision thermistor and precision low-voltage humidity sensor are used: ## Power Consumption -Estimated average power consumption is about 110µA when measuring every 32 +Estimated average power consumption is about 90µA when measuring every 32 seconds and updating the display once in about 5 minutes, hopefully giving an -operating time of about 12 months with 3 AAA batteries (1100 mAh, 6% +operating time of at least 12 months with 3 AAA batteries (1100 mAh, 6% self-discharge). The consumption of each component at 3.8V and 22°C is about: @@ -82,7 +82,15 @@ lifetime and to save more power. Below the cutoff voltage of 3.0V, the watchdog is disabled to stop measuring and updating the display, to at least delay total discharge of the batteries. -Consumption of the MCU then is at about 1µA and 24µA of the display. +Consumption of the MCU then is at about 1µA and 19µA of the display. The clock of unused modules TWI, all three timers and USART is switched off to reduce power consumption. + +Disabling the ADC between measurements and the SPI between display updates both +contributes to a significant reduction of power consumption. With an active SPI, +consumption of the display including its peripheral is extremely unstable and +varies between some tens of microamps and several milliamps. When driving the +enable pin of the display low, consumption is stable at about 60µA. When not +driving the enable pin low and disabling SPI (driving SCK pin low) consumption +is at about 14µA. diff --git a/thermidity-avr/thermidity.c b/thermidity-avr/thermidity.c index 0439f86..0c75c77 100644 --- a/thermidity-avr/thermidity.c +++ b/thermidity-avr/thermidity.c @@ -102,7 +102,6 @@ static void initPins(void) { static void initSPI(void) { SPCR |= (1 << SPR0); SPCR |= (1 << MSTR); - SPCR |= (1 << SPE); } /** @@ -157,6 +156,21 @@ static void disableADC(void) { ADCSRA &= ~(1 << ADEN); } +/** + * Enables SPI. + */ +static void enableSPI(void) { + SPCR |= (1 << SPE); +} + +/** + * Disables SPI. + */ +static void disableSPI(void) { + SPCR &= ~(1 << SPE); + PORT_SPI &= ~(1 << PIN_SCK); +} + /** * Stops the clock of unused modules to reduce power consumption. */ @@ -211,6 +225,7 @@ int main(void) { if (getMVBat() < BAT_LOW / 5) { powerDown(); } else { + enableSPI(); if (updates > DISP_MAX_FAST) { // make a full update after a certain number of fast // updates to avoid ghosting @@ -221,6 +236,7 @@ int main(void) { updates++; } } + disableSPI(); } } } diff --git a/thermidity-kicad/thermidity.kicad_pcb b/thermidity-kicad/thermidity.kicad_pcb index 5a62726..c531a89 100644 --- a/thermidity-kicad/thermidity.kicad_pcb +++ b/thermidity-kicad/thermidity.kicad_pcb @@ -90,7 +90,7 @@ (net 13 "unconnected-(J2-Pad13)") (net 14 "Net-(J3-Pad2)") (net 15 "Net-(R2-Pad1)") - (net 16 "unconnected-(U1-Pad20)") + (net 16 "Net-(C2-Pad2)") (net 17 "unconnected-(U1-Pad1)") (net 18 "unconnected-(U1-Pad2)") (net 19 "unconnected-(U1-Pad7)") @@ -98,7 +98,7 @@ (net 21 "unconnected-(U1-Pad14)") (net 22 "unconnected-(U1-Pad19)") (net 23 "unconnected-(U1-Pad22)") - (net 24 "Net-(U1-Pad25)") + (net 24 "Net-(R3-Pad1)") (net 25 "unconnected-(U1-Pad27)") (net 26 "unconnected-(U1-Pad28)") (net 27 "unconnected-(U1-Pad30)") @@ -312,7 +312,7 @@ (pad "1" smd roundrect (at -1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.208333) (net 15 "Net-(R2-Pad1)") (pintype "passive") (tstamp dbd40c88-e0eb-4219-8afa-7a8ed17c8238)) (pad "2" smd roundrect (at 1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.208333) - (net 24 "Net-(U1-Pad25)") (pintype "passive") (tstamp ba3313dc-6f43-41a6-9221-c351d7cfd230)) + (net 24 "Net-(R3-Pad1)") (pintype "passive") (tstamp ba3313dc-6f43-41a6-9221-c351d7cfd230)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -688,7 +688,7 @@ (pad "19" smd rect (at 4.25 1.2 180) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 22 "unconnected-(U1-Pad19)") (pinfunction "ADC6") (pintype "input+no_connect") (tstamp 603e2d15-7462-46ce-9abb-d2c0d449cccc)) (pad "20" smd rect (at 4.25 0.4 180) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") - (net 16 "unconnected-(U1-Pad20)") (pinfunction "AREF") (pintype "passive+no_connect") (tstamp b95431fa-abbf-4092-bf8a-60ec5322edd5)) + (net 16 "Net-(C2-Pad2)") (pinfunction "AREF") (pintype "passive") (tstamp b95431fa-abbf-4092-bf8a-60ec5322edd5)) (pad "21" smd rect (at 4.25 -0.4 180) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (pinfunction "GND") (pintype "passive") (tstamp b3ecc1f1-c79b-410c-a290-31dfcf9a1f91)) (pad "22" smd rect (at 4.25 -1.2 180) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") @@ -698,7 +698,7 @@ (pad "24" smd rect (at 4.25 -2.8 180) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "Net-(R2-Pad1)") (pinfunction "PC1") (pintype "bidirectional") (tstamp a1d0eaf4-2b80-4309-a367-749b4a7ce1b3)) (pad "25" smd rect (at 2.8 -4.25 270) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") - (net 24 "Net-(U1-Pad25)") (pinfunction "PC2") (pintype "bidirectional") (tstamp 51e410c5-bd5a-49a1-aa49-ba743f2b80a6)) + (net 24 "Net-(R3-Pad1)") (pinfunction "PC2") (pintype "bidirectional") (tstamp 51e410c5-bd5a-49a1-aa49-ba743f2b80a6)) (pad "26" smd rect (at 2 -4.25 270) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 32 "Net-(R4-Pad1)") (pinfunction "PC3") (pintype "bidirectional") (tstamp 58c715ff-aae5-4a10-a674-1f34d1fc4446)) (pad "27" smd rect (at 1.2 -4.25 270) (size 1.6 0.55) (layers "F.Cu" "F.Paste" "F.Mask") @@ -817,7 +817,7 @@ (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp e6fafe3d-9f93-4ea1-8d7e-1710cdf87588)) (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp ea5574e6-ac7f-411b-bb91-55a5f04942bd)) (pad "1" smd roundrect (at -1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.208333) - (net 24 "Net-(U1-Pad25)") (pintype "passive") (tstamp 43d0b5da-5dc9-4b4f-8261-609cadfb11d9)) + (net 24 "Net-(R3-Pad1)") (pintype "passive") (tstamp 43d0b5da-5dc9-4b4f-8261-609cadfb11d9)) (pad "2" smd roundrect (at 1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.208333) (net 1 "GND") (pintype "passive") (tstamp e0ebdbb5-b8d1-40e8-a6ec-a6422bc48f7a)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" @@ -861,7 +861,7 @@ (pad "1" smd roundrect (at -1.5625 0) (size 1.325 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.188679) (net 1 "GND") (pintype "passive") (tstamp 1ebd1692-c054-4c86-9be2-f5a89376df10)) (pad "2" smd roundrect (at 1.5625 0) (size 1.325 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.188679) - (net 16 "unconnected-(U1-Pad20)") (pintype "passive+no_connect") (tstamp 5944d779-7015-4d36-81ee-9e8585a6c876)) + (net 16 "Net-(C2-Pad2)") (pintype "passive") (tstamp 5944d779-7015-4d36-81ee-9e8585a6c876)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) diff --git a/thermidity-kicad/thermidity.kicad_sch b/thermidity-kicad/thermidity.kicad_sch index 50b5286..2001643 100644 --- a/thermidity-kicad/thermidity.kicad_sch +++ b/thermidity-kicad/thermidity.kicad_sch @@ -1006,7 +1006,6 @@ (no_connect (at 161.29 71.12) (uuid 35b42f47-b21a-4ba0-8a0a-dda5c4b4b65f)) (no_connect (at 161.29 101.6) (uuid 37cbc4c9-7e49-4442-bb58-edb885e6f9ca)) (no_connect (at 161.29 116.84) (uuid 44ca8a53-cfca-4c16-8719-e64747603dc8)) - (no_connect (at 130.81 66.04) (uuid 47c0c60f-5be4-4a98-a26a-24d33245dc91)) (no_connect (at 161.29 114.3) (uuid 5b7c7cfd-369c-4368-8063-c4146e959fc8)) (no_connect (at 161.29 99.06) (uuid 67b09308-2ba7-4b89-87b7-574334aba39e)) (no_connect (at 201.93 68.58) (uuid 67fe53b8-47f6-4fa3-a5ef-197074934bd1)) diff --git a/thermidity-manual/Thermidity-de.odt b/thermidity-manual/Thermidity-de.odt index 0264ddad83a816f7d7958bec3746d4435a8bbe07..4b8b302005ad21bf217c3d858f6151d00025d149 100644 GIT binary patch delta 12945 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
  • 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 Y{yB`};?K0^Q=onUsGw}}Kl1_kfBHc4VE_OC delta 12988 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