Создание надежного монитора pH/EC для гидропоники с использованием зондов Atlas и Arduino — Наука в гидропонике

связанныйrssYouTubeинстаграм

Несколько месяцев назад я рассказывал о том, как с помощью Arduino можно построить простую сенсорную станцию ​​для своих гидропонных проектов (см. здесь). Однако в этом небольшом проекте использовались относительно дешевые – но я нашел не очень надежные – датчики pH/EC и доски от гравитации, что делает его худшим выбором для более профессионального проекта, направленного на постоянный мониторинг pH/EC производственной гидропонной установки. Сегодня я собираюсь рассказать вам, как вы можете создать специальный монитор pH/EC, используя надежные датчики pH от Atlas, которые также имеют несколько важных преимуществ, которые мы обсудим в этом посте. Я также хотел бы отметить, что Atlas ничего не платит мне за написание этого поста, я пишу только из-за своего опыта использования их зондов.

Создание надежного монитора pH/EC для гидропоники с использованием зондов Atlas и Arduino — Наука в гидропонике

Датчики pH/EC от гравитации имеют несколько проблем при поиске надежной сенсорной установки. Первая проблема, с которой они сталкиваются, заключается в том, что зонды не рассчитаны на постоянное погружение, поэтому они повреждаются, если вы все время помещаете их в раствор, что, вероятно, именно то, что вы хотите сделать в производственной гидропонной установке. Вторая проблема заключается в том, что платы требуют кабельного подключения к Arduino, что создает значительный уровень шума, который может вызвать проблемы с измерениями. Из-за плохой изоляции также могут возникнуть проблемы с гравитационными платами при одновременном измерении EC/pH. Чтобы преодолеть эти проблемы, мы можем использовать датчики и платы от Atlas, которые имеют то преимущество, что не имеют кабельных соединений с Arduino — соединения осуществляются напрямую через контакты — плюс датчики рассчитаны на постоянное погружение и намного более надежны. Вот что нам понадобится для создания этого проекта:

Как вы заметили, этот сенсорный проект намного дороже сенсорной станции, которую я обсуждал ранее, с ценой около 490 долларов США (без учета доставки). Однако при поиске надежной установки вам определенно следует отдавать предпочтение дополнительным расходам, поскольку они, вероятно, окупятся гораздо более длительным временем обслуживания.

Когда вы получаете комплекты pH/EC, первое, что вы хотите сделать, это переключить свои платы EZO (небольшие печатные платы, которые поставляются с ними) в режим i2C, чтобы вы могли использовать их со своим минищитом-щупальцем. Для этого следуйте инструкциям здесь, следуйте инструкциям в разделе «Ручное переключение между UART и I2C», используйте перемычки «мама», чтобы упростить этот процесс. Обратите внимание, что вы можете использовать аналоговый 5В экран ЖК-дисплея и контакты заземления, когда вам нужно питание в процессе.

//Libraries
#include <U8glib.h>
#include <stdio.h>
#include <Wire.h>
#include <Arduino.h>

#define TOTAL_CIRCUITS 2  

///---- variables for pH/EC tentacle shield ------- //

#define TOTAL_CIRCUITS 2   

char sensordata[30];                  
byte sensor_bytes_received = 0;       

byte code = 0;                        
byte in_char = 0;  
int channel_ids[] = {99, 100} ;                   
   
// ------------------------------------------------ //    

// EC values // CHANGE THESE PARAMETERS FOR EC PROBE CALIBRATION
#define EC_PARAM_A 0.00754256

//pH values // CHANGE THESE PARAMETERS FOR PH PROBE CALIBRATION
#define PH_PARAM_A 1.0
#define PH_PARAM_B 0.0

#define XCOL_SET 55
#define XCOL_SET2 65
#define XCOL_SET_UNITS 85

//--------------------------

U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);   
float pH, EC;

//--------------------------

void draw() {
  u8g.setFont(u8g_font_04b_03); 
  
  u8g.drawStr(0,11,"pH:");
  u8g.setPrintPos(XCOL_SET,11);
  u8g.print(pH);
  
  u8g.drawStr(0,21,"EC:");
  u8g.setPrintPos(XCOL_SET,21);
  u8g.print(EC);
  u8g.drawStr( XCOL_SET_UNITS,21,"mS/cm" );
  
}

void read_tentacle_shield(){

  for (int channel = 0; channel < TOTAL_CIRCUITS; channel++) {      
  
    Wire.beginTransmission(channel_ids[channel]);     
    Wire.write('r');                         
    Wire.endTransmission();                       
    
    delay(1000); 

    sensor_bytes_received = 0;                        
    memset(sensordata, 0, sizeof(sensordata));        

    Wire.requestFrom(channel_ids[channel], 48, 1);    
    code = Wire.read();

    while (Wire.available()) {         
      in_char = Wire.read();           

      if (in_char == 0) {               
        Wire.endTransmission();         
        break;                          
      }
      else {
        sensordata[sensor_bytes_received] = in_char;      
        sensor_bytes_received++;
      }
    }
    
    if (code == 1){
      if (channel == 0){
        pH = atof(sensordata);
        pH = pH*PH_PARAM_A + PH_PARAM_B;
      }
      if (channel == 1){
        EC = atof(sensordata);
        EC = EC*EC_PARAM_A;
      }    
    }
  }
  
}

void setup()
{
    pinMode(13,OUTPUT);  
    Serial.begin(9600);
    u8g.setContrast(0);
    u8g.setRot180(); 
}

void loop()
{
 
  digitalWrite(13, HIGH);       
  delay(800);
  digitalWrite(13, LOW);   
    
  read_tentacle_shield();

  u8g.firstPage();
    do  {
      draw();
    } 
      while( u8g.nextPage() );          
      
}

После того, как вы сменили платы EZO на i2C, теперь вы можете подключить все к Arduino и загрузить код в свой Arduino. Подключите платы EZO к мини-тентаклевому экрану, а затем подключите этот экран к Arduino. Вы заметите, что платы EZO не позволяют подключить ЖК-экран прямо сверху — поскольку схемы EZO делают экран слишком высоким — поэтому вам следует использовать наращиваемые разъемы для расширения соединений, чтобы вы могли подключить ЖК-экран сверху. без проблем. Перед загрузкой кода обязательно загрузите и установите библиотеку U8glib в IDE Arduino.

Как и в предыдущем коде, вы заметите, что в начале кода есть переменные с именами PH_PARAM_A, PH_PARAM_B и EC_PARAM_A, которые вы должны изменить, чтобы откалибровать свои датчики. Следуйте инструкциям по калибровке, которые я дал в предыдущем посте, чтобы понять это. Используя калибровочные растворы, входящие в комплект поставки, вы сможете выполнить эту процедуру калибровки. Всякий раз, когда вы хотите откалибровать свои датчики, вы должны сбросить эти переменные до их исходных значений, повторно загрузить код и повторно выполнить измерения.

Следуя этому руководству, вы получите очень надежную настройку датчика с использованием очень качественных пробников. Эти датчики также соединены с платой, которая не имеет проводных соединений с Arduino, что обеспечивает очень высокое качество показаний с очень небольшим количеством шума. Кроме того, экран ЖК-дисплея открывает возможность добавления дополнительных датчиков к вашей станции, чтобы вы могли контролировать температуру, влажность и углекислый газ потенциально из одного места.

Фейсбуктвиттерреддитпинтерестсвязанный