Forum: Mikrocontroller und Digitale Elektronik Windrichtung 360 Grad Poti schleifenübergang unterdrücken


von Herrmann (Gast)


Lesenswert?

Hallo

Habe ein Problem mit einen Windrichtungsanzeiger altes Conrad teil.

Der hat ein Poti eingebaut was sich über 360 Grad durchdreht.

bei ca der hälfte des gemessenen ADC wertes entspricht 180-185 Grad 
läuft der läufer über den Schleifkontakt hinaus bauartbedingt meine 
Frage wie kann ich das überbrücken so das mein ADC bei dieser 
Windstellung nicht verückt spielt???

Danke

von winne (Gast)


Lesenswert?

Schalte nen Passenden R parallel zum Schleifer und einem Poti.Ende

In der Poti-Pause erhälst du dann eine Fixen Wert und der ADC eingang 
kann nicht floaten.

von Herrmann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo


Habe ich es richtig verstanden so in etwa???

Danke

von winne (Gast)


Lesenswert?

z.B.

aber den wert wenigstens  >= dem Potiwert.

An welches ende musst du ausprobieren und hängt von der 
Auswerteschaltung ab.

test the best

von Herrmann (Gast)


Lesenswert?

Danke
werde ich morgen mal testen.

von Herrmann (Gast)


Lesenswert?

habe ein 68kohm widerstand dazwischen geschaltet.

der bereich ist weg wo mir das poti müll bringt.

nur stimmt jetzt meine windrichtungs berechnung nicht.

Alles was zwischen 0 und 180 grad ist normal danach  kommt bei 270 grad 
über 30 grad potidrehung immer der gleiche adc wert.
180 und 360/0 sind um 20 grad daneben.

kurz gesgat meine lineare funktion ist hinüber.


was nun.

von JÜrgen G. (Firma: 4CKnowLedge) (psicom) Benutzerseite


Lesenswert?

Das ist die ganz billige Methode... und wieso nicht einen Drehgeber bzw. 
eine Lochscheibe mit Opto? Kannst du über die Flanken auswerten welche 
Richtung und vor allem auch wie schnell...

von Herrmann (Gast)


Lesenswert?

hallo

weil es technisch nicht geht.
es ist ein orginal windmesser von elv.
Dort ist ein poti drin.
es gibt einen kleinen bereich ca 2 grad der mir müll liefert ist der 
schleifen übergang.
Dieser müß überbrückt werden.Er liegt bei 180-182 grad.
adc wert 1023=180grad
adc wert 1=181 grad
adc wert 1 kommt aber erst 2 grad später.
dazwischen bekomme ich adc werte von 120-600 im zickzack.

gruß

herrmann

von HildeK (Gast)


Lesenswert?

Ich weiss jetzt nicht, wie hochohmig der Eingang des ADC ist, auch 
nicht, welchen Wert dein Poti hat.
Auf jeden Fall müsstes du den R viel größer machen als den Potiwert und 
gleichzeitig viel kleiner als den ADC-Eingangswiderstand.

von Wolfgang Horn (Gast)


Lesenswert?

hi, Herrmann,

unlösbar ist das Problem, wenn die ist: Die Windrichtungsaneige von 0 
bis 360 Grad wir abgebildet auf ein Potentiometer.

Dann läßt sich der Sprung von 359,9° auf 0° mit keiner 
Lineatitätsschaltung überbrücken.

Deshalb gibt es Doppelpotis mit 0° Verschiebung dawischen (hatte ich mal 
in der Hand aus einem Simulator aus der Zeit vor den Transistoren) und 
Encoder mit Gray-Code.

Wenn das gekaufte Gerät die Windrichtung mit Sprung meldet, dann war es 
wohl von der billigen Sorte.


ciao
Wolfgang Horn

von Herrmann (Gast)


Lesenswert?

das poti hat 50kohm.
der wiederstand dazwischeen hat 120kohm
adc hochomig???


so lese ich den adc aus

uint16_t ReadChannel(uint8_t mux)
{
  uint8_t i;
  uint16_t result;

 // ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0)   ;    // 
Frequenzvorteiler
   ADCSRA = (1<<ADEN)  | (1<<ADPS0)   ;    // Frequenzvorteiler
                             // setzen auf 8 (1) und ADC aktivieren (1)
 ADMUX = mux;
                      // Kanal waehlen
  //ADMUX |=  (1<<REFS1) | (1<<REFS0) ; // interne Referenzspannung 
nutzen
  ADMUX |=   (1<<REFS0) ; // interne Referenzspannung nutzen

  /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man 
liest
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu 
lassen" */
  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung
  while ( ADCSRA & (1<<ADSC) ) {
     ;     // auf Abschluss der Konvertierung warten
  }
  result = ADCW;  // ADCW muss einmal gelesen werden,
                  // sonst wird Ergebnis der nächsten Wandlung
                  // nicht übernommen.

  /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden 
Wandlungen */
  result = 0;
  for( i=0; i<4; i++ )
  {
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
    while ( ADCSRA & (1<<ADSC) ) {
      ;   // auf Abschluss der Konvertierung warten
    }
    result += ADCW;        // Wandlungsergebnisse aufaddieren
  }
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)

  result /= 4;                     // Summe durch vier teilen = arithm. 
Mittelwert

  return result;
}
mux =adc6 mega 8


danke

von yalu (Gast)


Lesenswert?

> das poti hat 50kohm.
> der wiederstand dazwischeen hat 120kohm
> adc hochomig???

Der ADC hat einen Eingangswiderstand von mindestesn 55 MOhm und
typisch 100 MOhm. Du kannst also R2 gerne noch etwas größer wählen.

Alternativ könntest den Linearitätsfehler vom AVR herausrechnen
lassen. Dann ist die Größe von R2 nicht so wichtig.

Ein Problem wird aber bei dieser Einzelpotilösung immer bleiben: Der
Übergang von 5 V nach 0 V beim Wechsel des Schleifers von der
Widerstandsbahn in die Lücke erfolgt nicht sprunghaft, sondern
kontinuierlich innerhalb eines kleinen Winkelintervalls, da der
Schleiferkontakt eine gewisse Ausdehnung hat. Innerhalb dieses
Winkelintervalls wirst du alle Spannungswerte zwischen 5 V und 0 V
messen, so dass die Messung nicht eindeutig ist. Soll der ausgelesene
Wert nur angezeigt und nicht in einem Regler o.ä. weiterverarbeitet
werden, dürfte das aber nicht so schlimm sein.

Es gibt noch eine andere Möglichkeit, den störenden Effekt zu mindern:

Du kennst etwa die maximale Winkelgeschwindigkeit des Windrichtungs-
anzeigers unter normalen Bedingungen und damit die maximale zeitliche
Spannungsänderung. Am Übergang macht die Spannung i.Allg. größere
Sprünge, die durch die Auswertesoftware auf dem AVR erkannt werden
können. Eventuelle Zwischenwerte an dieser Stelle werden dann einfach
nicht ausgegeben bzw. durch den letzten sinnvollen Messwert (5 V bzw.
0 V) ersetzt.

von HildeK (Gast)


Lesenswert?

>Der Übergang von 5 V nach 0 V beim Wechsel des Schleifers von der
>Widerstandsbahn in die Lücke erfolgt nicht sprunghaft ...
Warum nicht. Wird da der Schleifer nicht 'sprunghaft' ins 'Niemandsland' 
gestellt, sobald er den Kontakt mit beiden Endpunkten verliert. Und er 
muss ihn verlieren, da er sonst einen Schluss über dem Poti erzeugt.

Wenn ein hochohmiger Widerstand eingesetzt wird (1 Meg unter den gannten 
Bedingungen wäre ganz brauchbar), dann ziehts den ADC-Eingang auf Null 
und er hat für 1-2° die Anzeige 181° Windrichtung. Ist an der Stelle ein 
kleiner Schönheitsfehler - aber nur unwesentlich falsch.
Der 1-Meg macht dann bei 0° resp. 360° den größten Fehler von rund 1,2% 
(statt 2,5V kommen dann nur 2,47V am Poti heraus - wieder 2° Fehler in 
der Windrichtung.

Der Softwarevorschlag von yalu ist auf jeden Fall sinnvoll als 
Ergänzung, denn der Sprung an der Stelle bleibt.

von HildeK (Gast)


Lesenswert?

Nachtrag:
Weiß jemand, wie groß die Linearitätsabweichungen des verwendeten Potis 
überhaupt sind? Sicher nicht unter 1%!

von yalu (Gast)


Lesenswert?

> Warum nicht. Wird da der Schleifer nicht 'sprunghaft' ins
> 'Niemandsland' gestellt, sobald er den Kontakt mit beiden Endpunkten
> verliert. Und er muss ihn verlieren, da er sonst einen Schluss über
> dem Poti erzeugt.

Bevor er den Kontakt komplett verliert, wächst der Übergangswiderstand
zwischen Bahn und Schleifer, da die Kontaktfläche abnimmt. Befindet
sich der Schleifer an Punkt 3 in obiger Schaltung, bildet der
veränderliche Übergangswidersand mit R2 eine Spannungsteiler, an
dessen Ausgang theoretisch alle Spannungen von 0 V bis nahe 5 V
möglich sind.

von HildeK (Gast)


Lesenswert?

Danke - ich geb dir recht.
Allerdings hatte der OP vorher über rund 2° Drehwinkel einen offenen 
ADC-Eingang mit beliebigem Ergebnis. Das ist insofern besser geworden, 
dass es jetzt nur noch Bruchteile eines Grades sind und so dein 
SW-Vorschlag noch besser zum Tragen kommt.

von Herrmann (Gast)


Lesenswert?

hallo

es lässt sich wohl nur per software regeln

habe mal was probiert.

ich habe ein array für 3 messungen.
also auch 3 durchläufe.

hat der erste messwert eine differenz und der zweite und 3 sind gleich 
hat der wind gedreht.Ist der erste und 2 und dritte unterschiedlich bin 
ich auf dem gewisssen punkt und gebe 180 grad zurück.

so klappts auch ganz gut.messungsintervall 1 sec dh jede 3 sec bekomme 
ich eine windberechnung,ich denke das kann man verkraften.


nur habe ich jetz noch bemerkt das mein poti an einer gesissen stelle ca 
40 grad breit immer den gleichen adcwert liefert???

kann ein poti verschleißen ??

windmesser ist ca 8 jahre alt und hat ca 3 jahre im freien dauerbetrieb 
geleistet damals noch mit elv funksender innenleben.



danke

von Johnny Maxwell (Gast)


Lesenswert?

> kann ein poti verschleißen ??

Ernst gemeint?
Da wird ein Schleifer über eine Widerstandsbahn gerieben...

von Herrmann (Gast)


Lesenswert?

Hallo

Habe heute mein 360Grad Poti 50Kohm von Conrad bekommen das gleiche in 
grün.

bei einen ADC wert von 786(mit den obigen code) kann ich das poti ca 
40Grad dgrhen ohne das sich der adc wert ändert.
zwischen adc 1023 und 0 sind wieder die blöden werten diese habe ich 
aber per software unterdrückt das geht ganz gut.

nur was mache ich mit den lücken dies betrifft umgerechnet den bereich 
von 270-300 grad???Der Bereich von adc 0 bis zu 768 läßst sich schön 
regeln.
nach den 768 auch wieder bis 1023.

Liegt es am ADC des Mega 8 ????

WIe kann man das kompensieren oder abschalten oder liegts am poti????

POTI 50K 1W TYP 357

Danke

von Herrmann (Gast)


Lesenswert?

Habe es rausgefunden der Vorteiler war zu klein habe diesen auf 8 
gesetzt 16/8 nun habe ich keine lücken mehr eine Lineare kurve und eine 
genaue umrechnung ist jetz möglich.

Danke

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

>Lineare kurve

Interessant, wusste nicht, dass es sowas gibt ;)

Der optimale Arbeitsbereich des ADC geht bis 200kHz, d.h. Vorteiler 
darauf einstellen.

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.