Forum: Mikrocontroller und Digitale Elektronik 10K Motorpoti auf Plausibilität prüfen


von Matthias H. (maethes26)


Angehängte Dateien:

Lesenswert?

Nochmals Guten Abend zusammen,

ich habe ja jetzt mit Eurer Hilfe ein Motoransteuerungsboard entwickelt, 
so wie ihr es auf dem Bild sehen könnt.

Mein Anwendungsziel mit dem Mikrocontroller ist es nun diesen Motor im 
Leerlauf verfahren zu lassen und das interne!! 10K Poti (als WEgegeber) 
auf Zuverlässigkeit zu prüfen!!


Oft höre ich von Kunden im Außendienst, dass ihr Gerät nicht immer die 
Position anfährt, die es soll.
Ich schließe daraus, dass das interne SChleifpoti nicht immer den 
richtigen WErt zurückgibt, da es im LAufe der Jahre verschleisst und 
damit springt.

Diesen Fehler möchte ich nun mit dem Mikrocontroller aufspüren.

Wie würdet ihr das am Besten realisieren???

Hier meine Vorstellung:

Beim Verfahren des Motors muss der Potiwert, gemessen über den 
Analogeingang des Controllers (1023 Stufen 10bit Atmega 16) 
kontinuirlich linear steigen.

Wenn der Wert zu stark springt, z.B. vom 597 auf 612, dann kann ich auf 
einen Fehler schließen.


Was haltet ihr von diesem Prüfansatz??

Wenn der Ansatz ok ist, möchte ich daraufhin meine Prüfroutine 
schreiben. :-)


Ich würde über einen Timer alle 0,3 Sekunden einen Analogwert auslesen 
und diesen mit den vorherigen vergleichen und prüfen lassen, ob dieser 
nicht zu sehr springt.


Habt ihr andere, bessere Ideen?

Vielen Dank für Eure Unterstützung.
Bei weiteren NAchfragen stehe ich gern zur Verfügung.

Viele Grüße, Matthias.

von Michael R. (mexman) Benutzerseite


Lesenswert?

Wieviele Umdrehungen macht der Motor, dreht nur 360 Grad oder mehr?
Und das Poti?
Gibt es eine Nullreferenz?
Ist das ein Schrittmotor?
Wenn ja, wieviele Schritte/U?

Wie ist das Poti angeschlossen? Liefert es eine Spannung oder muss ein 
Widerstand gemessen werden.... junge, junge.....Informationen bitte.


Lass doch einfach den Motor langsam drehen und schreibe die 
Spannungswerte in den Speicher.

Anschliessend vergeleichst Du diese Werte mit den SOllwerten.

Was ist denn die ANforderung? Dass der Potiausgang ueber dem Drehwinkel 
monoton ist?
Oder dass er linear ist?
Oder dass die Abweichung nicht groesser als X ist?

Auch 10 Bit aufloesung verhindern nicht, dass ein Sprung zwischen zweien 
deiner 10 Bits passiert.


Ich wuerde das anders machen:

Motor dreht Poti mit konstanter Geschwindgkeit.
Potispannung wird analog (JA, ihr uC-Fresser, ANALOG!)  auf einen
differenzierer geschickt.
Dieser liefert Dir einen konstanten Wert am Ausgang, solange die 
Potispannung gleichmaessig (linear) steigt oder faellt.

Eine Abweichung laesst sich leicht messen (auch mit weniger als 10 Bit 
Aufloesung).

Mit ein wenig merh Technik laesst sich der Max. oder Min. Wert auch 
analog solange speichern , bis Deine Wandlung abgeschlossen ist.
So entgeht Dir nichts!

Gruss

Michael

von Simon K. (simon) Benutzerseite


Lesenswert?

Du nimmst einfach ein doppeltes Poti und liest beide Spuren aus und 
prüfst auf Sinnhaftigkeit (Toleranzband zwischen beiden Werten).

von Matthias H. (maethes26)


Lesenswert?

Hallo Michael,

danke, dass Du Dich meiner annimmst!
Hätte nicht gedacht, dass noch so viele Informationen meinerseits 
fehlen.

Hiermit reiche ich sie nach, so weit ich das kann!!

> Wieviele Umdrehungen macht der Motor, dreht nur 360 Grad oder mehr?
Auf dem Motor steht: i=100:1 / Poti 4,4:1

was das bedeutet weiß ich nicht!!  ich kann mir aber gut vorstellen, 
dass der Motor sich 100 Umdrehungen drehen muss, bis das Poti am Ende 
ist. Kann das aus den Angaben möglich sein?




> Und das Poti?
> Gibt es eine Nullreferenz?
Das Poti bekommt 10V und gibt am Schleifer eine Analoge Spannung aus, 
die von einer Maschinenlogik ausgewertet wird.

> Ist das ein Schrittmotor?
Bürstenbehafteter Gleichstrommotor mit dickem Getriebe, der Motor sreht 
sehr langsam, so 3 SEkunden bis sich die Welle einmal gedreht hat.
> Wenn ja, wieviele Schritte/U?
>
> Wie ist das Poti angeschlossen? Liefert es eine Spannung oder muss ein
> Widerstand gemessen werden.... junge, junge.....Informationen bitte.
>

> Lass doch einfach den Motor langsam drehen und schreibe die
> Spannungswerte in den Speicher.

Wenn sich der Motor langsam dreht, bis er die Endposition über das poti 
erreicht hat, dann ändern sich dazu linear auch die Spannungswerte am 
Poti und steigen von 0V auf bis 10V    untere und obere Endposition

>
> Anschliessend vergeleichst Du diese Werte mit den SOllwerten.

Sollwerte gibt es in diesem Sinne nicht und ich habe keinen Sollwert zum 
Vergleichen. Kann nur prüfen, ob das Poti (der Spannungswert) 
gleichmäßig ansteigt oder springt.
Das denke ich, muss festgestellt werden, oder?

> Was ist denn die ANforderung? Dass der Potiausgang ueber dem Drehwinkel
> monoton ist?
ich versthe zwar nicht ganz, aber ich denke die Antwort lautet ja. Motor 
dreht und der Drehwinkel ist proportional zur Spannungsänderung am Poti

> Oder dass er linear ist?
> Oder dass die Abweichung nicht groesser als X ist?
>
> Auch 10 Bit aufloesung verhindern nicht, dass ein Sprung zwischen zweien
> deiner 10 Bits passiert.


Weiß nicht wie Du das meinst Michael.
>
> Ich wuerde das anders machen:


> Motor dreht Poti mit konstanter Geschwindgkeit.
> Potispannung wird analog (JA, ihr uC-Fresser, ANALOG!)  auf einen
> differenzierer geschickt.

Womit soll ich bitte differenzieren, ich habe nur das Potisignal?

> Dieser liefert Dir einen konstanten Wert am Ausgang, solange die
> Potispannung gleichmaessig (linear) steigt oder faellt.

Das klingt gut! Konstanter Wert am Ausgang solange die Potispannung 
gleichmäßig (linear) steigt oder fällt.


> Eine Abweichung laesst sich leicht messen (auch mit weniger als 10 Bit
> Aufloesung).

Das klingt gut.


> Mit ein wenig merh Technik laesst sich der Max. oder Min. Wert auch
> analog solange speichern , bis Deine Wandlung abgeschlossen ist.
> So entgeht Dir nichts!

Verstehe nichts. :-)

Nochmals Danke für Deine Hilfe Michael.

Ich sehe, mir fehlt noch einiges an Wissen, um das Problem zu lösen, 
aber schön, das wir das hier erstmal besprechen.

Mein SChaltungsdesign der Motoransteuerung habe ich ja auch mit Eurer 
Hilfe! verstanden.

Vielleicht kannst Du mir ja noch ein paar Hinweise geben, die Deine 
guten Ausführungen für mich noch mehr verständlich machen. Ich werde 
dann zu sehen, dass ich mir die nötigen Infos im Netz besorge und das 
fehlende Wissen mit Deinen Hinweisen nacharbeite. :-)

Einen schönen Abend wünscht Matthias.

von Matthias H. (maethes26)


Lesenswert?

Simon K. schrieb:
> Du nimmst einfach ein doppeltes Poti und liest beide Spuren aus und
> prüfst auf Sinnhaftigkeit (Toleranzband zwischen beiden Werten).

Guten Abend Simon,

danke, dass Du mich bei meinem Projekt weiter begleitest!

Die Idee ein zweites Poti zum Vergleich zu nehmen finde ihc gut!

Nur leider fehlt mir die Möglichkeit im Getriebe des Motors ein zweites 
Poti anschließen zu können, dass sich dann genauso schnell wie das 
original interne dreht.
Oder hab ich da etwas noch nicht verstanden?


Viele Grüße, Matthias.

von Max M. (strippenstrolch)


Lesenswert?

ich tüftel gerade an einer solchen anwendung auch wenn das einsatzgebiet 
völlig anders ist.

meine strategie ist in etwa diese:

motor einschalten,

alle 2 ms eine messung des potiwerts
sobald 100 messungen gemacht sind wird noch während die messung 
weitergeht
der durchschnitt ausgerechnet,

da es in meinem fall nach 200 ms nur eine änderung von ~30 gibt wird nun 
überprüft ob der durchschnittswert bei + - 15 liegt, dies bei jeder der 
100 gemachten messungen ,bei jeder abweichung incrementiere den 
fehlerzähler.(kann probleme bei logarithmischen potis geben )


desweiteren muss jede messung der messung zuvor größer oder zumindest 
gleich sein, aber niemals kleiner,bei abweichung wieder FZ 
incrementieren.


potiwert darf nur "hängenbleiben" wenn motorstrom erhöt

erhöten motorstron benutze ich auch um die richtung umzuschalten

desweiteren habe ich festgestellt das es sinnvoll ist die beidseitige 
prüfung doppelt auszuführen und jeweils die durchschnittswerte zu 
vergleichen.

von Matthias H. (maethes26)


Lesenswert?

Guten Abend  Maximilian,


find ich klasse, dass Du ein ähnliches Prohekt betreibst. :-)

Wenn Dui magst, können wir und die Tage darüber mal ausführlich 
unterhalten.
Ich zeig Dir wie weit ich mit meinem Projekt schon gekommen bin.

Die Hardwareansterung ist fertig. Das Board mit dem MotorIC 
funktioniert.

Kann Dirdie Tage gern ein paar Bilder schicken.

Jetzt werde ich hier erstmal schluß machen, da ich kaputt bin und in 
meinem Kopf nichts mehr reingeht. War heute auch schon arbeiten.

Ich geb Dir gern meine Mailadresse briefkastenmh@gmx.de,   dann können 
wir uns die Tage kurzschließen, wenn Du magst.

Vielleicht kommen wir beide so schneller voran und es macht mehr Spaß.

Viele Grüße,

Matthias.

von Michael R. (mexman) Benutzerseite


Lesenswert?

Hallo Matthias,

also alles schon klarer.
Wie steuerst Du den DC-Motor? Schafft Deine Motorsteuerung denn, ihn mit 
konstanter Drehzahl zu bewegen?

Hast Du denn ein Drehzahlsignal irgendwo vorliegen? Analog oder digital?

>
Sollwerte gibt es in diesem Sinne nicht und ich habe keinen Sollwert zum
Vergleichen. Kann nur prüfen, ob das Poti (der Spannungswert)
gleichmäßig ansteigt oder springt.
<

Du musst Sollwerte haben. Anders ausgedrueckt: Du musst wissen, was ein 
GUTES Poti liefert!


>
Das denke ich, muss festgestellt werden, oder?
<


Das fragst Du?

Wichtig ist als erstes eine Spezifikation: WAS genau soll denn 
festgestellt werden, oder anders ausgedrueckt: WANN ist ein Poti gut und 
wann ist es schlecht.




Bei Max´ System z.B. wird nicht erkannt, ob das Poti irgendwo zwischen 
den Messwerten, die eben nur alle 2ms genommen werden, einen "Lupfer" 
hat, also ein Abheben des Schleifers.

Nochmal mein Vorschlag:

Bedingung: Motor dreht mit konstanter Geschwindigkeit ODER ein 
Geschwindigkeitssignal liegt vor:

Fahre an Anschlag links, Gebe Potispannung auf Differenzierer (einfache 
Operationsverstaerkerschaltung).

Fahre Motor bis Rechtsanschlag.
Die Ausgangsspannung des Diffeenzierers entspricht der Steigung der 
Ausgangsspannung des Poti. Bei einem linearen Poti und konstanter 
Drehgeschwindigkeit also eine Gleichspanung.
Bei linearem Poti und nicht konstanter Drehgeschwindigkeit aber 
vorhandenem Geschwindigkeitssignal, entspricht der Ausgang des 
Differenzierers (nach Skalierung) genau dem Geschwindigkeitssignal.

Zum Testen von logarithmischen Potis kann man ebenso eine konstante 
Poti-Veranederunggeschwindigkeit messen, wenn man die 
Motorgeschwindigkeit entsprechend der Potikennlinie steuert, also NICHT 
mit konstanter Geschwindigkeit dreht.

Die Auswertung ob Poti gut oder schlecht benoetigt keinen 
Mikrokontroller und ist trivial (Abweichung zwischen 
Geschwindigkeitssignal und Potispannung -> Grenzwert gut/schecht)


Gruss

Michael

von Simon K. (simon) Benutzerseite


Lesenswert?

Wozu ein analoger Differenzierer, wenn eh ein Mikrocontroller dran 
hängt? Das kann man auch mit weniger Hardware Aufwand lösen.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Die Drallklappensteuerung meines Autos (da ist aber nur ein 270 Grad 
Poti drin) hat so was ähnliches. In Anlehnung daran, wie wäre es mit 
folgender Prüfroutine:

Initial wird eine Kennlinie des Potis aufgenommen  (das klingt für mich 
"vernünftig", denn eine 100,00 prozentige Linearität scheint mir nicht 
zwangsläufig gegeben zu sein.)

der Erwartete Istwert wird mit dem erfassten Sollwert verglichen. Ist 
die Regelabweichung zu groß (2%), erfolgt ein Eintrag im Fehlerspeicher 
(istwert zu groß/zu klein)

Der Stellwert wird dann solange nachgefahren, bis der Sollwert erreicht 
ist

Erfolgen zu viele Eintragungen innerhalb einer festgelegten Zeit / 
Nutzungsdauer, erfolgt eine Neuaufnahme der Kennlinie (incl. 
Protokollierung im Fehlerspeicher)

von snowfly (Gast)


Lesenswert?

Was hältst du davon einfach den ADC wert auf ein Graphik Display zu 
schreiben?
Anhand der Kurve ist ganz leicht zu sehen ob da Sprünge drin sind.
Dort könnte mann auch mehr Messungen machen als horizontale Pixel 
vorhanden sind und eine min, avrg. und max Kurve schreiben.

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.