Met de zon meedraaiende zonnepanelen

IDE gerelateerde berichten
Berichten: 3
Geregistreerd: 13 Apr 2016, 02:39
Woonplaats: Eindhoven

Met de zon meedraaiende zonnepanelen

Berichtdoor Hubert » 13 Apr 2016, 03:55

Geachte forum leden

Ik ben hier nieuw en heb wat hulp nodig voor een zon volg systeem en dan met name de code hiervoor.


De volgende onderdelen heb ik in gebruik:

Arduino uno
Stappen motor 28BYJ-48
Driver uln2003

Het volgen van de zon heb ik opgelost na wat zoeken op internet ben ik daar uit. Alleen als het donker word moet de aangesloten stappen motor weer naar zijn beginstand terug draaien om s'morgens weer aan zijn nieuwe cyclus te kunnen beginnen.

Dat zou in de code moeten gebeuren bv "als alle drie de ldr's in het donker staan draai dan weer terug naar beginstand" alleen dat in de goede code en dat is me dat nog niet gelukt heeft iemand hierover een idee.

Natuurlijk zijn de boven genoemde onderdelen niet geschikt om daar een zonnepaneel me te laten draaien maar het gaat om een test opstelling zodat ik begrijp wat er gebeurd. Daarna volgt het bouwen in het groot.

Dit is de code die ik nu gebruik het schijnt ook anders te kunnen maar deze begrijp ik een beetje :
cpp code
const int motorPin1 =8;
const int motorPin2 =9;
const int motorPin3 =10;
const int motorPin4 =11;
const int motorDelay =30;

int right = 0;
int left = 0;
int centre = 0;

int ldr1 = 0;
int ldr2 = 1;
int ldr3 = 2;

void setup()

{
pinMode(ldr1, INPUT);
pinMode(ldr2, INPUT);
pinMode(ldr3, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}


void loop()
{

int right = analogRead(ldr1);
int centre = analogRead(ldr2);
int left = analogRead(ldr3);
{

}
if(right > centre && left < centre)
{
forward();
}
else if(left > centre && right < centre)
{
backward();


}
else if(left = centre && right = centre)
{
backward();
}

else
{
stopping();
}

}

void forward()

{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorDelay);
}

void backward()

{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorDelay);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorDelay);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(motorDelay);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorDelay);
}

void stopping()

{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Met de zon meedraaiende zonnepanelen

Berichtdoor nicoverduin » 13 Apr 2016, 08:13

Omdat stappenmotoren nog wel eens een pulse kunnen missen is het het handigste om een schakelaar te nemen die het paneel terug laat draaien zodra dat moet. Net zolang tot de schakelaar is ingedrukt. Anders zul je bij moeten houden hoeveel pulsen (+/-) je maakt en dan evenzoveel uiteindelijk om terug te draaien.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 3
Geregistreerd: 13 Apr 2016, 02:39
Woonplaats: Eindhoven

Re: Met de zon meedraaiende zonnepanelen

Berichtdoor Hubert » 13 Apr 2016, 18:07

Dus u bedoeld twee eind schakelaars aan bij de kanten van de cyclus die er voor zorgen dat de stappen motor terug word gedraaid naar de begin stand. Natuurlijk aangestuurd door de adruino en de code daarvoor moet ik ergens in de code kwijt die ik al heb.

Tenminste dat snap ik uit uw bericht.

Is dat correct ?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Met de zon meedraaiende zonnepanelen

Berichtdoor nicoverduin » 13 Apr 2016, 19:08

Yep. Eventueel kan je ook kiezen voor een licht sluis. Die is minder gevoelig voor storingen buiten.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 3
Geregistreerd: 13 Apr 2016, 02:39
Woonplaats: Eindhoven

Re: Met de zon meedraaiende zonnepanelen

Berichtdoor Hubert » 13 Apr 2016, 19:14

Dank je dat geeft weer stof tot nadenken.
Indien ik er niet uit kom vraag ik wel weer om een hint.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Met de zon meedraaiende zonnepanelen

Berichtdoor nicoverduin » 13 Apr 2016, 20:06

Zat later nog te denken aan bijvoorbeeld magneetschakelaars (Reed). De magneet buiten en de schakelaar beschermt tegen verwering.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Met de zon meedraaiende zonnepanelen

Berichtdoor shooter » 14 Apr 2016, 09:55

bij een stappenmotor heb je iets nodig die ziet wanneer de zaak in nulstand staat, gewoon met een microswitch is slimste.
dat doe je bij een eindstand. meesten gebruiken de start in de ochtend.
detectie met LDR prima, je hebt er maar 2 nodig een linkse en een rechtse.
if links=rechts dan motor stop
if links>rechts achteruit
if links < rechts dan vooruit.

de stappenmotor slechts 1 stap laten zetten en niet 8 zoals je nu doet.
verder klopt de sequence niet je hebt namelijk maar er is nooit 3 fasen aan.
(dat zie ik aan de stop stand daar is alles LOW ofwel uit.
dus dat kun je best oplossen met een case switch (soort state machine.
paul deelen
shooter@home.nl

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten