Schrittmotor startet umgehend nach Anschluss vom Arduino

Hallo Leute,

ich brauche heute mal eure hilfte. Ich habe einen Arduino mit einem CNC Shield V3.0. Ich plane damit einen Eggbot zu bauen, was bisher ganz gut geklappt hat.

Die Software ist diese hier:

Anschließend wurde auf 2.8.0 geupdatet und dann nachfolgend verändert:
https://martin-prochnow.de/projects/sphere-o-bot

Alle Fehlermeldungen wurden damit behoben.

Leider ergibt sich beim testen ein Problem:
Sobald ich den Arduino mit dem CNC Shield an 12V bzw. an den PC anschließe, beginnt der Y Motor sofort an zu laufen, also Schritte auszuüben.
Wird per Inkscape ein Befehl über Erweiterungen --> Eggbot --> Eggbot Control --> Maunal
eingegeben, stoppt der Motor kurz und läuft dann weiter.

Die beiden Motortreiber habe ich schon getauscht. Es ergab sich keine Änderung.
Das ganze geht nun schon 15 min.

Die Motoren sind Minebea 17PM-K374BN01CN

Kann mir da jemand helfen?

Hier noch Bilder von der Platine:

Hier Bilder vom Anschluss:

Hi

Du hast also 'Irgendwas' soweit bereinigt, daß Es 'Irgendwie' zu klappen scheint - nur, klappt's von Selber.
Nun sollen wir ebenfalls 'Irgendwie' erraten, Was Du 'Irgendwo' falsch machst.

Ich denke ja, Du gibst sinnlos Schritte in Y aus - würde zumindest erklären, warum der Y-Stepper Dem nachkommt.
Welche Lib wird darin verwendet? (und NEIN, ich werde mir die nötigen Informationen nicht auf zwölf aufeinander folgenden Seiten zusammen suchen um dann zu erfahren, daß Du doch was gaaanz Anderes genommen hast)

MfG

LupintheIII:
.....
Das ganze geht nun schon 15 min.

Was geht jetzt schon 15 min. ?
Also funktioniert es, oder nicht ?

Warum postest du uns nicht den verwendeten Sketch ?
Aber bitte in Code-Tags.

Hallo,

vielen Dank für die Hinweise. Da das mein erster Post ist, weiß ich natürlich noch nicht was ihr zur Hilfe benötigt.

Es klingt in der Tat so, dass der Arduino unkontrolliert Y Schritte ausgibt. Und das dauerhaft. Selbst nach 15 min hörte dieser nicht auf.

Hier der Sketch für den Arduino:

/* Eggduino-Firmware by Joachim Cerny, 2014

Thanks for the nice libs ACCELSTEPPER and SERIALCOMMAND, which made this project much easier.
Thanks to the Eggbot-Team for such a funny and enjoable concept!
Thanks to my wife and my daughter for their patience. :slight_smile:

*/

// implemented Eggbot-Protocol-Version v13
// EBB-Command-Reference, I sourced from: EBB (EiBotBoard) - Commands
// no homing sequence, switch-on position of pen will be taken as reference point.
// No collision-detection!!
// Supported Servos: I do not know, I use Arduino Servo Lib with TG9e- standard servo.
// Note: Maximum-Speed in Inkscape is 1000 Steps/s. You could enter more, but then Pythonscript sends nonsense.
// EBB-Coordinates are coming in for 16th-Microstepmode. The Coordinate-Transforms are done in weired integer-math. Be careful, when you diecide to modify settings.

/* TODOs:
1 collision control via penMin/penMax
2 implement homing sequence via microswitch or optical device
*/

//==================================================================================
// C-EGG is almost 100% EggDuino
// But since some of the Commands of the Egg-Bot Extension for Inkscape did not work
// I had to use some fixed values in the code instead.
// E.g. for the Servo Command
//
// But almost all credits go to Joachim Cerny and the Egg-Bot Team
//
// CC3.0 BY-SA-NC surasto.de and c-hack.de 2018
//==================================================================================

#include "AccelStepper.h" // nice lib from AccelStepper: AccelStepper library for Arduino
#include <Servo.h>
#include "SerialCommand.h" //nice lib from Stefan Rado, GitHub - kroimon/Arduino-SerialCommand: A Wiring/Arduino library to tokenize and parse commands received over a serial port.
#include <avr/eeprom.h>
#include "button.h"

#define initSting "EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6a"
//Rotational Stepper:
#define step1 2
#define dir1 5
#define enableRotMotor 8
#define rotMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch
//Pen Stepper:
#define step2 3
#define dir2 6
#define enablePenMotor 8
#define penMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch

#define servoPin A3 //Servo

#define penUpPosEEAddress ((uint16_t *)0)
#define penDownPosEEAddress ((uint16_t *)2)

//make Objects
AccelStepper rotMotor(1, step1, dir1);
AccelStepper penMotor(1, step2, dir2);
Servo penServo;
SerialCommand SCmd;

// Variables... be careful, by messing around here, everything has a reason and crossrelations...
unsigned long timeOfLastCmd; // added by Surasto - enables disapling of Motors if no commands are received anymore

int penMin=0;
int penMax=0;
int penUpPos=50; //can be overwritten from EBB-Command SC
int penDownPos=120; //can be overwritten from EBB-Command SC
int servoRateUp=0; //from EBB-Protocol not implemented on machine-side
int servoRateDown=0; //from EBB-Protocol not implemented on machine-side
long rotStepError=0;
long penStepError=0;
int penState=penUpPos;
uint32_t nodeCount=0;
unsigned int layer=0;
boolean prgButtonState=0;
uint8_t rotStepCorrection = 16/rotMicrostep ; //devide EBB-Coordinates by this factor to get EGGduino-Steps
uint8_t penStepCorrection = 16/penMicrostep ; //devide EBB-Coordinates by this factor to get EGGduino-Steps
float rotSpeed=0;
float penSpeed=0; // these are local variables for Function SteppermotorMove-Command, but for performance-reasons it will be initialized here
boolean motorsEnabled = 0;

void setup() {
Serial.begin(9600);
makeComInterface();
initHardware();
timeOfLastCmd = millis();
}

void loop() {
moveOneStep();
SCmd.readSerial();
if (checkLastCmd()>30000) motorsOff(); // Added by Surasto - switches of Motors if no comamnds are received anymore
}

unsigned long checkLastCmd() {
return(millis() - timeOfLastCmd);
}

Habe den Sketch noch mal hochgeladen. Nun scheint es zu laufen. Leider kann ich aber nicht den Pin finden, auf dem der Servo (Pen) angesteuert wird. Kann mir jemand sagen, an welchem Pin der Befehl liegt?

Du hast die Code-Tags vergessen.
Du kannst deinen Post mit dem Sketch noch mal bearbeiten und vor bzw. hinter den Sketch die Steuerzeiche setzen.
Vor den Sketch [code*] und dahinter [/code*] allerdings ohne die Sterne.

Und der Pin für den Servo ist doch genau gekennzeichnet. Das ist A3.

Nur zur Info:
Crossposting ist allgemein nicht gern gesehen.
https://www.mikrocontroller.net/topic/477609#new

... immerhin waren wir die Ersten, Die Sich um dieses Problem bemühen durften ... auch sind hier schon deutlich mehr Antworten, als 'auf der anderen Seite' ...
Stichwort - noch kein Thread im anderen Arduino-Forum?
DA hätte ich doch eher, als auf mikrocontroller.net angefragt ... dort sind Die nämlich nicht so zimperlich mit Teer und Federn :wink:

MfG

Ich halte es für nicht zielführend, wenn Du Crossposting nach nebenan vorschlägst. Du dürftest ja mittlerweile begriffen haben, warum Crossposting nicht gut ist.
Da eine weitere Zersplitterung der Infos vorzuschlagen halte ich vorsichtig ausgedrückt für blöd.

Gruß Tommy

postmaster-ino:
... immerhin waren wir die Ersten, Die Sich um dieses Problem bemühen durften ...

Hilft aber keinem weiter, wenn es hier nicht weiter geht. :wink:

Hi

Da Cross-Postings im Allgemeinen nicht 'sonderlich toll' sind, wäre auch ein Thread 'nebenan' ebenso daneben.
Aber immerhin 'mehr Arduino' als auf mikrocontroller.net.
Mein Vorschlag war, sollte Das nicht heraus gesprungen sein, mit Ironie in Überdosis versetzt.

Ok, dann Mal auf Deutsch:
@TO
Deine Vorgehensweise ist 'unter aller Sau' - zumindest eine Nennung, WO Du bereits überall um Hilfe gebettelt hast, gehört in diesen - und jeden Anderen!! - Thread - nur, damit wir hier unsere Zeit (und Die der 'Nebenan' - egal, welches Nebenan nun gemeint ist) nicht mit Dir, Deiner Art und Deinem Problem vergeuden.
Oder, daß zumindest überall klar ist, WO es ggf. eine Lösung zu dem von Dir vorgebrachtem Problem gibt - in zwei Jahren stölpert irgendwer irgendwo über EINEN Deiner Cross-Posts - nur gibt's Da keine Lösung, weil Du ja 'irgend wo Anders' fündig wurdest und Es nicht für nötig hielst, die Anderen über diesen Erfolg zu informieren.

SO besser?

Dachte, das Oben hätte den gleichen Inhalt, nur in 'nett'.

MfG

PS: man möge gratis Tipp-Ex verteilen, falls Bereiche des Monitor nun 'geschwärzt' werden sollen ...

Hmm komisch. Irgendwie fehlt mein letzer Beitrag von vor 30 min mit den ganzen Codes. Okay also nochmal.

Crossposting: Da ich keine Ahnung habe, wie intensiv welche Community ist, hatte ich das gemacht. Ist aber auch schon behoben, wie im anderen Forum schon zu sehen. Da Links generell jan icht so sonerlich erwünscht sind und ich nicht so sonderlich Lust auf den nächsten "Anschiss" habe, sehe ich mal von Links ab. Ich versiche, ihr seid nun die einzige Hilfe für mich.

Ich wollte hier weder negativ auffallen, was aber leider schon geschehen ist, noch irgendwie für schelchte Stimmungsorgen.

Da es für mich einfach zu viel Code ist, überfordert er mich gerade. Kann mir jemand sagen, an welchen Pin ist den Servoeingang legen muss? Diese Funktioniert nicht.

Leider kann ich nicht alle Codes hier posten. Ist ein Mehrfachposting daher Okay?

Hi

Wie fett ist denn der Sketch?
Da Du als 'Neuling' nur alle 5 Minuten antworten darfst, wird das 'Mehrfach Posten' etwas Zeit in Anspruch nehmen.
Bis zu 9000 Zeichen darf ein Post lang sein - also knapp drunter passt ein Sketch 'in Code-Tags' direkt in den Post.

MfG

LupintheIII:
Hmm komisch. Irgendwie fehlt mein letzer Beitrag von vor 30 min mit den ganzen Codes. Okay also nochmal.

Und warum änderst du den schon geposteten Beitrag nicht wie ich es beschrieben habe ?
Warum machst du es dir so schwer ?

Und von Anschiss kann nicht die Rede sein, das war ein freundlich gemeinter Hinweis.
Wir helfen natürlich weiter, wenn du uns die richtigen Informationen lieferst.

Wo in deinem Sketch der Servo-Pin ist, habe ich dir schon geschrieben.
Wenn das nicht funktioniert, muss es am Sketch oder an deiner Hardware liegen.

LupintheIII:
Da Links generell jan icht so sonerlich erwünscht sind und ich nicht so sonderlich Lust auf den nächsten "Anschiss" habe, sehe ich mal von Links ab.

Wieso sollen Links nicht erwünscht sein?
Sogar bei einem Crossposting fällt der "Anschiss" geringer aus, wenn man in beiden Postings einen Link auf den anderen Thread setzt. Link, nicht URL.

Gruß Tommy

Hallo HotSystem,

bei den ganzen Postings zum Crossposting habe ich das ganz übersehen. Ich habe ihn nun gefunden. Nun klappt alles.

Ich bin gespannt, ob eine Testdatei nun auch funktioniert.

Danke für eure Hilfe.