Adafruit Motorshield V1

,

 

Solartracker, Pinbelegung am Arduino Uno

D9 (Servo 2): Servo-Steuerleitung (Elevation)
Vin: Stromversorgung des Servos, ca. 7.6 Volt

D14 (A0): grüne LED (Drehteller vorwärts)
D15 (A1): rote LED (Drehteller rückwärts)

A2:   Hall-Drehwinkelsensor (Azimut)

A3:   3-Volt-Solarpanel

A4:  (SDA): LCD-Display, DS3231 RTC
A5:  (SCL): LCD-Display, DS3231 RTC
M3/M4 (Motorshield): Schrittmotor (Azimut)

 

 

1. Longruner-Servomotor für die Elevation-Verstellung (über Adafruit Motor Shield)

 

Neben Ground und Vin (ca. 7.6 Volt) wird die Steuerleitung des Servos mit dem DigitalPin 9 (bzw. Servo 2) des Arduino verbunden:
#include <Servo.h>
Servo servo2;
servo.attach(9);

 

2. Pololu-Schrittmotor für die Azimut-Verstellung (über Adafruit Motor Shield)

Der Schrittmotor wird vom Motorshield angesteuert und dort (4-polig) am Motorausgang M3/M4 angeschlossen (1 Umdrehung = 200 steps):
#include <AFMotor.h>
AF_Stepper stepper(200, 2);

stepper.setSpeed(20);
stepper.step(32, FORWARD, MICROSTEP);

 

3. 20x4 LCD Display Modul zur Anzeige der wichtigsten Parameter

 

Das Displaymodul wird mit Ground, VCC +5 V DC, SDA und SCL verbunden und wie folgt adressiert:

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
lcd.init();

 

 

4. Hall-Drehwinkel-Sensor zur Azimut-Rückmeldung des Drehtellers

 

Der Drehwinkel-Sensor sitzt unter dem Azimut-Drehteller(die Sen sor-Achse dreht sich mit diesem) und wird am AnalogPin A0 angeschlossen.
Die Spannungsversorgung beträgt +5 Volt. Der output ist 0 - 5 Volt entsprechend 0 - 360 Grad:
sensorValue = analogRead(A0);

 

 

5. Solarpanel (hat hier nur Modellfunktion)

 

Das 3-Volt-Solarpanel wird direkt am AnalogPin A0 angeschlossen:
int analogPin = 2;
pvmod = analogRead(analogPin);

 

 

6. Rote und grüne LEDs zur Anzeige der Azimutteller-Drehrichtung

 

Die beiden LEDs signalisieren, ob der Azimut-Drehteller sich vorwärts (grün) oder rückwärts (rot) bewegt.
Sie sind an DigitalPin 14 (=A0) und DigitalPin 15 (=A1) angeschlossen:


digitalWrite(14, HIGH);                                     // LED grün an

digitalWrite(15, LOW);                                      // LED rot aus

digitalWrite(15, HIGH);                                     // LED rot an

digitalWrite(14, LOW);                                      // LED grün aus

 

 

7. DS3231 RTC Echtzeituhr
 

Die Uhr wird über den I2C-Bus an SCL und SDA angeschlossen.


#include <DS3231.h>
RTCDateTime dt;
DS3231 clock;
#define RTC_I2C_ADDRESS 0x68

clock.begin();
clock.setDateTime(2019, 06, 29, 8, 43, 00);

dt = clock.getDateTime();