Ik weet het, er zijn een flink aantal instructables op automatiseren het Bewateren van uw planten. Dit gebeurt meestal rond een Arduino. Ik besloot maar een beetje van een goedkopere oplossing met één van de Arduino little brothers, de Attiny45, maar het waarschijnlijk met een Attiny13 ook werken zou. (bevestigd, het doet)
Het circuit is heel simpel. Een luchtvochtigheid sensor in bijlage tussen Vcc en Pin 3 (= analoge pin2) vormt een voltage divider. Als de bodem droog wordt, de weerstand van de sensor neemt toe en de spanning op de pin3 daalt.
Als het daalt tot onder het niveau van het niveau ingesteld met P1, weet de Attiny de grond is te droog en maakt van pin 7 hoog. Pin 7-feeds in een solid state relais - 39MF22 - waarmee wordt overgeschakeld op een pomp die is onderdompelen in een waterreservoir.
Ik heb de 39MF22 besloten om geen andere reden dan dat het was erg goedkoop.
De zenerdiode D1 is er ter bescherming van de chip. Als er een lange lijn afkomstig van de vochtigheid sensor, spanningspieken kunnen worden overgedragen, vandaar de zenerdiode. Ik zal het jumperblock later bespreken
Tot dusver de Attiny heeft niets gedaan meer dan fungeren als een Comparateur en in feite kan worden vervangen door een 741 (als je vergeet over pin campatibility), maar dat een microcontroller, kan het een paar meer dingen doen. (wil je doen met een 741 op-amp, kijk hier)
Submersible pompen meestal niet graag running droog worden overgelaten, zodat de Attiny controleert het waterpeil door middel van een switch (S1) die in mijn geval een riet overschakelen op de buitenkant van de container met een magneet op een zwevende apparaat IN de container. U kunt ook een tilt-switchor een mechanische schakelaar geactiveerd door een zwevende apparaat. De eenvoudigste vorm die ik heb gezien was een drijvende rubber ducky aangesloten op een switch via een tekenreeks. Als het waterpeil te laag kreeg, zou de ducky trek aan de switch.
Als je genoeg fantasie hebt, je kon bijvoorbeeld attache een LDR of een NTC tussen Pin 1 en grond en laat het drenken alleen worden gedaan 's nachts, in de ochtend, tijdens de mid dag of wanneer het het heetste moment van de dag was.
Afbeelding 2 toont de montage van de onderdelen op een PCB. Als ik snel de schakeling testen wilde, had ik niet gemonteerd sommige onderdelen nog. Het heeft een beetje meer onderdelen dan in de vorige foto en dat is omdat ik een standaard 7805 gebaseerd voeding toegevoegd
Afbeelding 3 toont de PCB (downloaden) het heeft sommige rode dingetjes op, en ik zal deze later. Wees ervan bewust dat deze PCB wordt gezien van de component kant en daarom direct bruikbaar voor de warmteoverdracht: In het kort: afdrukken op glanzend papier, zet dat op de copperside van een stuk van schoon en vetvrij PCB en Pipetteer die met behulp van een heet strijkijzer. Etch in de HCl en H2O2 (mijn voorkeur)
Afbeelding 4 toont de vochtigheid sensor die ik gebruik. Er is een heleboel discussie over vocht sensoren, maar meestal komt het neer op 2 gegalvaniseerd spikes of een gips-sensor. Ik heb zowel gebruikt en ik liever de gegalvaniseerde spikes. Makkelijk te maken, makkelijk te gebruiken. Ja maar wat over corrosie?
Yep is er corrosie, vooral wanneer een stroom stroomt door de spikes (alhoewel er heel weinig). en dat is waar de jumperblock in het circuit komt. Voor de eenvoud ben ik de spikes voeding alleen uit de hoofdlijn, dus er is een continue spanning en een continue stroom en ja dat corrosie versnelt.
Je kon koos echter om te voeden de spikes van een digitale i/o pin bijvoorbeeld Pin 5. Ik kon heb die optie in de PCB-design met een jumper 3 prong, maar dat leek een beetje dwaas zoals besloot ik al dat i was just gonna de main line gebruiken, maar als u wilt voeden van Pin 5 dan eens een kijkje op het PCB-design. Het gaat om een koperen traceren onderbreken en het uitvoeren van een draad. Dat is allen daar is aan het. De software is al geschikt voor het. De veranderingen zijn aangegeven in rood op de PCB-design
Gewoon een beetje meer over de sensor en een weerstand R1. In het ideale geval heeft R1 dezelfde waarde als uw sensor over haar 'gewoon nat genoeg, kon gebruiken wat water' resistentie heeft. Dus, wanneer u uw sensor hebt gemaakt, plak het in uw bodem op een moment dat het jcould gebruiken wat water. Dus niet wanneer je de bodem is bot droog, maar op een moment je denken, Nou, ik kan water vandaag, maar misschien het zal houden tot tomoro.
Stok in je sensor en meten zijn weerstand. Koos die als weerstand voor uw R1. In mijn geval was het 10 k, maar veel hangt af van de aard van de bodem, maar ook op de afstand tussen de pieken. Ik heb ze dicht bij elkaar, maar je kon kiezen om ze op tegenovergestelde uiteinden van uw bed van de plant...
Software:
------
/ * Tuin 3
april 2012
Sensoren:
-Vochtigheid spike op analoge PIN2-
*
*----------------------Humid------------------------------
* Schema:
* [Grond]--[10k-pad-weerstand]--| --[Spikes]--[Vcc]
*
* Analoge Pin 2
*
*
ATTiny pinnen
Fysieke Analoog-Digitaal
1 0 5 reset, PinChange Interrupt
2 3 3 INT0, 3
3 2 4 INT0, 4
4 grond
5 0 INT0, 0
6 1 INT0, 1
7 1 2 INT0, 2
8 Vcc
*/
PIN definities
Const byte levelPin = 3; analoge Pin3 -> fysieke pin2 niveau instellen
Const byte humidPin = 2; analoge Pin2 -> fysieke pin3 vochtigheid sensor
Const byte pumpPin = 2; digitale Pin2 -> lichamelijke pin7 pomp
Const byte emptyPin = 1; digitale Pin1 -> fysieke Pin6 waterpeil
Const byte spikePin = 0; Digitale Pin0 -> fysieke Pin5 Extra voor het schakelen van intermitterende van spike
Variabele-instelling
int vochtige = 0; float is niet nodig
int irrigeren = 0; niveau voor irrigatie
byte niveau = 0;
De volgende functie, "setup", moet altijd aanwezig zijn
VOID Setup
{
pinMode(levelPin,INPUT); niveau instellen
pinMode(humidPin,INPUT); meet luchtvochtigheid
pinMode(emptyPin,INPUT); maatregelen reservoir
pinMode(spikePin,OUTPUT); voor de alternatieve voorziening spikes
pinMode(pumpPin,OUTPUT); Uitgang voor Relay
digitalWrite (pumpPin, laag);
digitalWrite (spikePin, laag);
}
void loop //This functie moet altijd aanwezig zijn
{
niveau = digitalRead(emptyPin);
/*
Eerst het niveau apparaat met P1 op het levelPin lezen en op te slaan die in 'irrigeren'
*/
irrigate=sample(levelPin);
/*
Vervolgens lezen wij de vochtigheid sensor.
We zullen eerst moeten de spikePin is ingesteld op hoog, in het geval dat wordt gebruikt voor het voeden van de sensor. Na de lezing zetten we het terug) als de waarde gelezen ('vochtige') is kleiner dan wat wordt beschouwd als droog ('irrigeren') dan de pomp moet worden ingeschakeld voor een bepaalde tijd. Dit wordt gedaan door aan te geven een hogere vaagheid voor het uitschakelen van de pomp
*/
digitalWrite (spikePin, hoge);
Moist=sample(humidPin); Lees humiditySensor
digitalWrite (spikePin, laag);
niveau = digitalRead(emptyPin);
Als (vochtige < = irrigeren) digitalWrite (pumpPin, niveau);
Als (vochtige > = irrigeren + 5) digitalWrite (pumpPin, laag); Hiermee voorkomt u dat de Jitter
einde lus
}
int monster (int z)
/ * Deze functie zal de Pin 'z' 5 keer gelezen en een gemiddelde nemen.
Daarna zal dit worden toegewezen door te delen door 4
Dus: delen door 20
*/
{
byte i;
int sval = 0;
voor (ik = 0; ik < 5; i ++) {sval = sval + analogRead(z); / / sensor op analoge pin 'z'
}
sval = sval / 5; gemiddelde
sval = sval / 4; schaal tot en met 8 bits (0 - 255)
sval = sval/20;
retourneren sval;
}
De software is vrij rechtdoorzee en hoeft niet veel uitleg. Het meten gebeurt met de functie "monster" (ik 'stal' die ergens maar ik vergat waar het krediet is dus niet allemaal van mij). Elke keer voordat de functie wordt aangeroepen, is de 'spikePin' hoog ingesteld voor het geval u die gebruikt om te voeden de spikes. Als u gewoon het voeden van de 5V lijn, kan die instructie worden weggelaten.
Zoals het is, maatregelen de software voortdurend, zodat het maakt echt niet dat er veel verschil waar u de spikes van voeden. Als u kiest om te voeden de spikes van de digitale I/O pin, zou het zinvol om ook in een vertraging in het meten, zoals eens per uur, of twee keer per dag. Als het circuit niet over een klok beschikt, is het makkelijkst te doen die vertraging met één of meer 'vertraging' instructies.
Krijgen van de software in de Attiny
Er zijn tal van instructies daarover, en het is niet het onderwerp van deze tutorial. U kunt een speciale programmeur, een ander arduino of zelfs uw seriële of parallelle poort.
Maar in het kort u moet installeren een Attiny85 kern en te selecteren dat bij compileren en programmeren. Ga hier voor kernen en uitleg.
Extra:
Pin 1 van de Attiny is hoge getrokken omdat dit meestal de resetpin is en men wil niet dat die los hangen. Als een R4 door een 1 k weerstand in serie met een LED vervangen zou, kan die worden gebruikt voor signaal functies zoals 'Ik nu meten ben' of 'het water niveau te laag is'. Echter u dient aan deze pin als een gewone digitale pin en dus verliest haar reset-functie. Dat betekent dat de herprogrammering niet mogelijk zonder een HighVoltage programmeur is.
Opmerking:
Als u het maken van de PCB, is het verstandig om de pads waar de conenctors in een tikkeltje groter gaan met BV een viltstift of sommige nailpolish, zodat wanneer u soldeer in de connectoren ze goede grip kunnen krijgen.