- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 40

Thema: Einfachen Servomotor aus DC-Getriebemotor umbauen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Ah, danke, muß ich mir auch nochmal durch den Kopf gehen lassen.

    Ich benutze aus dem RN-Wissen diese Methode: http://www.rn-wissen.de/index.php/Dr...ENCODER-Befehl

    Die beiden Signale von dem Doppelfototransistor sind auf je einen Pin des gleichen Ports gelegt, maskiert für den gleichen Pin Change Interrupt und in der ISR läuft dann o.g. Programm.

    Bei mir sind die Signale auch nicht 90 Grad versetzt, müssen sie auch nicht. Allerdings wird die Zeit für die Auswertung knapper. Ich habe gerade im worst case 40µs Zeit (Oszi) und das sind noch langsam laufende Motore mit wenig Schlitzen in der Encoderscheibe.

    Gruß und weiterhin Erfolg
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Irgendwie kommt mir der Code komisch vor. Einige Syntax ist mir auch neu, vielleicht liegt es daran. Ich finds nur komisch, dass der Sensor nur jede ms abgefragt wird, hieße das, bei 1kHz wäre schon Schluss oder wie? Ich kann mir gut vorstellen, dass bei höheren Geschwindigkeiten gerne mal Schritte verschluckt werden könnten. Der Counter löst ja wirklich immer dann aus, wenn ein Schritt getätigt wird. Alternativ habe ich ach schon von der Methode gelesen, diese Auswertung in der Hauptschleife laufen zu lassen, sodass wirklich ständig abgefragt wird, und alles andere über Interrupts laufen lassen. Dann könnte höchstens ein Schritt verloren gehen, während gerade ein Interrupt ausgeführt wird, allerdings glaube ich, dass das schnell genug läuft. Vorteil ist natürlich, dass man keinen weiteren Timer dafür verbraucht, und wenn ich das auf nem ATtiny umsetzen will, muss ich da schon drauf achten.

    Apropos ATtiny: die meisten von den Teilen lassen sich ja gerade mal über SPI ansprechen, allerdings habe ich damit noch keine Erfahrungen gemacht. Ist das ähnlich einfach wie UART oder muss man da mehr Arbeit reininvestieren?
    Außerdem soll bei denen der HW-Multiplikator fehlen, wie führt man dann Multiplikationen aus? Geht das so wie sonst auch, nur, dass der Chip halt langsamer arbeitet, oder muss man da auch extra eine Funktion für schreiben?

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Ich hab den Code aus RN_wissen schon ein wenig angepaßt. Die ISR wird bei mir nicht in festen Abständen angesprungen, sondern nur wenn ein PCINT auftritt. Wenn das vorzeigbar ist und ich entsprechende Kommentare eingefügt habe, werd ich ihn mal in meinem Blog zeigen.

    Der ATtiny24 hat 2 Ports. PortA und PortB. Alle Pins eines Ports können einen zugehörigen Pin Change Interrupt auslösen. Also PinA.x kann PCINT0 und PinB.x PCINT1 auslösen. Im Maskenregister wird bestimmt, welche Pins tatsächlich scharf sind.

    Ich beschränke mich nur auf PortA. Das klappt schon mit gewissen Einschränkungen. Wenn das ausgetestet ist kommt ein zweiter Encoder an PortB.

    Der PCINT wird bei fallender und bei steigender Flanke ausgelöst. Die beiden Signale vom Doppelfototransistor lösen also in einer Periode vier Interrupts aus. Jedesmal werden also die Statusse (Stati ??) des Quadratursignals ausgewertet.

    Ich erhalte damit Werte, die der doppelten Schlitzfrequenz entspricht, da der Algorithmus bei gültigen Übergängen immer Eins addiert, wenn beide Pins low und beide Pins high sind.

    Bisherige Tests sind recht plausiebel. Da ich aber noch in Versuchen stecke, alles mit etwas Vorsicht genießen.

    Ich denke gerade darüber nach, einen zweiten Tiny einzusetzen, nur um den Motor zu steuern und mit zusätzlicher Lichtschranke die Quadraturauswertung zu überprüfen.

    Zur Anzeige benutze ich SW-UART mit 115000 Baud. Weil es aber trotzdem Timingprobleme gibt, speichere ich jede Sekunde die Werte ab (zB 4 Meßwerte) und lasse sie danach jede Sekunde ausgeben (ohne daß eine Messung läuft)

    Der Tiny könnte auch SPI was wesentlich schneller wäre als UART. TWI hat er auch. SW-SPI hab ich schon testweise ausprobiert - gut und einfach.

    Im Algorithmus wird mit 4 multipliziert. Das habe ich mit zweimal SHIFT LEFT ersetzt.

    EDIT Multiplikation geht natürlich auch ohne HW Unterstützung. einfach x * y in Bascom schreiben - ist langsamer als shift.

    Gruß
    Searcher
    Geändert von Searcher (18.11.2011 um 08:51 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    So, ich hab jetzt ein wenig weitergemacht. Ich habe eine Vorsteuerung eingebaut, die aus den ersten beiden Ableitungen der Sollposition die benötigte Motorspannung errechnet. Dadurch bewegt sich der Motor im unbelasteten Zustand schon einigermaßen dem Sollpositionsverlauf entsprechend. Dort hab ich dann eine einfache Proportionalregelung gelegt, um die Abweichungen auszuregeln, und das Verhalten gefällt mir bisher schon ziemlich gut. Wesentlich glatter, als die reine Regelung. Allerdings mag er die Ableitungen von der Schiebeleiste nicht so recht, da das doch sehr verruckelt ausfällt. Müsste ich wohl noch ein wenig filtern, damit ein halbwegs glatter Verlauf entsteht.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    So, hab mir mal paar von den im Eingangspost erwähnten Getriebemotoren geholt und bin erwartungsgemäß vom Getriebespiel enttäuscht :/
    Vom Händler hab ich die Info, dass das Getriebe eine Untersetzung von 1:140 hat, also mal an der Motorwelle gedreht, bis sich der Abtrieb rührt, und ich konnte eine ganze Runde herumdrehen
    Demnach müsste das Umkehrspiel bei 2,5° liegen, was wirklich beträchtlich ist. Nun bin ich am überlegen, ob es sinnvoller ist, andere Getriebemotoren mit weniger Spiel zu suchen (wo sollte ich da am Besten gucken?) oder als Rückführung nach Art des Servos ein Potentiometer an das tatsächliche Gelenk zu setzen und dessen Wert am Analogeingang zu erfassen. Allerdings wird die Auflösung vom normalen Analogeingang auch nicht so besonders toll sein (10 bit). 1024 Schritte über den gesamten Stellbereich empfinde ich irgendwie immernoch als ein wenig grob, wobei es auch schwierig sein dürfte, auf andere Art und Weise etwas besseres bei vergleichbarem Budget zu realisieren. Außerdem kommt es auch noch darauf an, wie gut die Linearität des Potis ist. Was meint ihr, welche Variante wäre da vielversprechender?

Ähnliche Themen

  1. Suche einfachen Tabplet-PC
    Von Shinzon im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 11
    Letzter Beitrag: 26.09.2011, 14:21
  2. Suche einfachen Microcontroller
    Von Ilm_Stoffel im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 10.02.2010, 11:39
  3. Getriebemotor zum servo umbauen?!
    Von foxmovie im Forum Motoren
    Antworten: 20
    Letzter Beitrag: 30.05.2009, 12:56
  4. suche einfachen Li-Ion-Akkulader
    Von Turtle im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 05.08.2006, 15:17
  5. Einfachen Aufzug bauen
    Von soulid im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 05.10.2005, 09:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests