Ich möchte einen batteriebetriebenen co2-sensor bauen. der ccs811 kann lt. datenblatt im sleep-md betrieben werden (4uA). wie das geht, erschließt sich mir nicht eindeutig : - entweder steht da, man kann das mit der wake-leitung schalten (mittels gpio) - oder man setzt ein register im sensorprozessor was jetzt ?
Reiner D. schrieb: > wie das geht, erschließt sich mir nicht eindeutig : > > - entweder steht da, man kann das mit der wake-leitung schalten (mittels > gpio) > - oder man setzt ein register im sensorprozessor Diese Aussage klemmt in der Logik. Wenn ich sie mal in das übersetze, was du vermutlich meinst, dann steht das nicht im Datenblatt, jedenfalls nicht in diesem hier: https://cdn.sparkfun.com/assets/learn_tutorials/1/4/3/CCS811_Datasheet-DS000459.pdf Dort kommt das Wort "sleep" überhaupt nur ein einziges Mal vor, zusammen mit der Angabe 19 µA (du sagtest "4 µA"?). Ist offensichtlich ein Lapsus im Datenblatt, denn ansonsten heißt es dort immer nur "low power". Jedenfalls steht dort, dass es genau 5 Betriebsmodi gibt, davon zwei mit "low power". Um einen der Modi zu wählen, muss man per I2C in ein Register schreiben. Um das I2C-Interface zu aktivieren (kostet Strom), setzt man nWAKE zum Zugreifen auf ein Register auf low. Wer keinen Strom sparen muss/will, kann nWAKE auch fest auf low legen.
Weil ich da Probleme mit der Funktion habe, schreib ich diesen Thread. Meine Info kommt da her : https://cdn.sparkfun.com/datasheets/BreakoutBoards/CCS811_Programming_Guide.pdf (CCS811 Programming and Interfacing Guide) Orginaltext : "When this pin is logic high the CCS811 enters sleep mode" Leider funktioniert das aber nicht : Das hier klappt zwar vom Stromverbrauch her (Attiny mitgemessen) :
1 | void setup() |
2 | {
|
3 | pinMode(1, OUTPUT); //das ist die onboard-LED |
4 | pinMode(3, OUTPUT); //GPIO für Sensor an (Wake=0) |
5 | digitalWrite(3,0); //Sensor an |
6 | //ccs.begin(); // ***** !!!
|
7 | }
|
8 | |
9 | void loop() |
10 | {
|
11 | digitalWrite(1,HIGH); //LED ein : kurzes Aufleuchten |
12 | delay(100); |
13 | digitalWrite(1,LOW); //LED aus |
14 | //--------------------------------------------------------
|
15 | digitalWrite(3,0); //Sensor an (Wake=0) |
16 | delay(3000); //******17,2 mA*************** |
17 | digitalWrite(3,1); //Sensor aus (Wake=1) |
18 | delay(3000); //******11,6 mA*************** |
Wenn ich aber messen will, und den Sensor initialisiere :
1 | void setup() |
2 | {
|
3 | pinMode(1, OUTPUT); //das ist die onboard-LED |
4 | pinMode(3, OUTPUT); //GPIO für Sensor an (Wake=0) |
5 | digitalWrite(3,0); //Sensor an |
6 | ccs.begin(); // **************** |
7 | }
|
8 | |
9 | void loop() |
10 | {
|
11 | digitalWrite(1,HIGH); //LED ein : kurzes Aufleuchten |
12 | delay(100); |
13 | digitalWrite(1,LOW); //LED aus |
14 | //--------------------------------------------------------
|
15 | digitalWrite(3,0); //Sensor an (Wake=0) |
16 | delay(3000); //******31,0 mA*************** |
17 | digitalWrite(3,1); //Sensor aus (Wake=1) |
18 | delay(3000); //******29,4 mA*************** |
dann sinkt der Strom praktisch nicht mehr ! Weiter : wenn ich den IDLE-Mode aktiviere, geht der Strom wie beschrieben drastisch runter. ABER : Zurück in einen Betriebsmodus (z.b. 1SEC) bedeutet für den Sensor einen Reset, incl. neuer BAseline usw., der CO2-Wert ist dann stets 400 am Anfang.
:
Bearbeitet durch User
Reiner D. schrieb: > Weil ich da Probleme mit der Funktion habe, schreib ich diesen Thread. > > Meine Info kommt da her : https://cdn.sparkfun.com/datasheets/BreakoutBoards/CCS811_Programming_Guide.pdf Du sagtest "Datenblatt", das ist aber keins. Und du sagtest "4 µA", obwohl dort nirgendwo irgendeine µA-Angabe vorkommt. :-( > Orginaltext : "When this pin is logic high the CCS811 enters sleep mode" Das ist praktisch derselbe Lapsus wie im von mir verlinkten Datenblatt. Gemeint ist offensichtlich: "When this pin is logic high the CCS811's I2C interface enters sleep mode". Das hat nichts mit dem Gesamtstromverbrauch zu tun. Das erkennt man klar an der Beschreibung im Datenblatt. Was deinen Code angeht, da sehe ich nicht, wo da irgendetwas zur Initialisierung per I2C in eins der Chip-Register geschrieben wird. Mach es so, wie ich es dem Datenblatt folgend geschrieben habe – dann kann man weitersehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.