Go Down

Topic: Schrittmotor mit integriertem Encoder, 4 polig (Read 394 times) previous topic - next topic

ArduinoUser1234

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

Peter-CAD-HST

Moin ArduinoUser1234
Spendier ein Bilder von den Kabelanschlüssen am Motor und vom Motor selber. Ein Bild sagt mehr als tausend Worte.
Gruss Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

DrDiettrich

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

wno158

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

themanfrommoon

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

Fotos zeigen!

uwefed

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

DrDiettrich

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 :-(

ArduinoUser1234

#7
Sep 24, 2020, 08:09 am Last Edit: Sep 24, 2020, 08:25 am by ArduinoUser1234
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 :D


ArduinoUser1234

#8
Sep 24, 2020, 08:20 am Last Edit: Sep 24, 2020, 08:24 am by ArduinoUser1234
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.

Peter-CAD-HST

Moin  ArduinoUser1234,
lade hier den Sketch hoch. Und das Ganze in CODE/TAGS und mit Kommentaren und/oder beschreibenden Variablennamen dekoriert.
Gruß Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

themanfrommoon

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

themanfrommoon

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

ArduinoUser1234

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

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.

themanfrommoon

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

ArduinoUser1234

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:

Code: [Select]
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);
}



Go Up