Inhoudsopgave:

IOT op batterijen: 7 stappen
IOT op batterijen: 7 stappen

Video: IOT op batterijen: 7 stappen

Video: IOT op batterijen: 7 stappen
Video: [Test] Battery-Powered Raspberry Pi 4 Model B #raspberrypi #IoT #batterypack 2024, November
Anonim
IOT op batterijen
IOT op batterijen

Als uw op batterijen werkende IOT-project met tussenpozen werkt, gebruikt dit circuit slechts 250 nA (dat is 0.000.00025 ampère!) wanneer het inactief is. Normaal gesproken wordt het meeste batterijvermogen verspild tussen activiteiten. Een project dat bijvoorbeeld elke 10 minuten 30 seconden draait, verspilt 95% van de batterijcapaciteit!

De meeste microcontrollers hebben een energiebesparende stand-bymodus, maar ze hebben nog steeds stroom nodig om de processor in leven te houden, ook alle randapparatuur verbruikt stroom. Het kost veel moeite om de stand-bystroom onder de 20-30mA te krijgen. Dit project is ontwikkeld om temperatuur en vochtigheid in bijenkasten te rapporteren. Vanwege de locatie op afstand was batterijvermogen en een celschild voor het rapporteren van gegevens de enige keuze.

Dit circuit werkt met elke controller en 12, 5 of 3V voeding. De meeste elektronicawinkels hebben de componenten die slechts een paar dollar kosten.

Benodigdheden

Weerstanden: 2x1K, 3x10K, 1x470K, 2x1M, 5x10M

Diodes: 2x1N4148, 1xLED

MOSFET: 3x2N7000

Klok: PCF8563 of gelijkwaardig voor microcontroller

Relais: EC2-12TNU voor 12V voeding

EC2-5TNU voor 5V

EC2-3TNU voor 3V

Voeding: OKI-78SR-5/1.5-W36-C 12V naar 5V-converter of zoals vereist door microcontroller

Schakelaar: kort indrukken voor reset, SPDT voor test

Stap 1: Hoe het circuit werkt

Hoe het circuit werkt
Hoe het circuit werkt

De schakeling is vrij eenvoudig:

- Een op batterijen werkend alarm gaat af en zet een schakelaar om

- Stroom vloeit van de batterij naar de controller die opstart en zijn ding doet

-De controller reset het alarm

- Dan gooit de schakelaar om uit te schakelen.

Stap 2: De klok

De klok
De klok

De meeste real-time klokken zouden moeten werken, op voorwaarde dat ze compatibel zijn met je controller en een interrupt (Int) lijn hebben die aangeeft wanneer het alarm afgaat.

Afhankelijk van de specifieke controller en klok moet u een softwarebibliotheek installeren.

Stel uw controller en klok op een prototypebord in en zorg ervoor dat u deze kunt programmeren om de tijd in te stellen, wanneer de volgende onderbreking moet plaatsvinden en hoe u een onderbreking kunt wissen nadat het alarm is afgegaan. Het is veel gemakkelijker om dit nu werkend te krijgen voordat je het definitieve bord gaat bouwen. Zie de laatste stap voor programmeeropmerkingen.

Stap 3: De schakelaar

De schakelaar
De schakelaar

Voor de schakelaar gebruiken we een houdrelais met 2 spoelen.

Door een stroom door de ingestelde spoel te zetten, wordt het relais ingeschakeld. De stroom hoeft maar ongeveer 12 m te lopen en kan dan worden uitgeschakeld terwijl het relais aan blijft.

Zet een soortgelijke puls door de resetspoel om het relais uit te schakelen.

We willen een vergrendelingsrelais, zodat we geen batterijvoeding gebruiken om het relais gesloten te houden. Ook schakelen we het relais "aan" vanuit dit circuit en schakelen het "uit" van de controller wanneer het klaar is.

Het project is gebouwd voor een 12V SLA-batterij. Deze zijn goedkoop (nul aangezien ik er al een had!) en zullen het goed doen in de Canadese winter met een kleine zonnelader.

Het circuit kan worden gebouwd met een 3V-relais met behulp van een paar AA-batterijen. Aangezien het relais 2A bij netspanning kan verwerken, kan het een kleine wandvoedingseenheid (of een tweede relais met grotere capaciteit) schakelen voor apparatuur op netvoeding. Zorg er wel voor dat alles boven 12V zich in een goed geaarde doos en goed geïsoleerd bevindt.

Stap 4: 2N7000 MOSFET

2N7000 MOSFET
2N7000 MOSFET

Dit circuit gebruikt 3 2N7000 N-kanaal MOSFET's (Metal Oxide Semiconductor Field Effect Transistor) met verbeterde modus die als schakelaars worden gebruikt.

Met een prijs van slechts een paar dollar zijn dit behoorlijk opmerkelijke apparaten. Stroom vloeit tussen afvoer (+) en bron (-) wanneer de poortspanningen ongeveer 2V overschrijden. Wanneer "aan" is de Source-Drain-weerstand een ohm of zo. Als er veel megohmes zijn. Dit zijn capacitieve apparaten, dus de poortstroom is net genoeg om het apparaat te "opladen".

Er is een weerstand nodig tussen poort en bron om de poort te laten ontladen wanneer de poortspanning laag is, anders wordt het apparaat niet uitgeschakeld.

Stap 5: Het circuit

Het circuit
Het circuit

De onderbrekingslijn van de klok (INT) zweeft normaal gesproken en is (in de klok) verbonden met aarde wanneer het alarm afgaat. De weerstand van 1M trekt deze lijn hoog tijdens het wachten op het alarm.

U1 werkt als een omvormer omdat we een actieve high nodig hebben om het relais in te schakelen wanneer het alarm afgaat. Het tegenovergestelde van de klokuitvoer. Dit betekent dat U1 altijd in stand-by staat en de batterij constant belast. Gelukkig kunnen we een zeer grote weerstand R1 gebruiken om deze stroom te beperken. Simulaties toonden aan dat dit tot meerdere Gohms kon oplopen! Mijn plaatselijke winkel had slechts 10M-weerstanden, dus ik gebruikte er 5 in serie. 250na is laag genoeg in mijn boek.

U2 is een eenvoudige schakelaar om de ingestelde spoel van het relais van stroom te voorzien.

De 2 diodes zijn nodig om het circuit te beschermen wanneer de stroom naar de relaisspoelen is uitgeschakeld. Het magnetische veld zal instorten en een stroompiek veroorzaken die iets kan beschadigen.

De onbewerkte 12V van de batterij wordt naar een spanningsdeler R6 en R7 geleid. Het middelpunt gaat naar een van de analoge pinnen van de controller, zodat de batterijspanning kan worden gecontroleerd en gerapporteerd.

U4 is een zeer efficiënte DC-naar-DC-converter om de 5V voor de controller te produceren.

Wanneer de controller klaar is, verhoogt hij de Poff-lijn hoog, waardoor U3 wordt ingeschakeld die het relais uitschakelt. De weerstand R4 verschaft een aardingspad voor de poort van U3. De MOSFET is een capacitief apparaat en R4 laat de lading naar aarde stromen, zodat de schakelaar kan worden uitgeschakeld.

De testschakelaar leidt de stroom weg van de microcontroller en naar een LED. Dit is handig voor het testen van dit circuit, maar cruciaal wanneer de controller is aangesloten op een computer voor het programmeren en testen van de code. Sorry, maar ik heb niet getest met stroom van 2 bronnen!

De reset-drukknop was een noodzakelijke bijzaak. Zonder dit is er geen manier om het alarm in te stellen de eerste keer dat het systeem wordt ingeschakeld!!!

Stap 6: Circuitsimulatie

Circuitsimulatie
Circuitsimulatie
Circuitsimulatie
Circuitsimulatie

De simulatie aan de linkerkant toont waarden terwijl het systeem inactief is. Aan de rechterkant is een simulatie wanneer het alarm actief is en de onderbrekingslijn laag wordt getrokken.

De werkelijke spanningen kwamen redelijk goed overeen met de simulatie, maar ik heb geen manier om de werkelijke stroomafname te bevestigen.

Stap 7: constructie en programmering

Constructie en programmering
Constructie en programmering

De schakeling is in een smalle strook gebouwd om ongeveer het schakelschema te volgen. Niets ingewikkelds.

Zodra het programma start, moet het alarm worden gereset. Dit stopt de stroom door de ingestelde spoel van het relais. Het programma kan zijn ding doen en na voltooiing het alarm instellen en alles uitschakelen door Poff hoog te zetten.

Afhankelijk van de specifieke controller en klok moet u een softwarebibliotheek installeren. Deze bibliotheek zal voorbeeldcode bevatten.

De interface en het programmeren van de klok moeten worden getest op een prototypebord voordat het circuit wordt bedraden. Voor de Arduino en H2-8563 gaat de klok SCL naar A5 en SDA naar A4. De Interrupt gaat naar de INT die in het circuit wordt weergegeven.

Voor de Arduino bevat de testcode zoiets als:

#erbij betrekken

#include Rtc_Pcf8563 rtc;

rtc.initClock();

// stel datum en tijd in om te beginnen. Niet nodig als u alleen alarmen op het uur of de minuut wilt. rtc.setDate(dag, weekdag, maand, eeuw, jaar); rtc.setTime(uur, min, sec);

//Zet alarm

rtc.setAlarm(mm, hh, 99, 99); // Min, uur, dag, weekdag, 99 = negeren

//Wis alarm rtc.clearAlarm(); }

Aanbevolen: