Benutzer-Werkzeuge

Webseiten-Werkzeuge


diy_flatfield-controller

DIY Flatfield-Controller

Für die Reparator (oder Nachbau) des Flatfield-Controller nachfolgend alle notwendigen Informationen.

Dieses Raspberry Pi Projekt benutzt Relays und steuert lebensgefährliche Netzspannung 220V. Projekte dieser Art sollten nur bei ausreichenden Elektronikkenntnissen und Praxiserfahrung bearbeitet werden.

Übersicht

Hardware
  • Raspberry Pi2
  • Relay-Shield (4 Relays, wovon 3 benötigt werden)
  • I2C Servo-Shield (16 Channel wovon 2 benötigt werden)
  • 4x Endschalter
  • 2x Servomotoren „todo“
  • Servocity Gearset
  • Mechanik-Bauteile (8mm Welle, Aluminiumbefestigung)
  • Halter für die Folie sind mit dem 3D-Drucker gefertigt
  • 2x Einbausteckdosen
  • 2x 4Pin-DC Buchsen und 2x 3Pin-Dc Buchsen
  • 1x Kaltgerätebuchse (Stromversorgung)
  • 1x 5-6 Volt 2.1mm (innen positiv) Buchse (Spannungsversorgung für die Servomotoren)
  • Lan-Verlängerung (optional)

Beim Bau einen „schönen/professionellen“ Gehäuse wird je nach Anspruch Zeit (und Geld ~ 50-100 €) benötigt!

Software
  • Raspian Betriebssystem
  • Apache2 Webserver
  • PHP Webinterface
  • Python-Scripte zur Steuerung der Hardware

Details

Hardware

Pinbelegung

Python auswahl der Pinbelegung

GPIO.setmode(GPIO.BOARD) wählt die Pinheader (1-40) als Nummerierung aus, während GPIO.setmode(GPIO.BCM) die GPIO Bezeichnung (außerhalb des roten Kastens) auswählt.

14 Pins werden verwendet. Pins ohne Bezeichnung werden für die elektronische Schaltung benötigt, müssen jedoch im Quellcode nicht angesprochen werden (z.B. Masse (GND), Spannung ). Effektiv werden damit 9 Pins der Headerleiste belegt.

Pin (Board Nummerierung) Bezeichnung (Quellcode) Hardware Verwendung
38 PIN_RELAY_1 IN1 (Relay) Relay für Steckdose C11 Flatfield-Folie
36 PIN_RELAY_2 IN2 (Relay)Relay für Steckdose Z61 Flatfield-Folie
32 PIN_RELAY_3 IN3 (Relay) Relay für die Servomotoren (Servoshield)
17 VCC (Relay)
34 GND (Relay)
1 I2C (VCC 3.3) VCC (PCA9685)
3 I2C (SDA) SDA (PCA9685)
5 I2C (SCL) SCL (PCA9685)
6 I2C (GND) GND (PCA9685)
29 PIN_SWITCH_1_OPEN Endschalter C11 open
31 PIN_SWITCH_1_CLOSE Endschalter C11 close
33 PIN_SWITCH_2_OPEN Endschalter Z61 open
35 PIN_SWITCH_2_CLOSE Endschalter Z61 close
39 Masseleitung der Endschalter (Flatfield A)
30 Masseleitung der Endschalter (Flatfield B)

Relay

Die Pinheader-Leiste ist die Anschlussseite des Raspberry PI. Jedes Relay verfügt eine eine 3er Klemme an dem der Stromführende (220V) Verbraucher angeschlossen wird. Der Raspberry PI schaltet das Relay (als Schalter AN/AUS), hierfür wird jeweils ein stromführendes Kabel des Verbrauches in eine Klemme hinein geführt und an einer zweiten herausgeführt.

Der Baustein wird als NO-Schalter (normally open) verwendet, d.h. ohne Spannungszufuhr sind die Verbraucher ausgeschaltet. Um den Baustein zu aktiveren, muss ein Eingangspin (IN1, IN2, IN3 ) auf LOW gesetzt werden (inverse Logik).

PCA9685 I2C Servo Board

  • Default Adresse 0x40 wird verwendet.
  • Die grüne Klemme dient der Stromversorgung der angeschlossenen Servomotoren. Diese Klemme kann über Relay3 geschaltet werden. Ich verwende ein 6 Volt (3 Ampere) Netzteil. Das über einen 2.1 mm Stecker (innen positiv) an die Box angeschlossen werden kann.
  • Kanal 0 und 1 werden für die Servomotoren verwendet.

Für die Verbindung des Controllers mit dem Raspi werden vier Leitungen benötigt. Die Pinbelegung ist weiter oben angegeben.

Software

Nach der Installation wurde mit apt-get upate und apt-get upgrade einmalig alles aktualisiert.

  • Raspberry Pi (Raspian) mit Lamp (Apache2 & PHP )
  • SSH aktivieren (Passwort ändern nicht vergessen 8-) )
  • Raspi-Config
    • I2C freischalten
      • i2cdetect -y 1 (auf der Konsole) ergibt dann, dass die Addresse 40 (default) zur Verfügung steht. (Hierzu muss der Servocontroller mit dem Raspi verbunden sein)
      • sudo pip install Adafruit-PCA9685 um die Bibliothek des Servocontrollers mit Python benutzen zu können.
    • Frequenz ist Moderat auf 800 MHZ gesetzt
    • Festplatten Erweiterung aktivieren nicht vergessen
  • Python 3.5 (ist bereits lauffähig)

Der der Raspberry nur im (vertrauenwürdigen) lokalen Netz zur Verfügung steht wird großzügig mit der Rechtevergabe zur Ansprache der Hardware (Python/PHP/Webserver) verfahren, außerdem erfolgt keine Zugangskontrolle. Falls der Rechner im Internet erreichbar ist, sollte man hier sorgfältig das System härten.

PHP

Mit Python (und Bootstrap als HTML-Layout) wurde eine minimale Weboberfläche entworfen. Die Steuerung der Hardware erfolgt, indem in PHP Pythonscripte aufgerufen werden.

Python

Die eigentliche Steuerung der Hardware läuft durch einfache Pythonscripte, obwohl eine einfache GPIO-Steuerung auch mit PHP und Wiring-Pi ohne Python möglich wäre. Die konsequente Verwendung von Python hat den Vorteil das die Hardware auch ohne Webinterface von der Konsole aus steuern zu können.

Installation und Inbetriebnahme

Der Quellcode ist bei Bitbucket gelistet. Dieser Quellcode enthält die alle erforderlichen PHP (Html) und Pythonscripte. Voraussetzung ist:

  1. Installiertes Raspian mit LAMP
  2. I2C muss freigeschaltet sein
  3. Adafruit-PCA9685 Bibliothek (s.o) muss installiert sein
  4. Hardware muss zur Verfügung stehen

Die Installation erfolgt in zwei Schritten:

  1. Quellcode im Verzeichnis /var/www/html/ auspacken
  2. Rechte vergeben

Schalterpinout:

  • Servo
    • 3PIN: Signal=links, Vcc=rechts, GND=unten
  • Endschalter
    • 4PIN: GND=unten, open=links, close=rechts
diy_flatfield-controller.txt · Zuletzt geändert: 2020/11/22 16:19 von 127.0.0.1