Buggfix Plus
Aktuellt datum och tid: 07.43 2019-11-14

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 57 inlägg ]  Gå till sida Föregående  1, 2, 3, 4
Författare Meddelande
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 18.17 2019-08-20 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
Tackar igen för feedbacken!

Just nu är det rätt mycket på jobbet och det stör hobbyverksamheten. Det kan nog hända att jag inte hinner skriva den utlovade fortsättningen förrän i början av september.
(Bra att man har ett system som sköter växthuset... :wink: )

Därför tänkte jag i stället bjuda på excel-filen med vilken man kan skapa textsträngar för att sedan ladda upp dem i Arduinons interna EEPROM.
Fungerar både i Excel och i LibreCalc.
(Läs fliken med förklaringar hur tabellen fungerar.)
Bilaga:
HexTex-kalkylator-Nano-20190807.xlsx


Jag bifogar också kompanjonen till tabellen, d.v.s. uppladdningsprogrammet. Listningen innehåller inga förklaringar, men programmet är så simpelt att det nog knappast ens behöver det.
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
/* Uploads text strings to the internal EEPROM, Copyright H 2018, 2019 */

#include "stdlib.h"
#include "EEPROM.h"

byte vect01[16] = {0x00,0x80,0x00,0x84,0x00,0x88,0x00,0x8C,0x00,0x90,0x00,0x95,0x00,0x99,0x00,0x9D}; // 0000
byte vect02[16] = {0x00,0xA1,0x00,0xA6,0x00,0xB4,0x00,0xBC,0x00,0xC3,0x00,0xCE,0x00,0xD4,0x00,0xDA}; // 0010
byte vect03[16] = {0x00,0xDF,0x00,0xE7,0x00,0xEC,0x00,0xF5,0x00,0xFC,0x01,0x04,0x01,0x0A,0x01,0x14}; // 0020
byte vect04[16] = {0x01,0x1A,0x01,0x1F,0x01,0x25,0x01,0x2A,0x01,0x30,0x01,0x34,0x01,0x3A,0x01,0x43}; // 0030
byte vect05[16] = {0x01,0x4B,0x01,0x55,0x01,0x5F,0x01,0x69,0x01,0x6D,0x01,0x71,0x01,0x78,0x01,0x82}; // 0040
byte vect06[16] = {0x01,0x88,0x01,0x8E,0x01,0x94,0x01,0x9B,0x01,0xA0,0x01,0xA4,0x01,0xAB,0x01,0xB4}; // 0050
byte vect07[16] = {0x01,0xBA,0x01,0xBD,0x01,0xC1,0x01,0xC6,0x01,0xCB,0x01,0xD0,0x01,0xD4,0x01,0xD9}; // 0060
byte vect08[16] = {0x01,0xDD,0x01,0xE7,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0070

byte text01[16] = {0x53,0x5C,0x4E,0x00,0x4D,0x5D,0x4E,0x00,0x54,0x49,0x53,0x00,0x4F,0x4E,0x53,0x00}; // 0080
byte text02[16] = {0x54,0x4F,0x52,0x53,0x00,0x46,0x52,0x45,0x00,0x4C,0x5C,0x52,0x00,0x44,0x41,0x47}; // 0090
byte text03[16] = {0x00,0x4C,0x4F,0x47,0x47,0x00,0x49,0x4E,0x53,0x54,0x5B,0x4C,0x4C,0x4E,0x49,0x4E}; // 00A0
byte text04[16] = {0x47,0x41,0x52,0x00,0x41,0x56,0x53,0x4C,0x55,0x54,0x41,0x00,0x50,0x49,0x4E,0x4B}; // 00B0
byte text05[16] = {0x4F,0x44,0x00,0x5C,0x50,0x50,0x4E,0x41,0x20,0x54,0x45,0x4D,0x50,0x00,0x46,0x55}; // 00C0
byte text06[16] = {0x4B,0x54,0x2E,0x00,0x54,0x52,0x59,0x43,0x4B,0x00,0x4C,0x4A,0x55,0x53,0x00,0x49}; // 00D0
byte text07[16] = {0x52,0x20,0x4C,0x4A,0x55,0x53,0x00,0x41,0x4C,0x4C,0x41,0x00,0x54,0x49,0x4C,0x4C}; // 00E0
byte text08[16] = {0x42,0x41,0x4B,0x41,0x00,0x4B,0x4C,0x4F,0x43,0x4B,0x41,0x00,0x56,0x5B,0x58,0x54}; // 00F0
byte text09[16] = {0x48,0x55,0x53,0x00,0x44,0x41,0x54,0x55,0x4D,0x00,0x5C,0x50,0x50,0x4E,0x41,0x20}; // 0100
byte text10[16] = {0x54,0x49,0x44,0x00,0x4C,0x55,0x43,0x4B,0x41,0x00,0x4D,0x4F,0x44,0x45,0x00,0x53}; // 0110
byte text11[16] = {0x54,0x5B,0x4E,0x47,0x20,0x54,0x45,0x4D,0x50,0x00,0x53,0x54,0x5B,0x4E,0x47,0x20}; // 0120
byte text12[16] = {0x54,0x49,0x44,0x00,0x41,0x4B,0x54,0x49,0x56,0x00,0x44,0x49,0x47,0x49,0x2F,0x41}; // 0130
byte text13[16] = {0x4E,0x41,0x00,0x42,0x41,0x53,0x20,0x47,0x47,0x52,0x00,0x42,0x41,0x53,0x20,0x41}; // 0140
byte text14[16] = {0x4E,0x54,0x41,0x4C,0x00,0x45,0x58,0x54,0x20,0x25,0x20,0x78,0x31,0x30,0x00,0x45}; // 0150
byte text15[16] = {0x58,0x54,0x20,0x41,0x4E,0x54,0x41,0x4C,0x00,0x4D,0x41,0x58,0x00,0x4D,0x49,0x4E}; // 0160
byte text16[16] = {0x00,0x53,0x54,0x41,0x54,0x55,0x53,0x00,0x48,0x55,0x56,0x55,0x44,0x4D,0x45,0x4E}; // 0170
byte text17[16] = {0x59,0x00,0x53,0x50,0x41,0x52,0x41,0x00,0x56,0x5B,0x4E,0x54,0x41,0x00,0x52,0x45}; // 0180
byte text18[16] = {0x4E,0x53,0x41,0x00,0x53,0x59,0x53,0x54,0x45,0x4D,0x00,0x4E,0x49,0x56,0x5D,0x00}; // 0190
byte text19[16] = {0x53,0x59,0x53,0x00,0x41,0x56,0x42,0x52,0x59,0x54,0x00,0x42,0x45,0x4B,0x52,0x5B}; // 01A0
byte text20[16] = {0x46,0x54,0x41,0x00,0x53,0x54,0x41,0x52,0x54,0x00,0x4F,0x4B,0x00,0x45,0x52,0x52}; // 01B0
byte text21[16] = {0x00,0x53,0x5B,0x4E,0x44,0x20,0x44,0x41,0x54,0x41,0x00,0x46,0x55,0x4C,0x4C,0x00}; // 01C0
byte text22[16] = {0x54,0x4F,0x4D,0x00,0x56,0x5B,0x4C,0x4A,0x20,0x5A,0x4F,0x4E,0x00,0x56,0x41,0x54}; // 01D0
byte text23[16] = {0x54,0x4E,0x41,0x20,0x4E,0x55,0x00,0x56,0x5B,0x58,0x4C,0x41,0x20,0x4E,0x55,0x00}; // 01E0
byte text24[16] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x12,0x34}; // 01F0

word vectpnt;
word textpnt;
byte once = 0;

void setup()
{
  Serial.begin(9600);
}

void writeVectors()
{
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt,  vect01[vecpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt + 16,  vect02[vecpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt + 32,  vect03[vecpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt + 48,  vect04[vecpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt + 64,  vect05[vecpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt + 80,  vect06[vecpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
  {
    EEPROM.write(vecpnt + 96,  vect07[vecpnt]);
    delay(5);
    Serial.println(" . ");
  }
  for (byte vecpnt = 0; vecpnt < 0x000E; vecpnt++)
  {
    EEPROM.write(vecpnt + 112,  vect08[vecpnt]);
    delay(5);
    Serial.println(" . ");
  }
}

void writeStrings()
{
  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 128,  text01[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }
  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 144,  text02[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 160,  text03[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 176,  text04[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 192,  text05[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 208,  text06[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 224,  text07[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 240,  text08[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256,  text09[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 16,  text10[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 32,  text11[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 48,  text12[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 64,  text13[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 80,  text14[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 96,  text15[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 112,  text16[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 128,  text17[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 144,  text18[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 160,  text19[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 176,  text20[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 192,  text21[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 208,  text22[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 224,  text23[txtpnt]);
    delay(5);
    Serial.print(" . ");
  }

  for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
  {
    EEPROM.write(txtpnt + 256 + 240,  text24[txtpnt]);
    delay(5);
    Serial.println(" . ");
  }
}


void loop() {
  if (once == 0)
  {
    Serial.print("EEPROM writing starts in 3 seconds ");
    delay(1000);
    Serial.print(" . ");
    delay(1000);
    Serial.print(" . ");
    delay(1000);
    Serial.println(" . EEPROM writing starts now");
    delay(100);
    Serial.print("Writing vectors ");
    delay(100);
    writeVectors();
    Serial.print("Writing strings ");
    delay(100);
    writeStrings();
    Serial.println("Writing done!");
    once = 1;
  }
  while (once != 0) {
  Serial.println("Loading text strings to internal EEPROM is done. You can load the main program now.");
  delay(10000);
  }
}

Man kunde förstås göra programlistan kortare om man kombinerade looparna, men eftersom det är ett program som bara laddas ner och körs en gång, så tyckte jag inte det var viktigt.


Fotnot: Fast jag använder excel ganska mycket blir jag allt emellanåt ändå förvånad över HUR användbart det i själva verket är!
Jag brukar ofta använda excel för att skapa G-kod till CNC-fräsen också. Speciellt då när man behöver göra någon geometrisk figur är det enklast att låta excel räkna koordinaterna och skapa koden, och så bara Copy och Paste till en textfil, och så kör man.
MYCKET användbart!


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 07.02 2019-08-28 

Blev medlem: 13.42 2011-08-15
Inlägg: 166
Som så många andra redan sagt: Spännande projekt, och väl beskrivet! :)

Jag byggde ett väldigt enkelt bevattningssystem för användning inomhus, vilket gjorde att jag var paranoid när det gällde att systemet låser sig med pump på och skvätter ut allt vatten utan kontroll med fuktskador som följd. Därför satte jag ett andra relä på inkommande spänning till pumpen, styrt av en liten andra-processor. Om inte huvudsystemet sparkar på denna en gång i sekunden så får inte pumpen ström, hur mycket det än försöker.
Däri kan man också enkelt lägga lite gångtidslogik, så att systemet inte kör för länge och vattnar för mycket.
Något liknande skulle ju kunna lösa dina problem med att reläerna klickar till vid uppstart, samt undvika att eventuella tankemissar i programmeringen tömmer ut hela stora tanken...


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 19.43 2019-09-10 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
Det blev en liten paus i skrivandet p.g.a. jobbet. Under de senaste tre veckorna har jag inte hunnit åka ut till ön mer än två gånger av och an utan övernattning.
Bevattningssystemet har kommit mer än väl till pass.
Så här kommer det nog dessvärre att fortsätta hela september ut, men sedan lättar det.

Senaste söndag åkte jag ut för att fylla på vatten och kunde samtidigt skörda det som var färdig.
Chilin hör ju hemma i betydligt varmare trakter och många i det bälte runt jorden som bara har två årstider, d.v.s. sommar och ”o-sommar”. Dessa arter blommar nästan ständigt och är därför också tacksamma för växthusodling, för de producerar också frukt hela tiden. Ett år satte jag fröna i jorden i slutet på december. Följande vår blev de första chilina färdiga redan i april och sedan fortsatte det ända tills oktober då jag stängde ön för vintern. Buskarna hann dock bli ganska stora hemma på fönsterbrädet i stan, så de var besvärliga att flytta ut till växthuset.

Det problemet finns det två lösningar till: den ena är förstås att inte börja så tidigt, den andra lösningen vore att lära sig beskära buskarna rätt. Det senare alternativet är förstås bättre, men det får jag jobba på när jag har mera tid...

Här är söndagens skörd.
Bilaga:
Chilis-20190908.jpg

Ca. 50 st av arterna Aji Cristal (styrka 5-6 av 10), Cayenne (5-6), Fire Flame (7-8) och India Red (8).
Jag har redan tidigare plockat ungefär lika mycket och upskattar att det finns minst 4 ggr lika mycket på gång - antalsmässigt.

Två arter har än så länge bara börjat rodna: Pequante (5) och Ramiro (0 – barnchili) och de producerar mycket stora och tunga frukter. (Ramiro är stora som avlånga paprikor).
Viktmässigt har jag alltså skördat bara några futtiga procent.

För att sedan övergå till automatiken och det som ännu skall göras eller bör förbättras, d.v.s. en

Återstår att göra-lista:
1. Vädringsluckans mekanik samt styrning i programmet.
2. Nya fuktsensorer (som inte korroderar) + programändringar.
3. Byta ut slangar (till mörka för att förhindra algtillväxt).
4. Förbättra fästena för spridarrören så de fixeras i rätt läge.
5. Konstruera solskydd för elektroniken.
6. Arrangera något slags automatisk vattenpåfyllning, t.ex. regnvatten från stugans takrännor.
7. Datainsamling [programmet i Raspberry PI]
8. Dataöverföring över internet (från RasPI databas till …?)
9. Möjliggöra kontroll och styrning av bevattningsystemet från RasPI och över internet.
10. Fundera över vad jag skall göra med allt insamlat data...

Puh! Den listan blev lång när jag riktigt började fundera...

De punkterna skall jag ta upp i kommande inlägg.


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 13.12 2019-10-09 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
Hej igen,

Det blev en lååång paus. Augusti och september var jobbiga, men NU!
Nu blev man då pensionerad, så nu är inte arbetet och tar tid från hobbyerna längre. Nu får kunderna själva planera sina stordatorsystem, den här dinosaurusen har lagt av!

Så nu är det frugan, stugan och hobbyerna som gäller.

Vädringsluckan var det, ja:

Förra vintern funderade jag på olika lösningar, men kunde inte göra något konkret, för jag saknade de väsentliga måtten – hade helt enkelt glömt att ta dem förra hösten.

Generellt var planaen den, att med en motor (har en 12 VDC motor med utväxling som ger 200 rpm) snurra på en gängstång och få linjärrörelse genom att på den förskjuta en gängad "kälke" och sedan överföra det till vertikal rörelse som öppnar och stänger luckan.
Det var alltså utgångsläget.

Problemet jag har är, att jag är lång och växthuset inte alltför högt. Jag vill inte ha något utskjutande som man sedan slår huvudet i varje gång man går där.

Bilaga:
VH_taklucka1b.jpg


Det streckade området måste alltså förbli hinderfritt.

Det andra kravet är, att motorn och lägesgivaren inte skall vara direkt under luckan eller dess kant, för vid regn läcker det alltid in en del vatten.

Efter funderande på olika metoder – från vridningar med kugghjul till pneumatiska ställdon – tänker jag ändå tillbaka till att en mekanisk sax kanske trots allt blir enklast.

Principskiss:
Bilaga:
VH_taklucka2b.jpg

Motorn (M) vrider på gängstången, vilket förskjuter saxens ena ben. Det andra benet måste vara fast, eftersom jag inte vill ha djup neråt och för att gängstången har bara en gänga. Det vore ju förstås elegant med en gängstång med vänster gänga för ena benet och höger för det andra, men så blir det nu inte.
Det betyder också, att leden (stödpunkten) mot luckan inte kan vara fast utan flyttas beroende på luckans läge.

När luckan är stängd är saxen i läge ”blå” och fullt öppen i läge ”röd”. (Eventuellt kan det bli bättre att ha saxen åt andra hållet, d.v.s. motorn skjuter på det rörliga benet för att öppna luckan. Det kan hända att man aningen kan förkorta gängstången, samt att upphänginen av den passar bättre in mot mot ramverket. Det där får jag titta närmare på ännu.

Som lägesgivare tänkte jag mig en glidpotentiometer (P). Rörelsen på en sådan är ca 60 mm och det bör vara enkelt att hitta på saxens ena ben.

Vid <15 C skall luckan vara stängd och vid >25 C skall den vara fullt öppen. Gränserna skall förstås vara inställningsbara, men just 15/25 är ganska vanligt.

Däremellan tänkte jag mig 3-4 jämnt fördelade mellanlägen. Kontroll varje halvtimme och ställande av luckan därefter är tillräckligt. Då torde luckan inte stå och fladdra hela tiden heller.

Med M8 gänga (stigning 1.25 mm), 200 rpm och en linjärrörelse nästan 60 cm blir det ju ingen racerfart direkt. Nästan 2,5 minuter (!) mellan ändlägena.
Kunde ju ta en snabbare motor, men då förlorar jag i momentet.

Jag tror ändå inte att det skall vara något problem. Värmen i växthuset kan nog stiga rätt snabbt, speciellt när solen bryter fram genast efter ett åskmoln, men jag tror ändå att man inte behöver ändra mer en ett, absolut högst två steg i taget. En förflyttning mellan de lägsta stegen blir då inte många sekunder och jag uppskattar, att det nog i det temperaturområdet som är känsligast och förorsakar flest lägesändringar..
Mellanrummet mellan de två översta lägena kommer ju att ta betydligt längre tid, eftersom den lodräta rörelsen blir liten, men i sådan värme behövs det inte heller trimmas så ofta. Det läget kommer dessutom att behövas mest då man vill hålla öppet hus för insekterna, och då är temperaturstyrningen vanligtvis ändå urkopplad.

Så ser alltså funderingarna ut just nu, men jag har inte ännu börjat bygga på det. Inget annat finns än motorn och gängstången, så jag tar mycket gärna emot synpunkter, kritik och alternativa förslag.


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 20.48 2019-10-09 

Blev medlem: 12.10 2018-01-05
Inlägg: 7
inte för att det tillför ärendet nått med visst är det skönt att bli pensionär så man kan hålla på med sina egna hobbisar på heltid :)


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 15.09 2019-10-16 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
Som jag skrev tidigare, så visade de nuvarande jordfuktsensorerna vara misslyckade. Det går hela tiden en ström mellan elektroderna, och eftersom de inte är rostfria, korroderar den ena elektroden mycket snabbt. Naturligtvis kunde jag byta ut dom till A4:or, eller så koppla strömmen bara för den stund som man gör mätningen, som någon föreslog.
Jag tänkte ändå undersöka hur/om det skulle fungera med en kapacitiv sensor.
En kapacitiv sensor fungerar ju så, att man har en oscillator som oscillerar på en frekvens som bestäms av mätsondens kapacitans. När kapacitansen ändras, ändras också frekvensen. Utsignalen leder man till att ladda en kondensator, högre frekvens ger kommer då att ge högre spänning.
Parallellt med kondesatorn finns ett [rätt stort] urladdningsmotstånd så att spänningen tillräckligt snabbt följer variationerna i frekvensen.
Nu vet jag inte hur mycket kapacitansen ändras med jordfuktigheten, så jag måste experimentera.
Sagt och gjort, jag designade en sond av ett tvåsidgt kretskort. Målet var 100 pF:
Fräsning (måste skruva fast kortet för att kunna få det i position då jag ju skulle fräsa andra sidan också)j:
Bilaga:
Kap_sensor-1.jpg

Autolevelling av sida två:
Bilaga:
Kap_sensor-2-autoleveller.jpg

Nästan färdigt:
Bilaga:
Kap_sensor-3-sid2.jpg

Färdigt fräst.
Bilaga:
Kap_sensor-4-ca100pF.jpg

Måtten är 34 x 135 mm och målet var alltså 100 pF.
Jag ville egentligen ha ännu större kapacitans, men jag hade bara 1.6 mm tjockt kretskort.
Ifall det fungerar skall jag skaffa tunnare kort (högst 0.8 mm) så då blir kapacitansen högre.

Mätning:
Bilaga:
Kap_sensor-5-107pF.jpg

107pF blev det - tillräckligt nära :tumupp:

Till slut några lager båtlack:
Bilaga:
Kap_sensor-6-Lackering.jpg


Bara det torkat skall jag börja laborera.


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 19.25 2019-10-28 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
Dags för första säsongens FACIT.

Nu har jag stängt växthuset för den här säsongen. Oktober månad har varit eländig – jag kommer inte ihåg när det senast varit lika mörkt och regnigt som i år. Det gjorde, att tillväxten avstannade helt då ljuset inte räcker till.
Jag gav därför upp och igår tog jag bort alla resterande chillin och hela bevattningssystemet, rengjorde slangar, filter, vattenbehållare och pumpar, o.s.v.

Dags alltså att titta på erfarenheterna och vad som bör förbättras eller utvecklas vidare till nästa säsong.

Jag har redan tidigare nämnt de saker som ännu inte blivit förverkligade/implementerade och behandlar inte dom sakerna nu, utan tittar på det som fungerade och hur bra (eller illa) det fungerade:

1. Bevattningen i sig fungerade utmärkt. Tack vare det klarar växhuset sig utan tillsyn i nästan två veckor (jämfört med hur det var förut då jag minst två ggr per vecka måste vattna).

2. Principen för pumpandet, d.v.s. att pumpa från en reservoar till en mindre behållare och därifrån pumpa ”en dos” i taget fungerar bra. Inget behov av att övervaka vattenmängderna desto noggrannare.

3. Vattenspridarna fungerade över förväntan bra, d.v.s. i själva verket precis så som jag högst vågade hoppas. Den mekaniska upphängningen bör dock förädlas en aning för stabilitetens skull.

4. Jordfuktsensorerna fungerar nog ganska bra, men den ena ”sonden” (galvaniserade spikar) korroderar fruktansvärt snabbt då metoden går ut på att mäta resistansen i jorden.
Bilaga:
Fuktsensor-korrosion.jpg

Jag har börjat experimentera med en kapacitiv givare. Jag skall redogöra för rönen i ett skilt inlägg, men så mycket kan jag redan säga, att jag börjar nog luta åt att helt enkelt byta ut de nuvarenade sonderna till syrafasta rostfria dito och dessutom med ett relä koppla strömmen till dom bara då mätningen utförs så som Platis och farskost föreslog i sina inlägg redan 08.08.2019. Tack för de idéerna!

5. Fuktsensorernas boxar har hållit tätt, men skruvarna har rostat. De var alltså inte ens elförzinkade. Jag får byta ut alla dom skruvarna…
Bilaga:
Fuktsensor-skruvar.jpg


6. En dag i augusti haltade systemet och gick inte igång trots att vakthunden gjorde Reset.
Jag lokaliserade hastigt problemet till radiomodulen, kopplade loss den helt och då gick systemet igång igen som vanligt. Jag vet att några riktigt soliga dagar hade det varit alldeles för hett i boxen och misstänkte att isoleringsplasten hade gett efter så att det sedan blev någon kortslutning på radiomodulen.
För att undvika störningar och bättra på sändningseffekten på radiomodulen (en nRF24L01+) måste man skärma elektroniken. Jag gjorde det genom att först linda några lager livsmedels-plastfilm runt som elektrisk isolering, sedan ett lager aluminiumfolie som skärm (som jordas i antennens jord) och därefter ytterligare några lager plastfolie för att hålla allt på plats.
Bilaga:
Radiomodul1.jpg


Radiomodulen är längs inne på bottnen i boxen och man kommer inte åt den utan att först plocka ut allt annat. Därför har jag låtit den vara och väntat på säsongslutet.
Den hade ju faktiskt ingen funktion ännu, eftersom jag inte hunnit göra något åt den server (Raspberry PI) som skall ta emot statistikdatat och lagra det.
Nu när jag tog loss modulen var det bara att konstatera, att isoleringen smultit.
Bilaga:
Radiomodul2.jpg

nRF-chipet hade tydligen blivit så hett, att plasten där ovanpå smält och några komponenter var kortslutna. Jag vet inte ännu om modulens vandrat till gudarna, eller om den fungerar. Får prova det senare.

Summan av kardemumman: Jag måste bygga något slags solskydd för hela boxen. Det betyder också, att jag måste fundera om var jag placerar ljus-sensorn, eftersom den ju inte skall avskärmas.

Men sedan den gången i augusti har systemet varit igång utan störningar! Ganska bra för att, trots allt, vara en [evig?] prototyp!

7. Kina-pumparna fungerar riktigt bra och ”håller trycket”. De är av centrifugaltyp och har inte visat några svaghetstecken.

8. Slangarna skall inte vara genomskinliga, det blir algväxt i dom precis så som Vortex tipsade (inlägg 15.08.2019). Algväxten har dock inte varit så illa som jag befarade, men nog tydlig.
Jag skall byta ut slangarna till nästa säsong. Dessutom bör jag åstadkomma något slags lock till både vattenreservoaren och tanken, för det fanns en massa dränkta myror och gråsuggor på bottnen av dom. Pumparna har dock inte störts av dom, det fanns flera kadaver i vattenfiltret.

9. En Arduino Nano kan inte heller simma.

Totalt sett så har systemet fungerat mycket tillfredställande! Jag har inte stött på några fatala tanke- eller designfel – allt som kommit fram går att åtgärdas och utveckla. Vinterhalvåret är alltså räddat! :D

Ja, så var det förstås skörden.
Igår tog jag bort alla resterande chilin som synes vara nära att börja mogna. Resten slängde jag.
Det blev sex plastpåsar med sammanlagt 484 st (!!)
Jag får ha dom på fönsterbrädet i solen(?) och med konstljus på natten i några dagar för att mogna – de som orkar.
Ifall en chili ens litet börjat få färg kan man bra mogna den inne i värmen med litet extra ljus. Det brukar gå på några dagar. Dessa chilin kan bli aningen mindre eldiga än då de hinner mogna färdigt på busken, men så är det på dessa breddgrader.
De som inte ens hunnit börja mogna blir sedan aldrig röda fast man skulle bada dom i ljus hur länge som helst. En del chilin är goda fastän dom inte mognat (ex. Aji Cristal), medan andra bara är att slänga. Inmget att gråta över.

Slutresultatet för säsongen blir ändå närapå 900 chilin :shock: , eller nästan 8 kg (färskvikt).
Förutom barnchilina vilka äts färska har jag i år torkat hela skörden, torrvikten blir då sammanlagt drygt ett kilogram.


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 08.01 2019-10-31 

Blev medlem: 13.42 2011-08-15
Inlägg: 166
Roligt att läsa om dina försök!

Det kan säkert bli ganska ordentligt varmt med direkt solinstrålning i ett växthus, men luften generellt borde ju inte bli så fasansfullt varm. Alltså borde det räcka med en platta nånting imellan solen och elektroniken, och så se till att det finns möjlighet till luftflöde mellan.
Ytorna i en bil i gassande solsken kan bli uppåt 70-80 grader på våra breddgrader, vilket fortfarande borde vara lägre än elektronikens specar. Det skulle alltså kunnat gå bra ändå, bara du hade haft ett bättre material än plastfolie. En stump av krympslang, kanske?

Om du behöver få upp antennen så är det ju säkert bättre med en bit antennkabel och sedan gömma elektronikboxen i något skuggigt hörn...

Galen idé: Sätt upp en solpanel som får ladda ett batteripack. Då kan du få ut både solinstrålning (ur panelen) och bli energineutral.

Har du funderat på att montera in tilläggsljus? Jag har en liten blomma hemma som i två år stog och långsamt vissnade på vintern. Köpte en växtlampa för drygt ett år sedan som får stå på lite oregelbundet på vinterhalvåret, och nu har den satt nya friska blad och växer (långsamt). Kanske ett sätt att förlänga säsongen för att få klart mer av sista skörden?


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 19.40 2019-11-08 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
Ja just något sådant hade jag tänkt mig beträffande solskärmen. Ex. en fanerskiva som man kan vika undan då man skall komma åt boxen.

Någon solpanel i växthuset hade jag dock inte tänkt mig, eftersom det skulle innebära en egen regulator och ytterligare ett batteri. Det är absolut ingen galen idé, men jag har ju nu redan solenergi i stugan och växthuset står så nära (kabeln är ca 15 m), att jag inte får några nämnvärda effektförluster, eftersom jag överför 24 VDC.

Det där med tilläggsljus har funnits med som en "eventuell" framtida vidareutveckling. Det skulle ju förstås innebära LED-belysning - något annat kommer inte på fråga. Måste kanske räkna på det litet... :humm:

Så några kommentarer om den

KAPACITIVA FUKTSENSORN (alltså fortsättning på inlägget 9.10.2019)

Jag satte fem lager båtlack, blev tillsammans ungefär 0.25 mm och började sedan testa.
I fria luften är kapaciteten alltså 107 pF
Nedsänkt i vatten: 333 pF (en matsked koksalt i vattnet gjorde ingen mätbar skillnad).
Nedsänkt i fuktig mylla: 222 pF (myllan just så fuktig som jag skulle uppskatta vara ”100%” ).

På papperet ser det ju ut som att variationen skulle vara tillräckligt stor så att VF-omvandlingen ger maximalt utslag.
...men så blev det ju sedan inte…

Så här designade jag sensoreklektroniken:
Bilaga:
KapSensor.png


Kort om kopplingen:

- U1/LM555 är en astabil oscillator vars frekvens varierar med sondens kapacitans.
- Q1 är en ”pump” som laddar upp kondensatorn C4. Spänningsnivån över C4 kommer att variera med frekvensen, R4 ser till att kondensatorn också urladdas mellan pulserna.
- U2B fungerar som linjeförstärkare med maximal ingångsimpedans för att inte störa pumpen. Linjeförstärkaren behövs. Det går inte att skicka spänningsnivån i en 620 pF kondensator över flere meter kabel utan störningar.
- U2A är kopplad som en komparator för att åstadkomma en digital signal som växlar vid önskat tröskelvärde (ställs in med RV1).

Förutom sonden är de kritiska komponenterna R1, R2, C3, C4 och R4. De värden som finns i ritningen gav det bästa resultatet.Frekvenserna blir då ca 373khz vid snustorr mylla och 775kHz vid "100% fuktig" mylla.

Spänningsskillnaden (över C4) mellan helt torr och 100% fuktig mylla blir trots allt inte större en tiondelar av 1 V. Hur jag än räknade och varierade på C3, C4 och R4 fick jag inte bättre differens.
Dessutyom visade det siga, att variationen är temperaturberoende!

Den kapacitans som tillkommer av den fuktiga myllan (ca 115 pF med den sensoryta jag testat) är beroende på myllans dielektricitetskonstant. Den ändrar med temperaturen, och eftersom spänningsområdet i den analoga utsignalen är så litet blir felet rätt besvärligt.

Detta kan förstås lösas på flere sätt. Det enklaste vore, att höja spänningen till ex. till 12 V och sedan normalisera (förskjuta) utsignalen så den alltid hålls under 5V (så att man inte bränner analogingångarna). Variationen blir ändå ca 2.4x större och skulle göra mätningen exaktare. Detta skulle ju förstås kräva litet extra elektronik.
Det elegantaste vore ändå att göra något slags temperaturkorrigering. Även detta kräver extra elektronik.
I vartdera fallet är det stora problemet, att tilläggselektroniken skall göras separat för varje sensor, och då blir det hela genast mycket omständigare.

Jag kommer därmed fram till, att den bästa lösningen är, att använda de nuvarande fuktsensorerna.
Jag får byta ut sonderna (de oxiderande spikarna) till syrafasta M4 gängstänger. Funderade också på syrafasta spikar, men det blir mycket dyrare.
M4 AISI316 kostar 3.9 € + några muttrar, en ask (minsta 250 st) 100x3.4 mm spikar AISI316 går på flere tior... :doh:

Den kapacitiva sensorn läggs därför på hyllan och avskrivs som en ”erfarenhet”.

...och så är det bara att gå vidare...


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 13.03 2019-11-09 

Blev medlem: 17.59 2009-12-21
Inlägg: 3550
Jag har även jag konstruerat ett automatiserat bevattningssystem som är modul byggt med en WIFI/WEB baserad styrenhet.

Jag har har dock en lite annorlunda approach där jag mäter varje planta och utifrån en algoritm tilldelar vatten baserat på skillnaden mot önskat värde.
Varje modul hanterar 8 plantor (dvs. 8 ventiler och 8 sensorer per modul) och sitter i serie på en RS485 bus.

Motivet var att det skulle skala rejält och i nuvarande utformning klara det av 4095 plantor, men gränssnittet stödjer dock bara 40st i dagsläget.
Systemet är "klart" men kommer monteras först nästa säsong (dock inte hos mig för jag odlar inte) så det är möjligt att jag skriver en tråd om det i framtiden.

Men för att komma till saken.
Jag hade flera utmaningar vad gäller val av sensorer, ventiler osv precis som du.
Jag kollade mycket på just fuktsensorer och konstaterade att egentligen alla billigare förefaller vara förbrukningsvaror, då de förr eller senare ärgar eller på annat sätt påverkas negativt av fukt.
På samma sätt så var de billigaste ventilerna oftast okapslade och med oskyddad mekanik vilket sannolikt inte fungerar över tid i ett växthus med hög relativt luftfuktighet.

Jag pratade mycket med "beställaren" och vi kom fram till att snåla på dessa komponenter sannolikt skulle medföra frustration då felaktiga mätvärden eller "hängande" ventiler sabbar.
Mot den bakgrunden har jag använt följande:
Sensor:
LÄNK
Dessa förefaller vara antingen i någon form av plast eller keramik. Det känns nästan som keramik. Dom är dyrare än de vanliga PCB baserade men tanken är att de kommer ha längre livslängd kopplat till materialet.
Medföljande komparator använder jag ej utan kör dessa direkt på egen A/D omvandlare.

Ventiler:
LÄNK
Dessa finns hos många säljare. Här är jag inte lika övertygad om att valet var perfekt då dessa har ganska lite genomsläpp, samt att de blir ganska varma om man kör dom "torrt"

Som en extra säkerhet så anskaffades dessa LÄNK som jag använder på huvudmatningen av vatten, för att dubbel kontrollera att det inte går något flöde när ventilerna "skall" vara stängda.

Systemet nyttjar självfall från en stor tank som fylls på när nivån är låg.
Här hittade jag en klurig sensor som jag använde för max-min LÄNK
Klurig då den kan känna av rakt genom tanken vägg. Även tankpåfyllningen har en flödessensor som säkerhet för att säkerställa att inte det hänger sig.

Hoppas någon av dessa tankar kan vara till hjälp


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 22.59 2019-11-09 

Blev medlem: 18.55 2006-04-17
Inlägg: 409
Ort: Mölndal
Den här tråden har nu lyckats inspirera mig till den nivån att jag letat fram mitt egna, sedan många år avsvalnade, projekt för att styra bevattning. Tack för inspirationen! :D

När det gäller fuktsensorer labbade jag då med en kapacitiv sensor som baserades på en xor grind enligt schemat nedan. Den ena sensorplattan kopplades till jord, den andra till "SENS_PLATE_LOW" och ett pulståg skickades in på "EXEC_PULSE". Ut från xor-grinden kommer det komma pulser långa som den tid det tar att ladda upp sensorplattan, genom R7, till den spänning då grinden detekterar etta. Genom att välja periodtiden i pulståget något större än den tiden det tar att ladda upp en sensor dränkt i vatten gick det att få relativt bra analoga signaler som gick från 0 V till 3.3 V (eller vilken matningsspänning man nu väljer) när jorden gick från torr till fuktig.

Om jag kommer ihåg det rätt fick jag den designen från ett gammal schema baserat på en logikkrets med fyra xor-grindar där två agerade oscillator, en drev sensorplattan och den sista mätte pulsen och omvandlade denna till den analoga utspänningen.


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
 Inläggsrubrik: Re: Växthusautomation
InläggPostat: 15.25 2019-11-11 
Användarvisningsbild

Blev medlem: 20.30 2010-10-06
Inlägg: 183
Ort: Finland
farskost skrev
Citera:
Den här tråden har nu lyckats inspirera mig


Tack för det! Det betyder, att det främsta målet med sådana här trådar är uppnått!

Jag skall absolut kolla den kopplingen och experimentera lite mera...
En annan sak jag tänkte kolla är, att eftersom LM555s utgång är kapabel att både driva och sänka upp till 200 mA så skall jag i min koppling försöka med en omvänd pump (blir väl närmast en elektronisk sugpump då.. :wink: ), d.v.s. koppla C4 mot +5VDC och pumpa med en NPN-transistor i stället.
Skillnaden är den, att då borde jag kunna få spänningen att ligga närmare 0-nivån, vilket betyder att jag på linjeförstärkaren U2B kunde sätta två motstånd så det blir en lämplig förstärkning på utsignalen.
Lite mera experimenterande väntar.

ToPNoTCH: Tack för tipsen. Du har ett mycket mera ambitiöst projekt. Lycka till!
Den fuktsensor du länkade till verkar ha exakt samma elektronik som de jag använt, men själva sensorelementet är då något annat. Jag försökte aldrig med originalen (PCB), eftersom jag var övertygad om att de oxiderar på nolltid. Däremot hade jag inbillat mig, att stålspikarna skulle hålla litet längre, trots att de varken är AISI 304 el. 316.
När jag sökte ventiler kom också de där ventilerna upp, men jag valde "öppna" p.g.a. priset. Priset ca. hälften, plus att de jag valde fanns med gänga som direkt passade till vanliga ("billiga?") slanganslutningar. Tiden får utvisa om jag gjorde rätt.
Första säsongen gick det ju, men vi får se. Kanske det går att smeta in dom med någon tätningssmörja el. dylikt.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 57 inlägg ]  Gå till sida Föregående  1, 2, 3, 4

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Anahka1975 och 4 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010