Forum: Mikrocontroller und Digitale Elektronik Atmega8 und der ADC


von Christoph M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich hoffe, ich finde hier Unterstützung.
Für ein kleineres Projekt benötige ich einen Schrittmotor mit mech. 
gekoppeltem Potentiometer. Dadurch soll die genaue Position des motors 
festgestellt werden.
Habe mir dazu einen passenden Versuchsaufbau aufgebaut.
Im Programm selbst findet ihr die Daten dazu.

Das problem: sobald der Motor in die Nähe der Position 0 kommt, fängt er 
an zu "stottern" und nähert sich so in kleinen Schritten der 
Anfangsposition.
Alles Andere funktioniert hervorragend.

Der Effekt tritt auch auf wenn:
   - andere Mikroschritte auf dem Driverboard gewählt werden
   - die Motorgeschwindigkeit geändert wird
   - Interruptsteuerung angewendet wird

Vielleicht kann es sein, dass kleine Spannungen nicht mehr genau 
abgetastet werden...?
Aber wie soll ich dann die Ruckelei wegbekommen...?

Ich komme nicht mehr weiter.
Hat eine von Euch ein paar Tipps dazu ?
Gern auch telefonisch :-)
Hier dazu die Telef-Nr. anfragen( christoph.maass@cmaass.org )

Danke im Voraus !!!!

Christoph

von wendelsberg (Gast)


Lesenswert?

Fuer solche Fragen laesst man sich normalerweise Ausgaben von 
interessierenden Werten vom Programm irgenwohin ausgeben/schreiben. 
Daran sieht man, woran es hapert.

Eine moeglicher Einfluss waere Spiel im Getriebe.

wendelsberg

von Karl H. (kbuchegg)


Lesenswert?

> Eine moeglicher Einfluss waere Spiel im Getriebe.

Ein anderer möglicher Einfluss wäre eine unebene Widerstandsbahn am Ende 
des Potiwegs.

Wie wendeslberg schon sagte: gemessene Wert irgendwo ausgeben lassen.
Persönlich halte ich einen Versuchsaufbau während der Entwicklung ohne 
irgendeine Ausgabemöglichkeit für einen schwerwiegend strategischen 
Fehler des Entwicklers.

von Hubert G. (hubertg)


Lesenswert?

Poti-Mittelanzapfung über 2MOhm an PortC.0
Laut Datenblatt sollte der Quellwiderstand max. 10k betragen.

von Marc H. (marchorby)


Lesenswert?

Die Position ist Byte wärend der ADC dir Word zurückgibt (0-1023) somit 
wiederholt sich dein ADC-Wert 4x!

von M. K. (sylaina)


Lesenswert?

Karl H. schrieb:
> Ein anderer möglicher Einfluss wäre eine unebene Widerstandsbahn am Ende
> des Potiwegs.

Das kenne ich auch so. Ist das vielleicht ein Mehrgangpoti? Da sollte 
man die 0-Position auch 1 bis 1,5 Umdrehungen vom Endanschlag entfernt 
legen.

Der ADC des Atmegas misst eigentlich in allen Bereichen gleich gut aber 
du könntest auch mal die Kurve aufnehmen. Das Thema bzgl. 
Quantisierungfehler und Co wird ja auch im Datenblatt ganz gut 
behandelt. Warum nimmst du eigentlich einen Atmega8? Ich mein der hatte 
u.a. einen Design-Fehler bei dem Intern VCC und AVCC verbunden ist was 
man auch nicht unbedingt will. Wurde erst mit dem Atmega8A gefixt soweit 
ich weiß. Aber ich würde auch so ein neueres Modell nehmen wie z.B. den 
Atmega88 und Co.

von Paul B. (paul_baumann)


Lesenswert?

>Poti-Mittelanzapfung über 2MOhm an PortC.0

Das erscheint mir zu hochohmig.

MfG Paul

Edith sagt: Hubert hat das schon vorher im Quelltext gesehen.

: Bearbeitet durch User
von andi (Gast)


Lesenswert?

warum nimmst du nicht gleich einen servo?

von Paul B. (paul_baumann)


Lesenswert?

Das ist aber auch nicht gut:

If Geber = 0 Then                                         'Wenn 
Geberwert = 0 dann befindet sich
     Position = Null                                        'der Motor 
in Startposition 0
       Else
     If Geber > 0 Then                                      'Sonst auf 
einer anderen Position oder am Ende
       Position = Ende
     End If
  End If

Sowie der Motor sich nur ein kleines Stückchen bewegt, ist schon die 
Bedingung erfüllt, daß er das Ende erreicht haben könnte. Beim nächsten 
Durchlauf denkt das Programm dann, er wäre schon am Anschlag angelangt
und will gleich wieder zurück. Daher das Zittern.

MfG Paul

von Spock (Gast)


Lesenswert?

Evtl. reicht es aus einfach die Schritte zu zählen und das Poti 
wegzulassen.

von Christoph M. (Gast)


Lesenswert?

Vielen Dank für die Hilfe !!!!

Ich werde die einzelnen Beiträge. Ich werde diese nun "abarbeiten" un 
mir die Werte ausgeben lassen.
Mal sehen, was dabei herauskommt.

Zu den Comments:

Wendelsberg
Ausgabe der Daten: ok
Ein Spiel im Getriebe kann hier ausgeschlossen werden.

Karl-Heinz
Widerstandsbahn bei versch. Potis getestet. Hier Draht-Poti 10-Gang !
Ausgabe der Daten: ok
Schwerwiegender Fehler: na ja .....da ist ja ein ganz schlauer  ;-)


Michael Köhler
--------------
0-Position auch 1 bis 1,5 Umdrehungen vom Endanschlag entfernt legen: 
OK, gute Idee
Neueres Modell: ok, z.Zt. ist das ein Atmega8A (stand auch im 
Programm-Comment)

Paul Baumann
Eingangswiderstand zu hochohmig: habe dies auch mit anderen Werten 
probiert.

andi
Servo: da gibt es gute Gründe, würde den Rahmen hier sprengen

------------------------------------------------------------------------ 
----
Paul Baumann
-------------
Der Geberwert wird in der Subroutine aufgenommen und im Hauptprogramm 
noch einmal abgefragt. Das ist falsch !
Du bist richtig mit Deinem Beitrag. Habe die erste Abfrage direkt 
hinbter Wait (Zeile 62) verlegt.
Der aufbau arbeitet nun fehlerlos.

Das war's !  Klasse Beitrag !!!   Danke !!!

Vielen dank für die Anregungen !

 C. Maass

von Paul B. (paul_baumann)


Lesenswert?

Christoph M. schrieb:
> Das war's !  Klasse Beitrag !!!   Danke !!!

Na, da geht's doch, wenn's jetzt geht.
:-)
FF (Fiel Fergnügen) weiterhin.

MfG Paul

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.