Forum: Mikrocontroller und Digitale Elektronik Arduino richtig Prgrammieren


von René K. (speedy1991)


Angehängte Dateien:

Lesenswert?

Leider bin relativ unerfahren was das Programmieren angeht. Ich hab zwar 
die Anleitung vom Arduino Mega 2560 durch, komme aber mit meinem Projekt 
nicht weiter.

Ich möchte mit einem Poti den Stellbefehl für einen Schrittmotor 
umsetzten.
Grundannahme: Schrittmotor mit 200 Schritten und 10 Umdrehungen des 
Motors

Poti bei 0% = 0 Schritte
Poti bei 24% = 480 Schritte
Poti bei 78% = 1560 Schritte
usw.

Wenn ich den Poti nun zurück drehe, dann soll der Schrittmotor auch auf 
den Wert zurückfahren (Im Grunde wird damit ein Ventil gesteuert)

Anhang:
Oben steht die Grundannahme (wird sich vlt noch etwas ändern, da der 
Schrittmotor noch nicht feststeht.)
1. zuerst soll eine Referenzfahrt stattfinden
2. jetzt soll der Motor sich nach dem Wert des Potentiometers ausrichten


Ich hoffe ihr könnt mir mit dem Programm helfen

von Timmo H. (masterfx)


Lesenswert?

Vielleicht ist dieses Beispiel schon mal ein Anfang: 
https://www.arduino.cc/en/Tutorial/MotorKnob

von Dieter S. (Gast)


Lesenswert?

Es reicht mit Sicherheit nicht nur eine Bedienungsanleitung eines Mega 
durchzulesen, du solltes dich auch in die Programmiersprache einarbeiten 
und die Grundlagen lernen.

von Motorenfütterer (Gast)


Lesenswert?

> 1. zuerst soll eine Referenzfahrt stattfinden

Also ersmal 2200 Schritte richtung "0%", egal wo der Motor(das Ventil) 
stand. Ok?

Dann weiss ziemlich sicher dass man bei 0% (Ventil zu?) steht,jedoch 
auch Achsenbruch & Getriebeschaden hat, Motor & Netzteil Rauchzeichen 
abgeben und die Sicherung raus ist.
Zumindest ohne weitere Vorkehrungen.

von Motorenfütterer (Gast)


Lesenswert?

gedanken richtig ordnen:
1
GLOBAL:
2
    MSCHRITTE=0;
3
    PPOS=0;
4
5
SETUP:
6
    poti-erfassung aktivieren;
7
    motor still;
8
9
    motor -2200 schritte;
10
11
12
LOOP:
13
    PPOS=(poti-erfassung, in Schritte umgerechnet);  // immer positiv
14
15
    MEHRSCHRITTE=PPOS-MSCHRITTE;  // kann negativ sein
16
17
    motor MEHRSCHRITTE schritte;

von René K. (speedy1991)


Lesenswert?

Sry vergessen zu schreiben, dass an einem Halter jeweils ein Endschalter 
für die obere Endlage und untere Endlage befestigt sind. Dadurch wird 
die Referenzfahrt begrenzt.

von Falk B. (falk)


Lesenswert?

@ René Kattner (speedy1991)

>Poti bei 0% = 0 Schritte
>Poti bei 24% = 480 Schritte
>Poti bei 78% = 1560 Schritte
>usw.

>Wenn ich den Poti nun zurück drehe, dann soll der Schrittmotor auch auf
>den Wert zurückfahren (Im Grunde wird damit ein Ventil gesteuert)

Das nennt man einen Servo.

>Oben steht die Grundannahme (wird sich vlt noch etwas ändern, da der
>Schrittmotor noch nicht feststeht.)
>1. zuerst soll eine Referenzfahrt stattfinden

OK.

>2. jetzt soll der Motor sich nach dem Wert des Potentiometers ausrichten

Gut. Dazu braucht man einen Soll- und IST-Wert.

Der Soll kommt vom Poti, den IST muss man mitzählen. Die Differenz muss 
man als Schritte ausgeben und den Motor dabei drehen. Je nach Wunsch und 
Geschwindigkeit kann man nach jeder Differenzbildung erstmal alle 
Schritte abarbeiten oder nach jedem Schritt den Poti neu einlesen und 
entsprechend reagieren. Deine Skizzen sind ein Anfang.
1
int soll, ist, adc_wert;
2
3
setup() {
4
  if(!mache_referenzfahrt()) {
5
    serial.print("Referenzfahrt Error!");
6
    while(1);  // STOP
7
  }
8
}
9
10
loop() {
11
  analog_read(0) = adc_wert;
12
  soll = adc_wert * 2000L / 1024;
13
  if(soll > ist) {
14
    mache_schritt_links();
15
    ist++;
16
  } else if(soll < ist) {
17
    mache_schritt_rechts();
18
    ist--;
19
  }
20
}
21
22
int mache_referenzfahrt() {
23
  int i;
24
  for (i=2000; i>0; i--) {  // max 2000 Schritte für Referenzfahrt
25
    if (EINGANG_NULL) break;
26
    mache_schritt_links()
27
  }
28
  if (i==0) {
29
    // Fehler bei Referenzfahrt
30
   return 0;
31
  } else {
32
    return 1;
33
  }
34
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.