van sat receiver naar solartracker

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 5
Geregistreerd: 03 Dec 2012, 14:34

van sat receiver naar solartracker

Berichtdoor digiwalker » 03 Dec 2012, 15:05

Ombouw project van sat receiver naar solartracker

Hallo Even voorstellen Ik ben Rene , gepensioneerd en camperbezitter.
Op mijn camper zat een oud analoge satelietontvanger van Kathrein.
Om deze te upgraden naar het digitale systeem vond ik zonde van het geld temeer TV kijken bij ons geen prioriteit heeft.
Dus ik had een set over.

Afbeelding

:idea:
Het idee is geboren, nu de uitvoering.
Eerst wat filosoferen hoe we dit gaan aanpakken.
Uit nieuwsgierigheid beide apparaten maar open gemaakt om de inhoud te bekijken.
De stuurunit HDP160 bestaat uit een microprocessor van het type Z80 met 2 geheugenchips en 1 Eprom. Verder een uhf signaaldecoder, een seriele poort en wat randverschijnselen. De Led indicator en de stuurunit zitten op de voorkant.
Ik was niet van plan om nieuwe software te ontwikkelen en zodoende de stuurunit geschikt te maken voor 2 assige zonnevolging.
M.i. is alleen een horizontale beweging voldoende. De elevatie kan éénmalig ingesteld worden.
Deze concessie betekent dat alleen 2 signalen naar de stuurunit gemaakt moeten worden. T.w. van oost naar west. en weer terug naar oost. M.a. links of rechts om.

De unit HDP 160 waarop de BAS60 gemonteerd zit is uitgerust met 2 dc electromotoren, 2 eindschakelaartjes en een printplaat voor de motorsturing. Elke motor is omschakelbaar gemaakt d.m.v. 4 mosfets. Het geheel is verbonden met de stuurunit d.m.v. een 8 aderige kabel.
De werking is simpel en in diverse electronicabladen uitvoerig beschreven. Een blokschema heb ik uit kunnen werken.

De antenne BAS60 is simpel te demonteren. Op de steun waar de antenne zat komt een 60Wp zonnepaneel van Siemens.(afm 100x55x3,5)

Het zonnevolgsysteem zal bestaan uit 2 led's ,haaks op elkaar gemonteerd en aangesloten op 2 mosfets die 2 microrelais aansturen. Het principe is dat als een led door de zon beschenen wordt deze een spanning gegenereerd. Deze spanning wordt versterkt door de mosfet die vervolgens het relais inschakelt. Het relaiscontact staat vervolgens parallel aan de stuurknop op de voorzijde van de stuurunit. Wanneer beide led's worden beschenen zal door een kruisvergrendeling de relais gedeactiveerd worden. Wordt dan de 2e led beschenen dan zal het 2e relais aangetrokken en verdraait de unit zich verder.
Na wat googlen toch weer van mening veranderd en ik denk dat ik met wat kleine (3,5V) PV cellen ga experimenteren. Deze kan ik uit goedkope Led sleutelhangers slopen. ;) En waarschijnlijk direct op de analoge poorten van de Arduino aansluiten.

Vorige week via Marktplaats een Arduine Uno en een relaisshield besteld. Totaal €32
Komende week ga ik wat principeschema's opzetten. Deze zal ik hier plaatsen.

Wie kan mij met raad en daad bijstaan? Vooral omdat ik het programmeren nog niet onder de knie heb.

Wordt vervolgd.

Rene
lid van http://www.camperforum.nl

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: van sat receiver naar solartracker

Berichtdoor pjh » 03 Dec 2012, 23:16

Het lijkt erop dat je analoge oplossingen zoekt voor je queeste. Daar weet ik nagenoeg niks vanaf.
Maar met een Arduino Uno kun je meer bereiken dan je hierboven beschrijft.
Zo kan ik me voorstellen dat een scherpe schaduw op de LED richting zon, de OUTPUT van deze lager kan maken dan de andere LED. Hetgeen een schijnbeweging oplevert. Wanneer je nu op je gemakje over een lange lindelaan rijdt, zit je ding steeds nee te schudden.
Kun je vast met een condensator afdempen oid. Maar ik zou
-LDR's 1 euro (130739841768 => kun je zoeken op ebay)
-een compas 6 euro (271037783214)
-een GPS 20 euro (271079582518)
-een RTC 2 euro (121014967852)
-CFcard reader 2 euro (320940762574)
-en grote relais die je met mini-5Volt-signalen kunt aansturen gebruiken. 4 euro (150945826473)

Ben je 40-50 euro kwijt. Wel chinees spul natuurlijk.

voordelen:
-met LDR's krijg je mooi 10-bits lichtsterkte op je arduino. Je hebt 6 analoge inputs, dus kun je -zomaar per 360/6=60 graden de lichtsterkte meten.
-Ook zonder licht weet je waar de zon staat (gps, compas).
-Je kunt je reis separaat loggen en later eenvoudig op een google-maps zetten (http://www.jeremyblum.com/2012/07/16/tutorial-15-for-arduino-gps-tracking/)
Je relais worden digitaal aangestuurd. Conflicten zijn niet afhankelijk van "analoge logica".
-enzovoort.

Nadeel:
-het kan veel simpeler.

Berichten: 5
Geregistreerd: 03 Dec 2012, 14:34

Re: van sat receiver naar solartracker

Berichtdoor digiwalker » 19 Dec 2012, 10:52

De zonnevolger prototype.

Het is zover. We hebben de Kathrein HDP 160 gesloopt.Afbeelding
Alles er uit, behalve de elektromotoren en de eindschakelaars. De print met de Mosfet H-bridge bleek onbruikbaar door de toegepaste elektronica. Het was niet eenvoudig te achterhalen hoe de H-bridge aangestuurd moest worden.
Dus heb ik besloten om de motoren aan te sturen met een relais H-bridge.
AfbeeldingAfbeelding
Hiervoor vind ik op Marktplaats een Arduino compatable relaisboard met 4 relaitjes, gescheiden van het systeem d.m.v. optocouplers.
AfbeeldingAfbeelding
Dit bordje heb ik met een 5 aderige flatcable verbonden met de digitale uitgangen 8,9,10 en 11 van de UNO
Afbeelding

De zonnevolger bestaat uit 4 heldere rode LED's. Rode led's geven een spanning af van ca 1,2 Volt wanneer deze met licht beschenen worden. De anodes heb ik aangesloten op de analoge ingangen A0, A1, A2 en A3. De kathodes zijn gezamenlijk op de Gnd aangesloten.
Bij http://www.arduino.cc/en/Main/arduinoBoardUno kan je de programmeersoftware downloaden.
De besturingssoftware heb ik samengesteld uit diverse bronnen en al doende geleerd hoe de UNO reageert op de commando's.
Een weekje stoeien heeft geleidt tot de navolgende code:

/*
Zonnevolger van een oude Kathrein HDP160 schotelantenne

Uses 4 LED's to track the suns movement.
The microcontroller evaluates the LED values and
drives the appropriate positioning motor for correct alignment.

This code is public domain. Various parts of the code is copied from the Arduino forum and wiki pages

*/

// These constants won't change:
const int sensorPinA0 = A0; // pin that the LINKS sensor is attached to
const int sensorPinA1 = A1; // pin that the OP sensor is attached to
const int sensorPinA2 = A2; // pin that the RECHTS sensor is attached to
const int sensorPinA3 = A3; // pin that the NEER sensor is attached to

//const int pmotorPinA0 = 11; // pin that the pan motor relay is attached to
//const int pmotorPinA1 = 10; // pin that the pan motor relay is attached to
//const int tmotorPinA0 = 9; // pin that the tilt motor relay is attached to
//const int tmotorPinA2 = 8; // pin that the tilt motor relay is attached to


// variables:
int sensorValueA0 = 0; // Left led
int sensorValueA1 = 0; // Op LED
int sensorValueA2 = 0; // Right LED
int sensorValueA3 = 0; // Neer Led
int deadband = 10; // Differential for reset value
int panDelay = 50; // The amount of time the pan and tilt motor will run
int tiltDelay = 50; // this will vary depending on motor and drive train


void setup() {

// Send debugging information via the Serial monitor
Serial.begin(9600);

//Assign and set motor driver pins to low
pinMode(11, OUTPUT);
digitalWrite(11, HIGH);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
}

void loop() {
// read the sensor:
sensorValueA0 = analogRead(sensorPinA0);
sensorValueA1 = analogRead(sensorPinA1);
sensorValueA2 = analogRead(sensorPinA2);
sensorValueA3 = analogRead(sensorPinA3);



// Compare sensor readings and drive pan motor left or right
// If the sensor values are equal (what we want) it will skip adjusting the pan motor
// Pan Right
if (sensorValueA0 > sensorValueA2 + deadband){
digitalWrite(11, LOW);
delay(panDelay);
digitalWrite(11, HIGH);
Serial.println(" rechts");
}
// Pan Left
if (sensorValueA0 + deadband < sensorValueA2){
digitalWrite(10, LOW);
delay(panDelay);
digitalWrite(10, HIGH);
Serial.println(" links");
}

// Compare sensor readings and drive tilt motor up or down
// If the sensor values are equal (what we want) it will skip adjusting the tilt motor
// Tilt Down
if (sensorValueA1 > sensorValueA3 + deadband){
digitalWrite(9, LOW);
delay(tiltDelay);
digitalWrite(9, HIGH);
Serial.println(" neer");
}
// Tilt Up
if (sensorValueA1 + deadband < sensorValueA3){
digitalWrite(8, LOW);
delay(tiltDelay);
digitalWrite(8, HIGH);
Serial.println(" op");
}


//Print debugging information
Serial.print("Left/Bottom reading = ");
Serial.println(sensorValueA0); // the left/bottom sensor analog reading
Serial.print("Right reading = ");
Serial.println(sensorValueA1); // the left/bottom sensor analog reading
Serial.print("Right reading = ");
Serial.println(sensorValueA2); // the right sensor analog reading
Serial.print("Top reading = ");
Serial.println(sensorValueA3); // the top sensor analog reading

delay(100);
}

De komende week gaan we verder met de verfijning van het systeem. De code (sketch) is nog niet compleet. Ik moet nog uitzoeken hoe de parkeerstand gerealiseerd moet worden. Ook moeten begrenzingen worden aangebracht in het bewegend deel.
Ik weet dat dit verhaal niet voor de leek is. Maar er zijn voldoende elektro hobbyisten onder ons die er misschien een idee aan overhouden.

:cheers:
Rene

Berichten: 5
Geregistreerd: 03 Dec 2012, 14:34

Re: van sat receiver naar solartracker

Berichtdoor digiwalker » 19 Dec 2012, 10:57

Vervolg

Weer een week verder
Door de moeilijk in te stellen hysteresis van de led's ben ik overgestapt naar LDR's

Afbeelding
Afbeelding
Afbeelding
AfbeeldingAfbeelding

Hier zie je een experimenteerbordje met nu 5 LDR weerstanden en 5 weerstandje 10k.
Met wat steeklijsten boven op de Uno geprikt.
4 LDR's voor de Azimuth en Elevatie en 1 voor de separate licht donker detectie.

Mijn bedoeling is om dmv licht/donker detectie te bepalen wanneer de solartracker moet gaan werken. Bij het eerste ochtend gloren zal de tracker uit de parkeerstand moeten komen en een zoek cyclus gaan maken van oost naar west. En als hij verkeerd staat dus eerst naar oost.
Bij het onder gaan van de zon moet bepaald worden of er nog voldoende licht is en onder een bepaalde drempel zal een parkeercyclus afgewerkt moeten worden.

Op een van de foto's is met zwart karton een soort lichtsluis gemaakt om een betere scheiding te krijgen tussen licht en donker. Hierdoor komt de tracker beter in de juiste positie. (denk ik)

Tot zover het resultaat van afgelopen week

Rene

Berichten: 5
Geregistreerd: 03 Dec 2012, 14:34

Re: van sat receiver naar solartracker

Berichtdoor digiwalker » 19 Dec 2012, 11:04

Naar aanleiding van een pb het volgende:

Mijn eerdere opmerking over het heen en weer zwaaien van het paneel en de daarvoor benodigde hysteresis moest ik zelf langs empirische weg uitvinden.
Het is niet ondenkbaar dat door de relaissturing de in en uitschakelmomenten wat schokkerig zal verlopen.
De elektromotortjes in de Kathrein trekken bij aanloop ca 2 Ampere en bij loop ca 800mA
De motortjes worden in de auto industrie gebruikt als aandrijvingen voor de ruiten. De overbrenging bestaat uit 2 wormwielen waardoor er een grote overbreng verhouding ontstaat. Ik weet niet hoe groot, bij gebrek aan een pulsteller. ( dus als er iemand in mijn buurt zo'n dit heeft ???)
[ misschien kan ik een dig ingang van de Arduino gebruiken als up/down counter bedenk ik net ]
De schakeling ( H brug ) heeft het voordeel dat de motoren elektrisch geremd worden bij uitschakeling. De wormwielen voorkomen het terugzakken van het paneel door de grote remmende werking.
Dus als ik kortstondig een motor inschakel geeft dit slechts een hele kleine hoekverdraaiing.
Uhh wat wilde ik nou vertellen? O ja. Dus heb ik de oplossing gezocht in het toepassen van LDR's. En de dead band (hysteresis) hoger in gesteld dan toen met de LED's
De sketch ziet er nu als volgt uit: (onder voorbehoud)
/*
Zonnevolger van een oude Kathrein HDP160 schotelantenne

Uses 4 LED's to track the suns movement.
The microcontroller evaluates the LED values and
drives the appropriate positioning motor for correct alignment.

This code is public domain. Various parts of the code is copied from the Arduino forum and wiki pages

*/

// These constants won't change:
const int sensorPinA0 = A0; // pin that the LINKS sensor is attached to
const int sensorPinA1 = A1; // pin that the OP sensor is attached to
const int sensorPinA2 = A2; // pin that the RECHTS sensor is attached to
const int sensorPinA3 = A3; // pin that the NEER sensor is attached to

//const int pmotorPinA0 = 11; // pin that the pan motor relay is attached to
//const int pmotorPinA1 = 10; // pin that the pan motor relay is attached to
//const int tmotorPinA0 = 9; // pin that the tilt motor relay is attached to
//const int tmotorPinA2 = 8; // pin that the tilt motor relay is attached to

const int inputPin4 = 4; // end switch tilt down no
const int inputPin5 = 5; // end switch tilt up no
const int inputPin6 = 6; // end switch pan left
const int inputPin7 = 7; // end switch pan right

// variables:

int sensorValueA0 = 0; // Left led
int sensorValueA1 = 0; // Op LED
int sensorValueA2 = 0; // Right LED
int sensorValueA3 = 0; // Neer Led
int deadband = 50; // Differential for reset value
int panDelay = 50; // The amount of time the pan and tilt motor will run
int tiltDelay = 100; // this will vary depending on motor and drive train


int inputPin1 = 4; // end switch tilt down no
int inputPin2 = 5; // end switch tilt up no
//int inputPinx, = 6; // end switch pan left
//int inputPinx, = 7; // end switch pan right
int val = 0;

void setup() {

// Send debugging information via the Serial monitor
Serial.begin(9600);

//Assign and set input pins
pinMode(inputPin1, INPUT);
digitalWrite(inputPin1, HIGH);
pinMode(inputPin2, INPUT);
digitalWrite(inputPin2, HIGH);
pinMode(6, INPUT);
digitalWrite(6, HIGH);
pinMode(7, INPUT);
digitalWrite(7, HIGH);
//Assign and set motor driver pins to low
pinMode(11, OUTPUT);
digitalWrite(11, HIGH);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
}

void loop() {
// read the sensor:
sensorValueA0 = analogRead(sensorPinA0);
sensorValueA1 = analogRead(sensorPinA1);
sensorValueA2 = analogRead(sensorPinA2);
sensorValueA3 = analogRead(sensorPinA3);

// eindstand detectie en noodstop
//tilt movement up--down
{
val = digitalRead(inputPin1 = 6);
Serial.print(val);
if (val == LOW) {
digitalWrite(8, HIGH);

} else {
digitalWrite(8, LOW);
Serial.println(" eindstand op bereikt");
delay(2000);
}

val = digitalRead(inputPin2 = 7);
Serial.print(val);
if (val == LOW) {
digitalWrite(9, HIGH);
delay(50); //wacht
} else {
digitalWrite(9, LOW);
Serial.println(" eindstand neer bereikt");
delay(2000);
}



// eindstand detectie en noodstop
//Azimuth movement left -- right
val = digitalRead(inputPin1 = 4);
Serial.print(val);
if (val == LOW) {
digitalWrite(10, HIGH);

} else {
digitalWrite(10, LOW);
Serial.println(" eindstand rechtsom bereikt");
delay(2000);
}

val = digitalRead(inputPin2 = 5);
Serial.print(val);
if (val == LOW) {
digitalWrite(11, HIGH);
delay(50); //wacht
} else {
digitalWrite(11, LOW);
Serial.println(" eindstand linksom bereikt");
delay(2000);
}
}
// Compare sensor readings and drive pan motor left or right
// If the sensor values are equal (what we want) it will skip adjusting the pan motor
// Pan Right
if (sensorValueA0 > sensorValueA2 + deadband){
digitalWrite(11, LOW);
delay(panDelay);
digitalWrite(11, HIGH);
Serial.println(" <-- links");
}
// Pan Left
if (sensorValueA0 + deadband < sensorValueA2){
digitalWrite(10, LOW);
delay(panDelay);
digitalWrite(10, HIGH);
Serial.println(" --> rechts");
}

// Compare sensor readings and drive tilt motor up or down
// If the sensor values are equal (what we want) it will skip adjusting the tilt motor
// Tilt Down
if (sensorValueA1 > sensorValueA3 + deadband){
digitalWrite(9, LOW);
delay(tiltDelay);
digitalWrite(9, HIGH);
Serial.println(" neer");
}
// Tilt Up
if (sensorValueA1 + deadband < sensorValueA3){
digitalWrite(8, LOW);
delay(tiltDelay);
digitalWrite(8, HIGH);
Serial.println(" op");
}


//Print debugging information
Serial.print("Left/Bottom reading = ");
Serial.println(sensorValueA0); // the left/bottom sensor analog reading
Serial.print("Right reading = ");
Serial.println(sensorValueA1); // the left/bottom sensor analog reading
Serial.print("Right reading = ");
Serial.println(sensorValueA2); // the right sensor analog reading
Serial.print("Top reading = ");
Serial.println(sensorValueA3); // the top sensor analog reading

delay(500);
}

Ik heb commentaren toegevoegd wanneer b.v. eindschakelaars bereikt worden etc.
Ben nu bezig twee steunen te maken voor de eindschakelaartjes van de Azimuth.

en morgen weer verder.

:wave:
Rene

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten