-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Mikroplatine zur Servoansteuerung

  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557

    Mikroplatine zur Servoansteuerung

    Anzeige

    Hallo alle,

    etliche Servos der Billig(st)klasse

    ......

    liegen bei mir defekt rum aus den letzten Tagen. Sie waren für den Fortschritt bei meiner archie-Hand-Entwicklung hinübergegangen. Nun will ich diese Servos wiederbeleben. Schon gut, ich weiß - viel Arbeit für Billigteile - aber ich fände es interessant und lohnend. Das könnte ich auch in (m)einen eher problemtischen Savöx einbauen.

    Der Einbauraum wäre die Stelle (siehe oben "Poti mit 3 Anschlüssen") in der ich eine Platine 11mm x 11 mm und 9 mm hoch einbringen könnte (Anschluss noch nicht überlegt). Es wäre also Platz für ATmega168/328 TQFP (ich hatte den auch schon QFN gelötet beim Austausch auf babyorangutan) - und einen Motortreiber, z.B. den TB6612FNG für 2 Kanäle je 1,2 A - also für rund 2,4A bei parallelen Motoranschlüssen.
    Anmerkung: der TB6612FNG hat eine nicht sooo pfiffige Motoransteuerung; ich benutze den (auf der babyorangutan-Platine) z.B. bei archie im Handgelenk für einen Mikro-Getriebemotor mit Modellbauservo-Ansteuerverhalten. Daher die Frage: gibt es ähnlich kleine - 8mm x 9 mm - Motortreiber mit vergleichbarer Belastbarkeit ?

    Das Ganze soll als eine Art "openServo" gebaut werden auf eine Platine ähnlich der oben gezeigten "Elektronik kplt. ohne Poti". Der openservo ist mir einfach viel zu groß. Spezifikation wäre dann etwa: 5V (evtl. 6V - dann bräuchte ich nen mikroskopischen Spannungsregler für den Controller), max. 1 A, Drehwinkel ca. 180° mit theoretischer Auflösung 1023 (entsprechend ADC) usf. Da ich in den Einbauraum auch ne dreifach-Buchse unterbringe, wäre ein UART denkbar, mit dem die aktuelle Grundstellung abgefragt werden könnte - alternativ auch I²C . . .

    Fragen:
    - mit wie wenig Abblockkondensatoren lässt sich der 168er bei 8Mhz/intern betreiben?
    ......Ich hab ne tiny13-Servotester, interner Takt, OHNE alles Hühnerfutter - läuft störungsfrei.
    - hat jemand etwas ähnliches schon gemacht ?
    - bekommt man in dieser Größe schon irgendetwas zum Überspannungsschutz ?
    - Kann jemand nen mikroskopischen (siehe oben) Spannungsregler empfehlen? LDO!
    - Welcher Motortreiber wäre noch verwendbar?
    - Welche update-Frequenz sollte ich wählen ? Welche PWM-Frequenz für den Motor ?
    - Ich habe noch ein paar A3901-Treiber rumliegen. Die sind mit 2x400 mA aber doch eher schmalbrüstig.
    - Hat jemand Erfahrung mit Seeed und dort mit Platinen mit Mehrfachnutzen?
    - Welche Platinendicke würdet ihr nehmen (machbare/lieferbare Werte)
    - gäbs sonst noch was zu beachten?
    - Sonstige Anregungen ?

    Danke im Voraus für eure Hilfen


    Nachtrag
    08. Dez. 2017. Projekt wird wegen geringen Realisierungschancen nicht weitergeführt, siehe Beitrag vom 8.12.2017
    Geändert von oberallgeier (08.12.2017 um 23:24 Uhr)
    Ciao sagt der JoeamBerg

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    - Welche update-Frequenz sollte ich wählen ? Welche PWM-Frequenz für den Motor ?
    Mich interessierte u.a. diese Frage insbes. als Grundlage für die Auslegung der Steuerung. Hier ein kleiner Zwischenstand der zugehörigen Arbeiten.

    Testaufbau: zwei Anschlußdrähte an den Servomotor gelötet, Servo zu - und testen. Untersucht wurde ein Carson502001 bei Speisespannung 5,0V an meinem Servotester (der auf Basis eines nanoClones). Controller 20 MHz, Periodendauer 20 ms, vorgegebener Servopuls 1432 µs. DSO ist das SLOscope von Pololu , ein extrem simples Scope - daher auch die etwas ungewöhnliche Pulsdarstellung.

    !Die Ergebnisse! gelten nur für den genannten Servo, ohne Beschränkung der Allgemeinheit! Es darf nicht angenommen werden dass dies bei allen analogen Servos so ist!

    Die MotorPWM stimmt in der Frequenz mit der Periodendauer des Servopulses überein. Gegenproben bei Perioden von 16 ms und 25,+ ms Dauer bestätigten diese Feststellung. Das hatte ich noch nirgendwo erwähnt gesehen. Hier die Spannungsverläufe bei geringer Belastung mit Pulslänge von etwa 1 ms >am Servomotor< sowie mit mässiger Belastung von Hand mit Pulslänge von etwa 9 ms, ED ca. 45%. Bemerkenswert für mich ist die gemessene Spannung von etwa 0,5 Vcc direkt am angetriebenen Servomotor - IM Betrieb.

    ......

    Zur zusätzlichen Information der Bildschirmdump vom Scope zum Ansteuerungspin des Servos am Nanoclone (Achtung: Zeitachse 10 statt 20 ms !). In der Pulslänge zeigt sich leider der Fehler durch die geringe Auflösung des EinfachstScopes.

    Die Arbeit geht weiter.
    Geändert von oberallgeier (17.09.2017 um 11:16 Uhr)
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Die MotorPWM stimmt in der Frequenz mit der Periodendauer des Servopulses überein. Gegenproben bei Perioden von 16 ms und 25,+ ms Dauer bestätigten diese Feststellung. Das hatte ich noch nirgendwo erwähnt gesehen.
    Nun, so ist das bei einem Analogservo. Da wird mit dem Beginn des Servopulses ein Monoflop gestartet. Die Länge des erzeugten Impulses wird durch das Poti im Servo bestimmt. Der Zeitunterschied zwischen dem Servosignal und dem intern erzeugten Puls ist die Regelabweichung. Daraus läßt sich dann leicht mit Logikgattern ein Differenzpuls erzeugen.

    Als PWM Signal direkt taugt das noch nicht, weil sich da nur Zeiten bis zu 1,5ms, der Differenz zwischen Min- und Maxwert, ergeben. Das gibt bei einer 20ms Periodendauer nur einen maximalen Dutycycle von 7%. Der Differenzpuls wird daher nochmal proportional verlängert und ist dann das PWM-Signal für den Motor. Der M51660 ist ein Servo-IC, von dem man sicher noch ein Datenblatt finden kann. Da kann man das nachvollziehen.

    Daher die Frage: gibt es ähnlich kleine - 8mm x 9 mm - Motortreiber mit vergleichbarer Belastbarkeit ?
    Für kleinere Motore verwende ich gern den A4950 im SO8. Der verkraftet so bis 3A und hat zusätzlich eine eingebaute, einstellbare Strombegrenzung.

    Man sollte aber, wenn man schon selbst entwickelt, die größte Schwachstelle der Servos beseitigen und Steuerlogik und Motortreiber nicht aus der gleichen Versorgung speisen. 5V bzw 3,3V können (vom µC oder auch einem Empfänger) über das Standardkabel geliefert werden, für die Motorspannung gibts einen extra Anschluß. Dann kann man das Ganze auch mal mit 2 Lithiumbatterien versorgen, ohne das die Steuerung gleich abbrennt. Wenn der µC einen Analogeingang über hat, kann er die Motorversorgung messen und die PWM passend nach oben begrenzen. Beim A4950 könnte man auch die Strombegrenzung so einstellen, daß der Motor nicht überlastet wird. Last but not least kann man aus einem Getriebemotor und einem mechanisch verbundenen (Mehrgang?) Poti maßgeschneiderte Servos bauen. Hat man dann im µC noch einen I2C Slave über, kriegt man auch ein "Luxusservo" hin, z.B. mit einstellbarer Verfahrgeschwindigkeit etc.

    Ich würd auch nicht viel Mühe verwenden, die "neue" Elektronik in das vorhandene Gehäuse zu packen, insbesondere nicht für den Prototypen. Poti und Motor machen nur 5 Drähte aus und extern hat man viel Platz für die Kühlung. Auf einem eng gepackten Board entwickelt und testet es sich schlecht. Ich bestell meine Platinen bei elecrow, die Preise dürften bei seeed kaum anders sein. 5 Platinen bis 100*100mm hab ich für rund 10€ auf dem Tisch, da kann man sich leicht einen größeren Prototypen leisten. Für kleine Platinen nehme ich gern 1mm Material. Mehrfachnutzen mach ich selber. Dazu packe ich soviele Kopien des Layouts nebeneinander, daß die 100mm gut gefüllt sind. Platinenmaterial läßt sich gut mit einer Tafelschere schneiden, 1mm Material auch mit jeder guten Haushaltsschere.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Ganz herzlichen Dank Klebwax.
    .. so ist das bei einem Analogservo .. mit dem Beginn des Servopulses ein Monoflop gestartet .. leicht mit Logikgattern ein Differenzpuls erzeugen ..
    Danke für die ausführliche und für mich verständliche Erklärung. Nur - zu Analogtechnik bin ich total ungebildet und ohne jede Affinität - da hatte ich sozusagen in der Schule geschwänzt!

    .. die größte Schwachstelle der Servos beseitigen und Steuerlogik und Motortreiber nicht aus der gleichen Versorgung speisen ..
    Ja, das kenn ich wieder seit meinen Anfängen zu Mikrocontrollern.

    .. Der M51660 ist ein Servo-IC, von dem man sicher noch ein Datenblatt finden kann. Da kann man das nachvollziehen ..
    Das ist nicht direkt das, was ich möchte. Bei Archie hatte ich den Handgelenk-Dreh schon mit einem "Selbstbau-Servo" aus Pololu-Mikrogetriebemotor mit Encoder und der kleinen Platine babyorangutan gebaut. Ein Ewigdreher, der die Nullstellung als die beim Einstellen aktuelle Stellung anerkennt. Läuft gut. Und so etwas wollte ich mit einem Minimum an Bauteilen schaffen. Als einfaches Projektchen um die paar defekten Servos hier wiederzubeleben (soweit nicht die Bürsten durchgeschmort sind).

    .. Für kleinere Motore verwende ich gern den A4950 im SO8 .. bis 3A .. einstellbare Strombegrenzung .. daß der Motor nicht überlastet wird ..
    Genau so etwas hatte ich ja gesucht. Beim TB6612FNG nämlich leider im Datenblatt ".. The IC will fully break down when used under conditions that exceed its absolute maximum ratings ..". Also werde ich mich mal ins Datenblatt bemühen und danach wohl zu Aliexpress. Von Allegro habe ich ja nur ein paar A3901 rumliegen, die sind eindeutig zu schwach.

    .. Ich würd auch nicht viel Mühe verwenden, die "neue" Elektronik in das vorhandene Gehäuse zu packen, insbesondere nicht für den Prototypen ..
    Wie schon erwähnt - das soll ein Zwischendurchprojekt werden, aktuell benutze ich für die ersten Tests die externe Ansteuerung über babyorangutan/328p/8MHz-intern. Eher eine Spielerei und eine kleine Fortbildung zu meinem langjährigen Spielplatz "Servo". Vielleicht kommt in Zukunft dann doch ne analoge Version dran. Für die aktuelle Planung hatte ich I²C nicht vorgesehen, wohl aber UART, beispielsweise um bei späteren Anwendungen in dickeren Servos und/oder für andere Motoren die Regelparameter zu verändern, Ansteuerung ohne Servoport oder Ähnliches.

    .. elecrow .. gern 1mm Material. Mehrfachnutzen mach ich selber .. Tafelschere .. 1mm Material .. mit jeder guten Haushaltsschere ..
    Und hier sehe ich noch ein paar nützliche Tips zu Deiner Lehrstunde für Servoselbstbau. Danke herzlich für Deinen Beitrag.
    Geändert von oberallgeier (23.09.2017 um 10:05 Uhr) Grund: Korrektur "Selbst-b-au..."
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    .. Für kleinere Motore verwende ich gern den A4950 im SO8 ..
    Bitte könntest Du verraten wo Du die einkaufst? Digi-Key bietet fünf für 12,75€ plus Versand 18,0€ - und ich China ist das auch schon mal ausverkauft :-/. Danke im Voraus.
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    @oberallgeier

    Das (alte) Servo-IC hab ich nur erwähnt, damit man sich mal ansehen kann, wie das in einem typischen analogen Servo (auch heute noch) gelöst ist.

    Die A4950 hab ich schon eine Weile, kann mich nicht mehr erinnern, wo ich die her hab. Es könnte gut sein, daß die in einer professionellen Bestellung so mal mitgekommen sind

    Um China als Bauteillieferanten wird man als Privatmensch auf Dauer wohl nicht herumkommen. Ich verlinke mal einen Beitrag aus einem anderen Forum, der die Problematik der Lieferung von professionellen Händlern an Privatkunden deutlich macht. Bei Aliexpress hab ich die A4950 für rund einen Dollar gefunden, da werd ich mich dann auch wieder eindecken.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hallo Klebwax.
    .. Das (alte) Servo-IC hab ich nur erwähnt .. wie das in einem typischen analogen Servo (auch heute noch) gelöst ist.
    .. Bei Aliexpress hab ich die A4950 für rund einen Dollar gefunden, da werd ich mich dann auch wieder eindecken ..
    Danke für Deine Beschreibung(en). Ich habe soeben zehn (10!) Achtbeiner bei dieser Adresse bestellt (hatte ich vorher nicht :-/ gefunden gehabt) - die sind ja nur 5mm*6mm klein und die 2-54er Teilung ist ja auch extrem lötfreundlich *gg*. Abgesehen davon, dass das Teil wohl mit Lamas angeliefert wird (max 49 Tage) ists billig: Freies verschiffen 10 teile/los A4950ELJTR-T A4950 original 1 Los × € 7,97.

    Die Software geht allmählich voran (läuft so nebenher) - mal sehen, wie sich der 10bittige ADC beim Regeln verhält. Aber mein Mikromotor-Servo mit m328p/20 MHz und 1788 Encoderticks pro Umdrehung Abtriebswelle (0,20°/tick) funktioniert ja auch ziemlich ordentlich - auch wenn das feiner aufgelöst ist als die 1586 ADC-Ticks die das Poti (m)eines Billigservos bei einer vollen Umdrehung (hochgerechnet aus ca. 180°) macht. Mal sehen, die theoretische Auflösung ist ja dann immerhin noch rund 0,23° !
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    .. Die A4950 hab ich schon eine Weile, kann mich nicht mehr erinnern, wo ich die her hab ..
    Hallo Klebwax,

    nochmal danke für Deinen Hinweis auf den 4950; diesmal bitte Dich um Hilfe wegen Deiner Erfahrung mit dem Powerdingelchen.

    Ich habe seit gestern ein Streifchen mit 10 Stück da liegen - und bin durchs Datenblatt verwirrt. Im Datenblatt (A4950-DS, Rev. 4) sehe ich die Beschreibung der Anschlüsse und habe verstanden, dass 2 (ZWEI) PWM-Anschlüsse nötig sind: IN1 und IN2 (Bisher hatte ich pro Motor nur einen Controller-PWM-Pin benötigt).

    1 GND, 2 IN2, 3 IN1, 4 VREF Analog input,
    5 VBB Load supply voltage,
    6 OUT1 DMOS full bridge output 1,
    7 LSS Power return – sense resistor connection,
    8 OUT2 DMOS full bridge output 2

    Weiter:
    Zitat Zitat von Klebwax Beitrag anzeigen
    .. Für kleinere Motore verwende ich gern den A4950 im SO8 .. bis 3A .. eingebaute, einstellbare Strombegrenzung ..
    Mit VREF kann ich daher offensichtlich den maximalen Strom einstellen, den der 4950 ausgibt. Ist es dann richtig, dass ich mit z.B. 5V an VREF und 0,25Ω an LSS/Pin7 einen maximalen Strom von 2 A einstelle (5V / 10*0,25Ω = 2A) ? Was passiert wenn ich die Bemerkung "optional" bei LSS (vermutlich der Rs aus der Formel?) hernehme und KEINEN Widerstand anbringe (einfach Pinn NC lassen)?

    Bisher hatte ich meist Motortreiber der Art L293D verwendet, bei denen zwei "Richtungspinne" und ein PWM-Eingang verwendet werden - und sonst nix. Da unterscheidet sich der 4950 doch deutlich - und ich würde gern schon das erste Teilchen ordentlich beschalten.

    Danke für die Hilfe.
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Bisher hatte ich meist Motortreiber der Art L293D verwendet, bei denen zwei "Richtungspinne" und ein PWM-Eingang verwendet werden - und sonst nix. Da unterscheidet sich der 4950 doch deutlich
    Nicht wirklich. Der L293 hat zwei Eingänge, die jeweils eine Seite der Brücke ansteuern. Und dann gibt es einen weiteren Eingang, der die Brücke komplett abschaltet. Den kann man benutzen, um die Brücke mit einer PWM zu modulieren, man kann aber auch die PWM, je nach Drehrichtung auf den einen oder den anderen Brückeneingang legen. Der 4950 realisiert das mit nur zwei Eingängen. In dieser Tabelle sind die möglichen Schaltzustände aufgelistet

    Klicke auf die Grafik für eine größere Ansicht

Name:	Selection_009.jpg
Hits:	8
Größe:	27,5 KB
ID:	32976

    Interessant sind die beiden obersten und die beiden untersten Zeilen. Gibst du auf einen der Eingänge die PWM und hälst den anderen Eingang auf 0, dann schaltet die Brücke zwischen gesteuert und abgeschaltet hin und her. Das entspricht dem Mode, den du beim L293 verwendet hast.

    Eine H-Brücke hat aber noch mehr Zustände, das Timingdiagramm direkt vor der gezeigten Tabelle zeigt andere Modes.

    Mit der PWM, insbesondere wenn sie schneller als mit 50Hz (20ms) so mit ein paar kHz läuft, wird der Strom im Motor schon mal begrenzt. Nun hat der 4950 aber auch noch eine eingebaute Strombegrenzung. Dazu wird über einen Shunt, im Datenblatt Rs genannt, der Strom gemessen. Rs sollte so gewählt werden, daß beim maximalen Strom nicht mehr als 0,5V an ihm abfallen. Da passen 0,1 bis 0,2Ω. Den Strom, ab dem die Brücke bremst, stellt man mit der Spannung am VREF Pin ein. Da tuts ein Spannungsteiler an deiner µC Versorgung oder zum Entwickeln ein Poti.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    .. man kann aber auch die PWM .. auf den einen oder den anderen Brückeneingang legen. Der 4950 realisiert das mit nur zwei Eingängen. In dieser Tabelle ..
    Danke für diese Zusammenstellung, da gehen mir wieder ein paar Lichter auf. Die Tabelle bin ich gestern durchgegangen. Dabei hatte ich dann gemerkt (Griff ans Hirn!), dass auch die Motoransteuerung am originalen Babyorangutan (nur) über zwei Eingänge gesteuert wird, die abwechselnd mit nem PWM-Signal moduliert werden (oder auch nicht). Und genau das betreibe ich ja - gemäß Modellbauservo-Protokoll - seit Monaten mit nem Babyorangutan an nem Mikrogetriebemotor in archies Handgelenken. Nur ist dort die Istgröße des Motors ein zweispuriger Encoder und kein Poti.

    Und mit Deinen Erläuterungen weiß ich, dass ich das mit dem L293 auch machen könnte . . . !

    Danke.
    Geändert von oberallgeier (07.12.2017 um 09:46 Uhr) Grund: "oder" statt "der"
    Ciao sagt der JoeamBerg

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Servoansteuerung
    Von Gremlin im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 29.09.2011, 22:07
  2. Servoansteuerung
    Von sp33dy im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 07.01.2010, 19:24
  3. Servoansteuerung...
    Von Quattro im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 24.09.2007, 20:50
  4. servoansteuerung
    Von zwerg1 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 21
    Letzter Beitrag: 26.07.2005, 00:38
  5. Servoansteuerung
    Von Gast6 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 21.01.2005, 09:11

Berechtigungen

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