Hallo zusammen,
Ich habe ein altes Projekt von mir ausgegraben, dazu benötige Ich die
Schritte (Steps) die der Extruder machen soll.
Ich habe mir die Step/ Dir Leitung (vom Extruder) von meinem SKR v1.3
Board abgegriffen und einen Code (in Arduino) geschrieben um diese
auszulesen (siehe unten).
Mein Problem ist, das Ich immer wieder andere Werte bekomme. Ich habe
mehrfach hintereinander 1mm Filament Extrudiert, aber habe Schwankungen
von 27 bis 47 Steps.
Mein Setup:
Mainboard 3D Drucker: SKR v1.3 mit einem 32 Bit Controller
Arduino Oberfläche: Arduino Uno
Mein Code:
1 | int Direction;
|
2 | long Step = 0;
|
3 |
|
4 | int StepNew;
|
5 | int StepOld;
|
6 |
|
7 | int DirectionPin = 12;
|
8 | int StepPin = 11;
|
9 |
|
10 | void setup() {
|
11 |
|
12 | pinMode (DirectionPin, INPUT);
|
13 | pinMode (StepPin, INPUT);
|
14 |
|
15 | StepOld = digitalRead(StepPin);
|
16 |
|
17 | Serial.begin(9600);
|
18 | }
|
19 |
|
20 | void loop() {
|
21 |
|
22 | if (digitalRead(DirectionPin) == HIGH)
|
23 | {
|
24 | StepNew = digitalRead(StepPin);
|
25 | if ((StepNew == HIGH) && (StepOld == LOW))
|
26 | {
|
27 | Step++;
|
28 | Serial.print ("Forward: ");
|
29 | Serial.print (Step);
|
30 | Serial.print ("\n");
|
31 | }
|
32 | StepOld = StepNew;
|
33 | }
|
34 |
|
35 | else //(digitalRead(DirectionPin) == LOW)
|
36 | {
|
37 | StepNew = digitalRead(StepPin);
|
38 | if ((StepNew == HIGH) && (StepOld == LOW))
|
39 | {
|
40 | Step--;
|
41 | Serial.print ("Reverse: ");
|
42 | Serial.print (Step);
|
43 | Serial.print ("\n");
|
44 | }
|
45 | StepOld = StepNew;
|
46 | }
|
47 | }
|
Meine Frage:
- Liegt das an meinem Code? Wenn Ja, woran?
- Liegt das daran das der Arduino zu langsam ist?
- Woran kann es noch liegen?
Vielen Dank für eure Hilfe
Gruß
Seppel