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
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
> 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.
Poti-Mittelanzapfung über 2MOhm an PortC.0 Laut Datenblatt sollte der Quellwiderstand max. 10k betragen.
Die Position ist Byte wärend der ADC dir Word zurückgibt (0-1023) somit wiederholt sich dein ADC-Wert 4x!
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.
>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
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
Evtl. reicht es aus einfach die Schritte zu zählen und das Poti wegzulassen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.