Hallo liebe Community, Vorstellung

Hallo, ich bin Christopher 25 Jahre jung aus Braunschweig. Ich bin angehender Staatlich geprüfter Techniker für Mechatronik und zuvor war ich 2 Jahre als Mechatroniker tätig.

Ich habe ihm Rahmen meiner Projektarbeit, die Aufgabe eine Steuereinheit zu entwerfen und Herzustellen.
Das Problem werde ich mit dem Arduino System umsetzen.
Ich belese mich fleißig aber es wird wohl doch noch etwas dauern um etwas Licht ins Dunkel zu bringen da ich nur die Grundlegenden C++ Kentnisse besitze.

Mir geht es in erster Linie darum ein Paar Links oder Tipps zu erhalten WO ich mich näher in das Thema einlesen kann, gerne auch in Englisch.

Zur Aufgabenstellung:

Eine Bedieneinheit mit der man 10x12VDC Motoren mit je 5V Steuerleitungen regeln kann. Diese haben einen Festen Fahrbereich und jeder Motor zieht max 250mA. Das ganze fein aufgelöst mit einem Mehrgangpoti. Ich möchte jeden Motor über ein kleines Steuerkreuz ansteuern und mir die Aktuelle Lage in Prozent auf einem 4,2" TFT Display anzeigen lassen. Dazu noch einen Taster um alle Motoren einmal voll auf Anschlag und zurück fahren zu lassen.

Mit einer Externen Stromversorgung von 12V

Umsetzen möchte ich diese Problematik mit:
-1xArduino Mega 2560 (starterpaket)
-5x Schield l298
-1xEA eDIP240B-7LW (TFT)

Ich möchte mich gerne in die Programmierung einlesen nur finde ich keine sonderlich Hilfreichen beispiele im Netz. Ein gewisser Grundleitfaden wäre schon Super.

Ich freu mich jedenfalls meine Horizont zu erweitern.

Liebe Grüße

Was die Programmierung betrifft, solltest du dir ein Fachbuch für C++ zulegen, da kannst du jederzeit nachlesen.
Fehlende Informationen findest du im Web.

Elmuecko:
...
Ich möchte mich gerne in die Programmierung einlesen nur finde ich keine sonderlich Hilfreichen beispiele im Netz. Ein gewisser Grundleitfaden wäre schon Super.
...

Ich habe C++ durch ein Buch gelernt. Ansonsten habe ich noch ein paar hundert Seiten C/C++-Referenz und habe d.c.l.iso-c++ seit rund 7 Jahren abonniert und lese eigentlich alles, was da gepostet wird.

Wenn Du C/C++-Neuling bist, hast Du noch viel Spaß vor Dir :slight_smile:

Gruß

Gregor

Wenn du ganz allgemein C++ lernen willst, dafür gibts dutzende Tutorials im Netz: C++ Tutorials

Du kannst aber auch hergehen und einfach mal ein paar von den mit dem Arduino mitgelieferten Beispielen durcharbeiten.

Wenn ich dein projekt richtig verstanden habe, willst mit einem "Steuerkreuz" Motoren stellen, und deren Position über ein Poti zurücklesen.

Da könntest du schon mal das Beispiel AnalogReadSerial durcharbeiten. Und das erweitern auf 2 oder mehr Potis.

Ist dein "Steuerkreuz" mit Schaltern?
dann könntest du dir auch mal Button ansehen.

Und, ganz wichtig, weil immer wieder benötigt: BlinkWithoutDelay, wenn du irgendwelche Aktionen nicht ständig, sondern nur in bestimmten Zeitabständen ausführen willst.

Für LCD, Motoren etc findest du im Arduino Playground viele Anregungen.

Am besten, du fängst langsam an:

  1. Potis einlesen,
  2. LEDs ansteuern,
  3. mehrere LEDs über mehrere Potis steuern
  4. wie oben, aber mit Funktionen
  5. Motoren ansteuern
  6. LCD beschreiben
    usw.

Ich persönlich halte nichts davon einfach nur mal so C++ Bücher zu studieren, ich finde es besser am konkreten Objekt zu lernen. Die dabei entstehenden Fragen werden dir hier im Forum gerne beantwortet.

Das ganze fein aufgelöst mit einem Mehrgangpoti.

Das funktioniert nicht, zumindest nicht gut!
Endschalter vergessen?
Potis haben einen Temperaturgang und Verschleiß.

Verwende (optische)Drehwinkelencoder, Motoren mit aufgesetztem Encoder.
Oder Schrittmotoren.

Sonst bekommst du deine feine Auflösung nicht hin.

Suche mal nach "Ramps 1.4" das bietet so ziemlich alles, was du brauchst

Ramps ausm Druckbereich?

skorpi08:
Ramps ausm Druckbereich?

Genau.
Damit sind jeweils 5 Antriebe mit hoher Präzession möglich.
Und die Kosten sind erträglich.

Danke für die ganzen Tipps!

@Combie die Motoren sind aus dem Automobilbereich Klimatechnik. Das sollten Schrittmotoren sein, da sie
+- 12V und +-5V sowie eine Rückmeldeleitung haben. Da ich mit meinem Kollegen gerade die Stückliste fertig machen wollte um zu bestellen, ist uns aufgefallen das unserer Vorhaben gar nicht mit den 5 Motortreibern realisierbar ist?! Wir hatten einen Denkfehler und nahmen an die 12V DC Motoren einfach anzusteuern mit dem Motortreiber. Das wären dann 2 Pro Treiber. Da wir aber jeden Motor in seinem begrenzten Fahrweg mittels des Potis verstellen möchten müssten wir ja 10 Arduino Motor Power L298 verwenden was das Budget unnötig in die Höhe treiben würde.

Im netz haben wir gelesen das es mittels des Arduino Mega's auch möglich sei diese Schrittmotoren anzusteuern aber wiederum sind das teilweise andere Problematiken die Erfüllt sein müssen. Bei uns soll nur jeder Motor einzeln angesteuert und verstellt werden mehr nicht. Die Auswahl mittels Taster Kreuz welches Schließer sind.

Ich habe auch von einem Shield aus dem Digitaldruck gelesen was aber seeeehr Komplex wirkte.

Wir sind nun Ziemlich Ratlos da unser Konzept verworfen wirkt....

@Combie die Motoren sind aus dem Automobilbereich Klimatechnik. Das sollten Schrittmotoren sein, da sie +- 12V und +-5V sowie eine Rückmeldeleitung haben.

Dann schaut euch die nochmal genau an....
Vielleicht einen aufknibbeln, damit man mal einen Plan malen kann...

Gerade erledigt. Es handelt sich um einen 12V DC Motor mit einem + und einem - daneben ist ein kleines Schneckengetriebe angebracht welches über die 3 5V Leitungen dem Steuergerät sagen würde in welcher Position sich der Motor befindet. Also doch kein Schrittmotor.

Wie nennt man ein Potentiometer welches einzelne "Klicks" und unendlich viele Gänge hat?

Plan ist beim Initialisierungslauf festlegen wie viele Umdrehungen der Motor in seinem Festgelegten weg macht. Damit wir diesen Weg mit dem Poti in Zb. 0,5% Schritten hoch und runterfahren können. Wir wollen quasi ausdrücken "geh für eine Festgelegte Umdrehungszahl an und wieder aus"

Elmuecko:
Wie nennt man ein Potentiometer welches einzelne "Klicks" und unendlich viele Gänge hat?

Drehgeber, Inkrementalgeber, Rotations Encoder

Da gab es hier schon viel Code dazu. Mal mehr oder weniger gut. Am besten geht es mit Pollen in einem Timer Interrupt. Fall du 10x PWM machen willst, musst du da nur mit der Pin-Pelegung aufpassen

Ist Ramps nicht mit 24V?

Da es sich nicht um Schrittmotoren handelt sondern um 12V DC Motoren mit seperat verbautem Poti und einem kleinen Schneckenantrieb (Klimamotoren KFZ) Werden wir unser Vorhaben nun Mittel den Shield's SHD MOPO umsetzen. Verstellung folgt über einen Drehimpulsgeber.STEC11B03: Drehimpulsegeber, 15 Impulse - 30 Rastungen, vertikal bei reichelt elektronik

Ich habe mit dem Code schon angefangen und Mir stellen sich da schon einige Fragen. Ich habe diese im Code gestellt.

/Grundskizze des Programms***/

/*Steuerung von bis zu 10 DC 12V Motoren über einen Drehimpulsgeber (jeder Motor einzeln)/

int Schalter_1 = 40; //Ein/Aus Schalter des Systems
int pwm_M1 = 3 ; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M2 = 9 ; //PWM Kontrolle für motor outputs 3 and 4
int dir_M1 = 2 ; //Drehrichtung für motor outputs 1 and 2
int dir_M2 = 8 ; //Drehrichtung für motor outputs 3 and 4

int pwm_M3 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M4 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M3 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M4 = 8; //Drehrichtung für motor outputs 3 and 4

int pwm_M5 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M6 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M5 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M6 = 8; //Drehrichtung für motor outputs 3 and 4

int pwm_M7 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M8 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M7 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M8 = 8; //Drehrichtung für motor outputs 3 and 4

int pwm_M9 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M10 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M9 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M10 = 8; //Drehrichtung für motor outputs 3 and 4

void setup()
{

pinMode(Schalter_1, INPUT); //Setzt Schalter_1 als Input für Motor 1-2
pinMode(pwm_M1, OUTPUT); //Setzt control pins zu outputs für Motor 1-2
pinMode(pwm_M2, OUTPUT);
pinMode(dir_M1, OUTPUT);
pinMode(dir_M2, OUTPUT);

pinMode(pwm_M3, OUTPUT); //Setzt control pins zu outputs für Motor 3-4
pinMode(pwm_M4, OUTPUT);
pinMode(dir_M3, OUTPUT);
pinMode(dir_M4, OUTPUT);

pinMode(pwm_M5, OUTPUT); //Setzt control pins zu outputs für Motor 5-6
pinMode(pwm_M6, OUTPUT);
pinMode(dir_M5, OUTPUT);
pinMode(dir_M6, OUTPUT);

pinMode(pwm_M7, OUTPUT); //Setzt control pins zu outputs für Motor 7-8
pinMode(pwm_M8, OUTPUT);
pinMode(dir_M7, OUTPUT);
pinMode(dir_M8, OUTPUT);

pinMode(pwm_M9, OUTPUT); //Setzt control pins zu outputs für Motor 9-10
pinMode(pwm_M10, OUTPUT);
pinMode(dir_M9, OUTPUT);
pinMode(dir_M10, OUTPUT);

analogWrite(pwm_M1, 80); //Setzt Motorgeschwindigkeit auf (80/255 = 31)% duty cycle (very slow)
analogWrite(pwm_M2, 80);
analogWrite(pwm_M3, 80);
analogWrite(pwm_M4, 80);
analogWrite(pwm_M5, 80);
analogWrite(pwm_M6, 80);
analogWrite(pwm_M7, 80);
analogWrite(pwm_M8, 80);
analogWrite(pwm_M9, 80);
analogWrite(pwm_M10, 80);

}

void loop()
{

buttonState = digitalRead(Schalter_1);
if (buttonState == HIGH) {
digitalWrite(dir_M1, LOW); //Motoren M1,M2 sollen solange mit definierter Geschw. fahren, bis der Mechanische Anschlag erreicht ist
digitalWrite(dir_M2, LOW);

analogWrite(pwm_M1, 80);
analogWrite(pwm_M2, 80);

delay(5000)

digitalWrite(dir_M1, HIGH); //Motoren sollen nachdem sie den Meschanischen Anschlag erreicht haben, in entgegengesetzter Fahrtrichtung drehen
digitalWrite(dir_M2, HIGH);

analogWrite(dir_M1, 80);
analogWrite(dir_M2, 80);

}

Ich möchte das am Anfang ein Initalisierungslauf startet wo immer 2 Motoren Paarweise durch ihren Verstellbereich hoch und runter fahren.

Bitte nicht Steinigen.

Liebe Grüße

analogWrite(dir_M1, 80);

Die Direktions würde ich mit digital schalten, nicht per PWM