Computergestuurde heliostaat Volg de zon of de sterren



Vergelijkbare documenten
GIP. De computer gestuurde trein

Inhoudsopgave. 1. Inleiding Leveringsoverzicht Toepassing Spanningsvoorziening 6. Contactinformatie 7. Pag.

Stroomprint JGA1009 gebruiksaanwijzing

Tinyserir-RC5. Datasheet. Tinyserir-RC5 Page: 1 of 8

Gebruiksaanwijzing stroomprint JGA i. Inhoudsopgave

Gebruiksaanwijzing stroomprint JGA1009D 1.0L

Stappenmotor Interface. Controller

Vermogen Elektronica : Stappenmotor

Informatiebundel ADuC832 Motor interface bord MGM/[dp]

Mogelijkheden om een bestaande montering te upgraden naar Goto

Logo quiz Project Inleiding op de Logo!

Inductiemeter via de parallelle poort

Opgave 1 Opbouwen van een servomotor-systeem

ELEKTRICITEIT-Stappenmotoren

Opgave 1 Opbouwen van een stappenmotor-systeem

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

GEINTEGREERDE PROEF DE COMPUTER ALS TV AFSTANDSBEDIENING

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Navio Electronische besturingssystemen

Universele Digi Interface

Basisoefeningen en uitwerkingen Systeembord. Opgaven en antwoorden op It s learning en agtijmensen.nl

LocoServo Handleiding

Handleiding Teknatool houtdraaibank Nova DVRxp Nederlands bij gebruik van de originele Engelse handleiding

Peripheral Interface Controllers. BRAC clubavond PE2WDO

Inhoudsopgave. Handleiding: MC v2.0a. Pagina - 1 -

Hand-out Introductieworkshop LED programmeren

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Netwerk Interfacing Data Logging.

Velbus DIN-rail RS232 & USB interface

Elektronische Schakelingen, Oefening 2 ET1508-D2, De Futaba S3003 servomotor

Algemene beschrijving van de regelprogramma's

In deze mannual zal ik het voorbeeld van de Led cube gebruiken maar de principes zijn op alles toepasbaar.

Beschrijving 2. Plaatsing componenten. 2-polige stelmotor. A = Luchtstroom. 1. Aansluitingen 2. Huis 3. Permanente magneet 4. Anker 5.

Workshop Arduino Uno. Touw dag 6 juni 2015 Harold Pootjes en Simon Pauw

User Manual DMX Universal Demux 8 channel Switch / PWM / Servo / Strobe / Binair

In- en uitgangssignalen van microprocessoren

Arduino. Workshop. 20 juni 2014 Peter Struwe Stichting De Jonge Onderzoekers Groningen

Handleiding software USB PIC DEV. BOARD

HANDLEIDING VASCO TIMER MODULE TIMER MODULE

Fig. 2. Fig ,5 4 3,5 3 2,5 2 1,5 U (V) 0, temperatuur ( C)

SafeLine VV3. Bedieningsinstructies. Toont de verdiepingen, richtingspijlen en afwisselende tekstberichten.

MIDI_PAR. MIDI_PAR_Instructie

MotorControl gebruiksaanwijzing V3 vanaf softwareversie 2.0e

Gebruiksaanwijzing & Installatiehandleiding. TC - 6 Telecontroller

VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan Lokeren info@vti-lokeren.

LEEUWINGA Mechanica, Electronica CNC-Cadcam systemen

PIC Callgever Door PA1RUM

MRDIRECT BOOSTER. Handleiding. Werkt met de volgende systemen: Werkt niet met de volgende systemen: Werkt met de volgende protocollen:

MIDI STURING voor SERVO s

Montagevoorschriften

SYSTEMEN 11/3/2009. Deze toets bestaat uit 3 opgaven (28 punten). Gebruik eigen grafische rekenmachine en BINAS toegestaan. Veel succes!

Nederlandse versie. Inleiding. Inhoud van de verpakking. Belangrijk! WC040 Sweex Motion Tracking Webcam 1.3 Megapixel

Dossier RAILBUS. Pagina 1

programmeren leeromgeving

EM2 Microcontroller Project. LED cube

7,6. Samenvatting door A woorden 12 april keer beoordeeld. Natuurkunde. Natuurkunde Systemen. Systemen

RF1456RGB. Gebruiksaanwijzing

ES1 Project 1: Microcontrollers

AP22 Analoog Display

Verslag: Computer. Naam: Tyrone Ste Luce. Klas: M4B

LocoServo Handleiding

AP22 Analoog Display

IDAgeChecker BDX118T11xx Manual V02.00

EASY LIM PRO RF MASTERSTURINGEN, 350mA. 350mA Specificaties: Uitgangsvermogen 5W/Kanaal, 15W max. ta: 50 tc: 60.

Versie: A Datum: Pag: 1 van 5

MODBUS remote I/O-unit type MODBUS4S110

1. Sluit de LED aan zoals afgebeeld 2. Sluit de USB-kabel aan op de Arduino 3. Klik op de knop uploaden 4. De LED begint te knipperen

Servo motoren Futaba S3003

OPTILOG-900 OPTILOG-900

Veiligheid,comfort en communicatie (1)

PWM50/3. Dubbele motor sturing. DIGITAAL HANDLEIDING. Motion Control Systems

Gebruiksaanwijzing DSC785 Dry/Store Controller

Hoofdstuk 6: Digitale signalen

AP80 Display Controller

Tyro Pyxis/Auriga 2, 4, 6 of 8 voudige afstandsbediening Handleiding 868 MHz

B3C 70cm converter besturing. v PE5PVB bar.net bar.net

Arduino CURSUS. door Willy - 09-juni-2017

VERKORTE GEBRUIKSAANWIJZING TMC 212. Toro Modulaire Controller REGENAUTOMAAT

Gebruiksaanwijzing Verkeerslichten Decoder 234

Neem een signaal-kabel en sluit hiermee het input-onderdeel aan, aan de kant van het Easyboard waar input bij staat.

BBR programmeren met Ardublock

ROBOTICS CCFZ 13/5/2009

Wat is Arduino? Arduino = microprocessor (Atmel)

T6590B1000 FANCOIL REGELAAR KENMERKEN TOEPASSINGEN PRODUCT GEGEVENS

RGB wand bedieningspaneel DMX sturing en PWM output

MIJN PONSER BOUWERIJ DEEL 2 wijziging augustus 2011

+31 (0) E:

Handleiding membraantoetsenbord & controller

De Arduino-microcontroller in de motorvoertuigentechniek (3)

Interface digitale modes en N1MM.

Digitale systemen. Hoofdstuk De digitale regelaar

Gebruiksaanwijzing ST10-20 regelingen.

Spanningsdriver LEDVD5CH10A-V5 0-10V en DALI

Workshop Arduino voor beginners deel 2

Spanningdriver LEDVD5CH20A-V5 0-10V en DALI

AP21 SSI Display. Display voor positie en snelheid Nokkencontroller Signaalomvormer Display voor niet lineaire bewegingen. 96 mm

FT4SW. 1. Werking. Handleiding. Figuur 1

Technisch Ontwerp Document (TOD) Project: Mannequin. Bedrijf: RS

De Arduino-microcontroller in de motorvoertuigentechniek (6)

A R D U I N O. addendum bij: Leren programmeren, meten en sturen met de Arduino. 3 e druk INHOUD

Transcriptie:

Computergestuurde heliostaat Volg de zon of de sterren Een heliostaat is een apparaat om bewegende objecten aan de sterrenhemel te volgen. Hiermee is het mogelijk om altijd een maximale hoeveelheid zonlicht op te vangen, een fotoserie te maken van een bewegende planeet of een satelliet op te sporen voor een optimale (schotel)ontvangst. In dit artikel beschrijven we een eenvoudige heliostaat met twee servomotoren. De servo s worden aangestuurd door middel van een PC-programma. Zeno Otten (Nederland) Dit project beschrijft een voorbeeld van een heliostaat, opgebouwd met twee servomotoren. Met behulp van een rekenmodel dat de positie van de zon berekent als functie van de tijd en plaats op aarde, worden de servo s aangestuurd en in de richting van de zon gestuurd. Het hier beschreven prototype kan eenvoudig worden uitgebreid tot een groter en robuuster systeem voor het besturen van een werkelijk zonnepaneel, opdat altijd een maximale hoeveelheid licht wordt opgevangen en daardoor een maximale hoeveelheid energie kan worden opgewekt. Positioneren met motoren Voor het positioneren van een voorwerp door middel van een computer of microcontroller worden vaak stappen- of servomotoren toegepast. Een stappenmotor kan door een relatief eenvoudige pulsaansturing een gewenste positie innemen. Bovendien kan een hoog motorkoppel worden bereikt. De stappenmotor kan daardoor makkelijk zijn positie behouden wanneer deze stil staat. Nadeel is dat voor een directe sturing op de as de uitslag afhangt van de minimale hoekverdraaiing van de motor. Deze is vaak 1,8 graad of meer. Een ander nadeel is dat er geen terugkoppeling van de positie van de as en het aantal gestuurde pulsen is. Een servomotor levert een kleiner koppel, maar daar staat tegenover dat de asverdraaiing door een toegepaste proportionele regeling met behulp van een ingebouwde potmeter in de motor in staat is om bijna staploos een positie in te nemen. Bovendien is de servo door deze regeling in staat om krachten van buitenaf te corrigeren. Een servo wordt eveneens aangestuurd dor middel van pulsen, waarbij de pulsbreedte de uitslag van de servo-arm bepaalt. De keuze van het type motor is voor onze toepassing niet zo relevant. In Elektor zijn meerdere schakelingen beschreven voor een stappenmotorbesturing. Voor de afwisseling is nu gekozen voor een servobesturing. Bovendien is dit project ook bedoeld om kennis te maken met de grafische programmeeromgeving Profilab. Hiermee is het heel eenvoudig om o.a. de seriële poort aan te sturen, die zal worden gebruikt om de servo s te besturen. Servobesturing In de heliostaat zijn twee modelbouw-servo s toegepast [1], één voor de aanwijzing van de azimut en één voor de declinatie. De azimut is de positie in graden in het horizontale vlak, de declinatie geeft de positie in verticale richting weer. Om een servo te laten draaien is een stuursignaal nodig waarvan de pulsbreedte varieert tussen 1 en 2 ms met een frequentie van ongeveer 50 Hz. De pulsbreedte bepaalt de positie van de motoras. Zo zal de servo bij een pulsbreedte van 1,5 ms in de middenpositie worden gestuurd. Pulsjes van 1,25 ms zullen er voor zorgen dat de servo 90 graden naar links beweegt, terwijl pulsjes van 1,75 ms de motoras 90 graden naar rechts doen verdraaien. Alle tussenwaarden komen dus overeen met een overeenkom- 54 06-2012 elektor

stige hoek van de motoras. Deze waarden kunnen zeker enkele procenten afwijken, afhankelijk van het type servo. Het stuursignaal van de servo bedraagt +5 V, terwijl de voedingsspanning van de motor mag variëren tussen 4,8 en 6 V. In figuur 1 is het schema weergegeven van de schakeling om twee servo s aan te sturen via de seriële poort. De signalen DTR en RTS van de seriële poort zijn door middel van twee optocouplers type optisch gescheiden van de voedingsspanning en het stuursignaal van de servo s. Hierdoor wordt het signaalniveau van de seriële poort (±12 V) aangepast tot een signaalniveau van 0/5 V. Door een computerprogramma pulsjes te laten genereren is op deze wijze een eenvoudige besturing van de twee servo s mogelijk. Het voordeel van deze eenvoudige interface is bovendien dat we de servo s ook kunnen besturen via de USB-poort wanneer we gebruik maken van een USB/ serieel-convertor. De volgende stap is nu om pulsjes te genereren met een pulsbreedte tussen de 1 en 2 ms met een frequentie van circa 50 Hz. Supply 5V DC 470u C2 100n I DTR IC2 RTS Servo 1 Servo 2 100204-11 Figuur 1. De elektronica voor het aansturen van de twee servo s is heel eenvoudig. R4 Grafisch programmeren met Profilab Programmeren is leuk, maar voor veel computerhobbyisten vormt dit vaak een te hoge drempel om een elektronicaproject tot een goed eindresultaat te brengen. In dit project wordt de grafische programmeeromgeving Profilab [2] toegepast. Programmeren in Profilab kan bijna niet eenvoudiger. Door het met elkaar verbinden van voorgeprogrammeerde functionele blokken kan de programmeur zonder een enkele programmaregel te schrijven een compleet ontwerp maken. Qua werkwijze doet het een beetje denken aan LabVIEW. Voor communicatie met de buitenwereld kunnen de seriële en parallelle poort vanuit Profilab direct worden aangestuurd. Bovendien ondersteunt Profilab veel hardwareinterfaces van verschillende fabrikanten. Binnen de programmeeromgeving van Profilab kan het resultaat worden gecompileerd tot een compleet programma. Het programma draait dan op elke (Windows) computer zonder de aanwezigheid van de Figuur 2. Eenvoudig voorbeeld van een Profilab-programma. programmeer- en ontwikkelomgeving. In figuur 2 is ter verduidelijking een eenvoudig voorbeeld gegeven van een Profilab-programma. De waarde van schuifregelaar S kan variëren tussen 10 en 20. Dit wordt ingesteld in de parametersectie van S. De schuifregelaar is zichtbaar op het frontpaneel van het programma. Blok ADD1 telt hierbij eventueel nog de waarde van blok FV2 op. Blok GAIN1 vermenigvuldigt uitgang A met 0.0001, zodat een signaal ontstaat met een waarde tussen 0,001 en 0,002. Dit signaal wordt aangeboden aan functieblok PG1. Dit is een pulsgenerator waarvan we de hoog- en de laagtijd (TH en TL) kunnen instellen. Het TH-signaal wordt ook aangeboden aan blok SUB1. De waarde 0,02 uit blok FV1 wordt hiermee verminderd. Het verschil wordt aangeboden aan de TL-ingang van blok PG1. De basis van de simulatietijd van Profilab bedraagt 1 seconde. Tijdens het draaien van het programma zal dus, afhankelijk van de stand van S, een puls op pen DTR van de seriële poort verschijnen met een pulsbreedte tussen 1 en 2 ms en met een frequentie van circa 50 Hz. Precies wat we nodig hebben om een servo aan te sturen. De mogelijkheden binnen het program- elektor 06-2012 55

Figuur 3. Een zelf geschreven dll zorgt voor de berekening van de positie van de zon. Figuur 4. Het complete programma voor het berekenen van de zonnestand en aansturen van de servo s. meren in Profilab zijn zeer uitgebreid. Het wordt echter nog interessanter indien we zelf een functioneel blok kunnen invoegen met zelf geschreven programmacode. Profilab ondersteunt dit in de vorm van het importeren van een dynamic link library (dll). Hiervan maken we gebruik om binnen Profilab een heliostaat te besturen die langs de zonnebaan beweegt. Het heliostaat-model Er zijn veel berekeningsmodellen beschikbaar voor het beschrijven van de zonnebaan ten opzichte van een willekeurige plaats op aarde en op een willekeurig tijdstip. Het hier toegepaste rekenmodel [3] is zeer nauwkeurig en is in staat de plaats in het horizontale vlak (azimut) en de hoogte van de zon (declinatie) te berekenen in graden. Zinvol is het natuurlijk niet om een heliostaat voor deze toepassing tot op tienden van graden te laten positioneren, maar nu we toch met een computer bezig zijn en rekenkracht genoeg hebben is het geen enkel probleem om deze berekeningsnauwkeurigheid te benutten. In de helpbestanden van Profilab wordt aan de hand van een voorbeeld duidelijk uitgelegd hoe je zelf programmaregels in een eigen dll kunt opnemen. Je hoeft alleen het aantal in- en uitgangen van het blok te definiëren en vervolgens de programmaregels te schrijven die de relatie vormen tussen de in- en uitgangen. Zowel Pascal als C+ wordt ondersteund. Het hier toegepaste model is geschreven en gecompileerd in Borland C++. In figuur 3 wordt de helio1.dll toegepast in Profilab om de positie van de zon te bepalen. Dit blok bevat 8 ingangen en de uitgangen Q0 (de azimut van de zon) en Q1 (de hoogte van de zon). Vier ingangen van helio1.dll ontvangen hun gegevens van de standaard functies voor tijd en datum van Profilab. Blok DT1 levert het jaartal (Ye) en het dagnummer (Dy). Blok TM1 levert het uur van de dag (Hr) en het aantal minuten (Mn). Rest nog de plaats op aarde. Deze wordt ingevoerd met behulp van PT1 en PT2. PT1 levert een waarde tussen 0 en 90 graden noorderbreedte. PT2 levert een waarde tussen -180 en +180 graden oosterlengte. G1 is een pulsgenerator die ervoor zorgt dat elke seconde een nieuwe berekening door helio1.dll wordt uitgevoerd. Het complete Profilab-programma is in figuur 4 weergegeven. Er zijn wat extra functies toegevoegd om met het programma simulaties uit te voeren als functie van de positie op aarde en het tijdstip. Met REL3 en REL4 kan worden gekozen tussen handbediening van de servo s (met behulp van de schuifregelaars SR4 en SR5) en besturing van de servo s door het rekenmodel. Verder is een interface toegevoegd voor besturing van de twee servo s via de seriële poort. Na het bedienen van drukknop PB1 worden de berekende pulsen gedurende 2 s naar de seriële poort gestuurd. Voor een continue besturing zou deze drukknop kunnen worden vervangen door een (continu) tijdsignaal. Bij elk programma in Profilab hoort een zogenaamd frontpanel. Dit vormt de bedieningsinterface van ons programma. Het bedieningspaneel dat hoort bij figuur 4 is weergegeven in figuur 5. Voor de weergave van de zonposities zijn twee analoge meters toegepast. Daaronder wordt de positie in graden weergegeven. De servo s kunnen met de schuifpotmeters worden bestuurd wanneer de servo-besturingsschakelaar in de stand Manual staat. In de stand Real Time wordt de werkelijke zonpositie getoond. De aanwijzing vindt plaats ten opzichte van het noorden. Indien de schakelaar Show position wordt ingedrukt, worden de pulsen gedurende 2 s naar de servo s gestuurd en neemt de heliostaat de berekende positie in. Uitbreiding 1: Handbediening Tot nu toe hebben we een computer nodig om de berekeningen uit te voeren en de 56 06-2012 elektor

Figuur 5. Zo ziet het frontpaneel er uit. Men kan hier kiezen tussen real-time berekening en handbediening. Figuur 7. De praktische uitvoering van de heliostaat. Eén servo is op een koffertje gemonteerd, de tweede is op een CD geplaatst. De op de servo gemonteerde arm wijst in de richting van de zon. 14 Supply 5V DC 470u C2 100n S5 manual computer 17 18 1 2 R5 3 4 15 16 D1 VCC RA0 RA1 RA2 IC3 RB0 RB1 RB2 RA3 RB3 RA4 RB4 PI6F RA5 RB5 628A RA6 RB6 RA7 RB7 5 6 7 8 9 10 11 12 13 S4 S3 S2 S1 R6 R4 R7 100204-16 I IC2 10R 10R DTR K1 RTS K2 Servo 1 Servo 2 Figuur 6. Met behulp van een extra PIC kan handbediening worden toegevoegd. elektor 06-2012 57

+5V 220u servo s via een seriële poort aan te sturen. Om de servo s ook te kunnen besturen bij afwezigheid van een computer is de schakeling uit figuur 1 uitgebreid met een kleine microcontroller, een PIC 16F628A (figuur 6). Deze goedkope controller is voorzien van een eenvoudig programma dat pulsen kan opwekken voor de servo s. Het programma is geschreven met de (gratis) Proton BASIC Compiler en is vervolgens in de PIC geprogrammeerd met behulp van een PIC-programmer van Velleman (K8048). Men kan natuurlijk ook gebruik maken van een andere programmer. Het BASIC-programma in de PIC 16F628A is te vinden in het downloadpakket dat op [5] beschikbaar is. Wanneer S5 in de stand manual staat, wordt de voeding van de computerinterface afgeschakeld en wordt de PIC van spanning voorzien. LED1 zal nu een paar keer knipperen om aan te geven dat de controller actief is. Door de schakelaars S1...S4 te bedienen worden nu pulsen gegenereerd die de servo s 1 en 2 respectievelijk links- of rechtsom laten draaien. In de voedingslijnen van de servo s zijn extra 10-Ω-weerstanden opgenomen, waardoor de servo s op een iets lagere spanning draaien dan de PIC. Figuur 7 toont een protototype van de heliostaat. Op de eerste servo is een schijf (oude CD) gemonteerd, waarop een windroos is aangebracht met een gradenverdeling van 0 tot 360 graden. Op deze schijf is P1 P2 0V...5V S1 S2 22k 10n 1 VDD 4 GP3/MCLR GP5 2 7 6 I GP0 GP4 PI2F675 GP1 GP2 3 5 VSS 8 D1 D2 100204-17 Servo 1 Servo 2 Figuur 8. Om minder afhankelijk te zijn van de timing onder Windows kunnen de servo s via deze schakeling met analoge spanningen worden aangestuurd. de tweede servo gelijmd. Op de as is een aanwijzer gemonteerd. De aanwijzer wijst uiteindelijk in de richting van de zon. Ook zijn de druktoetsen S1...S4 en schakelaar S5 (computer/handbesturing) zichtbaar. Uitbreiding 2: Analoge aansturing Het nauwkeurig uitvoeren van pulsjes met een pulsbreedte tussen 1 en 2 ms is in een multitasking-omgeving zoals Windows lastig te realiseren. Het gevolg is dat de heliostaat soms wat bibbert wanneer het besturingssysteem druk bezig is met zichzelf. Daarom is ook nog een servobesturing ontworpen die kan worden aangestuurd met een analoge spanning. Omdat een PC zelf geen analoge stuurspanning kan leveren, is gebruik gemaakt van een USB-interface-kaart K8061 van Velleman [4]. Deze kan o.a. een analoge spanning tussen 0 en 5 V leveren en wordt volledig ondersteund door Profilab. Verder maken we het ons nog makkelijker door gebruik te maken van een standaard pan en tilt kit van de firma Lynxmotion. Deze kit wordt inclusief twee Hitec-servo s geleverd [6]. Om deze twee servo s analoog aan te sturen maken we gebruik van een PI2F675. Deze kleine controller is in staat om minimaal twee analoge spanningen in te lezen met een resolutie van 10 bits. In het schema van figuur 8 is te zien dat de analoge spanningen worden aangeboden op pen 6 en 7. Met S1 en S2 kan worden omgeschakeld tussen de met P3 en P4 ingestelde spanningen en de spanningen die worden geleverd door de externe interface. De servo s worden aangestuurd door pen 3 en 5. De twee LED s maken de uitgangssignalen zichtbaar. Het programma voor het inlezen van de analoge spanningen en het aansturen van de servo s is eveneens geschreven in Proton IDE BASIC en is ook opgenomen in het download-bestand op [5]. Om de schakeling uit figuur 8 aan te kunnen sturen met het heliostaat-programma zijn enkele wijzigingen aangebracht in het programma van figuur 4. De positie van de zon wordt nu omgerekend naar een waarde die door de K8061-interface wordt vertaald naar een analoge spanning tussen 0 en 5 V. Tot slot nog een opmerking over de toegepaste servo s. Deze kunnen maar 180 graden draaien. Voor de declinatie hoeft de servo maar 90 graden te bewegen. In Nederland is de maximale zonhoogte circa 62 graden. De aanwijzing van de azimut is echter beperkt tot aanwijzing van de zonpositie tussen het oosten en het westen. Hiermee kunnen de zonsopkomst (NO) en de zonsondergang (NW) op de langste dag van het jaar niet worden aangewezen. Voor het heliostaat-rekenmodel zijn diverse andere toepassingen te bedenken, zoals het automatisch openen/sluiten van gordijnen of rolluiken, of het aan/uitschakelen van lampen. (100204) Weblinks & literatuur [1] www.hitecrcd.com [2] www.abacom-online.de/uk/html/ profilab-expert.html [3] R. Walraven: Calculating the position of the sun. Solar Energy Vol. 20, 1978 [4] www.velleman.eu/products/view/?count ry=nl&lang=nl&id=364910 [5] www.elektor.nl/100204 [6] www.lynxmotion.com/product.aspx?pro ductid=287&categoryid=61 O.a. verkrijgbaar bij Antratek: www.antratek.nl/servo-assemblies.html 58 06-2012 elektor