Hi allen
Ik ben bijna klaar met een project, waarbij ik de aanwezigheid van personen in een ruimte controleer, door middel van een ToF (time of flight) sensor. Deze elektronica zit in een kastje welk vrij op te hangen is, werkt op batterij(9V blok) en verstuurt zijn data middels RF (433MHz)
Nu heb ik een probleem, wat mij wat verraste, ik heb het prototype begin deze week afgerond, echter, na het controleren op de batterijduur bleek dat de batterij na 24 uur al op was. Dat is niet de bedoeling. Het zou immers op zijn minst een aantal weken moeten kunnen werken.
Ik weet dat er wat standby mogelijkheden zijn, zowel voor de ToF sensor als voor de AtMega. Echter, ik weet niet hoe ik ervoor zorg dat de AtMega/ToF ook weer snel uit zijn standby komt. De ToF sensor stuurt elke 50ms een andere waarde waardoor er nooit een constante waarde is als er niemand in de ruimte is, wat geen probleem is voor de werking maar wel de apparatuur wakker houdt. (denk aan millimeters verschil constant)
Zouden jullie misschien eens naar het schema en code willen kijken?
Please be aware: I'm not using the adafruit ToF sensor!!! instead I'm using the ST-VL53L1X
datasheet ToF sensor: https://www.st.com/resource/en/datasheet/vl53l1x.pdf
datasheet LM7805: https://asset.conrad.com/media10/add/160267/c1/-/en/000179205DS01/data…
datasheet MCP1700: https://docs.rs-online.com/5b2b/0900766b80dd189b.pdf
SCHEMA: https://imgur.com/a/K3L4A8Q
code:
/* THEBULB. THE SO-LOO-TION SENSOR */
#include <Wire.h>
#include <VL53L1X.h>
VL53L1X sensor;
void setup()
{
Serial.begin(115200);
Wire.begin();
Wire.setClock(400000); // use 400 kHz I2C
pinMode(LED_BUILTIN,OUTPUT);
pinMode(7, OUTPUT);
pinMode(12, OUTPUT);
sensor.setTimeout(500);
if (!sensor.init())
{
Serial.println("Let op: de sensor wordt momenteel niet gedetecteerd. Controleer aansluitingen. ");
while (1);
}
sensor.setDistanceMode(VL53L1X::Long);
sensor.setMeasurementTimingBudget(50000);
sensor.startContinuous(100);
}
void loop()
{
Serial.print(sensor.read());
if (sensor.readRangeContinuousMillimeters () <=1000 ) { //schakelafstand wordt hier ingevoerd. Onder deze waarde is de schakeling actief.
digitalWrite (LED_BUILTIN, HIGH);
digitalWrite (7, HIGH);
digitalWrite (12, HIGH);
}else { //hoger dan de schakelafstand.
digitalWrite (LED_BUILTIN, LOW);
digitalWrite (7, LOW);
digitalWrite(12, LOW);
}
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT");}
Serial.println();
}