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
Es reicht mit Sicherheit nicht nur eine Bedienungsanleitung eines Mega durchzulesen, du solltes dich auch in die Programmiersprache einarbeiten und die Grundlagen lernen.
> 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.
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; |
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.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
