Arduino richtig Prgrammieren

OP #4419749
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
Angehängte Dateien:
Gast #4420561
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.
Gast #4420578
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;
#4423203
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
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.