Schrittmotor mit integriertem Encoder, 4 polig

Hallo Arduino-Forum,

ich arbeite auf der Arbeit zur Zeit an einem Arduino-Projekt, wo ein Autositz + Lenkrad automatisch in eine bstimmte Position gebracht werden soll.

Um das zu realisieren werden Schrittmotoren mit integrierten Encoder verwendet.
Diese sind von der Marke Faurenzia, leider habe ich weder ein Datenblatt erhalten noch im Internet finden können.

Ich habe jetzt schon viele verschiedene Wege probiert um die Daten auszulesen, allerdings ohne Erfolg.

Der Motor ist 4 polig, ein ganz links VCC, ganz rechts GND, verfahren funktioniert ohne Probleme.

Die mittleren Pins sind wohl für den Encoder. Benötigt dieser eine eigene Spannungsversorgung + GND oder lese ich einfach beide PINS als INPUT in den Arduino ein.

Ich weiß ohne Datenblatt ist es schwierig zu helfen, aber ich bin echt am verzweifeln und habe im Internet auch nicht wirklich was brauchbares gefunden, da dort die Encoder im Normalfall getrennt vom Motor angesteuert wurden.

Tl, dr: Für was sind voraussichtlich die beiden übrig bleibenden Pole bei einem 4 poligen Schrittmotor mit integrierten Encoder

Viele Grüße
Mark

(deleted)

Wie funktioniert der Betrieb eines Schrittmotors nut mit Gnd und Vcc? Und wozu braucht ein Schrittmotor einen Encoder? Sind das nicht eher Endschalter?

Bist Du sicher mit "Faurenzia"?
Ich tendiere zu Faurecia. Die werden vermutlich keine Schrittmotoren herstellen, sondern zukaufen.

Das is nie im Leben ein Schrittmotor, sondern garantiert ein DC Getriebemotor.

Fotos zeigen!

Wenn der Motor 4 Anschlüsse hat dann ist entweder ein Schrittmotor ohne Encoder oder ein Gleichstrommotor (dazu würde VCC und GND passen) und die anderen 2 Anschlüsse sind die 2 Phasen des Encoder. Das ist aber auch komisch weil der Motor normalerweise mit einer anderen Spannung versorgt wird als der Encoder und weil der Motor vielzuviele Störungen auf der Versorgungsspannung produziert.
Normalerweise ist der Motor und der Encoder getrennt.

Zeig mal wie bereits angefragt Fotos vom Motor, Datenschild und Anschlüsse.

Grüße Uwe

Mit nur 1 Gnd müßte für Wechsel der Drehrichtung Vcc zwischen + und - umgeschaltet werden --- dann blieben für die Encoder nur noch passive Schalter übrig (Reed? Endschalter?). Oder der Encoder hat nur 1 Kanal, weil die Drehrichtung nicht umgeschaltet werden kann. Das paßt alles hinten und vorne nicht zusammen :frowning:

Vielen Dank für die zahlreichen Antworten. Es handelt sich um einen 12 Volt Gleichstrommotor, das Verfahren in beide Richtungen ist kein Problem, Endschalter sind extern auf der Verfahrstrecke positioniert.

@wno158: Ja, ich hab es gestern aus dem Kopf heraus geschrieben, du hast absolut Recht.

Zum Thema Bild: Ich darf leider hier nichts fotografieren, möchte auch nichts riskieren, aber ich kann euch den Anschluss-Adapter verlinken: https://www.te.com/usa-en/product-1379217-3.html?compatible=1379218-1

Es gibt kein Datenblatt von dem Motor, auf dem Motor befindet sich nur ein einscannbarer Code + Nummer. Es handelt sich aber um Schrittmotoren, die in Autos verbaut werden, soweit ich weiß.

Dort sind, wenn man das vorletzte Bild nimmt, von links nach rechts VCC, Endcoder, leer, Encoder, GND verbunden. Mein Vorgänger hat das ganze verdrahten lassen, aber aus Zeigründen nicht fertiggestellt, ich hab also keine Ahnung, ob seine Variante funktioniert und als ich das so getestet habe, hat es definitv nicht funktioniert.

Er hat den linken der beiden "Encoder"-Anschlüsse mit 12 V versorgt und den rechten aufgeteilt, einer ging zum Arduino auf Pin 18 und der andere über einen Widerstand (er hatte dafür 500Ohm angesetzt) auf GND. Also eine Art Pull-Down, wobei der Arduino ja auf Dauer keine 12V Inputs verträgt oder?

Hier sein Ansatz: Bild

M3-V: 12V Gleichstrom von einem Relais kommend (Spannungsquelle: Auto-Batterie)
MW-VOUT: 12V die nach der Batterie durch einen Meanwell DC/DC Converter
MW-GND: ist der Meanwell-Ground
18: Arduino Pin für AttachInterrupts
M3-GND: Batterie-GND

Ist vermutlich etwas verwirrend, so ging/geht es mir auch :smiley:

Habe jetzt grerade noch mal die Nummern eingegeben, die unter bzw über dem Code stehen:

Dabei habe ich quasi den Motor gefunden: https://www.ebay.com/itm/2015-2016-2017-JEEP-RENEGADE-FRONT-LEFT-DRIVER-SIDE-SEAT-UP-DOWN-MOTOR-OEM-/273459290281

Wir haben davon mehrere verbaut, zwei haben 4 Anschlüsse( mit Encoder) und 1 hat nur 2 Anschlüsse, dort versuche ich die Position per Hall-Sensor zu bestimmen.

(deleted)

Lösche das Wort "Schrittmotor" aus deinem Kopf in Verbindung mit diesem Thema. Es ist KEIN Schrittmotor.

Lege mal 12V an VCC und GND vom Motor. Dreht er sich dann, ist es 100%ig sicher ein DC Motor. (dreht er sich nicht, sondern hält nur fest, dann wäre es ein Schrittmotor).

Die 500Ohm sind ein Spannungsregler. Das kann man messen was da am Knotenpunkt für eine Spannung anliegt.
Es sieht so aus, als ob es einfach nur ein Schalter oder Lichtschranke ist, um zu erkennen dass der Motor dreht, und wie schnell er dreht, sonst nix.

Wo kommt denn die Leistung her, die der Motor braucht? Der Arduino schafft das ja nicht den Motor zu treiben.

Lieben Gruß,
Chris

Uii, der Motor kann sicher schnell mal bis zu 50A ziehen

Okay, ich lösche es aus meinem Kopf :smiley:

Das Projekt ist recht komplex aber ich versuche es in den Grundzügen zu erklären + Schaltplan.
Ein Autositz + Lenkrad soll per Programm jeweils vertical und horizontal in eine bestimmte Position gebracht werden.

Für das/die GUI nutze ich Python und kommuniziere mit einem HC05 mit dem Arduino, dieser kann per Relais die Motoren steuern, welche von einer Autobatterie versorgt werden. (der Arduino im Übrigen auch aber dort reguliere ich vorher auf 5V runter.

Insgesamt 4 Motoren, davon sind 3 so wie den ich oben reingeschickt habe, 2 von den 3 besitzen 4 Anschlüsse(mir wurde gesagt die hätten einen Encoder) und der andere hat keinen, dort wird die Position mit einem Hall-Sensor bestimmt.

Der letzte "Motor" ist ein Wagenheber, um den habe ich mich bis jetzt noch nicht gekümmert.

Mein derzeitiges Hauptproblem ist das Auslesen der Encoder.

Hier mein Schaltplan, so wie ich es angedacht habe.

Nicht wundern, die Motoren sollen zusätzlich auch komplett manuell ohne Arduino/Python über Taster gesteuert werden können.
Die Wechsler sind die Endlagenschalter hab bei EAGLE (damit habe ich den Schaltplan gemacht) keine Öffner finden können.

Kann der Arduino die Relais schon schalten? Also klicken die Relais wenn der arduino sie schalten will? (....oder fehlt da noch ein Treiber?)

Moin Peter-CAD-HST,

mein Sketch hat sich ständig geändert, aber ich kann eben für den Encoder ein Sketch schreiben, wie ich es versucht habe.

Also so würde ich den Encoder auslesen, da ist jetzt wirklich alles andere weggelassen:

const byte vertical1 = 6;
const byte vertical2 = 7;

const byte encoderInput = 18;

int pos = 0; //Aktuelle Motorposition

void setup() {
  //OUTPUTS
  pinMode(vertical1, OUTPUT);
  pinMode(vertical2, OUTPUT);

  //INPUTS
  pinMode(encoderInput, INPUT);

attachInterrupt(digitalPinToInterrupt(encoderInput), encoderPosition, CHANGE);
}

void loop() {

}

void encoderPosition(){
  if(digitalRead(vertical1)){
    pos++;
  }
  else if(digitalRead(vertical2)){
    pos--;
  }
  Serial.println(pos);
}

themanfrommoon:
Kann der Arduino die Relais schon schalten? Also klicken die Relais wenn der arduino sie schalten will? (....oder fehlt da noch ein Treiber?)

Also das ansteuern der Motoren mit dem Arduino über das Relais funktioniert einwandfrei, das Relais "klickt" und gibt auch visuelles Feedback in Form einer Diode.

Sicherungen sind auch verbaut, die Motoren haben wirklich richtig Power.

Okay, dass heisst es funktionieren nur die Encoder nicht, richtig?
Da musst du wohl erstmal mit nem Oszilloskop messen was da passiert.

(deleted)

Der Hall-Sensor funktioniert auch nicht 100%, aber mein größtes Problem sind derzeit die Encoder.

Ein Oszilloskop zu nutzen ist eine gute Idee, ich bin mir halt aber immer noch unsicher, ob ich den Encoder nicht vielleicht komplett falsch verdrahtet habe.

Was am ehesten funktioniert hat, aber katastrophal ungenau war, war die Encoder-Pins mit 5V Arduino und Pin 18 zu verbinden und dann mit AttachInterrupt die Wechsel zu zählen.

Ich werde jetzt erstmal weiter probieren und mich später nochmal melden.

Vielen Dank an jeden!

Kannst so einen Encoder zerlegen, oder ein Datenblatt finden? Dann wäre es keine Raterei.

Ich vermute auch, dass es ein einspuriger Encoder ist, und kein zweispuriger (der würde eine Drehrichtungserkennung ermöglichen, brauchst du aber nicht, weil du die Polung vom Motor kennst).
Aber das können immernoch viele Varianten sein wie das Ding funktionieren könnte.