Skocz do zawartości

Prot1976

Użytkownicy
  • Zawartość

    7
  • Rejestracja

  • Ostatnio

Wszystko napisane przez Prot1976

  1. Cześć, Miał być prosty układ z prostym kodem, ale apetyt rośnie w miarę jedzenia a w lesie coraz ciemniej. w całym układzie brakuje mi jeszcze zaworu, reduktora i samej komory ale jak do tej pory całość reaguje na zmiany stężenia CO2. Zamarzyło mi się MENU, możliwość wprowadzania zmian i ich zapis w EEPROM w przypadku utraty zasilania Kod posklejany i kawałków kilku innych... całość jak na razie działa. /*Program do kontroli stężenia CO2 w komorze o pojemności około 200l * konieczna jest zmiana docelowego stężenia * dopasowanie czasu nastrzyku do różnicy między odczytem a stężeniem docelowym * zwłoka z uwagi na czas odpowiedzi czujnika CO2 i czas mieszania gazów w komorze * * w skład układu wchodzi * DFRDuino UNO v3 * DFRobot LCD Keypad Shield v1.1 * DFrobot Gravity - czujnik dwutlenku węgla CO2 IR 0-50000ppm * DFRobot 1x Relay Shield */ #include <SoftwareSerial.h> //biblioteka komunikacji z czujnikiem #include <LiquidCrystal.h> // biblioteka dla wyświetlacza 16x2 SoftwareSerial mySerial(1, 2); // RX, TX piny do komunikacji z czujnikiem unsigned char hexdata[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //Read the gas density command /Don't change the order LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //Piny do komunikacji z LCD int CO2relay = A2; // analog A2 jako wyjście przekaźnika float CO2_LCD; // prezentacja CO2 na LCD /* * */ unsigned long previousMillis = 0; unsigned currentMillis = millis(); long injection = 1000; int InjState = LOW; float SetPoint = 5.00; //przyciski int lcd_key = 0; int adc_key_in = 0; #define UP 1 #define DOWN 2 #define btnNONE 5 // odczyt przycisku int read_LCD_buttons () { adc_key_in = analogRead(0); // read the value from the sensor // my buttons when read are centered at these valies: 0, 144, 329, 504, 741 // we add approx 50 to those values and check to see if we are close if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result // For V1.1 us this threshold if (adc_key_in < 250) return UP; if (adc_key_in < 450) return DOWN; return btnNONE; // when all others fail, return this... } void setup() { pinMode(CO2relay, OUTPUT); //digitalWrite(CO2relay, LOW); mySerial.begin(9600); lcd.begin(16, 2); // start bibliotek analogWrite(10,2); } void loop() { unsigned long currentMillis = millis(); lcd_key = read_LCD_buttons(); // stan przycisków /* * tylko przyciski góra i dół * góra zwiększa wartość SetPoint o 0.1 * dół zmiejsza o 0.1 */ switch (lcd_key) { case UP: { SetPoint=SetPoint+0.1; break; } case DOWN: { SetPoint=SetPoint-0.1; break; } } mySerial.write(hexdata,9); //delay(100); for(int i=0,j=0;i<9;i++) { if (mySerial.available()>0) { long hi,lo,CO2; int ch=mySerial.read(); if(i==2){ hi=ch; } //High concentration if(i==3){ lo=ch; } //Low concentration if(i==8) { CO2=(hi*256+lo); //CO2 concentration CO2_LCD = CO2/10000.0; } } } lcd.setCursor(0,1); lcd.print("KOMORA "); lcd.print(CO2_LCD,1); lcd.print("%"); lcd.print(" |"); lcd.setCursor(0,0); lcd.print("SETUP "); lcd.print(SetPoint,1); lcd.print("%"); lcd.print(" |"); if ((CO2_LCD < SetPoint - 0.2) && (currentMillis - previousMillis >= injection)) { previousMillis = currentMillis; if (InjState == LOW){ InjState = HIGH; lcd.setCursor(13,0); lcd.print("INJ"); lcd.setCursor(13,1); lcd.print("CO2"); //delay(1000); //digitalWrite(CO2relay,LOW); //delay(2000); } else { InjState = LOW; lcd.setCursor(13,0); lcd.print("INJ"); lcd.setCursor(13,1); lcd.print("OFF"); } digitalWrite(CO2relay, InjState); } } K.
  2. Prot1976

    Kontrola CO2 w komorze o pojemności 200l

    zapomniałem dodać że cewka zaworu jest na 230VAC więc nie jest zasilana z zasilacza kontrolera, zasilacz do ardu 12V 2A wiec wystarcza
  3. Prot1976

    Kontrola CO2 w komorze o pojemności 200l

    mam problem z wyświetlaczem przy pracy samego przekaźnika wszystko jest OK, niestety problem pojawia się gdy tylko podaję zasilanie na cewkę elektrozaworu. zdjęcie poniżej pokazuje tylko co dzieje się na wyświetlaczu w skład układu wchodzi DFRDuino UNO v3 * DFRobot LCD Keypad Shield v1.1 * DFrobot Gravity - czujnik dwutlenku węgla CO2 IR 0-50000ppm * DFRobot 1x Relay Shield problem jest wyłącznie z wyświetlaczem, sam kontroler pracuje poprawnie i kontroluje zawór w zależności od stężenia CO2 Gdzie szukać problemu?
  4. Prot1976

    Kontrola CO2 w komorze o pojemności 200l

    Jest to i projekt i zarazem początkujący jestem ja , a że bardziej jestem początkujący i jest to pierwszy projekt wrzuciłem to do początkujących (to zdanie wygląda jak mój program ). Mam same problemy z tym programem , ale jeszcze jakoś daje radę.
  5. Dzień dobry, zlecę napisanie programu na Teensy 3.6 do regulacji jasności światła w cyklu dobowym. Schemat pracy ma być zapisywany w formie pliku tekstowego na karcie SD przy pomocy komputera i pobierany z niej do pamięci przez teensy w przypadku wykrycia karty. Schemat musi zawierać informacje o czasie i wartości procentowej jaką ma osiągnąć sygnał PWM dla wyjścia, np.: 06:00;000;010;020;030;... 10:12;095;100;060;080;... czyli między 06:00 a 10:12 kanał 1 zwiększy wartość o 95% kanał 2 zwiększy wartość o 90% kanał 3 zwiększy wartość o 40% kanał 4 zwiększy wartość o 50% Zmiana ma być płynna bez widocznych skoków nawet jeśli w ciągu jednej minuty wartość zmiany wyniesie 100%. Wiem że to bardzo skąpy opis ale mam nadzieję że na początek wystarczy. Pozdrawiam k
  6. Prześlij plik 3D i ilość zobaczę ile czasu potrzeba na druk, jeśli wykonanie w żywicy wchodzi w grę.
  7. Prot1976

    Wątek zbiorczy: powitania użytkowników

    Cześć, Mam na imie Karol, Z programowaniem raczej na bakier ale może się to zmieni, szukam informacji i pomocy przy budowie kontrolera warunków dla moich owadożerów. Mam pracujący układ na particle proton z kodem znalezionym w sieci, brakuje mi jednak kilku funkcji
×