Modellbau Mikrocontroller als Modellsteuerung

Kauli100

Stammuser
Registriert
28 Nov. 2014
Beiträge
119
Likes
422
Auf Grundlagen einer Unterhaltung möchte ich meine Erfahrung und den Aufbau meiner Modellsteuerung mit dem Arduino Leonardo hier vorstellen.

Beim Kauf des Faller Octopussy stand schon fest, Modellantrieb mit einem Motor,nein,eine eigene Steuerung muss her.Bei Aufstellung einer Pflichtentabelle sind folgende Punkte zusammen gekommen.

1. Modell startet immer in Grundstellung ( zB nach Stromunterbrechung)

2. Rote LED Anzeige im Steuerstand wenn das Modell nicht betriebsbereit ist

dabei Grundstellung des Hebermotor in Taktung anfahren.


3. Grundstellung, grüne LED Anzeige im Steuerstand an,Rote LED aus, Programmstart

4. Mittelkreisel dreht gegläufig

5. Arme werden bis zum höchsten Punkt angehoben

6. Karussell fährt mit reduzierter Geschwindigkeit an

7. Drehzahl des Karussel erhöht sich bis auf Maximum----Drehzahl halten

8. Weisse LED als Blitzer

9. Arme bewegen sich in Grundstellung in Verbindung mit Drehzahl reduzieren bis auf Stillstand

10. Mittelkreisel aus

11. Rote LED imSteuerstand an,Grüne LED aus

12. Wartezeit von ca 3 min bis Programm Neustart

Dieses Pflichtenheft kann man mit dem Arduino Leonardo mit aufgesetztem Motorshield R3 realisieren.

Mit der Open-Source-Software Arduino 1.6.5 (IDE) kann Code geschrieben werden und per USB auf das Bord geladen werden.

Wichtige Infos zu Arduino findet man unter www.Arduino.cc

ArduinoLeonardoFront_2.jpg
( weitere Berichte folgen)

VG

Joachim
 
Hier noch Technische Daten zur Aduino Leonardo Platine


- Stromversorgung über Micro-USB oder Stecker Netzteil
( versorge es mit Stecker Netzteil 9V/600 mA)

- Betriebsspannung 7-12 V

- 20 Input-/Output- Pins davon können 7 als PWM genutzt werden

( Pulsweiten Modulation – Drehzahlregulierung für Gleichstrom Motoren)

- 2,5 kB SRAM

- 1 kb EEPROM

- 16 MHZ Taktfrequenz


Da an den digitalen Pins nur Verbraucher bis 40 mA angeschloßen werden können,kommt das Motor Shield zum Einsatz.
Die eingebaute H Brücke bringt alle Voraussetzungen mit.

Ausgang A für Motor 1 ( Arme heben) , Ausgang B für Motor 2 ( Karussell drehen)


Im Originalzustand des Motorshield wird diese H-Brücke mit Spannung des Arduino Board Vin betrieben. Da meine Motoren eine andere Spannung brauchen, ist auf der Unterseite des Shield die Brücke Vin Connect zu trennen.

MotorShield_R3_Back_2.jpg

Somit kann ich auf den Schraubklemmen Vin/ GND meine benötigte Spannung von 5 Volt mit einem Stecker Netzteil auflegen

MotorShield_R3_Front.jpg.jpg

Hiermit sind für Motor A ( Heber ) Pin 12/ 9 / (3) und für Motor B (Karussell) Pin 13/ 8 / (11) vergeben.

Weitere Pin Belegungen Pin 4 ( Motor 3 ) , Pin 5 ( LED grün) , Pin 6 ( LED rot ) , Pin 7 ( LED weiß )

Da wir etwas schalten wollen, sind diese Pin´s digital Output.

Pin 2 wird digital Input ,dieser ist für die Abfrage der Grundstellung.


VG
Joachim

( weiteres folgt )
 
Das finde ich super. Möchte hier meine funktionierende Steuerung erläutern und den Aufbau erklären.

Gruß Joachim
 
Grundschaltung auf der sich alle Punkte aus dem Pflichtenheft aufbauen
Grafik3-page-001.jpg
Da beide Platinen aufeinander gesteckt werden und alle Pin`s 1:1 durchgeführt werden,habe ich nur das Motorshield gezeichnet.
 
Für das Programmieren dieser einfachen Schaltung ist ein grundlegender Aufbau notwendig,welche immer gleich ist.

void setup ()
{
anweisungen ;
}
void loop ()
{
anweisungen ;
}

setup () die Vorbereitung und loop () die Ausführung , Bemerkungen werden in // gesetzt.

Im folgenden der Quellcode für ein einfaches Programm.

1 // Probeprogramm zur Schaltplan 1 ,Grafik3
2 // Pin Belegung für Motor A (Hebermotor) 12=DIR,9=BRAKE,3=PWM
3 // Pin Belegung für Motor B (Karussell) 13=DIR,8=BRAKE,11=PWM
4 int motor1_Speed = 3; // Hebermotor PWM
5 int motor2_Speed = 11;// Karussellmotor PWM
6 // Pin Setzung
7 void setup() {
8 pinMode(12, OUTPUT); // Hebermotor Pin 12 als Ausgang
9 pinMode(9, OUTPUT); // Hebermotor Pin 9 als Ausgang
10 pinMode(13, OUTPUT); // Karussellmotor Pin 13 als Ausgang
11 pinMode(8, OUTPUT); // Karussellmotor Pin 8 als Ausgang
12 }
13 // Hauptprogramm. Diese loop Schleife läuft solange durch
14 // bis ein Endbefehl programmiert wurde
15 // Aufgabe: Hebermotor soll für eine bestimmte Zeit laufen
16 // Karussellmotor soll mit Drehzahl Erhöhung laufen
17 void loop() {
18 // Hebermotor an
19 // Einstellung der Drehrichtung
20 digitalWrite(12, HIGH); // pin 12 auf HIGH setzen
21 digitalWrite(9, LOW); // pin 9 auf LOW setzen
22 analogWrite(motor1_Speed,150); // PWM- Drehzahl
23 delay(10500); // 10,5 Sek Durchlaufzeit dieser Schleife
24 // Karussellmotor anfahren und Geschwindigkeit erhöhen
25 // Variablewert i wird auf 110 gesetz
26 // Geschwindigkeitswerte von 0 - 255 möglich
27 // i+ dieser Wert wird bei jedem Durchlauf zum Startwert addiert bis
28 // < 256 erreicht ist
29 for(int i=110; i < 256; i+25){
30 digitalWrite(13, HIGH); // pin 13 auf HIGH setzen
31 digitalWrite(8, LOW); // pin 8 auf LOW setzen
32 analogWrite(motor2_Speed, i); // Drehzahl
33 delay(3000);
34 }
35 }
___________________________________________________________________________________


Gruß Joachim
 
Danke für die Erläuterungen; nun aber die alles entscheidende Frage: was kostet die Steuerung mit 2 Motoren für den Faller Octopussy? vG Ro
 
Schaltplan für die LED im Steuerstand und die weiße LED als Blitzer

.


Grafik4-page-001.jpg


Angesteuert werden Pin 5 für LED grün , Pin 6 für LED rot und Pin 7 für LED weiß
Zwar hat der Arduino einen eingebauten Widerstand an den Pin´s ,doch ich habe lieber noch die passenden Widerstände mit eingebaut.

In den Quellcode müssen folgende Befehle zum passenden Programm Ablauf eingefügt werden.

bei void setup
.
pinMode(5, OUTPUT); // Ausgang LED grün Betriebsmodus an
pinMode(6, OUTPUT); // Ausgang LED rot Betriebsmodus stop
pinMode(7, OUTPUT); // Ausgang LED weiß bei Maximal Geschwindigkeit
.
bei void loop()
{
digitalWrite(5, HIGH); // LED an
delay ( ) // Wartezeit eingeben
digitalWrite(5, LOW); // LED aus
delay ( ) // Wartezeit eingeben
}
.
Diese Befehle werden auch für Pin 6 und Pin 7 angewendet.

Gruß Joachim

(weiteres folgt)
 
Schaltplan Erweiterung zur Grundstellung Abfrage


.

Grafik5-page-001.jpg

Der Reedkontakt beim Faller Octopussy ist ein Schließer Kontakt. Somit wird Pin 2 digital lesen. Es gibt hier nuir 2 Zustände HIGH oder LOW.
Da wir etwas auslesen möchten,wird am Reedkontakt eine Board Spannung von 5 Volt angelegt. Um den Eingang zu schützen wir ein 10 kOhm Widerstand als Last mit eingebaut.
.
Im Quelltext
.
const int buttonPin = 2; // Reedkontakt pin 2 als Eingang
int buttonState = 0; // Kontaktstellung ( hier wird Pin 2 auf LOW gesetzt)
.
void setup () {
pinMode(buttonPin, INPUT);
}
// Startbedingung bei Start und nach Stromunterbrechung
// Reedkontaktabfrage
// Kontaktabfrage Pin 2 = 5 Volt
void loop () {
buttonState = digitalRead(buttonPin);
switch (buttonState == HIGH)
{
case 0: // Bedingung, falls pin 2 = LOW
.
( Anweisung)
.
break;
.
case 1: // Hauptprogramm ( hier schon mit Anweisungen)
// LED rot aus
digitalWrite(6, LOW);
// LED grün an
digitalWrite(5, HIGH);
.
break;
.
// Wenn Pin 2 weder 1 oder 0 ( Ein Fall der gar nicht eintreten kann )
default:
// Heber aus
digitalWrite(12, LOW);
digitalWrite(9, HIGH);
// Dreher aus
digitalWrite(13, LOW);
digitalWrite(8,HIGH);
// Wartezeit 20 Sekunden
delay(20000);
break;

Gruß Joachim

Würde mich mal interessieren, ob jemand bis zu diesem Punkt mitgekommen ist.
( weiteres folgt)
 
Gesamtschaltplan mit Ansteuerung des 3. Motor
.
Arduinoshield_1_2-page-001.jpg
Der 3. Motor wird mit einem Bipolar Leistungstransistor NPN TO 92 I mit 1A Emitter Sperrspannung und einem 1 kOhm Lastwiderstand auf Pin 4 als Ausgang betrieben.

Im Quelltext an entsprechender Stelle einfügen
.
void setup ();{
.
pinMode(4, OUTPUT); // Kreiselmotor pin 4 als Ausgang
}
void loop () ;{
.
// Motor 3 an
digitalWrite(4, HIGH); // Motor 3 an
.// digitalWrite/4, LOW); // Motor 3 aus
}

Mit diesem Schaltbild und dem Programmcode werden alle Punkte des Pflichtenheftes erfüllt.
.
Mein Kirmesmodell Octopussy läuft mit dem Controller ohne besondere Vorkommnisse und
wird zur Allerheiligen Kirmes Soest in einem Schaufenster stehen.
.
Bei Rückfragen einfach melden.....


Gruß
Joachim
 
Gibst Du uns noch Bescheid wo man das besagte Modell an der AH-Kirmes in Soest bestaunen kann?
(Straße u. Hausnr.)

Wäre super! - danke
 
Stehe noch in Verhandlung über den Zeitraum.Werde diesen hier bekannt geben.
Der Standort ist Brüderstrasse 27 in Soest.

Gruß Joachim
 
Wie angekündigt,der Termin ist vom 21.10.2015 bis 10.11.2015

Gruß Joachim
 

Premium Mitglied

Keine Lust auf Werbung | Du möchtest das Forum unterstützen | Extra Banner .
Zurück
Oben