stappenmotor sturing
12 berichten
• Pagina 1 van 2 • 1, 2
stappenmotor sturing
Hallo
ik heb pas een arduino gekocht (leerboek reeds besteld maar nog onderweg )
wil graag een stille stappenmotor sturing maken.
heb nu een 32 bits microstep driver en motor draait al een stuk stiller.
maar nu de code
ben al 2 dagen aan het stoeien maar krijg het niet voor elkaar
motor moet draaien bij indrukken knop -> dit lukt
motor moet vertraagt inschakelen -> dit lukt ook nog enigszins // eigenlijk alleen als ik if(digitalRead(4) op HIGH zet ???
maar met het grafisch display erbij gaat dit niet goed ook als ik de code langer maakt gaat de frequentie van de motor naar beneden
wat doe ik fout
dank alvast
ik heb pas een arduino gekocht (leerboek reeds besteld maar nog onderweg )
wil graag een stille stappenmotor sturing maken.
heb nu een 32 bits microstep driver en motor draait al een stuk stiller.
maar nu de code
ben al 2 dagen aan het stoeien maar krijg het niet voor elkaar
motor moet draaien bij indrukken knop -> dit lukt
motor moet vertraagt inschakelen -> dit lukt ook nog enigszins // eigenlijk alleen als ik if(digitalRead(4) op HIGH zet ???
maar met het grafisch display erbij gaat dit niet goed ook als ik de code langer maakt gaat de frequentie van de motor naar beneden
wat doe ik fout
dank alvast
- Code: Alles selecteren
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); //leonardo pin 2 en 3 voor display
void setup()
{
pinMode (7, OUTPUT);
pinMode (6, OUTPUT);
pinMode (8, OUTPUT); // enable /disable driver / ZET motor IN VRIJLOOPSTAND
pinMode(4, INPUT_PULLUP); // drukknop
digitalWrite (6, LOW);
digitalWrite (7, LOW);
digitalWrite (8, LOW);
// initialize the LCD,
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.clear();
lcd.print("druk op een knop");
lcd.setCursor (0, 2); // go to start of 2nd line
lcd.print("Knop1 Knop2b Knop3");
}
void loop() {
digitalWrite (6, LOW);
digitalWrite (6, HIGH);
delayMicroseconds(35);
if(digitalRead(4) ==LOW)
{
/* lcd.clear();
lcd.print("drukknop is ingedruk");
delay (6500); na deze tijd moet de motor gaan draaien
*/
digitalWrite (8, LOW);
}
if(digitalRead(4) ==HIGH)
/* als knop logelaten word moet de motor weer stoppen (driver disabele)
*/
{
digitalWrite (8, HIGH);
}
}
Advertisement
Re: stappenmotor sturing
Maak even een schema hoe het in elkaar zit dus waar gaan welke draadhjes naar toe?
kijk ook hoe je met define een naam kunt veranderen dan kun je dus bijv vragen if digitalInput(ingang=AAN) {digitalwrite(puls,UIT)}
je moet de meesten namelijk met pulsen sturen en dan maken ze een stap een puls heeft dus een bepaalde tijdsduur dus je zet een itgang aan en dan even wachten met microsec bijv en dan zet je hem weer uit.
en als je de tussentijd van de pauze groter maakt dan gaat het motortje langzamer draaien.
als dat werkt dan kun je kijken naar accelstepper om dat automatisch te maken. de stepper.step moet wel heel vaak gedaan worden dus de loop bevat dat, en dan maak je een subprogramma (functie) om elke seconde bijvoorbeeld even je lcd te updaten.
kijk ook hoe je met define een naam kunt veranderen dan kun je dus bijv vragen if digitalInput(ingang=AAN) {digitalwrite(puls,UIT)}
je moet de meesten namelijk met pulsen sturen en dan maken ze een stap een puls heeft dus een bepaalde tijdsduur dus je zet een itgang aan en dan even wachten met microsec bijv en dan zet je hem weer uit.
en als je de tussentijd van de pauze groter maakt dan gaat het motortje langzamer draaien.
als dat werkt dan kun je kijken naar accelstepper om dat automatisch te maken. de stepper.step moet wel heel vaak gedaan worden dus de loop bevat dat, en dan maak je een subprogramma (functie) om elke seconde bijvoorbeeld even je lcd te updaten.
paul deelen
shooter@home.nl
shooter@home.nl
Re: stappenmotor sturing
Ha Paul dank voor je bericht
bijgaand een afbeelding van de situatie
ik gebruikt een externe driver voor de motor
bijgaand een afbeelding van de situatie
ik gebruikt een externe driver voor de motor
Re: stappenmotor sturing
na een volledige dag programmeren en knippen en plakken werk het bijna naar mijn zin.
zit nog een probleem..... bij het indrukken van de drukknop wordt de motor toch al bekrachtigd en pas bij het lostalen gaat de delay in werking en gaat de motor draaien. Er komt namelijk geen drukknop naar een schakelaar en dan gaat dit niet goed
hoe zou ik dit kunnen oplossen ?
zit nog een probleem..... bij het indrukken van de drukknop wordt de motor toch al bekrachtigd en pas bij het lostalen gaat de delay in werking en gaat de motor draaien. Er komt namelijk geen drukknop naar een schakelaar en dan gaat dit niet goed
hoe zou ik dit kunnen oplossen ?
- Code: Alles selecteren
#include <LiquidCrystal_I2C.h>
const int startB = 4; //define input pin for Start push button
const int stopB = 5; //define input pin for Stop push button
const int enaB = 7; //define input pin enable / disable
const int puls = 8; //define input pin for puls naar driver
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
digitalWrite(enaB, HIGH);
pinMode(startB, INPUT_PULLUP);
pinMode(stopB, INPUT_PULLUP);
pinMode(enaB, OUTPUT);
pinMode(puls, OUTPUT);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.clear();
lcd.print("druk op een knop");
lcd.setCursor (0, 1); // go to start of 2nd line
lcd.print("");
lcd.setCursor (0, 2); // go to start of 3nd line
lcd.print("Knop1 Knop2 Knop3");
lcd.setCursor (0, 3); // go to start of 3nd line
lcd.print("");
delay(500);
}
void loop() {
updateState();
digitalWrite(puls, HIGH);
delayMicroseconds(40);
digitalWrite(puls, LOW);
}//loop
void updateState()
{
if(digitalRead(startB) ==LOW)
{
delay(3000);
digitalWrite(enaB, LOW);
lcd.setCursor (0, 1); // go to start of 2nd line
lcd.print(" gestart ");
}
if(digitalRead(stopB) ==LOW)
{
digitalWrite(enaB, HIGH);
lcd.setCursor (0, 1); // go to start of 2nd line
lcd.print(" gestopt ");
}
}//updateState end
Re: stappenmotor sturing
ja een stappenmotor driver staat altijd aan, behalve als je de enable uitzet. verder zet jij de puls aan dus een stap zet je dan. daarna kijk je eerst of start aan is, dan wacht je 3 seconde en dan kijk je of stop aan is maar je moet zorgen dat hij eerst naar de stop kijkt en als die waar is dan mag je ook niet starten.
paul deelen
shooter@home.nl
shooter@home.nl
Re: stappenmotor sturing
Ha Paul
rare is als ik het schrijven naar het "LCD" weg laat werkt het wel.
nu dacht ik zo iets .......maar ook hier weer als ik lcd.print(" motor gestart "); toevoegt draait de motor niet (word wel bekrachtigd)
zonder lcd werkt het prima
rare is als ik het schrijven naar het "LCD" weg laat werkt het wel.
nu dacht ik zo iets .......maar ook hier weer als ik lcd.print(" motor gestart "); toevoegt draait de motor niet (word wel bekrachtigd)
zonder lcd werkt het prima
- Code: Alles selecteren
if (digitalRead(startB) ==LOW)
{
digitalWrite(enaB, LOW);
lcd.setCursor (0, 1); // go to start of 2nd line
lcd.print(" motor gestart ");
}
else
{
digitalWrite(enaB, HIGH);
lcd.setCursor (0, 1); // go to start of 2nd line
lcd.print(" gestopt ");
}
Re: stappenmotor sturing
mmmm zie dat er meerdere problemen zijn met het display
google op : stepper motor turns slow with lcd display
iemand nog een idee ?
google op : stepper motor turns slow with lcd display
iemand nog een idee ?
Re: stappenmotor sturing
welke pinnen gebruikt het LCD want 4 staat er dubbel in?
paul deelen
shooter@home.nl
shooter@home.nl
Re: stappenmotor sturing
Je moet de delay() eruit halen
https://www.arduino.cc/reference/en/language/functions/time/delay/
RTFM?
https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay
https://www.arduino.cc/reference/en/language/functions/time/delay/
More knowledgeable programmers usually avoid the use of delay() for timing of events longer than 10’s of milliseconds unless the Arduino sketch is very simple.
RTFM?
https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay
Re: stappenmotor sturing
shooter schreef:welke pinnen gebruikt het LCD want 4 staat er dubbel in?
Dat kan ook behoorlijk roet veroorzaken...
12 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten