Modell einer Nachführeinrichtung

Hier können Sie ihre eigenen Projekte vorstellen
Antworten
Heinrichs
Beiträge: 185
Registriert: Do 21. Okt 2010, 18:31

Modell einer Nachführeinrichtung

Beitrag von Heinrichs » Fr 1. Feb 2019, 09:53

Nachführeinrichtungen werden z. B. benutzt, um Photovoltaik-Panels nach der Sonne auszurichten. Auf diese Weise soll die Sonnenstrahlung möglichst effektiv genutzt werden.

nachfuehreinrichtung_foto_klein_2.jpg
nachfuehreinrichtung_foto_klein_2.jpg (9.81 KiB) 20875 mal betrachtet

In diesem Beitrag soll gezeigt werden, wie man mit einfachen Mitteln ein einfaches und preiswertes Modell für eine solche Nachführeinrichtung bauen kann. Dazu benutzen wir:

• Mikrocontroller Attiny2313 auf Experimentierplatine, z. B. unsere Attiny-Platine (Link)
• ein Servo, z. B. SG90, auf einem Holzbrettchen montiert
• 2 LDR
• I2C-Modul PCF8591 zur Spannungsmessung
• Lüsterklemmenriegel mit 5 Einheiten, Schraube, Kabel, Pappestück


Der Aufbau kann der folgenden Abbildung entnommen werden (Aufsicht):

Aufbau_klein.jpg
Aufbau_klein.jpg (27.46 KiB) 20868 mal betrachtet

Fällt das Licht parallel zur Pappwand auf die Nachführeinrichtung, dann werden beide LDRs gleich stark beleuchtet. Ihr Widerstand ist dann gleich groß. Beide LDRs sind in Reihe geschaltet und bilden einen Spannungsteiler. Die Spannung Umess beträgt dann 2,5 V. Wenn nun das Licht nicht parallel zur Pappwand ausgerichtet ist, dann liegt eine der beiden LDRs (teilweise) im Schatten der Pappwand; entsprechend größer ist ihr Widerstand. In der Situation der obigen Abbildung ist der Widerstand vom rechten LDR größer als der vom linken. Umess ist dann kleiner als 2,5 V.

Der Mikrocontroller muss das Servo nun so steuern, dass der Lüsterklemmenriegel mit dem aufgesteckten Pappstück immer zur Lichtquelle hin ausgerichtet wird. Dazu werden die Masseleitung und die Umess-Leitung an das PCF8591 angeschlossen; dabei sollte man beachten, dass die im Handel befindlichen Module über Jumper schon in unterschiedlicher Weise mit Sensoren (LDR, Temperatursensor, Poti etc.) und Aktoren (z. B. LED) verbunden sind. Die folgende Abbildung zeigt die Verdrahtung bei einem solchen Modul.

PCF8591-MS-6.jpg
PCF8591-MS-6.jpg (79.38 KiB) 20876 mal betrachtet

Hier ist z. B. der Mittenabgriff des Potis an den Eingang AIN0 angeschlossen. Wir trennen nun diesen Mittenabgriff von diesem Eingang, indem wir den entsprechenden Jumper vom Modul entfernen. Den linken Steckerstift verbinden wir nun mit der Umess-Leitung. Letztlich wird das Potentiometer des Moduls nun durch die Reihenschaltung der LDRs ersetzt.

Attiny_Modul.jpg
Attiny_Modul.jpg (44.4 KiB) 20876 mal betrachtet

Vor dem Auslesen der Messwerte muss der PCF8591 so konfiguriert werden, dass er von diesem Eingang die Spannungswerte misst. Dies geschieht durch folgende Initialisierung:

Code: Alles auswählen

  I2cstart
  I2cwbyte Write_adresse
  Knr = 0  'knr = 0 -> AIN0 als Eingang
  I2cwbyte Knr
  Waitms 20
  I2cstop
Das Lesen eines Messwerte geschieht dann durch

Code: Alles auswählen

  I2cstart
  I2cwbyte Read_adresse
  I2crbyte Istwert , Nack                          'not Acknowledge: letzte Messung
  I2cstop
Bei den vom PCF8591-Modul gelieferten Messwerten handelt es sich nicht um Spannungsangaben in der Einheit Volt. Vielmehr handelt es sich um ganzzahlige Werte zwischen 0 und 255, die den Spannungsbereich zwischen 0 und Vcc (in unserem Fall 5,0 V) beschreiben. Weitere Hinweise findet man unter http://www.g-heinrichs.de/attiny/I2C_neu.pptx.


Das Servo wird mit der elektrischen Quelle der Experimentierplatine verbunden. Die Datenleitung des Servos sollte mit dem Ausgang B.0 des Attiny2313 verbunden werden, wenn man das folgende Programm benutzen möchte.

Code: Alles auswählen

' Attiny-Platine von E. Eube, G. Heinrichs und U. Ihlefeldt
' plus PCF8591-ad-da-wandler; keine zusätzlichen Pull-Up-Widerstände erforderlich
' LEDs zur Kontrolle an PortB.0 und Portb.1
' Analoge Werte lesen (mit ACK)
' Kalibrierung mit Ta0
' Nachführung stoppen mit Ta1
' Servo SG90 per PWM steuern
' rechter Anschlag (1,0 ms): compare1b = 250
' linker Anschlag (2,0 ms): compare1b = 1250
' PWM an OC1B = PortB.4
' Anschlüsse: braun -> GND (Minuspol), rot -> VCC (Pluspol), orange -> PortB.4
'
' ggf. 40W-Glühbirne o. Ä.(mit isotroper Strahlung) als Sonnenersatz
'
'----------------------------------------------------------------------------

$regfile = "attiny2313.dat"                                 'Attiny2313
$crystal = 4000000                                          '4 MHz
$baud = 9600

'**********************************************************
'******************* Deklarationen ************************

Dim Istwert As Byte
Dim Sollwert As Byte
Dim Write_adresse As Byte
Dim Read_adresse As Byte
Dim Knr As Byte
Dim Sollmin As Byte
Dim Sollmax As Byte
Declare Sub Initialisierung
Declare Sub Kalibrierung
Declare Sub Messen
Declare Sub Nach_links
Declare Sub Nach_rechts


'****************** Initialisierung ***********************

Ddrb = &B11111111                                'Port B als Ausgangsport
Ddrd = &B01110000                                 'D4, D5, D6 als Ausgang; Rest als Eingang
Portd = &B10001111                               'Eingänge auf high legen
Waitms 50

Tccr1a = &B00100011
Tccr1b = &B00011010
Compare1a = 10000                                'Maximalwert
Compare1b = 750                                  'Vergleichswert -> Mittelstellung

Write_adresse = 144
Read_adresse = 145

'**********************************************************
'******************** Hauptprogramm ***********************

Do                                                          'Start nach Taster Ta0
Loop Until Pind.2 = 0

Call Initialisierung
Call Kalibrierung

Do
  Call Messen
  Printbin Istwert                                          'zur Kontrolle
  If Istwert < Sollmin Then Call Nach_links                 'vgl. Kalibrierung
  If Istwert > Sollmax Then Call Nach_rechts
  Waitms 100
Loop Until Pind.3 = 0
End

'**********************************************************
'******************* Unterprogramme ***********************

Sub Initialisierung
  I2cstart
  I2cwbyte Write_adresse
  If Err = 0 Then Portb.0 = 1                      'LED0 an, wenn Writeadresse bestätigt
  Knr = 0
  'knr 0 -> Poti, knr 1 -> LDR, knr 2 -> Temperatur, knr = 48 -> Poti - LDR (Differenz!)
  I2cwbyte Knr

  Waitms 20
  I2cstop
  Waitms 20
End Sub

Sub Kalibrierung
  Sollwert = 127                                   'Kann auch automatisiert werden
  Sollmin = Sollwert - 5
  Sollmax = Sollwert + 5
End Sub

Sub Messen
  I2cstart
  I2cwbyte Read_adresse
  I2crbyte Istwert , Nack                          'not Acknowledge: letzte Messung
  I2cstop
End Sub

Sub Nach_rechts
  If Compare1b > 300 Then Compare1b = Compare1b - 10
End Sub

Sub Nach_links
  If Compare1b < 1200 Then Compare1b = Compare1b + 10
End Sub


Video.jpg
Video zur Nachführeinrichtung -> Anlage
Video.jpg (57.94 KiB) 20876 mal betrachtet
nachfuehren.wmv
Video zur Nachführeinrichtung
(2.44 MiB) 2192-mal heruntergeladen

Das Video aus der Anlage zeigt unser Modell einer Nachführeinrichtung in Aktion. Hier markiert der rote Strich am oben Bildrand die Richtung, aus der die Sonnenstrahlen kommen. Die Drehung der Erde wird simuliert, indem das Holzklötzchen mit dem Servo gedreht wird. Man erkennt, dass das Servo die Lüsterklemme jeweils so weit dreht, bis das Pappestück parallel zum roten Strich steht.

Antworten