Växthusautomation

Berätta om dina pågående projekt.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Så var transplantationen gjord. Utan fel, faktiskt (eller: inte uppdagat något hittills, vill säga... :roll: ).
IMG_20200315_000941.jpg
Jag kan välja vilken spänning som visas på mätaren, 3.4V, 5V, 12V, 24V. Väljaren kommer att vara i en separat liten box (som en "pendant") tillsammans med joysticken.
Den har jag inte planerat i detalj ännu, så vi får se vad det blir i slutändan.
Just nu ligger det en diod emellan spänningen som mäts on mätaren, och därför visar den för lågt värde (borde alltså visa 3.4 VDC).
Iofs gör det ju inget, eftersom det bara är jag som tittar på den, men får se om jag lyckas åstakomma en väljare så att jag kan dumpa dioden och få rätt värde i stället.

Ampere-mätaren visar alltid den totala strömmen, inte för varje spänning.
Just nu visar den bara 0, logiken drar inte mycket När reläerna drar stiger den till 10 mA.
Ska bli intressant att se vad förbrukningen blir sedan när pumparna och solenoiderna är kopplade och igång.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Joysticken har hittills hängt löst, så nu gjorde jag en "pendant".
IMG_20200320_121854.jpg
Det var meningen, att det skulle komma några tryckknappar på den också, men nu har elektronikbutiken stängt på obestämd tid, så det får bli till senare.
Eftersom jag f.n. använder endast 8 bevattningszoner (och därmed 8 fuktsensorer) har jag 8 analoga ingångar på två 4-ports moduler oanvända.
Jag tänkte då att jag använder 4 av dessa portar till att mäta de [4] olika matninsspänningarna. Då kan jag också koppla den nya volt/amperemetern direkt på batterispänningen (24 VDC) och då kommer jag ifrån [den irriterande] missvisningen som den mellanliggande dioden ger.
De övriga spänningarna tänkte jag avläsa i programmet och visa på systemets LCD-skärm.
Sagt och gjort!
AD-omvandlaren (PCF8591) tål bara 6 VDC ingång, så jag räknade och mätte upp lämpliga motstånd för att göra spänningsfördelare för respektive spänning (24, 12, 5 och 3.3V).
Så satte jag in en läsrutin i en lämplig meny (=> Systemstatus) och...

...men där har jag kört FAST! :evil:

Jag får inte läst rätt värde från PCF8591:an, men jag hittar inte felet. Det vansinniga är, att ifall jag har en s.g.s. identisk testrutin får jag rätt värden, men inte då samma rutin är inbakad i växthussystemets program.

Så här ser rutinen ut i växthussystemet (vissa parametrar och funktioner är satta tidigare i programmet, ex. I2C-bussen, Serialspeed, mm.):

Kod: Markera allt

void Menu23() { // Status
  const byte resniva[6] = { 0, 10, 25, 50, 75, 100};
  byte rv0, rv1, rv2, rv3;
  float volt[4];

  Serial.println("PCF8591 actual...");
  Wire.beginTransmission(0x4A); //(AnSet[2]); 
  Wire.write(0x04);
  Wire.endTransmission();
  Wire.requestFrom(0x4A,5); //(AnSet[2], 5);
  rv0 = Wire.read();
  rv0 = Wire.read();
  rv1 = Wire.read();
  rv2 = Wire.read();
  rv3 = Wire.read();
  
  volt[0] = rv0 * 0.11171;
  volt[1] = rv1 * 0.0556;
  volt[2] = rv2 * 0.02272;
  volt[3] = rv3 * 0.02025;

  Serial.print(rv0); Serial.print(" "); Serial.print(volt[0]); Serial.println(" VDC");
  Serial.print(rv1); Serial.print(" "); Serial.print(volt[1]); Serial.println(" VDC");
  Serial.print(rv2); Serial.print(" "); Serial.print(volt[2]); Serial.println(" VDC");
  Serial.print(rv3); Serial.print(" "); Serial.print(volt[3]); Serial.println(" VDC");
och så här ser testprogrammet ut:

Kod: Markera allt

#include "Wire.h"
#define PCF8591 (0x4A) // I2C bus address

byte rv0, rv1, rv2, rv3;
float volt[4];

void setup()
{
 Wire.begin();
 Serial.begin(115200);

}
void loop()
{
 Serial.println("PCF8591 test...");
 Wire.beginTransmission(0x4A);
 Wire.write(0x04);
 Wire.endTransmission();
 Wire.requestFrom(0x4A, 5);
 rv0=Wire.read();
 rv0=Wire.read();
 rv1=Wire.read();
 rv2=Wire.read();
 rv3=Wire.read();
 
 volt[0] = rv0 * 0.11171;
 volt[1] = rv1 * 0.0556;
 volt[2] = rv2 * 0.02272;
 volt[3] = rv3 * 0.02025;

 Serial.print(rv0); Serial.print(" "); Serial.print(volt[0]); Serial.println(" VDC");
 Serial.print(rv1); Serial.print(" "); Serial.print(volt[1]); Serial.println(" VDC");
 Serial.print(rv2); Serial.print(" "); Serial.print(volt[2]); Serial.println(" VDC");
 Serial.print(rv3); Serial.print(" "); Serial.print(volt[3]); Serial.println(" VDC");
 Serial.println();

delay(10000);
}
Här är utskriften från respektive program. Första talet på raden är det lästa värdet från resp. AD (8-bitar), det andra talet är omvandlat till spänning. (omvandlingskoefficienten är förstås olika för resp. spänning).

Kod: Markera allt

PCF8591 actual...
192 21.45 VDC
192 10.68 VDC
192 4.36 VDC
192 3.89 VDC

PCF8591 test...
202 22.57 VDC
216 12.01 VDC
223 5.07 VDC
167 3.38 VDC
Alla fysiska komponenter är de samma och testen körs i själva växhussystemet, så ifall något annat inverkar, borde det rimligtvis påverka testet också.
Tilläggas bör, att växthusprogrammet inte någonstans försätter AD-modulerna i någon speciell mod, el. dyl.

Kan någon av er se felet? Jag får inget grepp om det! :doh:

Jag funderade också ifall det dynamiska minnet är slut, men jag tycker inte det verkar så.
Växthusprogrammet tar 27836 bytes (90%) och de globala variablerna 903 bytes (44%).
Nu är variablerna rvx och volt[x] definierade lokalt. Jag testade också med att definiera dom globala, men enda skillnaden var, att globala variablerna ökade till 45%.
Mätresultatet var detsamma.

Har någon några råd eller förslag?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Efter att ha spenderat en hel koronalördag på analys och felsökning kom jag fram till, att problemet ligger i drivrutinen (biblioteket) för LCD:n. Skickade därpå en fråga till upphovsmannen och fick till svar, att biblioteket per default strävar till max hastighet på I2C-bussen och t.o.m. skriver över Wire-bibliotekets inställningar (i.e. Wire.setSpeed(100000) ).
Man bör därför särskilt i LCD-biblioteket sätta max hastighet (i.e. LCD.setBusClock(100000) ) ifall någon annan enhet inte klarar av den högre hastigheten.

Det var inte "svårare" än detta... :) :)

Summan av kardemumman är, att OpenSource är fantastiskt! Jag tror inte jag fått lösningen, eller ens svar på en motsvarande fråga gällande en kommersiell produkt under samma lördag kväll.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Jag undrade förstås hur detta "fel" hade undgått mig tidigare, men efter en kort brevväxling med upphovsmannen fick det också sin förklaring.

LCD-bibliotekets förmåga att kunna skriva över Wire-bibliotekets hastighetsinställningar är "på allmänhetens begäran" för att i synnerhet litet större grafiska displayer skall ge en hyfsat flimmerfri bild. Featuren har kommit till litet senare, men jag har hela tiden kört med en äldre version av LCD-biblioteket.
Orsaken till varför jag gjort det är egen lättja! :oops: Programminnet i växthussystemet är nästan fullt (nu 90%) så för att spara på minnet använder jag en font med enbart 7-bitars ASCII-koder. Den innehåller ju inte ÅÄÖ, så jag har ändrat på den (vilket jag beskrivit i ett tidigare inlägg).
Då man uppdaterar biblioteket återställs fonten, så då jag måste jag skriva över den igen med en backup-kopia innehållande font-ändringarna.
Eftersom jag inte behövt mera än de enklaste basfunktionerna i LCD-biblioteket har jag i stället låtit bli att uppdatera det. Min kopia var antagligen några år gammal, men i vintras uppdaterade jag - och på den vägen nu...

Återigen får man erfara livets orättvisa: när huvudet är dumt, är det kroppen som får lida! :?

Nå, nu är saken ur världen och jag får försöka luska ut hur jag skall få de resterande 10% av minnet att räcka till för styrning av takluckan (prio #1), vidareutveckling av datauppladdningen till servern (#2) och fjärrstyrning från servern/nätet (#3).
#2 och #3 verkar nog dessvärre bli MI...
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Takluckans öppningsmekaninsm börjar ta form.
Här är principen:
Luckan stängd:
VH_door_closed.png
Luckan fullt öppen:
VH_door_opened.png
För stommen tog jag en ALU 25x25x2 mm U-skena i vilken jag fräste små, rektangulära öppningar för kullagren.
IMG_20200327_195128.jpg
Ett vanligt 22x8x7 lager går precis att klämma in så att det sitter stadigt. Inget konstigare fäste behövs.
IMG_20200327_195257.jpg
I "miljonlådan" hittade jag en lämplig koppling, 8/6mm.
IMG_20200327_200753.jpg

Själva aktuatorn är en lång mutter som löper på en M8-gängstång.
IMG_20200327_201031.jpg
De kortare U-skenorna på bilden blir saxen som lyfter luckan. Ena ändan på den kortare ledas mitt på stomskenan, medan den längre ledas på vardera sidan av aktuatormuttern.
Båda saxbitarna skall ännu bearbetas för de kan fästas.

Jag fick också båten i sjön i tisdags och var ute till ön.
Inga skador från vintern.
(Ön ligger lyckligtvis i samma landskap och t.o.m. samma sjukvårdsdistrikt, annars hade det väl blivit förbjudet att åka ut dit nu...)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Spridarrören är gjorda av vanliga 20 mm elinstallationsrör. De är sammanbundna med hemgjorda klämmor av aluminiumplåt, men de förmår inte hålla riktingen. Efter hand vred sig rören så, att "duschen" sprutade snett.
För att förhindra det gjorde jag nu små blockj av akryl, vilka jag limmade fast i rören och sammanbinder dom med en bit profil vilket låser rören i läge.
Det bör väl fungera med det...
IMG_20200403_204619.jpg
IMG_20200403_204629.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Takluckans lyftmekanism behöver förstås en lägesgivare. Jag funderade på en glidpot som förskjuts från endera saxbenet, men jag hade ingen lämplig liggande.
Däremot har jag en massa vanliga vridpottar och ett kugghjul som passade exakt på potens D-fattning. Därmed går det att ändra en linjärrörelse til roterande.
Kugghjulet är ett "bra å ha" från någon för länge sedan deminterad bläckskrivare, tror jag.

Att göra en passande kuggstång och fukt- och speciellt spindel(!)tätt hölje skulle vara ett perfekt jobb för 3D-utskrift, men för det första har jag ingen sådan och för det andra är alla biblioteken stängda, så jag kommer inte åt en där heller.
Därför fick jag fräsa ut delarna i stället.
Den mjölkvita plasten är antingen polyacetat eller kanske PVC. Den är bra och fräsa och kletar inte på fräspinnen. Spånorna är mjuka och inte särskilt statisk-elektriska. Enkla att sopa upp.
Den klara plasten är akryl, och dom spånorna är hårda bitar som blir hängande fast överallt, just p.g.a. statisk elektricitet.

Fräser kuggstången:
IMG_20200406_114429.jpg
Längden ger precis fullt utslag (3/4 varv):
IMG_20200406_125152.jpg
Detta blir själva boxen:
IMG_20200409_104741.jpg
IMG_20200409_111506.jpg
Här är de olika plattorna som utgör fäste för pot och kugghjul samt ränna för kuggstången.
IMG_20200409_135515.jpg
Delarna putsade och färdiga att monteras:
IMG_20200409_185135.jpg
Kugghjulet har två hakar för att hålla det på plats. Passar precis i en 3 mm akrylplatta.
IMG_20200409_185339.jpg
IMG_20200409_185452.jpg
IMG_20200409_185518.jpg
Färdig monterad (ja, kopplingarna har jag ju inte lött dit ännu... :oops: )
IMG_20200409_190009.jpg
Åsså var sandwichen klar...
IMG_20200409_190105.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
davidi
Inlägg: 571
Blev medlem: 13 oktober 2011, 16:45:38
Ort: Ekerö

Re: Växthusautomation

Inlägg av davidi »

Den vita plasten, som du benämner som polyacetat eller kanske PVC, var köper man sånt i lite större stycken? Mina behov är två stavar runt 50 cm långa, men jag har än så länge inte hittat var man köper sånt.
Användarvisningsbild
tecno
Inlägg: 27022
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Växthusautomation

Inlägg av tecno »

Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

davidi => kolla Tecnos tips, jag kan ju inget om var man får det i Sverige.

Leverantören i Finland har ganska brett sortiment, så titta i alla fall på specen för de olika plastmaterialen. Tycker själv att det är upplysande.

https://www.etra.fi/en/engineering-plas ... tics-e5401

Jag brukar leta lämpliga bitar i deras surplus-korg. De skär delar åt kunder och säljer restbitarna för 8 eur/kg (~80 SEK), oberoende av material.
Går man där tillräckligt ofta kan man göra riktiga fynd. Oftast är det ju plattor, men ibland också rundstång och rör.
Tunna akryl-ark kan man hitta billigare annanstans, men behöver man tjockare, eller just ex. acetal, PVC eller nylon är det svårare.
davidi
Inlägg: 571
Blev medlem: 13 oktober 2011, 16:45:38
Ort: Ekerö

Re: Växthusautomation

Inlägg av davidi »

Tack för tips. Maskindelen har kvadratiska stavar som nog funkar, eller åtminstone går att fräsa till rätt dimensioner. Behöver ha dem som glidlager till ruffluckan på min båt.
Användarvisningsbild
Hesabon
Inlägg: 244
Blev medlem: 6 oktober 2010, 21:30:26
Ort: Finland

Re: Växthusautomation

Inlägg av Hesabon »

Arduino Nano tycker INTE om 24V! Testat!
IMG_20200526_120623.jpg
(En kabelända kommer loss, svänger och gör kort kontakt på fel ställe, och så kommer drivstoffet ut...) :evil: :evil: :evil:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar