Forum: Fahrzeugelektronik Drehzahlmesser Smart 450


von pascalts (Gast)


Lesenswert?

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.)

von Sascha (Gast)


Lesenswert?

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.

von STK500-Besitzer (Gast)


Lesenswert?

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

von STK500-Besitzer (Gast)


Lesenswert?

Das wird aber ein Schrittmotor sein.

von pascalts (Gast)


Lesenswert?

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!

von pascalts (Gast)


Lesenswert?

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.

von STK500-Besitzer (Gast)


Lesenswert?

pascalts schrieb:
> 110 Schitte ist falsch, 110 * 4 Schritte.

Nö. Es sind dann 456 Schritte, da Du ja immer 4 Schritte pro 
Schleifendurchlauf machst.

von pascalts (Gast)


Lesenswert?

Du hast natürlich recht - wenn man von 0 bis einschließlich 110 geht 
sind das 112 Steps :-D

von jaksdhkjhec (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.