• Most regisztráltál, de nem tudsz privát üzenetet küldeni?

    Kérjük olvasd el milyen korlátozások vonatkoznak rád, miután regisztrációd jóvá lett hagyva.
    Regisztrációs korlátozások

Építsünk akváriumvezérlőt Arduino-ból

Sziasztok! Szeretnék egy hőmérőt üzembe helyezni. Tesztelés gyanánt össze is állítottam egy uno+Ds18b20-as kombót. Elvileg működik is de rendszertelen időközönként a mutatott hőmérséklet leugrik - 127 C fokra. Mi lehet az oka? Próbáltam másik uno-t másik hőmérőt de mindig ugyanaz. Valakinek ötlete?

Tapatalkkal küldve az én LG-D620 eszközömről
 
Általában hosszú kábel okozza, vagy a felhúzó ellenállás hiánya.
Így valahogy:
http://chipenable.ru/images/stories/articles/DS18B20/1-podkluchenie-ds18b20-ds18s20.png
Ha hosszabb a kábel, érdemes próbálkozni kisebb ellenállással (2K2), de 1K alá ne menj.

Sziasztok! Szeretnék egy hőmérőt üzembe helyezni. Tesztelés gyanánt össze is állítottam egy uno+Ds18b20-as kombót. Elvileg működik is de rendszertelen időközönként a mutatott hőmérséklet leugrik - 127 C fokra. Mi lehet az oka? Próbáltam másik uno-t másik hőmérőt de mindig ugyanaz. Valakinek ötlete?

Tapatalkkal küldve az én LG-D620 eszközömről
 
Utoljára módosított:
Köszi a segítséget, úgy néz ki a felhúzó ellenállás csökkentésével megoldódott a probléma, mivel a gyári kábelhosszal illetve a leírásokban szereplő 4,7K-s ellenállással használtam eszembe sem jutott hogy ez lehet a gond.
 
Még a buszsebesség csökkentésével lehet az ilyen problémákon segíteni. Kisebb sebességnél a nagyobb ellenálláson keresztül is fel tud menni a vonal logikai '1'-be.
 
Sziasztok!

Egy kis segítségre lenne szükségem, nagy mennyiségű adatot szeretnék küldeni serialon az ardura de úgy néz ki kevés a soros buffer.
Valakinek esetleg valami ötlete?

Köszönettel Laci
 
Sziasztok!

Már egy ideje kisebb-nagyobb megszakításokkal dolgozom a vezérlőmön. A közelmúltban találkoztam a NEXTION kijelzővel és ez lényeges változást hozott az eddig dédelgetett menüvezérelt projektembe. A cél karácsony, így addigra akarok előállni (és beüzemelni) az 1.0 verzióval (Arduino Mega 2560 + 7' Nextion + pH + hőmérők + teljes kontrol a világítás, co2, fűtés, hűtés, UV.... stb. felett - minden fontos paraméter kivülről állítható auto és manual üzemben).
Természetesen közzéteszem a teljes anyagot, mivel innen indult az álom... Addig ha érdekelnek a dizájnos és egyszerűen programozható kijelzők, keress rá a NEXTON HMI-re és építs....

Addig is egy friss tapasztalat. Beszereztem az akciós oldalról egy "Liquid PH0-14 Value Sensor Module + BNC PH Electrode Probe for Arduino" pH szenzort, és elég sokat szívtam a beüzemeléssel. Mivel a net tele van rossz és pontatlan, használhatatlan példákkal, megosztom veletek az általam jónak és pontosnak vélt kódot. Több forrásból dolgoztam, így ebben a formában többé-kevésbe új a kód (a képletet loptam :whistle:). A pH 4.01-es etalon folyadékkal 25C-on +-2 százados pontosságot sikerült kihozni belőle. Ha módosító javaslatotok van, ne habozzatok az írással...
Természetesen a teljes programban nem delay-el van időzítve a tényleges mérés, és csak percenként 1 mérésciklus lefutás van jelenleg.

Kód beillesztése:
#define pHSensorPin 7
float pH_ertek;

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

void loop()
{
  Serial.println(" * PH meres indul... *");
   unsigned long int pHkozep;
   analogWrite(pHSensorPin, HIGH);
  int buf[10];             //buffer feltöltése
   for(int i=0;i<10;i++)   // 10 mérés átlagolása
    {buf[i]=0;
    buf[i]=analogRead(pHSensorPin);
    delay(10);
    }
   for(int i=0;i<9;i++)
    {byte j=0;
    for(int j=i+1;j<10;j++)
     {if(buf[i]>buf[j])
      {int temp=buf[i];
       buf[i]=buf[j];
       buf[j]=temp;
      }
     }
   }
 pHkozep = 0;             //min és max értékek elhagyása
  for(int i=2;i<8;i++)     //6 középső érték kiválasztása
   pHkozep+=buf[i];
    float pHsensor_atlag = pHkozep/6;
   pH_ertek = mapfloat(pHsensor_atlag, 765, 665, 4.01, 7.01);   // Map the '0 to 1023' result to '0 to 14'.
   analogWrite(pHSensorPin, LOW);
    Serial.print(" PH ertek: "), Serial.println(pH_ertek);
    Serial.println(" * PH meres vege! *");
   delay(1000);
}

float mapfloat(long x, long in_min, long in_max, long out_min, long out_max){
 return (float)(x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min;
}
 
Utoljára módosított:
Én ezt a progit, pontosabban, ennek alapját találtam, de azt most persze nincs meg. Ebben igazából csak az LCD kijelzés amit beleraktam. Ennél annyi pluszt látok, hogy az Offset résznél kalibrálható a pH mérő

Kód beillesztése:
/*
 # This sample code is used to test the pH meter V1.0.
 # Editor : YouYou
 # Ver    : 1.0
 # Product: analog pH meter
 # SKU    : SEN0161
*/
#define SensorPin A2            //pH meter Analog output to Arduino Analog Input 0
#define Offset 0.00            //deviation compensate
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth  40    //times of collection
#include "RTClib.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int pHArray[ArrayLenth];   //Store the average value of the sensor feedback
int pHArrayIndex=0;  
RTC_DS1307 RTC;
void setup(void)
{
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
  Serial.println("pH meter experiment!");    //Test the serial monitor



// set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // initialize the serial communications:
  Serial.begin(9600);
  // set up the LCD's number of columns and rows:



}
void loop(void)
{
  static unsigned long samplingTime = millis();
  static unsigned long printTime = millis();
  static float pHValue,voltage;
  if(millis()-samplingTime > samplingInterval)
  {
      pHArray[pHArrayIndex++]=analogRead(SensorPin);
      if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
      voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
      pHValue = 3.5*voltage+Offset;
      samplingTime=millis();
  }
  if(millis() - printTime > printInterval)   //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
  {
    Serial.print("Voltage:");
        Serial.print(voltage,2);
        Serial.print("    pH value: ");
    Serial.println(pHValue,2);
        digitalWrite(LED,digitalRead(LED)^1);
        printTime=millis();
    lcd.clear();
    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print("pH:");
    lcd.setCursor(4, 0);
    lcd.print(pHValue,2);
    lcd.setCursor(10, 0);
    lcd.print(voltage,2);
    lcd.setCursor(0, 0);
    lcd.print("Volt:");
 
   
 

       
  }
}
double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
  if(number<=0){
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if(number<5){   //less than 5, calculated directly statistics
    for(i=0;i<number;i++){
      amount+=arr[i];
    }
    avg = amount/number;
    return avg;
  }else{
    if(arr[0]<arr[1]){
      min = arr[0];max=arr[1];
    }
    else{
      min=arr[1];max=arr[0];
    }
    for(i=2;i<number;i++){
      if(arr[i]<min){
        amount+=min;        //arr<min
        min=arr[i];
      }else {
        if(arr[i]>max){
          amount+=max;    //arr>max
          max=arr[i];
        }else{
          amount+=arr[i]; //min<=arr<=max
        }
      }//if
    }//for
    avg = (double)amount/(number-2);
  }//if
  return avg;
}
 
Sziasztok!

Már egy ideje kisebb-nagyobb megszakításokkal dolgozom a vezérlőmön. A közelmúltban találkoztam a NEXTION kijelzővel és ez lényeges változást hozott az eddig dédelgetett menüvezérelt projektembe. A cél karácsony, így addigra akarok előállni (és beüzemelni) az 1.0 verzióval (Arduino Mega 2560 + 7' Nextion + pH + hőmérők + teljes kontrol a világítás, co2, fűtés, hűtés, UV.... stb. felett - minden fontos paraméter kivülről állítható auto és manual üzemben).
Természetesen közzéteszem a teljes anyagot, mivel innen indult az álom... Addig ha érdekelnek a dizájnos és egyszerűen programozható kijelzők, keress rá a NEXTON HMI-re és építs....

Addig is egy friss tapasztalat. Beszereztem az akciós oldalról egy "Liquid PH0-14 Value Sensor Module + BNC PH Electrode Probe for Arduino" pH szenzort, és elég sokat szívtam a beüzemeléssel. Mivel a net tele van rossz és pontatlan, használhatatlan példákkal, megosztom veletek az általam jónak és pontosnak vélt kódot. Több forrásból dolgoztam, így ebben a formában többé-kevésbe új a kód (a képletet loptam :whistle:). A pH 4.01-es etalon folyadékkal 25C-on +-2 százados pontosságot sikerült kihozni belőle. Ha módosító javaslatotok van, ne habozzatok az írással...
Természetesen a teljes programban nem delay-el van időzítve a tényleges mérés, és csak percenként 1 mérésciklus lefutás van jelenleg.

Kód beillesztése:
#define pHSensorPin 7
float pH_ertek;

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

void loop()
{
  Serial.println(" * PH meres indul... *");
   unsigned long int pHkozep;
   analogWrite(pHSensorPin, HIGH);
  int buf[10];             //buffer feltöltése
   for(int i=0;i<10;i++)   // 10 mérés átlagolása
    {buf[i]=0;
    buf[i]=analogRead(pHSensorPin);
    delay(10);
    }
   for(int i=0;i<9;i++)
    {byte j=0;
    for(int j=i+1;j<10;j++)
     {if(buf[i]>buf[j])
      {int temp=buf[i];
       buf[i]=buf[j];
       buf[j]=temp;
      }
     }
   }
 pHkozep = 0;             //min és max értékek elhagyása
  for(int i=2;i<8;i++)     //6 középső érték kiválasztása
   pHkozep+=buf[i];
    float pHsensor_atlag = pHkozep/6;
   pH_ertek = mapfloat(pHsensor_atlag, 765, 665, 4.01, 7.01);   // Map the '0 to 1023' result to '0 to 14'.
   analogWrite(pHSensorPin, LOW);
    Serial.print(" PH ertek: "), Serial.println(pH_ertek);
    Serial.println(" * PH meres vege! *");
   delay(1000);
}

float mapfloat(long x, long in_min, long in_max, long out_min, long out_max){
 return (float)(x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min;
}


Ezt a HMI-t én is csak ajánlani tudom. Nekem is nagyon bejött. (Azt hiszem régebben már be is linkeltem ide :D)
 
Sziasztok,

szerintetek egy ilyen tápot ráköthetek egy Arduino UNO-ra?
Azt tudom hogy 12V-is lehet, de esetleg az Amperszám okozhat-e gondot.

220-led-tapegyseg-12v-2a-24w-fem-haz

vagy

221-led-tapegyseg-12v-5a-60w-fem-haz

Az előző vezérlőnél amit csináltam ott az Arduinot 9V-s táppal hajtom, és a többi megy 12V-ról (ventilátorok).
Ha tudnám arról táplálni, akkor ezzel kiváltanám a 9V-s külön tápot.

Köszi a segítséget előre is.

Üdv,
Krisztián
 
Utoljára módosított moderátor által:
Én is dobtam össze vezérlőt....
3fokozatban kapcsolja a fénycsöveket
CO2 vezérlés, Szűrőtiltás etetéshez, Hőfok és idő kijelzéssel :D
https://photos.google.com/share/AF1...?key=aE9PcDM1elhlRk9EaEFsTlBtdWJoTDFBZlRYZmN3
AF1QipP6azCPmswm7UPTziehnif3DAKxitxiY1pnVgc
 
Udv!

egy kis segitseget szeretnek kerni.
egy ideje olvasgatom mar a topicot most sikerult az utolso hozzaszolashoz ideerni :)
Erdekes tema a vezerlo epites,meg nekemis aki annyira nem konyit az ilyen jellegu dolgokhoz,de kello erdeklodessel es kitartassal szerintem megepitheto.

A kovetkezo akihoz szeretnek majd enis egy ilyen vezerlot osszedobni.

Amit szeretnem hogy tudjon:
-2 szuro van mindegyiket kulon gombnyomasra leallitani/inditani
-lampa idozitve fel/lekapcs
(ventik akkor indulnak mikor a pilacs)
(nem dimmelheto csak fel/le)
-lampa idon kivuli fel/lekapcs gombbal
-co2 idozitve fel/lekapcs
-aki vizofok/ido kiiras kijelzore

(kesobb dozispumpat is szeretnek hasznalni es ahhoz is jolenne igy bovithetore szeretnem hogy ne legyen gond.
kesobbi ph meres stb)

A kerdesem az volna hogy mivel jarok jobban?

Ha egyesevel osszevadaszom a dolgokat amik kellenek vagy ha veszek egy 'tanulocsomagot' es mindent megtanulva kesobb ehhez veszem meg a dolgokat?

60napos tanfolyamot nezegetem mar de igy hogy nincs elottem igy nem olyan :)
konkretan ezt neztem:

tanfolyami-kezdocsomag-btanfolyami-teljes-keszletb-p-505

ebbol is a mega ch 340 vagy r3 bar nemtudom meg mi a kulonbseg a ketto kozt.
az sem lenne hatrany ha bluetothon tudna b4 beszelgetni a geppel mert asztali gepem van es olyan hosszu kabelrol meg nem hallottam amivel ha beepitettem is ossze tudnam dugni az ardut beepites utan :)najo..legyen 6 meter de igy egyszerubb volna.

elore is koszi! :)
 
Utoljára módosított moderátor által:
Minden megvalósítható, de helyedbe uno r3-at elfelejteném, sok kimenet kell. vagy a mega vagy a due
Nekem is rendelés alatt vana Due, uno r3 már kevés lessz :D

6m-nél van hoszabb usb mi aktív erősítővel rendelkezik :D
 
Nekem is rendelés alatt vana Due, uno r3 már kevés lessz :D
A DUE nem macerás kicsit? Azt néztem, hogy annak 3,3 volt az üzemi feszültsége, míg a többinek 5 volt, és a kütyük többsége, amit kapni a panelhoz 5 voltos.
 
Én is csak azért emlékeztem erre, mert van nekem is DUE, csak én USB billentyűzet emuláláshoz vettem, mert az meg ez és a Leonardo tudja csak.
Én a I/O miatt néztem ki meg a jóval nagyobb órajel miatt. De akko marad a Mega


Tapatalkkal küldve az én EVOLVEO_StrongPhone_Q7_LTE eszközömről
 
Back
Oldal tetejére