Moinsen! Ich hab hier gerade was auf dem Schreibtisch liegen, wo ich mir nicht ganz sicher bin, wie ich damit umgehe. Es ist die Platine eines Drehzahlessers eines alten Smart. Auf der Platine ist Licht und ein paar andere Sachen die ich identifizieren kann. Interessiert bin ich an der Elektromechanik des Zeigers. Die ist leider vergossen also kann ich nicht mal eben reinschauen. Sie hat aber 4 Pins, nenn wir sie A1, A2 sowie B1 und B2. Zwischen den beiden A-Pins kann ich einen Widerstand von ca 150 Ohm feststellen, ebenso zwischen B1 und B2. Ich tippe daher darauf, dass es sich um Spulen handelt. Wenn ich nun zwischen A1 und A2 5V Spannung lege (nur kurz zur Sicherheit), so bewegt sich der Zeiger nicht, aber er steht fest. Selbiges gilt wenn ich zwischen B1 und B2 Spannung anlege. Wie könnte ich diese Konstellation dazu bewegen, sich zu drehen? Ich dachte an einen Schrittmotor, aber die kenne ich nur mit 4 oder mehr Spulen... Zwischen A1 und B1 oder A2 und B2 oder in jeglicher anderer Konstellation kann ich keinen Widerstand feststellen. Grüße und dank voraus! (PS: Ich bin elektonisch Vorgebildet, auf dem Berich fehlt aber Erfahrung.)
Schrittmotor geht auch mit 4 Kabeln, wäre ein Bipolar-Typ. Kannst du ein Treiber-IC für den Drehzahlmesser ausmachen? Ich kenn den Fachbegriff dazu nicht, hab aber mal davon gehört dass es Zeigerinstrumente gibt, deren beiden Spulen gleichzeitig bestromt werden müssen, wobei die beiden Ströme quasi dem sin/cos-Wert des anzuzeigenden Winkels entsprechern müssen.
Sascha schrieb: > Ich kenn den Fachbegriff dazu nicht, hab aber mal davon gehört dass es > Zeigerinstrumente gibt, deren beiden Spulen gleichzeitig bestromt werden > müssen, wobei die beiden Ströme quasi dem sin/cos-Wert des anzuzeigenden > Winkels entsprechern müssen. Resolver
Moin! Danke euch. Ich hatte zufällig in meiner Grabbelkisten einen ULN2003 Treiber von Conrad rum liegen. und siehe da: Das Ding lässt sich erfolgreich missbrauchen. Hab schon rausgefunden, dass von ganz links nach ganz rechts 110 Schritte sind und ich mindestens 3 ms Pause zwischen den Schritten brauche, sonst ists dem Zeiger zu schnell. Danke euch vielmals! Jetzt kann ich damit was anfangen. Um das Ding wie ein Drehzahlmesser zu nutzen, muss ich ja quasi immer 2 Werte haben: Alte Dreahzahl, neue Drehzahl. Und um die Differenz muss ich das Teil dann nach rechts oder links drehen lassen, oder? Zum Initialisieren am Besten mal 110 Schritte nach links... kann natürlich sein, dass der dann einige Schritte am Begrenzer steht, aber das sollten die Spulen überleben, oder? Grüße!
Anmerkung: Quellcode
1 | int inA1 = 8; // input 1 of the stepper |
2 | int inA2 = 9; // input 2 of the stepper |
3 | int inB1 = 10; // input 3 of the stepper |
4 | int inB2 = 11; // input 4 of the stepper |
5 | |
6 | int stepDelay = 4; // Delay between steps in milliseconds |
7 | |
8 | void step1() { |
9 | digitalWrite(inA1, LOW); |
10 | digitalWrite(inA2, HIGH); |
11 | digitalWrite(inB1, HIGH); |
12 | digitalWrite(inB2, LOW); |
13 | delay(stepDelay); |
14 | |
15 | }
|
16 | void step2() { |
17 | digitalWrite(inA1, LOW); |
18 | digitalWrite(inA2, HIGH); |
19 | digitalWrite(inB1, LOW); |
20 | digitalWrite(inB2, HIGH); |
21 | delay(stepDelay); |
22 | }
|
23 | void step3() { |
24 | digitalWrite(inA1, HIGH); |
25 | digitalWrite(inA2, LOW); |
26 | digitalWrite(inB1, LOW); |
27 | digitalWrite(inB2, HIGH); |
28 | delay(stepDelay); |
29 | }
|
30 | void step4() { |
31 | digitalWrite(inA1, HIGH); |
32 | digitalWrite(inA2, LOW); |
33 | digitalWrite(inB1, HIGH); |
34 | digitalWrite(inB2, LOW); |
35 | delay(stepDelay); |
36 | }
|
37 | void stopMotor() { |
38 | digitalWrite(inA1, LOW); |
39 | digitalWrite(inA2, LOW); |
40 | digitalWrite(inB1, LOW); |
41 | digitalWrite(inB2, LOW); |
42 | }
|
43 | |
44 | void setup() { |
45 | pinMode(inA1, OUTPUT); |
46 | pinMode(inA2, OUTPUT); |
47 | pinMode(inB1, OUTPUT); |
48 | pinMode(inB2, OUTPUT); |
49 | |
50 | //nach links
|
51 | for (int i=0; i<=110; i++){ |
52 | step3(); |
53 | step2(); |
54 | step1(); |
55 | step4(); |
56 | }
|
57 | }
|
58 | |
59 | |
60 | |
61 | // the loop routine runs over and over again forever:
|
62 | void loop() { |
63 | //nach Rechts
|
64 | for (int i=0; i<=110; i++){ |
65 | step1(); |
66 | step2(); |
67 | step3(); |
68 | step4(); |
69 | }
|
70 | stopMotor(); |
71 | delay(20); |
72 | //nach links
|
73 | for (int i=0; i<=110; i++){ |
74 | step3(); |
75 | step2(); |
76 | step1(); |
77 | step4(); |
78 | }
|
79 | |
80 | stopMotor(); |
81 | delay(20); |
82 | }
|
Ich nutze einen ATMEGA328p Anmerkung 2: 110 Schitte ist falsch, 110 * 4 Schritte.
pascalts schrieb: > 110 Schitte ist falsch, 110 * 4 Schritte. Nö. Es sind dann 456 Schritte, da Du ja immer 4 Schritte pro Schleifendurchlauf machst.
Du hast natürlich recht - wenn man von 0 bis einschließlich 110 geht sind das 112 Steps :-D
Da ist so ein Schrittmotor drin: https://www.partworks.de/en/gearworks-de/Components-for/Stepper-motor-for-Smart-fortwo/forfour-VDO-instrument-cluster-Nr-05.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.