Automatické zatváranie kurníku pre sliepky

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
Dadasys
Příspěvky: 18
Registrován: 17 dub 2020, 14:52
Reputation: 0

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od Dadasys » 30 dub 2020, 12:52

Přeci jen je potřeba doladit jednu drobnost. Po zapnutí do sítě se motor točí bez ohledu na ldr čidlo a polohu dveří. Dumám, jak docílit toho, aby motor po zapnutí stál až do prvního čtení světla..

Kód: Vybrat vše

const int EnMotorPin = 9;    // enable motor  - pin 9  PWM
const int CloseDoorPin = 8;  // direction close motor - pin 8
const int OpenDoorPin = 7;   // direction open motor  - pin 7
const int photocellPin = A0; // photocell connected to analog 0

const long eventTime_1_LDR = 20000; // 20 vteřin
unsigned long previousTime_1 = 0;

int photocellVal;            // analog reading of the photocel

bool daylight = true;        // daylight status
int darkthreshold = 20;
int daythreshold = 350;      

int systemState = 0;
int SPEED = 220;

int bottomSwitchPin = 2;  // Reed switches top and bottom of coop door
int topSwitchPin = 4;

bool topSwitchState; // true if door is up
bool bottomSwitchState; // true if door is down

void setup() {

  Serial.begin(9600);
  pinMode(bottomSwitchPin, INPUT);
  pinMode(topSwitchPin, INPUT);
  pinMode(EnMotorPin, OUTPUT);
  pinMode(CloseDoorPin, OUTPUT);
  pinMode(OpenDoorPin, OUTPUT);
  
}

void loop() {
  systemState = 0;
    unsigned long currentTime = millis();
    if ( currentTime - previousTime_1 >= eventTime_1_LDR) {
    photocellVal = analogRead(photocellPin); // read inputs
    previousTime_1 = currentTime;
  }

  if (photocellVal > daythreshold)

  {
    daylight = true;
  }
  if (photocellVal < darkthreshold)
  {
    daylight = false;
  }
  topSwitchState = digitalRead(topSwitchPin);
  bottomSwitchState = digitalRead(bottomSwitchPin);
  //  read system status
  if (daylight == true && topSwitchState == true)
  {
    systemState = 0;   // motor stop
  }
  if (daylight == true && topSwitchState == false)
  {
    systemState = 1;  // drive door up
  }
  if (daylight == false && bottomSwitchState == true)
  {
    systemState = 0;    // motor stop
  }
  if (daylight == false && bottomSwitchState == false)
  {
    systemState = 2;  // drive door down
  }
  DispVals();
  switch (systemState) {
    case 0: // motor stop
      digitalWrite(CloseDoorPin, LOW);
      digitalWrite(OpenDoorPin, LOW);
      analogWrite(EnMotorPin, 0);
      break;
    case 1:  //drive door up
      digitalWrite(CloseDoorPin, LOW);
      digitalWrite(OpenDoorPin, HIGH);
      analogWrite(EnMotorPin, SPEED);
      break;
    case 2:  // drive door down
      digitalWrite(CloseDoorPin, HIGH);
      digitalWrite(OpenDoorPin, LOW);
      analogWrite(EnMotorPin, SPEED);
      break;
    default:
      digitalWrite(CloseDoorPin, LOW);
      digitalWrite(OpenDoorPin, LOW);
      analogWrite(EnMotorPin, 0);
      break;
    
      }
}

void DispVals()
{
  Serial.print("topSW ");
  Serial.print(topSwitchState);
  Serial.print("\t");
  Serial.print("botSW ");
  Serial.print(bottomSwitchState);
  Serial.print("\t");
  Serial.print("PhotoVal ");
  Serial.print(photocellVal);
  Serial.print("\t");
  Serial.print("daylight ");
  Serial.print(daylight);
  Serial.print("\t");
  Serial.print("systemState ");
  Serial.print(systemState);
  Serial.print("\t");
  if (systemState == 0)
  {
    Serial.println("\t door stopped");
  }
  if (systemState == 1)
  {
    Serial.println("\t door driving up");
  }
  if (systemState == 2)
  {
    Serial.println("\t door driving down");
  }
}

Uživatelský avatar
kiRRow
Příspěvky: 1163
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od kiRRow » 30 dub 2020, 13:12

V setupu, po tom co nastavíš inputy a outputy, tam musíš nastavit výstupy tak aby se ti motor netočil. Ideálně by měl provést třeba otevření a zastavit se, aby po startu byl vždy v jedné a určité poloze - jakože něco jako kalibrace.

BigSandy
Příspěvky: 220
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od BigSandy » 02 kvě 2020, 02:25

Jen jsem to tak rychlo prolit a používáš jen modul času DS3231?
Jak jsi s tým spokojený.
Já otvíraní kurníku dělal už před 5 roky take s hodinami a po roce, když jsem nacházel chrápat slepice venku to honem předělával na fotoodpor GL5528.
Přes zimu už sedi slipky v 17:30 hod v kurníku a přes leto ještě ve 20:30 litaji po zahradě

Axamith
Příspěvky: 533
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od Axamith » 02 kvě 2020, 07:49

Okrajově sleduji debatu o slepicích a pořád nechápu, proč se tady řeší časové rozsahy, i když slunce zapadá v danou dobu, pořád zde vstupuje faktor zatažené oblohy. Já bych to také řešil sledování konkrétních světelných podmínek.

Dadasys
Příspěvky: 18
Registrován: 17 dub 2020, 14:52
Reputation: 0

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od Dadasys » 02 kvě 2020, 08:15

kiRRow píše:
30 dub 2020, 13:12
V setupu, po tom co nastavíš inputy a outputy, tam musíš nastavit výstupy tak aby se ti motor netočil.
Zkoušel jsem nastavit podle SZ, ale pořád se točí. Zatím řeším přidáním delay v setupu.. :?

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od pavel1tu » 02 kvě 2020, 12:06

Axamith píše:
02 kvě 2020, 07:49
Okrajově sleduji debatu o slepicích a pořád nechápu, proč se tady řeší časové rozsahy, i když slunce zapadá v danou dobu, pořád zde vstupuje faktor zatažené oblohy. Já bych to také řešil sledování konkrétních světelných podmínek.
Kamarád to tak měl a zrušil to,
u nás pod horama se často zatáhne na chvilku a pak zase roztáhne a stávalo se, že se dveře zavřely a slepice byly venku.
Teď z toho má "hybrida" a je spokojenější.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od pavel1tu » 02 kvě 2020, 14:46

Dadasys píše:
02 kvě 2020, 08:15
Zkoušel jsem nastavit podle SZ, ale pořád se točí. Zatím řeším přidáním delay v setupu.. :?
A nepoužíváš relátka co fungují inverzně ?
Tj. když pošleš "1" relé rozepne, když "0" relé sepne ?
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Dadasys
Příspěvky: 18
Registrován: 17 dub 2020, 14:52
Reputation: 0

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od Dadasys » 02 kvě 2020, 14:50

Nemám tam žádné relé.. Jede to pres
l298n

Odesláno z mého Lenovo P2a42 pomocí Tapatalk



Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od pavel1tu » 02 kvě 2020, 17:41

No a jak máš ten setup()
Hned po deklaraci co je výstup,
musíš tam nastavit nějaký směr, já mám směr LOW, LOW což je asi STOP a ovládací PWM na nulu - pro jistotu.

Máš to dobře zapojené ?
Tohle mám na stole, sice s jiným můstkem, mám velký motor, a funguje mi to.
https://howtomechatronics.com/tutorials ... -h-bridge/
Já tedy ještě propojil GND mezi zdroji 5/12V mám je nezávislé.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Dadasys
Příspěvky: 18
Registrován: 17 dub 2020, 14:52
Reputation: 0

Re: Automatické zatváranie kurníku pre sliepky

Příspěvek od Dadasys » 02 kvě 2020, 20:10

Celý kód je o několik příspěvků výš. Napájí se 12V ten můstek a z něj je 5V výstup do arduina. Zapojení kdyžtak nakreslím. D

Odesláno z mého Lenovo P2a42 pomocí Tapatalk



Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti