altRobots
/robotigs/icons/actuator.pngActuatoren
/robotigs/icons/printboards.pngAlgemeen
/robotigs/icons/chassis.pngChassis
/robotigs/icons/florigs.pngFlorigs
/robotigs/icons/interfacing.gifInterfacing
/robotigs/icons/microphone_icon.pngMuziek
/robotigs/icons/musicKey_icon.pngMuzikanten
/robotigs/icons/shield.pngSchildjes
/sys/icons/sensors.pngSensors
/robotigs/icons/languages.pngTalen
/robotigs/icons/battery.pngVoedingen
/sys/icons/microController.pngµControllers
altContact
Grondvochtigheid Banggood"); echo ("  "); } ?>  "); /* echo (""); echo (" "); //Show pencil as button */ ?> alt  

Deze pagina is verouderd. Ga naar de vernieuwde pagina.

"); $counter = 0; $aantal = str_word_count($pict_list, 0, "0123456789"); $lijst = str_word_count($pict_list, 1, "0123456789"); while($counter < $aantal){ $pictkey = $lijst[$counter]; $qryy1 = ("SELECT * FROM illustrations WHERE ill_id = $pictkey ;"); $resulty1 = pg_query($con1, $qryy1); while($row = pg_fetch_array($resulty1)){ //Fields accesible by their name foreach( $row AS $key => $val ){ $$key = stripslashes( $val ); } } $image = ("/robotigs/documentatie/plaatjes/$ill_name"); $pictfull = str_replace('_small', '', $image); //Pictfull=biggest version $alt = ("Just wait till your 57...."); $txtname = get_txt($con1, 18, $koekje[2], $ill_id); //Robot illustrations subtitles echo (""); echo (''. $alt .'
'); $nummer = $counter + 1; $txtAfb = get_txt($con1, 9, $koekje[2], 3865); //Pic Afb if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates echo ("$txtAfb $nummer: "); echo ("$txtname"); echo ("
"); echo ("Ontkoppelen "); if ($counter==0){ echo ("Up "); }else{ echo ("Up "); } if ($nummer == $aantal){ echo ("Down"); }else{ echo ("Down"); } }else{ //Else of if Meaning the current useer is logged in echo ("$txtAfb $nummer: $txtname"); } echo ('

'); //End of this picture $counter++; //Prepair for next picture } echo (''); //All pictures are printed } //End of if there are 1 or more pictures to be printed ---------------------- ?>

Soil Hygrometer Humidity Detection Module is de officiële naam van deze sensor bij de leverancier. Deze sensor kan op vele manieren worden gebruikt om de grondvochtigheid te meten. Deze methode wordt op dit moment getest (aug 2018 online grafiek).

Temperatuur afhankelijkheid
/robotigs/icons/Screenshot from 2018-09-07 12-44-27.png /robotigs/icons/Screenshot from 2018-09-07 12-59-15.png Het blijkt dat de metingen sterk temperatuurafhankelijk zijn (linkergrafiek). Dit is natuurlijk niet vreemd en bovendien niet echt moeilijk te corrigeren. Ik doe gewoon de (minimale meting - temperatuur*5) en dat geeft een voldoende lineaire curve.

De Spanningsdeler methode
/robotigs/icons/DelerBanggoodSensorCropped.pngDe sondes die wij voor deze proef gebruiken hebben geen ingebouwde elektronica. Dus voegen wij zelf een spanningsdeler toe. Bij 10k geeft de ingang bij kortsluiting 1021. Bij geen enkel contact geeft de sensor 1. In de grond een redelijk constante waarde van rond 320. Sensors van Jan geven een gemiddelde van rond de 410. Vervolgens water gegeven en de sensor vliegt naar 830. Kijk dat geeft hoop. Hetzelfde geldt voor de Banggood sensor die zelfs op 880 stabiliseert. Vervolgens een testprogramma aangezet om beide manieren op een iets langere termijn uit te testen (ino). Oeps, het bljkt geen goed idee om dat samen in 1 pot te doen. Ze beïnvloeden elkaar toch ernstig! Ja, maar anderzijds krijg ik een duidelijke relatie tussen grondvochtigheid en meetresultaat. Des te droger, des te lager. Over tijd worden de gemeten waardes dus kleiner.

De Sparkfun manier
/robotigs/documentatie/plaatjes/moisture1_small.png Sparkfun gebruikt een DIO pin die enkel wordt aangezet indien er een meting moet worden uitgevoerd. Op deze manier hopen ze de corrosie te voorkomen. Dit is als test opgenomen in het testprogramma (ino). Indien er geen sensor is aangesloten of als er wel een sensor is aangesloten maar die hangt in de lucht dan is de reading willekeurig ergens tussen de 340 en 780 in mijn schakeling. Als de sensor is kortgesloten dan is de reading 1023. Als ik metingen doe met het Sparkfun programma dan krijg ik in droge grond metingen van rond 1018. Dus dat laat te weinig ruimte om nog vochtigere grond te meten. Immers de maximale vochtigheid (volledig kortgesloten) bedraagt 1023. Als ik dezelfde proef doe met sondes van Jan dan krijg ik zelfs direct 1023 als antwoord, ondanks dat ik de probes op maximale afstand van elkaar in de pot heb neergezet. Waarschijnlijk komt dit doordat Sparkfun al een spanningsdeler heeft ingebouwd in zijn sensor.

Oxidatie sondes
/robotigs/documentatie/plaatjes/oxidation.png Bij onjuist gebruik zal de sensor binnen enkele dagen zwaar geoxideerd zijn. De eerste testen maakten in 3 dagen korte metten van dit type sensors (afbeelding). Er zijn wel een aantal zaken die we kunnen ondernemen om de slijtage binnen de perken te houden:
  • Wissel na iedere meting de voeding en de aarde.
    Compared to TDR, FD sensors are cheaper to build and have a faster response time. However, because of the complex electrical field around the probe, the sensor needs to be calibrated for different soil types. Some commercial sensors have been able to remove the soil type sensitivity by using a high frequency.

  • Houdt de meetstroom zo klein mogelijk.
    Minder stroom betekent minder oxidatie.

  • Koop betere sensors.
    (1,32), since gold cannot oxidise: not preferred but it would help.

  • Doe minder metingen.
    Not preferred but it would help

  • Gebruik enkel een spanning tijdens metingen.
    Als er geen spanning loopt kunnen er ook geen redox reacties plaatsvinden.

Een module is overbodig, een sonde is genoeg.
We only use the sensor. Forget about the brick or even try to obtain this sensor without the brick. Furthermore we need 2 resistors of 10kΩ each. And we need 2 analogue input pins on any type of Arduino. Now connect each of the 2 pins of the sensor to an analogue input. Polarity does not matter. Also connect each analogue input pin with a 10kΩ resistor to the ground. You are ready to run.

Andere projecten
  • Gardenbot
    De oplossing van gardenbot.org is niet interessant ten opzichte de Sparkfun oplossing. Om te beginnen staat er continu spanning op de pinnen en dat willen we niet vanwege corrosie gevaar. Het omdraaien van de spanning is wel beter dan bij Sparkfun.

Eerste test
altMet de multimeter geeft de Banggood sensor een weerstand van groter dan 2mΩ. Dat kan wel kloppen wat dat is de weerstand van de lucht tussen de poten van de sensor. Ondergedompeld in vochtige grond tot aan zijn meetdraden bedraagt de weerstand 400kΩ zodra de multimeter wordt aangesloten. Na ong. 10 seconden is de weerstand opgelopen tot een redelijk constante 950kΩ. Het lijkt er op alsof de grond kan worden opgeladen als een soort condensator.

Vinduino
Vinduino is een zelfbouwpakket. Heb ik dat en wil ik dat? Hier zou een programmavoorbeeld moeten zijn te vinden. maar ik kan niets hoogfrequents vinden.

DIY calibrated gypsum soil moisture sensors (Watermark SS200 is also supported)
Hand held sensor reader (soil moisture, soil/water salinity, water pressure)
Solar powered remote sensor platform (Vinduino R3), available on Tindie.com Options include: 4 electrically separated inputs for soil moisture sensors Wifi (ESP8266) or Globalsat LM-210 LoRa module for long range (6 miles) Irrigation valve control, optional pressure sensor for valve operation feedback several options for temperature/humidity sensors
Built in solar battery charger
Built in real time clock for precise irrigation timing

Gateway to connect multiple LoRa end nodes to the Internet via Wifi (Vinduino Gateway)
Vinduino.


$val ){ $$key = stripslashes( $val ); } $jaar = substr($changeddate,0,4); $maand = substr($changeddate,5,2); $dag = substr($changeddate,8,2); $lastupdate = ("$jaar $maand $dag"); $prtsrttxt = get_txt($con1, 26, 1, $idsrtodd); $jaar = substr($createddate,0,4); $maand = substr($createddate,5,2); $dag = substr($createddate,8,2); $create_stamp = ("$dag $maand $jaar"); //GENERAL INFO FOR EVERY USER ************************************************** echo ("

"); echo (""); if ($codetext) { //Code like KY-026 or NA-41 echo (""); } //End of if ($codetext) $tmp = get_txt($con1, 9, $koekje[2], 3741); //Fieldname at screen if ($prijseurinclbtw > 0){ //Show price indication $prijs_formatted = number_format($prijseurinclbtw / 100, 2, ',', '.'); echo (""); echo (""); } //End of if ($prijseurinclbtw > 0) if ($sketchtext) { //Link to OWN SOFTWARE $tmp = get_txt($con1, 9, $koekje[2], 3738); //Fieldname at screen echo (""); } //End of if ($sketchtext) $tmp = get_txt($con1, 9, $koekje[2], 3744); //Fieldname at screen if ($pinouttext) { //Pinout echo (""); } $tmp = get_txt($con1, 9, 1, 3735); //Fieldname at screen $tmp2 = get_txt($con1, 26, 1, $row4[16]); //Group name in its language echo (""); if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates $tmp = get_txt($con1, 9, $koekje[2], 3918); //Fieldname at screen LANGUAGE if ($row4[26] == 1) {$imgname = "nederland.png";} if ($row4[26] == 2) {$imgname = "deutschland.png";} if ($row4[26] == 3) {$imgname = "uk.png";} if ($row4[26] == 4) {$imgname = "france.png";} echo (""); $tmp = get_txt($con1, 9, $row4[27], 3919); //Fieldname at screen $statuskey = get_status_key($con1, $status); $tmp2 = get_txt($con1, 61, $koekje[2], $statuskey); //Fieldname at screen echo (""); } $tmp = get_txt($con1, 9, 1, 3966); //Fieldname at screen echo (""); echo ("
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3923); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates echo (" (edit)"); } echo ("Algemene informatie test
"); $tmp = get_txt($con1, 9, $koekje[2], 3739); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //Class for colour }else{ //So you are not allowed to translate echo $tmp; //Show screenname of this field in user language } //End of If you want to translate this fieldname at screen echo (" "); if ($codelink) { echo ("$codetext"); }else{ echo ("$codetext"); } //End of if ($pinoutlink) echo ("
$tmp  "); if ($urlprijs){ echo ("€  $prijs_formatted"); }else{ echo ("€  $prijs_formatted"); } //End of if ($urlprijs > "") echo ("
$tmp  "); if ($sketchlink) { echo ("$sketchtext"); }else{ echo ("$sketchtext"); } //End of if ($sketchlink) echo ("
$tmp  "); if ($pinoutlink) { echo ("$pinouttext"); }else{ echo ("$pinouttext"); } //End of if ($pinoutlink) echo ("
$tmp  "); //MENU GROUP echo (""); echo ("$tmp2
$tmp"); echo ("flag.gif"); echo ("
$tmp  "); //STATUS echo ("$status $tmp2
$tmp  "); //LAST CHANGED $tmp = substr($changeddate, 0, 10); echo ("$tmp

"); return; //////////////////////////////////////////////////////////////////////////////// function get_status_key($con, $num){ $qry = ("SELECT id FROM status WHERE nr = $num ;"); $result = pg_query($con, $qry); $row = pg_fetch_array($result); return ("$row[0]"); } 0 AND software.rstid = 2 AND tblsystext.lanid = $koekje[2] AND tblsystext.txlid = 19 ORDER BY sftname ASC , controller ASC ;"); $result = pg_query($con1, $qry2); if (pg_num_rows($result)>0) { //Only if at least 1 program exists echo ('

'); echo (""); while($col = pg_fetch_array($result)){ $col[0] = ("$col[0]"); echo (""); echo (""); echo (""); if ($koekje[0] > 0 and $koekje[3]>0){ //User is logged in and translates echo (""); } echo (''); } echo ('
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3922); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate echo ("
$col[2]  $col[0]"); echo ("(Edit)
'); } ?> 0){ if ($header == 0) { echo ("

"); echo (""); $header++; } //End of if ($header == 0) echo (""); echo (""); } } if ($header > 0){ echo ("
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3879); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate echo ("
$colbpp[2]"); //Show software van deze bot $qry=("SELECT software_basedir FROM farmbotversie WHERE id = $colbpp[0];"); $result = pg_query($con1, $qry); $col = pg_fetch_array ($result ,0); $dir1 = "/var/www/html/robotigs/software/$col[0]"; $arr1 = glob($dir1, GLOB_ONLYDIR); if (isset($arr1[0])){ $folder = $arr1[0]; $countertmp = 0; echo ("
    "); foreach (scandir($folder, 1) as $filename) { if ($filename<>"." AND $filename <>".."){ if ($countertmp == 0){ $countertmp++; } //End of if ($countertmp == 0) $tmp = "/"; $dir = substr($folder, 14) ."/"; $link = $tmp .$dir .$filename; $showname = substr($filename, 0 ,-4); echo ("
  • "); echo "$showname"; echo ("
  • "); } //End of if ($filename<>"." AND $filename <>".."){ } //End of foreach (scandir($folder, 1) as $filename) echo ("
      "); } //End of if (isset($arr1[0])) echo ("
"); } ?>
Warning: include(/var/www/html/robotigs/includes/wishlistperpart.php): Failed to open stream: No such file or directory in /var/www/html/robotigs/includes/parts_header.php on line 128

Warning: include(): Failed opening '/var/www/html/robotigs/includes/wishlistperpart.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/robotigs/includes/parts_header.php on line 128