Schrittmotor als oszilator verwenden

Hallo alle zusammen
Als absoluter Arduinonoob (nutze nur fertige codes und passe sie an) habe ich eine Frage:

Ist es möglich in diesem Code den Wert bei Index (wieviel Grad dreht der Stepper)
sowie die beiden DelayMicroseconds für jeweils beide Drehrichtungen mit je einem Potentiometer zu verstellen. Ich würde gerne eine Rüttelplatte mit verstellbarem Hub und Geschwindigkeit bauen.
1.wie sähe der Code aus?
2.wie müsste ich die Potis am Arduino verdrahten?
Falls ich mich in irgendeiner Art nicht Forumskonform verhalte, bitte mitNachsicht darauf hinweisen :slight_smile:
Ich hoffe sehr auf Hilfe Herzliche Grüsse Joe

int Index;

void setup()
{
pinMode(6, OUTPUT); //Enable
pinMode(5, OUTPUT); //Puls
pinMode(4, OUTPUT); //Direction

digitalWrite(6,LOW);
}

void loop()
{
digitalWrite(4,HIGH);

for(Index = 0; Index < 2000; Index++)
{
digitalWrite(5,HIGH);
delayMicroseconds(100);
digitalWrite(5,LOW);
delayMicroseconds(50);
}
delay(1);

digitalWrite(4,LOW);

for(Index = 0; Index < 2000; Index++)
{
digitalWrite(5,HIGH);
delayMicroseconds(100);
digitalWrite(5,LOW);
delayMicroseconds(50);
}
delay(1);
}

Ja.
Zu 2)

+5V   --+
        | 
        - /
       | /  (Poti irgendwas zwischen 2- 5Kohm)
       |/|
A(x)___/_|
        |
GND  ---+

Idee zu 1)

const byte enablePin = 6;
const byte pulsPin = 5;
const byte dirPin = 4;
const byte microsHighPin = A0;
const byte microsLowPin = A1;
const byte maxIndexPin = A2;

const unsigned int maxIndex = 2000;
const unsigned long maxHighMicros = 200;
const unsigned long maxLowMicros = 200;
unsigned int Index;

void setup()
{
  pinMode(enablePin, OUTPUT); //Enable
  pinMode(pulsPin, OUTPUT); //Puls
  pinMode(dirPin, OUTPUT); //Direction
  digitalWrite(enablePin, LOW);
}

void loop()
{
  digitalWrite(dirPin, HIGH);
  unsigned int myIndex = map(analogRead(maxIndexPin), 0, 1023, 0, maxIndex);
  unsigned long myHighMicros = map(analogRead(microsHighPin), 0, 1023, 0, maxHighMicros);
  unsigned long myLowMicros = map(analogRead(microsLowPin), 0, 1023, 0, maxLowMicros);
  for (Index = 0; Index < myIndex; Index++)
  {
    digitalWrite(pulsPin, HIGH);
    delayMicroseconds(myHighMicros);
    digitalWrite(pulsPin, LOW);
    delayMicroseconds(myLowMicros);
  }
  delay(1);
  digitalWrite(dirPin, LOW);
  for (Index = 0; Index < myIndex; Index++)
  {
    digitalWrite(pulsPin, HIGH);
    delayMicroseconds(myHighMicros);
    digitalWrite(pulsPin, LOW);
    delayMicroseconds(myLowMicros);
  }
  delay(1);
}

Du wirst damit vielleicht nicht glücklich werden.
Der AnalogIn pendelt um bis zu drei digit.
Um das zu vermeiden, muss der Code schon aufwendiger werden.

Wow :star_struck: bin total geplättet das werd ich morgen ausprobieren. Gaaanz herzlichen Dank.
So unkompliziert wurde mir noch in keinem Forum geholfen!!!!
Einen schönen Sonntag wünsche ich !!

Schrittmotoren können nicht aus dem Stand von 0 auf 100 beschleunigt werden, insbesondere wenn noch eine schwere (träge!) Rüttelplatte dranhängt. Da empfiehlt sich die AccelStepper Bibliothek mit einstellbarer Beschleunigung.

Auch dir herzlichen dank. Der physikalische Sachverhalt ist mir sehr wohl bewusst, darum sind es ja auch grosse nema 23 an tb6600, dies reicht rein rechnerisch für mich dicke aus :rofl:

salü my_xy_projekt

einfach perfekt dein Code, funzt absolut einwandfrei für meine Belange ganz ganz herzlichen Dank

Joe

Schick.
War ich auf der richtigen Spur - freut mich.
Wenns gelöst ist, hake es ab :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.