feed-image Odebírat tento obsah čtečkou
Nabídka
csenderusktr

Florist automata

UNO florist automata - Zavlažovač květin (skleníku) je založený na platformě Arduino a desce Arduino UNO (procesor ATMEGA328 a vlastní deska spojů). Konstrukce vychází ze zapojení zalévače pro vertikální stěnu

GitHub Logo

Volný nekomerční projekt :-)

Celý projekt je založen jako volný zdroj (lze použít pro nekomerční použití a přizpůsobit si k obrazu svému). K řídící desce je připojeno teplotní čidlo DS18B20, které měří teplotu půdy (pro možnost regulace zavlažování dle teploty). K řídící desce je také připojeno čidlo vlhkosti s frekvenčním výstupem 50Hz-5kHz (pro možnost regulace zavlažování dle vlhkosti) https://pihrt.com/elektronika/272-snimac-vlhkosti-pro-zalevaci-automat
Veškeré nastavení automatu se provádí pomocí tlačítek a zobrazení údajů na 16x2 LCD displeji. Do půdy "zasuneme" čidlo teploty spolu s čidlem vlhkosti.

Zařízení lze použít například jako zavlažování květin v domácnosti, skleníků a jednodušších systémů. Automat byl vyvinutý pro vertikální zavlažování rostlin, které má svá specifika zavlažování.

Aktuální verze FW a HW:

  • 1.00 19. 10. 2018 (RC1)
  • 1.10 22. 02. 2019 (možnost volby sondy - napětí/ frekvence)

 

foto 25

foto 29

foto 27

Nastavení zavlažování dle dnů od pondělí do neděle

foto 6

Nastavení 3 nezávislých časů pro zavlažování s různou dobou provozu čerpadla

foto 7

foto 8

foto 9

foto 10

foto 11

foto 12

Cyklování výstupu

V menu lze nastavit po jaké době běhu programu (1, 2, 3) se má výstup čerpadla vypnout a jako dobu má čekat vypnutý. Tato funkce umožňuje cyklování výstupu pro lepší vsakování vody do půdy (nedojde k přetékání květináče, ale k postupnému vsaku vody). Pokud nepožadujeme funkci cyklování nastavíme v menu "vypnout na dobu" na hodnotu 0s" a "vypnout čerpadlo po" na maximální hodnotu 250s.
foto 13

foto 14

V grafu je vidět spínání výstupu (zap/vyp cyklování) s ohledem na vlhkost.

Regulace dle vlhkosti

a) pokud je daný den a je čas programu 1 nebo je čas programu 2 nebo je čas programu 3 a vlhkost < 40% bude výsledná doba trvání závlahy + 1/2 trvání závlahy nastavené doby v menu. Tj. 150% času.
b) pokud je daný den a je čas programu 1 nebo je čas programu 2 nebo je čas programu 3 a vlhkost >= 40% a < 60% bude výsledná doba trvání závlahy stejná jako nastavená doba v menu.
c) pokud je daný den a je čas programu 1 nebo je čas programu 2 a vlhkost >= 60% a < 80% bude výsledná doba trvání závlahy stejná jako nastavená doba v menu.
d) pokud je daný den a je čas programu 1 a vlhkost >= 60% bude výsledná doba trvání závlahy stejná jako nastavená doba v menu.

foto 17

V žádném případě nepoužívejte obě regulace současně!

Regulace dle teploty

a) pokud je daný den a je čas programu 1 nebo je čas programu 2 nebo je čas programu 3 a teplota > 40°C bude výsledná doba trvání závlahy + 1/2 trvání závlahy nastavené doby v menu. Tj. 150% času.
b) pokud je daný den a je čas programu 1 nebo je čas programu 2 nebo je čas programu 3 a teplota >= 30°C a < 40°C bude výsledná doba trvání závlahy stejná jako nastavená doba v menu.
c) pokud je daný den a je čas programu 1 nebo je čas programu 2 a teplota >= 20°C a < 30°C bude výsledná doba trvání závlahy stejná jako nastavená doba v menu.
d) pokud je daný den a je čas programu 1 a teplota >= 5°C a < 20°C bude výsledná doba trvání závlahy stejná jako nastavená doba v menu.

foto 16

V žádném případě nepoužívejte obě regulace současně!

Z výše uvedeného vyplývá, že některé programy se s ohledem na vlhkost (teplotu) v určitém rozsahu vůbec nespustí, nebo bude výsledný čas upraven.

Nastavení datumu a času

Zleva nastavujeme den, měsíc, rok, hodina a minuta. Vteřina se při uložení nastaví na "0". Čas je ukládán do obvodu RTC DS1307.

foto 18

Smazání do továrního nastavení

Pokud chceme zařízení vymazat do továrního nastavení stiskneme v menu jako níže na obrázku "ANO".

Výchozí údaje po resetu:

  • program 1 čas pro zavlažování 6:00
  • doba 30s
  • program 2 čas pro zavlažování 18:00
  • doba 30s
  • program 3 čas pro zavlažování 9:00
  • doba 30s
  • vypnout čerpadlo po 5s provozu
  • vypnout čerpadlo na dobu 20s
  • nepoužívat regulaci teplotou
  • nepoužívat regulaci vhlkostí
  • zavlažovat ve dnech po-ne vypnuto

foto 19

Uložit nastavení

Všechny parametry se ukládají do trvalé paměti EEPROM.

foto 20

foto 21

foto 22

Provozní údaje na obrazovce

Při normálním provozu se po 3 vteřinách přepínají tyto údaje:

a) pokud neběží program (1, 2, 3)

Video

b) pokud právě běží zavlažování, tak se odpočítává čas jak dlouho bude čerpadlo ještě zapnuté a jak dlouho bude vypnuté.

foto 23

foto 24

Připojení vstupů a výstupů

LCD: pin 8, 9, 2, 3, 6, 7 (Rs, E,DB4,DB5,DB6,DB7)

LCD podsvícení: pin 10

Tlačítka IN: pin 14 (A0 dělič 5 tlačítek)

Čidlo vlhka IN: pin 5 (měří se frekvence ze snímače vlhkosti)

Serial: pin 0, 1

I2C: pin 18 (A4 SDA), 19 (A5 SCL) používá DS1307 adr. 0x68 

Teplota: pin 16 DS18B20 rudá +5V, černá GND, modrá (bílá) Data

Čerpadlo: pin 17 (pro výstup - čerpadlo)

Schéma zapojení

schematic

 

Deska spojů

board top

board bot

board bot top

Seznam součástek

Označení Hodnota Device Pouzdro
BAT1 CR2032 BATTERY20PTH BATTCOM_20MM_PTH
C1 27p C-EUC1206 C1206
C2 27p C-EUC1206 C1206
C3 0.1u C-EUC1206 C1206
C4 0.1u C-EUC1206 C1206
C5 0.1u C-EUC1206 C1206
C6 0.1u C-EUC1206 C1206
C7 0.1u C-EUC1206 C1206
C8 100u (107C) CPOL-EUC/6032-28W C/6032-28W
C9 100u (107C) CPOL-EUC/6032-28W C/6032-28W
CERPADLO PSH02-02P PSH02-02P
D1 RX LED_1206 P1206
D2 TX LED_1206 P1206
D3 1N4007. 1N4007. SM-1
D4 1N4007. 1N4007. SM-1
DOWN   10-XX B3F-10XX
F1 3,15A FUSE2P FUSE1
FID1 FIDUCIAL1.5X3 FIDUCIAL1.5X3 FIDUCIAL-1.5X3
FID2 FIDUCIAL1.5X3 FIDUCIAL1.5X3 FIDUCIAL-1.5X3
FID3 FIDUCIAL1.5X3 FIDUCIAL1.5X3 FIDUCIAL-1.5X3
FID4 FIDUCIAL1.5X3 FIDUCIAL1.5X3 FIDUCIAL-1.5X3
IC1 ATMEGA MEGA8-P DIL28-3
IC2 FT232RL FT232RL SSOP28
IC3 DS1307+ DS1337S+ SO08
IC4 7805 78XXL 78XXL
J1 RTCBAT S1G2_JUMP S1G2_JUM
J2 POWER_JACKPTH POWER_JACKPTH POWER_JACK_PTH
KK1 D0A-L D0A-L D02A-L
LEFT   10-XX B3F-10XX
P1 10k TRIMRPT10V PT10V
PROG AVRSPI AVR_SPI_PROG2LOCK 2X5-SHROUDED_LOCK
Q1 16MHz Q_HC-49U HC-49U
Q2 32.768KHz CRYSTALTC38H TC38H
Q3 IRF9530 IRF9530 TO220
R1 10k R-EU_M1206 M1206
R2 1k R-EU_M1206 M1206
R3 1k R-EU_M1206 M1206
R4 1k R-EU_M1206 M1206
R5 1k R-EU_M1206 M1206
R6 10k R-EU_M1206 M1206
R7 10k R-EU_M1206 M1206
R8 10k R-EU_M1206 M1206
R9 2k R-EU_M1206 M1206
R10 330 R-EU_M1206 M1206
R11 680 R-EU_M1206 M1206
R12 1k R-EU_M1206 M1206
R13 3k3 R-EU_M1206 M1206
R15 3k3 R-EU_M1206 M1206
R17 1k R-EU_M1206 M1206
R18 100 R-EU_M1206 M1206
R19 4k7 R-EU_M1206 M1206
RIGHT   10-XX B3F-10XX
RST   10-XX B3F-10XX
SEL   10-XX B3F-10XX
T1 BC846 BC846 SOT-23
T2 BC846 BC846 SOT-23
TEPLOTA   PSH02-03P PSH02-03P
U1 LCD-16X2 LCD-16X2NOSILK LCD-16X2_NOSILK
UP   10-XX B3F-10XX
VLHKOST   PSH02-03P PSH02-03P
X1 PN61729-S PN61729-S PN61729-S
Attachments:
Download this file (eagle.zip)Eagle[ ]1832 kB0 Downloads2018-10-17 18:55
Download this file (library.zip)Arduino library[nejsou nutné jsou již součástí main]91 kB64 Downloads2018-10-19 09:52
Download this file (main_1.00.zip)Zdrojový kód + hex[RC1 main 1.00 19.10.2018]93 kB69 Downloads2018-10-19 09:53
Download this file (testing_LCD_buttons.zip)Ukázkový kód pro Arduino[Test tlačítek na desce]0.7 kB54 Downloads2018-10-19 09:52

Komentáře   

#9 Martin Pihrt 2019-05-23 14:29
Nerozumím tomu, proč by se měla zadávat deska "atmega8". V Arduinu IDE se vybere deska Arduino UNO (tedy Atmega328). Ano pokud se použije jiný procesor, tak neproběhne kompilace v pořádku ( protože jiný procesor nemusí v sobě použité časovače mít obsažené)...
M
Cituji Tomáš:
Po zadání desky: atmega8 a programátoru arduinoISP, IDE vypíše při kompilaci nějakou chybu o proměnné -
C:\Users\tom\Desktop\main_1.00\main_1.00.ino: In function 'void startCounting(unsigned int)':
main_1.00:317: error: 'TCCR2A' was not declared in this scope TCCR2A = 0;
main_1.00:318: error: 'TCCR2B' was not declared in this scope TCCR2B = 0;main_1.00:320: error: 'TIMSK1' was not declared in this scope
TIMSK1 = bit (TOIE1); // interrupt on Timer 1 overflow
main_1.00:326: error: 'OCR2A' was not declared in this scope OCR2A = 124; // count up to 125 (zero relative!!!!)
main_1.00:328: error: 'TIMSK2' was not declared in this scope TIMSK2 = bit (OCIE2A); // enable Timer2 Interrupt In file included from sketch\main_1.00.ino.cpp:1:0:

main_1.00:328: error: 'OCIE2A' was not declared in this scope
komentář se mi nevlezl celý....
#8 Tomáš 2019-05-23 14:16
Po zadání desky: atmega8 a programátoru arduinoISP, IDE vypíše při kompilaci nějakou chybu o proměnné -
C:\Users\tom\Desktop\main_1.00\main_1.00.ino: In function 'void startCounting(u nsigned int)':
main_1.00:317: error: 'TCCR2A' was not declared in this scope TCCR2A = 0;
main_1.00:318: error: 'TCCR2B' was not declared in this scope TCCR2B = 0;main_1.00:320 : error: 'TIMSK1' was not declared in this scope
TIMSK1 = bit (TOIE1); // interrupt on Timer 1 overflow
main_1.00:326: error: 'OCR2A' was not declared in this scope OCR2A = 124; // count up to 125 (zero relative!!!!)
main_1.00:328: error: 'TIMSK2' was not declared in this scope TIMSK2 = bit (OCIE2A); // enable Timer2 Interrupt In file included from sketch\main_1.00.ino.cpp:1:0:

main_1.00:328: error: 'OCIE2A' was not declared in this scope
komentář se mi nevlezl celý....
#7 Martin Pihrt 2019-03-01 09:40
Cituji Chris:
Hello Martin,
EEPROM setting OK
CAS1 21:0-30
CAS2 21:5-30
CAS3 21:10-30
PUMP OFF 0
PUMP ON 5
Rule temperature 1
Last temperature 0
Rule moisture 2
Last moisture 64
Mo 2
Tu 2
We 2
Th 2
Fr 2
Sa 2
Su 2
**********************
Cas 3 time , relay keeps in loop time 4/0 sec , 3/0 sec , 2/0 sec , 1/0 sec , .... 4/0 , 3/0, ...
CAS 3 time 30 sec
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
Regards Chris

Hello Chris,
You must setup in menu PUMP ON to maximal time 250 and PUMP OFF to minimal time 0.
The automatic was developed for vertical irrigation of plants, which has its own irrigation characteristics.
Never use both controls (temperature, humidity) at the same time!
a) if the given day is program time 1 or program time 2 or program time 3 and humidity = 40% and = 60% and = 60%, the resulting irrigation time will be the same as the set time in the menu. I.e. 100% of the time.
It follows from the above that some programs do not start at all with regard to humidity or the resulting time will be adjusted.
Martin
#6 Chris 2019-02-28 21:23
Hello Martin,
EEPROM setting OK
CAS1 21:0-30
CAS2 21:5-30
CAS3 21:10-30
PUMP OFF 0
PUMP ON 5
Rule temperature 1
Last temperature 0
Rule moisture 2
Last moisture 64
Mo 2
Tu 2
We 2
Th 2
Fr 2
Sa 2
Su 2
**********************
Cas 3 time , relay keeps in loop time 4/0 sec , 3/0 sec , 2/0 sec , 1/0 sec , .... 4/0 , 3/0, ...
CAS 3 time 30 sec
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
PUMP 0
PUMP 1
Regards Chris
#5 Chris 2019-02-27 11:42
Hello Martin,
Thank you for the support. Great ! Thanks.
Best Regards.
Chris
#4 Martin Pihrt 2019-02-21 16:36
Cituji Chris:
Hello Martin ,
Thank you for your info .
I was thinking of .... any suggestion ?
dry sensor value sensorCap = 580 ( 4950 ) (2.8V)
wet sensor value sensorCap = 250 ( 75 ) (1.22)
=================
sensorCap = analogRead(24)
sensorConvert = map(580,250,60,5000)
sensorConvert = constrain(sensorConvert,60,5000 )
frq = map(sensorConvert,60,5000,0,100)

sensorCap Voltage sensorconvert humidity

578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
251 1.23 74 100
250 1.22 60 100
250 1.22 60 100
250 1.22 60 100
330 1.61 1257 76
317 1.55 1062 80
311 1.52 973 82
389 1.90 2140 58
423 2.07 2649 48
579 2.83 4985 1
578 2.83 4970 1
Regards Chris

Hi Chris,
I'm going to make a code on the github for variants.
Please wait until next week (we have a holiday)
Best regards
Martin
#3 Chris 2019-02-21 15:05
Hello Martin ,
Thank you for your info .
I was thinking of .... any suggestion ?
dry sensor value sensorCap = 580 ( 4950 ) (2.8V)
wet sensor value sensorCap = 250 ( 75 ) (1.22)
=================
sensorCap = analogRead(24)
sensorConvert = map(580,250,60,5000)
sensorConvert = constrain(senso rConvert,60,500 0 )
frq = map(sensorConvert,60,5000,0,100)

sensorCap Voltage sensorconvert humidity

578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
578 2.83 4970 1
251 1.23 74 100
250 1.22 60 100
250 1.22 60 100
250 1.22 60 100
330 1.61 1257 76
317 1.55 1062 80
311 1.52 973 82
389 1.90 2140 58
423 2.07 2649 48
579 2.83 4985 1
578 2.83 4970 1
Regards Chris
#2 Martin Pihrt 2019-02-18 07:16
Cituji Chris:
Hello ,
Capacitive Soil Moisture Sensor V1.2 , will this sensor work ?
https://www.diymore.cc/products/2pcs-capacitive-soil-moisture-sensor-v1-2-analog-corrosion-resistant-dc-3-3-5-5v
Regards
Chris

Hello Chris,
this machine needs a frequency probe. The reference that you have has an analog voltage output. If you want to add an analog probe, you need to modify the code and the probe to connect to an analog input (for example Pin 24 PC1 / ADC1 which is free)
Best regards
Martin
#1 Chris 2019-02-17 20:37
Hello ,
Capacitive Soil Moisture Sensor V1.2 , will this sensor work ?
https://www.diymore.cc/products/2pcs-capacitive-soil-moisture-sensor-v1-2-analog-corrosion-resistant-dc-3-3-5-5v
Regards
Chris

Nemáte oprávnění pro vkládání komentářů.