Ich möchte hier kurz zusammenfassen, wie mein Lokschuppentoröffner aufgebaut ist.
Hauptsächlich an die gerichtet, die nach einer vollständigen Lösung suchen und in Arduinosteuerung (so wie ich) unerfahren sind.
Außer blinkende LED hatte ich bisher noch keine Erfahrung mit Arduino.
Als ich das Projektchen gestartet habe hab ich etliche Anleitungen im WWW gefunden, die leider nur bedingt funktionsfähig und vollständig sind. Möglicherweise gibt es die doch, habe sie nur nicht gefunden.
An dieser Stelle herzlichen Dank an die „MobaTool-Stummies“, mit deren Hilfe ich die Steuerung nach meinen Vorstellungen zum Laufen bringen konnte.
viewtopic.php?f=21&t=127899
Zum Einstieg ein kleines Filmchen.
Benötigtes Material
Servo
Arduino-Nano
zwei Minitaster
Geschaltet wird mittels zwei Minitaster für Tor-Auf und Tor-Zu.
Eine Schaltung zur Funktionsdemonstration von Servosteuerung und den zugehörigen Sketch fand ich hier.
https://www.youtube.com/watch?v=MxQkIrQ23TI
Durchaus empfehlenswert, hier wird schrittweise der Programmaufbau erklärt.
Erstes Problem, die Stellgeschwindigkeit ist viel zu hoch und lässt sich nicht verändern.
Dann habe ich bei den MobaTools hier im Forum auch einem Sketch zur Ansteuerung gefunden.
Aktueller Sketch mit allen Änderungen.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <MobaTools.h>
#include <EEPROM.h>
// Die Taster müssen so angeschlossen sein, dass der Eingang bei gedrücktem
// Taster auf LOW (=0) geht. Ansonsten muss im loop auf HIGH abgefragt werden
const int tasterPin1 = 2; // Taster1 Pin 2
const int tasterPin2 = 3; // Taster2 Pin 3
const int servoPin = 9; // Anschluß für den Servo, möglich sind 9 oder 10
// bei Werten, die sich im Programm nie verändern, sollte immer 'const' vorangestellt
// werden
//gegen Sevozucken Widerst.5K von Servosteur zu Vcc geschaltet
int tasterStatus1, tasterStatus2;
Servo2 meinServo;
void setup() {
pinMode(tasterPin1, INPUT_PULLUP); //tasterPin1 (Pin 2)
pinMode(tasterPin2, INPUT_PULLUP); //tasterPin2 (Pin 3)
meinServo.attach(servoPin, true ); //Servo an Pin 9
meinServo.setSpeed(5); // Das ist ein neuer Aufruf, mit dem die Geschwindigkeit
// eingestellt wird. Je größer die Zahl, umso größer
// die Geschwindigkeit. Bei 0 (defaultwert) verhält es
//sich wie bei der Standard Bibliothek
meinServo.write(EEPROM.read(0)); //"bewege" Servo zur letzten im EEPROM gespeicherten Position
}
void loop() {
tasterStatus1 = digitalRead(tasterPin1);
tasterStatus2 = digitalRead(tasterPin2);
if (tasterStatus2 == HIGH ) {
meinServo.write(50); //wird langsam drehen
EEPROM.write(0, 50); //schreibe Zielposition ins EEPROM
delay(100);
}
if (tasterStatus1 == HIGH) {
meinServo.write(120); //wird langsam drehen
EEPROM.write(0, 120 ); //schreibe Zielposition ins EEPROM
delay(100);
}
delay(20);
}
Klappte soweit, bis auf die Tatsache, das das Servo nach Erreichen der Endpositionen brummte.
Außerdem erreichte das Servo manchmal nicht die Endposition, wenn ein Taster nur kurz gedrückt wurde.
Aus: meinServo.attach(servoPin);
Wurde: meinServo.attach(servoPin, true );
Dann das nächste Problem. Das "Einschaltzucken", das bei verschiedenen Servos auftreten kann.
Abhilfe brachte die Programmänderung „Zielposition ins EEPROM schreiben“
EEPROM.write(0, 150);
und einen ca. 4K7 (war nicht vorhanden, statt dessen zwei Stück 10K parallel) großen Widerstand von Servoansteuerleitung zu +5V zu schalten.
Das Schaltbild dazu
Die Taster kann man auch an 0V anlegen. Man spart sich dann die Pulldownwiderstände.
Habe ich aber auch erst erfahren, nach dem ich die Schaltung schon aufgebaut hatte.
Bild Arduino
Für die Arduinokenner ist das wohl kalter Kaffee.
Irrtümlicherweise bin ich davon ausgeganngen, das die Versorgungsspannung 5V betragen würde und an GND und +5V angeschlossen würde.
Dem ist aber nicht so. Versorgungsspannung gehört an GND und VIN. Bei Vin hätte ich es vielleicht bemerkt.
Bilder von Außen und Innen
Die Schalter befinden sich unter den beiden stehenden blauen Tonnen. Sie können duch Druck auf die Tonnen betätigt werden.
Passend dazu noch...
Bei den MobaTools viewtopic.php?f=21&t=127899&start=425#p2082395ab #447
Und bei der Birkenbahn viewtopic.php?f=50&t=133452&start=300#p2084948ab #322
Anregungen, Fragen willkommen.
MfG Werner