Nema17 met joystick

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 7
Geregistreerd: 02 Feb 2023, 17:57

Nema17 met joystick

Berichtdoor hvgurp@gmail.com » 02 Feb 2023, 18:14

Wil graag voor de kleinkinderen een Nema17 4 draads aansturen met een joystick.
Ben beginner maar heb Easydriver, A4988, L298N en drv8825 geprobeerd.
Kan geen werkende versie vinden op internet.
Wie kan mij helpen? Alvast bedankt.

Advertisement

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: Nema17 met joystick

Berichtdoor Frits1956 » 05 Feb 2023, 00:18

Wat is het probleem?
Draait de motor niet?
Reageert de motor niet op de joystick?
Krijg je wel signaal van de joystick?
Welke hardware heb je?
Hoe heb je de motor aangesloten?
Hoe lees je de signalen van de joystick?

Met andere woorden: Met de informatie die je geeft kan niemand een zinnig antwoord geven.
Daarbij is het voor een beginner verstandiger om kleine stapjes te nemen en niet ineens een grandprix te willen rijden

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Nema17 met joystick

Berichtdoor shooter » 10 Feb 2023, 11:45

een aantal die je noemt hebben een voedingsspanning nodig boven de 7 Volt zoals de 4988 en kijk of je de potmeter moet verdraaien die zorgt voor de maximale stroom dus schema of id is handig.
paul deelen
shooter@home.nl

Berichten: 7
Geregistreerd: 02 Feb 2023, 17:57

Re: Nema17 met joystick

Berichtdoor hvgurp@gmail.com » 10 Feb 2023, 14:50

Heb op algemeen forum gevraagd hoe ik ino/fzz kan plaatsen zodat ik het probleem duidelijker kan maken.
Is voor jullie ook makkelijker oplossing zoeken

Berichten: 7
Geregistreerd: 02 Feb 2023, 17:57

Re: Nema17 met joystick

Berichtdoor hvgurp@gmail.com » 10 Feb 2023, 22:02

Hierbij de sketch die niet werkt

```cpp
#define step_pin 3 // Pin 3 connected to Steps pin on EasyDriver
#define dir_pin 2 // Pin 2 connected to Direction pin
#define MS1 5 // Pin 5 connected to MS1 pin
#define MS2 4 // Pin 4 connected to MS2 pin
#define SLEEP 7 // Pin 7 connected to SLEEP pin
#define X_pin A0 // Pin A0 connected to joystick x axis

int direction; // Variable to set Rotation (CW-CCW) of the motor
int steps = 1025; // Assumes the belt clip is in the Middle

void setup() {
pinMode(MS1, OUTPUT);
pinMode(MS2, OUTPUT);
pinMode(dir_pin, OUTPUT);
pinMode(step_pin, OUTPUT);
pinMode(SLEEP, OUTPUT);

digitalWrite(SLEEP, HIGH); // Wake up EasyDriver
delay(5); // Wait for EasyDriver wake up


/* Configure type of Steps on EasyDriver:
// MS1 MS2
//
// LOW LOW = Full Step //
// HIGH LOW = Half Step //
// LOW HIGH = A quarter of Step //
// HIGH HIGH = An eighth of Step //
*/

digitalWrite(MS1, LOW); // Configures to Full Steps
digitalWrite(MS2, LOW); // Configures to Full Steps

}

void loop() {
while (analogRead(X_pin) >= 0 && analogRead(X_pin) <= 100) {
if (steps > 0) {
digitalWrite(dir_pin, HIGH); // (HIGH = anti-clockwise / LOW = clockwise)
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps--;
}
}

while (analogRead(X_pin) > 100 && analogRead(X_pin) <= 400) {
if (steps < 512) {
digitalWrite(dir_pin, LOW); // (HIGH = anti-clockwise / LOW = clockwise)
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps++;
}
if (steps > 512) {
digitalWrite(dir_pin, HIGH);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps--;
}
}

while (analogRead(X_pin) > 401 && analogRead(X_pin) <= 600) {
if (steps < 1025) {
digitalWrite(dir_pin, LOW);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps++;
}
if (steps > 1025) {
digitalWrite(dir_pin, HIGH);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps--;
}
}

while (analogRead(X_pin) > 601 && analogRead(X_pin) <= 900) {
if (steps < 1535) {
digitalWrite(dir_pin, LOW);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps++;
}
if (steps > 1535) {
digitalWrite(dir_pin, HIGH);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps--;
}
}

while (analogRead(X_pin) > 900 && analogRead(X_pin) <= 1024) {
if (steps < 2050) {
digitalWrite(dir_pin, LOW);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps++;
}
}
}
```

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Nema17 met joystick

Berichtdoor shooter » 11 Feb 2023, 11:10

ik mis een hele hoop haakjes vooral in de if statemens dus ((a>b)&&(b<C)) want een if werkt alleen maar met logische delen dus hier wordt het een EN van twee logics en dat wordt weer gebruikt als IF
volgende keer een volledige reactie doen dan kun je dus kiezen met een pull down menu wat de opmaak is.
en maak van de stap zelf een functie dan hoef je die maar 1 keer uit te schrijven dus 1 voor stepup en een andere voor stepdown.
en als je het dan goed doet kun je naar accelstepper kijken wat ook een functie is eigenlijk maar met veel meer mogelijkheden.
je doet nu dus elke 20 msec een stap (dat is behoorlijk snel hoor wellicht houdt het motortje het niet bij dus zet de stap maar eerst een beetje groter dus delay 100 in rust de puls is prima met 10 msec hoor.
en we horen graag of het gelukt is.
paul deelen
shooter@home.nl

Berichten: 7
Geregistreerd: 02 Feb 2023, 17:57

Re: Nema17 met joystick

Berichtdoor hvgurp@gmail.com » 11 Feb 2023, 11:36

Shooter ik kopieer ze van internet en probeer de sketch dan aan te passen naar eigen wens.
heb nog een kortere gevonden:

#define X_pin A0
#define stp 2
#define dir 3
#define MS1 4
#define MS2 5
#define EN 6

// Declare variables for functions
char user_input;
int x;
int y;
int state;

int joyX = A0;
int joyVal;


void setup() {

pinMode(stp, OUTPUT);
pinMode(dir, OUTPUT);
pinMode(MS1, OUTPUT);
pinMode(MS2, OUTPUT);
pinMode(EN, OUTPUT);

digitalWrite(stp, LOW);
digitalWrite(dir, LOW);
digitalWrite(MS1, LOW);
digitalWrite(MS2, LOW);
digitalWrite(EN, LOW);

Serial.begin(9600); //openserial connection for

}

//Main loop
void loop() {

while( (analogRead(joyX) == 0 ) || (analogRead(joyX) > 1000 )){
joyVal = analogRead(joyX);
digitalWrite(EN, LOW);
if( joyVal == 0){

digitalWrite(dir, LOW);

}
else if ( joyVal > 1000){

digitalWrite(dir, HIGH);

}
digitalWrite(stp,HIGH); //Trigger one step forward
delay(1);
digitalWrite(stp,LOW); // Pull step pin low so it can be triggerd again
delay(1);

} // while loop

digitalWrite(EN, HIGH);
}

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: Nema17 met joystick

Berichtdoor Frits1956 » 12 Feb 2023, 00:50

ik mis in de setup dat X-pin een input is.
heb je met een (multi)meter gekeken of je spanning op A0 hebt als je de joystick actief hebt?

Berichten: 80
Geregistreerd: 02 Nov 2022, 13:03

Re: Nema17 met joystick

Berichtdoor ThHe » 12 Feb 2023, 13:41

ls niets werkt probeer dan eerst uit te zoeken wat wel werkt.
Dat kan bv op de volgende wijze:
- Om niet helemaal opnieuw te beginnnen wijzig het statement void loop() in void loopx()
hier doet de hele loop niet meer mee in je programma.
- dan kijken of de motor wel loopt door een nieuwe loop te introduceren.

void loop()
{
while (steps > 0)
{
digitalWrite(dir_pin, HIGH); // (HIGH = anti-clockwise / LOW = clockwise)
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps--;
}
delay(2000);
while (steps < 2050)
{
digitalWrite(dir_pin, LOW);
digitalWrite(step_pin, HIGH);
delay(10);
digitalWrite(step_pin, LOW);
delay(10);
steps++;
}
delay(2000);
}
Als dit werkt doet de motor het in ieder geval en nu de Joystick erbij gaan proberen. Succes

Berichten: 7
Geregistreerd: 02 Feb 2023, 17:57

Re: Nema17 met joystick

Berichtdoor hvgurp@gmail.com » 12 Feb 2023, 14:05

Frits op de A0 schommelt tussen 500 mv en 1,2 v

ThHe de sketch werkt niet, weet je misschien hoe ik het aan sluitschema (afbeelding) kan plaatsen

Volgende

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten