PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 Servos - gegenseitige beeinflussung



autoguider
17.12.2020, 19:15
Ich habe eine ähnliche Thematik wie in diesemThread beschrieben. https://www.roboternetz.de/community/threads/72324-Mehrere-Servos-aus-einer-Stromquelle?highlight=servo
Im Einsatz sind 2 dieser Servos. http://www.kumantech.com/kuman-17kg-270-degree-metal-gear-digital-servo-with-u-bracket-amp-side-mount-for-rc-robot-helicopter-airplane-car-boat-ky72-1_p0398.html
Der Stellwinkel von 270° ist für meine Applikation erforderlich.
Die Impulsweiten betragen 500µs - 2500µs. Diese passen und werden von einem ATMEGA328P erzeugt. Systemtakt 6,144 MHz.
Beide Servos hängen an einem 7805 (V_Vers) und haben eine gemeinsame Zuführung der versorgungsspannung über ein Flachbandkabel von ca. 1m Länge. 0,12mm² oder 0,09mm² pro Ader.
Es bewegt sich immer genau ein Servo. Keine gleichzeitige Bewegung.
Pulshöhe und Puklsweiten habe ich mit einem Oszi nachgemessen und fand diese in Ordnung.

Der Atmel und damit auch der Steuerimpuls werden von einem eigenen 7805 versorgt. (= V_MCU)
Um eine langsame Bewegung zu realisieren bekommt das Servo alle 40ms einen um 10,4 µs veränderten Steuerimpuls.
In der Anfangs und Endposition ändert sich die Impulsweite nicht.
Servo2 bewegt sich immer so wie es soll.
Servo1 ruckelt wenn die Impulslänge bei ca.2,24 ms ist. Meist hat das Servo dann noch 2 weitere "Schluckaufs" bis es in der Arbeitsposition( 270° / 2500µs) angekommen ist.
Auf dem Weg zurück passiert das Ruckeln wie auf dem Hinweg beobachtet.

Ist nur Servo 1 angeschlossen, dann arbeitet es ruckelfrei.
Austausch des Servos mit einem Baugleichen hat dieselben Resultate.



1. Merkwürdigkeit:
Am Ausgang der unbelasteten Schaltung (=Servo nicht angeschlossen)messe ich einen Pegel von 5V (V_MCU)
Sobald das Servo angeschlossen wird, hat der Steuerimpuls einen Pegel von ca. 1V.

2. Merkwürdigkeit:
Deshalb habe ich dann, um den Pegel auf 5V zu bekommen, die Leitungen der Steuerimpulse über jeweils 1k Widerstände an +5V gehangen. Keine Veränderung.
Dann habe ich nahe an den Servos noch einen 220µF Elko installiert um evtl. Spannungseinbrüche zu dämpfen.
Ebenfalls keine Veränderung in der Bewegung.

3. Merkwürdigkeit:
In der Initialisierungsroutine setze ich die Pulslänge für beide Servos auf 500µs.
Sofern beide Servos auch in der Ruhepositin sind ist alles gut.
Wurde aber abgeschaltet wenn z.B. Servo1 in Arbeitsposition war (=2500µs) dann vibriert das Servo.
Mit einen Kommando dass Servo1 in Arbeitsposition gehen soll erhöhe ich dann die Pulsweite sukzessive.
Wenn die Pulsweite zur physikalischen Position passt, dann macht die Servoachse einen kleinen Sprung rückwärts und dann wieder auf die Arbeitsposition zurück.
Ist das typisch?

Ich bitte um Eure Hilfe weil mir langsam die Erklärungen ausgehen.

beste Grüße
Christian

Wer am Bascom Code für die ISRs interessiert ist den verweise ich mit folgenden Link: https://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&p=79765#79765 oder um Nachricht in diesem Forum

oberallgeier
18.12.2020, 12:42
Hallo Christian!

Ich grins mich eins: "Neuer Benutzer .. Registriert seit 31.08.2007".


.. Servos hängen an einem 7805 .. bewegt sich immer genau ein Servo .. Pulshöhe und Puklsweiten .. in Ordnung ..Von Servos verstehe ich nicht allzu viel. Insbesondere von der Dynamik der (von Servo zu Servo verschiedenen) Servoregelung analoger bzw. digitaler Servos verstehe ich so gut wie nix. Zu allererst kommen mir die 40 ms etwas lang vor, das könnte ich testen (mein Tester geht bis 50 ms) aber das wäre auch nur für MEINE Servos zutreffend.

Das Problem mit Servos hinter Spannungswandlern kenne ich ähnlich, wie es von Dir beschrieben wird. Daher hatte ich heute einen kleinen Testaufbau gesteckt und den Spannungsverlauf der 7805-Versorgung eines Servos mit etwas höherem Strombedarf gemessen.

Testaufbau:
Servo HD 1501MG, Haltemoment lt. Datenblatt @ 4,8 V 152,1 Ncm (15,5 "kgcm").
Versorgung des Servo über separaten 7805 (NICHT 78S05!) durch
ein Labornetzteil, 9,8 V, Stromeinstellung 4,0 A max.
Servotester (Eigenbau) Clone arduino-nano @20 MHz; der Servotester
kann durch Knopfdruck sofort einen Offset von 1,6 ms auf die aktuelle
Einstellung erzeugen.
Oszilloskop ANALOG DISCOVERY 2, Anschlüsse : GND, Servoimpuls (Oszi-signal gelb), Servoversorgung (Oszi-signal blau).

Testbedingungen:
Servoperiode 20000 µs, Servopuls 826 µs (https://dl.dropbox.com/s/n4ibjqvfk3fy7eo/IMG_20201218_114920.jpg?dl=0) und in einem zweiten Test 2426 µs (https://dl.dropbox.com/s/hbcka9uuh5ezwop/IMG_20201218_114824.jpg?dl=0) , siehe verlinkte Bilder.

Test:
Einschränkung der Ergebnisse. Die Ergebnisse beziehen sich auf den bei mir verwendeten 7805 der im Übrigen nicht weiter analysiert wurde, sowie auf genau den einen, von mir verwendeten Servo der genannten Baureihe. Schwankungsbreiten wurden weder an Ausrüstung noch an Testobjekt erarbeitet. Die Zeitangaben des Servotesters stimmen auf wenige Mikrosekunden, unter ± 5 µs.

Oszilloskopbild (https://dl.dropbox.com/s/d0qy4qmj63xi2q7/Servo-HD1501-an-7805.JPG?dl=0):
Rund 9 ms nach der sprunghaften Änderung der Pulsdauer von 826 µs auf 2426 µs, um 1,6 ms,
fällt die Spannung am Servo um mehr als 2 V ab auf 2,8 V, mit einer durch kurze Pulse
unterbrochenen Erholung innerhalb von ca. 30 ms, also etwa 1,5 Servo-Signalperioden. Das dürfte einigermassen mit der Motorzeitkonstanten des Servomotors übereinstimmen.

Ich bediene meine Servos gleicher Bauart, WENN ich die über einen 78xx ansteuere, nur über 78S05-Typen, die statt der (bestenfalls! - "up to") 1,5 A Nennlast laut Datenblatt 2 A Nennlast ermöglichen. Allerdings haben meine Servoplatinen (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=629876&viewfull=1#post629876) standardmäßig die Möglichkeit die Stromversorgung unter Umgehung des Spannungswandlers einzuspeisen. Dann kann ich nen Akku mit ziemlich hoher Stromstoßfestigkeit verwenden.

Fazit: beim Versorgen von Servos (in meinem Fall analog) über Spannungswandler kann deren Anpassungszeit bei sprunghaftem Strombedarf (Motor fährt auf neue Position) so lange dauern, dass - mit Sicherheit störende - markante Spannungseinbrüche feststellbar sind. Ich vermute, dass vergleichbare Einbrüche Deine Servostörungen hervorrufen. Dass ein Elko diese Frequenzen abpuffert (ca. 300 Hz bis >1kHz) ? ? ?

Nachtrag:
Fast hätt ich es vergessen: Wenn ich mein Labornetzteil (das bei diesem Test verwendete KORAD 3005D) auf 0,95 A Stromlieferung bei der Spannung 9,8 V einstelle, dann knattert beim Anfahren des hier benutzten Testaufbaus die Überstromsicherung. Sprich: es werden an die 1A Strom gezogen bei diesem Servo - wenn der eingeschaltet wird - ohne dass eine bemerkenswerte Positionsdifferenz gefahren werden muss.

Searcher
18.12.2020, 13:21
1. Merkwürdigkeit:
Am Ausgang der unbelasteten Schaltung (=Servo nicht angeschlossen)messe ich einen Pegel von 5V (V_MCU)
Sobald das Servo angeschlossen wird, hat der Steuerimpuls einen Pegel von ca. 1V.

Hallo,
was ist Ausgang der unbelasteten Schaltung? Der Pin, an dem der ATmega328P den Steuerimpuls für die Servos ausgibt? Wenn dort bei dann angeschlossenem Servo die Spannung auf 1V sinkt -> Ist der ATmega-Pin auf Output konfiguriert?

Alle GND von Servos und ATmega miteinander verbunden?

Gruß
Searcher

oberallgeier
18.12.2020, 15:35
.. was ist Ausgang der unbelasteten Schaltung .. Ist der ATmega-Pin auf Output konfiguriert ..Ohhh mannooo - stimmt. Ich hatte das stillschweigend vorausgesetzt. Das ist bei Dir (*gg* auch *gg*) ein Erfahrungswert ?

Searcher
18.12.2020, 16:22
Das ist bei Dir (*gg* auch *gg*) ein Erfahrungswert ?
Ist ein wenig ein Schuß ins Blaue. Ob er trifft kommt drauf an wie Christian seine Signalerzeugung programmiert hat. Bei Verwendung des HW-Ausgangs eines Timers muß er ja den zugeordneten Pin auf Output programmieren. Sonst kommt da nicht das timererzeugte Signal raus.

Wenn er aber immer Pegelwechsel ins PORT Register schreibt, könnte es sein, daß er damit den Pullup immer aus- und einschaltet wenn der Portpin ein INPUT ist. Der Strom darüber könnte dann zu schwach sein um die Servos anzusteuern und die Spannung bricht deshalb zusammen. Das Oszi kann trotzdem bei unbelastetem Portpin ein 5V Signal zeigen.

Einen ähnlichen Effekt hatte ich tatsächlich mal. Nicht mit Servos aber ganz banal mit LEDs, die nicht richtig "brennen" wollten. Ich kann mich nur nicht erinnern, was das Oszi bei offenem Portpin und abgeschalteten Pullup angezeigt hatte. Der Portpin floatet dann ja.

Bin jetzt mal gespannt, wo sich der Hase tatsächlich im Pfeffer wälzt :-)

Gruß
Searcher

autoguider
18.12.2020, 16:49
Hallo Searcher, Hallo Oberalllgeier
guter Hinweis.

Hier die Konfiguration im BASCOM Programm:

Config Portc.1 = Output 'Pin 24
Config Portc.2 = Output 'Pin 25
Ich kann nur hoffen daß der Compiler das macht was er soll.

GND ist für V_MCU und V_Vers identisch.

Beide Spannungsregler 7805 werden von einem 12V Labornetzteil gespeist.
Ich kann mir nicht vorstellen daß der Eingang des Servos so niederohmig ist und den Pegel von PortC.1 so nach unten zieht.
Die Ausgänge sollte doch bis 20mA locker verkraften.

Um eine Übersicht des Strombedarf zu bekommen habe ich ein digitales Multimeter in den Stromkreis des Labornetzteils eingeschleift.

Schaltung ohne Sensor 30 mA
nur Servo1 eingesteckt 44 mA
nur Servo2 eingesteckt 45 - 56 mA
Servo 1+2 eingesteckt 65 - 70 mA
Servo1 in Bewegung, Servo2 eingesteckt 120 mA
Servo1 in Arbeitsposition, stehend, Servo2 eingesteckt 75 - 84 mA
Servo2 in Bewegung, Servo1 eingesteckt 120 mA

beste Grüße
Christian

oberallgeier
18.12.2020, 17:07
Hi Christian.

.. Beide Spannungsregler 7805 werden von einem 12V Labornetzteil gespeist ..Kann Dein Labornetzteil die Spannung regeln? Oder ist das wirklich ne Festspannung 12 V? Welchen Strom kann das Netzteil liefern? (oder einfacher für Dich: Typangabe - wenns nicht irgendein Exot ist).

Wenns regelbar wäre: dann könntest Du das Netzteil auf 5V einstellen, den Controller UND die Servos dran hängen, und dann den Aufbau testen.


.. Ich kann mir nicht vorstellen daß der Eingang des Servos so niederohmig ist ..Vorstellen ist gut, messen ist besser. Du hast schon Oszilloskopmessungen gemacht. Wie wärs, wenn Du die EINGANGSspannung der Servos (nach dem 7805) mit dem Oskar so misst wie ich es oben beschrieben hatte. Mit vergleichbarer zeitlicher Auflösung. Trigger war bei mir die Servo-Lieferspannung, fallende Flanke (= Spannungseinbruch).

Searcher
18.12.2020, 17:12
Ich habe gerade erst den Link zum mcselc Forum in Deinem ersten Post gesehen. Programm schau ich mir an. Ich versuchs weiter ...

Gruß
Searcher

autoguider
18.12.2020, 18:08
Hallo Oberallgeier,
es ist ein PeakTech 6080

Ich habe mit dem Oskar nachgemessen als Deine Oszillogramme sah.
Da ich meinen 2. taskopf verliehen habe, habe ich einfach eine Litze in den Eingang von Kanal 2 gesteckt.
Es sieht ganz vernünftig aus, Keine Einbrüche. Ich sehe dort für die Dauer des Impulses ca. 20V "Gezappel". Der Oskar hat eine bandbreite von 200MHz (Tek 2432).

beste Grüße
Christian

Searcher
18.12.2020, 18:54
Solange ich mich noch tiefer ins Programm grabe: Der AVCC Pin des ATmega328P ist schon sicher mit Vcc (5V) verbunden? Der versorgt auch PC0, PC1, PC2 und PC3.

Gruß
Searcher

autoguider
18.12.2020, 22:54
Genauso ist es.
Beste Grüße
Christian

oberallgeier
19.12.2020, 08:46
.. mit dem Oskar nachgemessen .. sieht ganz vernünftig aus, Keine Einbrüche. Ich sehe dort für die Dauer des Impulses ca. 20V "Gezappel" ..Hmmm, 20voltiges Gezappel - sieht vernünftig aus? Das klingt mir nicht wirklich schlüssig. Die Versorgung von Servos soll, wie ne übliche (gute) Versorgung, möglichst stabil sein, Rippel allenfalls im Millivoltbereich. Und ein 20V "Gezappel" würde ich mal ziemlich ernst sehen und dringend behandlungsbedürftig, zumal die Versorgung ja allenfalls 12 V sein kann - selbst da würde ich die 78xx-er schon als defekt erklären. Oder eine Induktivität in der gesamten Leitung suchen. Und zumindest für die künftigen Tests mit ner Freilaufdiode den Spannungsregler brücken.
Du siehst ja, dass laut meinem Oskarbild nach einem Einbruch der Servo-Versorgungsspannung sich wieder eine Erholung abzeichnet. Der Einbruch ist eindeutig dem Anfahren des Servos zugeordnet; der Trigger auf die fallende Flanke des Servo-(+) im Kanal der Servoversorgung löst das "Gezappel" zweifelsfrei aus.

Searcher
19.12.2020, 10:29
Ich komme so langsam weg von einem SW-Problem. In den, bei mcselec geposteten Codeschnipseln sehe ich keine anderen Schreibzugriffe auf GPIOs als auf PORTC der Servoports (PC1, PC2).

Hoffentlich versteckt sich da im übrigen Programm nicht noch ein Bug.

Ich finde das 20V Gezappel auch irritierend.

Bei Anschluß von Servo1 an PC1 brechen die Steuersignalpulse auf 1V zusammen. Bei Servo2 an PC2 nicht?
Portpin am ATmega kaputt!?

Wie sieht es mit LEDs statt der Servos aus? Ich nehme oft einen 1k Widerstand und eine LED mit 2V Flußspannung zum Testen wenn ich noch keine echte HW anschließen möchte. Schließt dann unerwartete Rückwirkungen aus den Servos heraus aus.

Man könnte dann auch die Servo Signalleitungen über Dioden an den µC anschließen und sehen was das Oszi zeigt:
PC1 ---- ->| ----Servo1
..............D

PC2 ---- ->| ----Servo2
..............D

Gruß
Searcher

autoguider
20.12.2020, 13:57
Hallo Searcher,
Sorry, ich habe zu schnell geschrieben. Es ist ein 20 mV Gezappel. 20 V wäre zu heftig allerdings per Selbstinduktion möglich.
Dafür habe ich in der Versorgungsspannug für die Servos eine Freilaufdiode vorgesehen.

Die Spannung der Ansteuerimpulse bricht bei beiden Servos zusammen sobald ich sie anschließe.

Die von Dir vorgeschlagenen Diode habe ich in die Signalleitung des ruckelnden Servos eingelötet.
Messung zwischen µP und Diode egab 1,9 V. Dahinter, d.h. nach der Diode und Servo gemessen ca. 300 mV. Das Servo reagiert nicht mehr.

Ich habe danach "spasseshalber" die Diode in Sperrichtung eingelötet. Dann messe ich vor der Diode die 5V TTL Spannung, wie zu erwarten war.
Hinter der Diode messe ich 0V.

Entschuldigung für das verlorengegangene m bei den Volts.

beste Grüße
Christian

oberallgeier
20.12.2020, 15:10
.. Die von Dir vorgeschlagenen Diode habe ich in die Signalleitung des ruckelnden Servos eingelötet ..Es wäre wohl nützlich, wenn Du uns Deinen Schaltplan mal zeigst. Muss nix aufwendiges sein, eine einfache Bleistiftskizze (https://dl.dropbox.com/s/orx884ec5x4gaba/s-test-2.jpg?dl=0) reicht. So ungefähr - ich mach manchmal sogar nen Belegungsplan (https://dl.dropbox.com/s/l2cnfg7s2jiy4ow/s-test-1.jpg?dl=0) dazu. Da versteht man meist mehr als von nem Foto (z.B. zu den vorigen Skizzen (https://dl.dropbox.com/s/muciqb0kzmt32k0/servotester_1663.jpg?dl=0)).
Ist das auf einer eigenen Platine aufgebaut oder auf einem Steckbrett?

Searcher
20.12.2020, 15:20
Hallo,
kein Problem wg. der mV.

Also das sieht für mich so aus, als wenn die Servos so viel Strom ziehen. daß die Spannung zusammenbricht. Deshalb scheint Servo1 nur halbseiden zu gehen. Das Servo2 gut läuft ist vielleicht nur Zufall. Ich kenne die Servos nicht, scheint mir aber zimlich unwahrscheinlich zu sein

Mit den Dioden in Sperrichtung werden die Ausgänge des µC ja überhaupt nicht belastet. Falls Du Leuchtdioden hast, die statt der Servos mit einem 1k Widerstand in Reihe an die Portpins nach GND schalten und messen. Sollten dann natürlich auch schwach leuchten. Statt 1k leuchten die mit 470 Ohm in Reihe schon bißchen besser. Nicht, daß die Portpins kaputt sind und die Spannung schon unter geringer Belastung zusammenbricht. Das scheint mir wahrscheinlicher.

Oder die Servos ziehen tatsächlich soviel. Dann über Transistoren mit Gewalt die Servos füttern. Das scheint mir aber kaum wahrscheinlich.

Oder auch andere Portpins ausprobieren. Bedeutet natürlich die ASM Routinen anpassen :-(

Gruß
Searcher

- - - Aktualisiert - - -


Es wäre wohl nützlich, wenn Du uns Deinen Schaltplan mal zeigst. .....
... und vielleicht auch das komplette Programm im Anhang oder so.

Gruß
Searcher

autoguider
20.12.2020, 22:35
Hier kommt der Plan.
Nichts besonderes. Von JP_Ausgang deht es über ein Flachbandkabel an eine Dsub Buchse (9 Polig) dann über ein Flachbandkabel wieder an einen Dsub Steckverbinder in eine Verteilplatine.
Von dort aus geht es an die Servos.
Der FET schaltet eine Beleuchtung (100 mA) an. Diese ist derzeit abgeklemmt und spielt bei den Problemen keine Rolle.


35365

beste Grüße
Christian

oberallgeier
21.12.2020, 09:16
.. mit dem Oskar nachgemessen .. Es sieht ganz vernünftig aus, Keine Einbrüche . Ich sehe dort für die Dauer des Impulses ca. 20V ..Danke für den Schaltplan.

Mein vorgestellter Bildschirmdump vom Oszilloskop ist sehr speziell. Dort liegt das Hauptaugenmerk auf der sprunghaften Änderung der Pulsdauer von 826 µs auf 2426 µs, also um 1,6 ms (daher der Trigger auf fallende Flanke des Vcc-Servo bei 4V !). Bei "normalem" Betrieb sehe ich keine Probleme. Allerdings weiß ich aus eigener Erfahrung, dass bei Servos hinter einem 7805 schon beim Anfahren erhebliche Störungen auftreten können, weil die eben - insbes. beim Anfahren - ein Vielfaches des Stroms vom "Normalbetrieb" ziehen - und das für Sekundenbruchteile. Is ja klar: ein DC-Motor zieht im Stillstand immer maximalen Strom . . . Diese Zeit hatte ich noch nie gemessen. Auch ne Strommessung . . . n Test mit meinen 3mΩ-Widerstand (5W) werde ich diese Tage auch nicht aufbauen.

Noch mal: der 7805 ist je nach Fabrikat für 1A (z.B. Toshiba) bis 1,5A (TI) spezifiziert. Und das war bei meinen wenigen Versuchen mit stärkeren Servos hinterm 7805 eindeutig zu wenig. Da Du ja zwei Servos an einem 7805 hast kann ich mir gut vorstellen, dass beim Einschalten mindestens einer ins Koma fällt. Vielleicht kannst Du doch mal nen 78S05 versuchen? Kompatibel bis auf spezifizierte 2A - und die sind immer noch ziemlich wenig für zwei große Servos. Oder, besser: versuchs doch mal mit nem Handy-Netzteil für Deinen Controllerzweig (USB - 5V/0,5A - reicht sicher für Deine Schaltung) und häng die beiden Servos an das 6080 @ 5V/3A. Und schau was dann passiert.

Anmerkung: im Schaltplan ist ein Mega5P dargestellt? Oder ist mein Bildschirm krank? Du schreibst von nem mega328P . . . ?

Searcher
21.12.2020, 15:15
Hallo Christian,

ich konnte es nicht lassen und habe versucht auch ein Programm zu machen. Wenn Du dich traust, kannst Du das Angehängte probieren. Ich hoffe ich habe die Funktionen richtig getroffen. Ist mit LEDs getestet, die etwa 6 mA aus den Ausgängen gesogen haben. Wird mit einem Taster an PD7 bedient. Laut Oszi keine Probleme.

Gruß
Searcher

EDIT Bug im Programm entdeckt und berichtigt: POP 19 statt POP 29

autoguider
31.12.2020, 12:19
Vielen Dank für Eure Antworten und Hilfen.
Auf Anraten des Herstellers habe ich die Versorgungsspannung der Servos mittels 7806 auf 6V erhöht. Es ruckelt nicht mehr. Dennoch bleiben Ungereimtheiten.
Der Logikpegel bricht nach wie vor auf 1V ein. Ich habe testweise ein HYX-S0009 Servo an meine Schaltung gehangen. Der Logikpegel blieb bei 5V. Also scheint es an den Servos zu liegen.

Zu Beginn und zum Ende eines Steuerimpulses gibt es Spitzen in Spannung und Strom.
Die Spannungsspitzen konnte ich durch Einbau eines 200 nF Folienkondensators in Nähe des Servos abfangen. Die Spitzen im Strom dagegen nicht. Mit dem Logikpegel von 1V bin ich nicht glücklich. Der hersteller gab bisher keine Antworten dazu.

Meine Oszillogramme möchte ich gerne mit Euch teilen.
In den Oszillogrammen bezeichnet S1 Servo 1 und S2 Servo 2. Die Messungen erfolgten immer an Servo1.
U-Control_1 .jpg35392 zeigt den Steuerimpuls vor Einbau des Folienkondensators. Servo2 erzeugt Spannungsspitzen im Steuersignal von Servo1.
Danach habe ich jedes Servo jeweils mit eigenen Zuleitungen für Masse und Versorgungspannung (6V) versehen und einen 200 nF Folienkond. zwischen Impulseingang von Servo1 und Masse gelegt.
Siehe U_Control_HiRes.jpg.

35393Die Impulsform ist noch nicht glatt.
In U_Control_HiResWide.jpg sieht man daß der Einfluß von Servo2 deutlich verringert ist.

35394
Danach habe ich beide Servos von der Schaltung getrennt d.h. Betrieb im Leerlauf.
Messung an der Impulsausgang für Servo1.
In UControl_NoServo.jpg sieht man weiterhin Spannungsspitzen zu Beginn und Ende des Impulses.
35395
Auch hier sind Auswirkungen von Servo2 erkennbar.
Die Größe und Art des Überschwingens sieht man auf U_Control_NoServoStart.jpg
35396
Nun zur Strommessung:
Zunächst habe ich die Messungen an einem 1 Ohm Längswiderstand durchgeführt. Auf Anraten eine Freundes, der im Bbereich Hardwareentwicklung tätig war, habe ich mir ich aus 2 parallelgeschalteten 1 Ohm Widerständen einen 0,5 Ohm Widerstand gebaut und in die Impulsleitung von Servo1 eingebracht.
Um die Varianz der Schwankungen zu erfassen betrieb ich den Oszi zuerst im Envelope Modus. Danach ergibt sich bei Servo1 eine Spannungsspitze von 620 mV was einem Strom von 1,2 A entspricht.
35397
Siehe I_Control_05Ohm_2.jpg. Auch Servo2 macht sich bemerkbar.
In I_ControlHiRes.jpg ist der Stromverlauf des Steuerimpulses von Servo1 höher aufgelöst dargestellt.
35398
Danach wollte ich wissen wie die Verhältnisse im Leerlauf sind.
Zunächst entfernte ich das Bandkabel und konnte einen Einschwingvorgang mit max. Amplitude von ca. 200 mV -> 400 mA messen bei ca. 3,6 MHz. Diese war nach 3 µs abgeklungen.
Nach Einstecken des Bandkabels vergrößerte sich der Überschwinger auf 1500 mV bei 4MHz Frequenz. Diese war nach 5µs abgeklungen.
Dann steckte ich das andere Ende an meine Verteilplatine ( mit 200 nF Kond.) der Überschwinger betrug dann 400 mV -> 800mA @160 kHz. Eingeschwungener zustand nach ca. 40 µs erreicht.
Das klingt plausibel da die Kapazität und die Induktivität des Schwingkreises erhöht wurde.

Ich hatte eigentlich nicht damit gerechnet in Bereiche der HF-Technik zu kommen.
Der Aufbau auf Lochrasterplatine ist sicherlich auch nicht HF konform.

Habt ihr evtl. Empfehlungen zu Servos mit 270° Stellbereich und doppeltem Lager?

beste Grüße
Christian

Moppi
31.12.2020, 13:39
Die Ausgänge liefern nur einen gewissen Strom, wenn da irgendetwas faul ist, kann es sein, dass die Spannung einbricht. Mit Pech gehen die Ausgänge vlt. auch kaputt. Deshalb sollte da mal der Strom zwischen Ausgang und Servosteuereingang gemessen werden. Was immer da auch los ist. Damit der Pegel erhalten bleibt, kann man einen Widerstand an den Ausgang schalten, bevor es zum Servosteuereingang geht. Zieht der Servo am Ausgang aus irgendeinem Grund massig Strom, geht die Spannung runter. Das funktioniert dann wohl nicht. Also den Strom begrenzen, dass die Spannung oben bleibt, auf einem Level, den man bei HIGH noch als HIGH-Pegel bezeichnen kann. Wie viel mA liefert so ein Ausgang? Man kann ja mal bei 470 Ohm anfangen (vielleicht auch bis ein Kilo-Ohm). Nun kann auch nicht mehr passieren, als dass der Servo damit nicht funktioniert, aber wenigstens ist der Ausgang nicht überstrapaziert. Den Servo selber kann man ja erst einmal aus einem Akku versorgen, der genug Strom liefert (statt 780x). Wer weiß, wie viel Ampere der zieht. Oberallgeier sagt ja schon sicherer ist 2A.

MfG

autoguider
31.12.2020, 15:30
Weitere Untersuchung zur Versorgungsspannung (6V).

An dem KUMAN Servo treten seltsame Spannungseinbrüche, auch im Stillstand des Servos auf.
Da ich auf AC gekoppelt habe, ist die 0 Linie des Oszillogramms auf 6V DC.
Immerhin sind es 500 mV Einbruch. Auch im Stillstand
35399

Hier in höherer Auflösung:
35400

Zum Vergleich habe ich dann das HYX-S0009 angeschlossen und Messungen durchgeführt.
Im Stillstand gibt es auch Spannungseinbrüche zu Beginn und Ende des Steuerimpulses.
35401 und in hoher Auflösung 35403
und hier im Envelopemodus und über 50ms
35402

Das Oszillogram während der Bewegung des HYX-.. war etwas überraschend.
35405
Es sieht nach einer abklingenden e-Funktion aus. Nach ca. 50 ms ist 0 Niveau erreicht. Die Spannungseinbrüche sind etwa 500-600 mV. Aber nur in der Bewegung.
Eine eigene 6V Versorgung mittels Akku möchte ich für die Servos nicht installieren.
Ich kann noch einen 470µF Kond. am Servo platzieren. 220µF haben nichts gebracht.
Für mich bleibt weiterhin fraglich ob andere Servos die Lösung sind oder ob/was ich noch an der Stromversorgung nacharbeiten muß.

beste Grüße
Christian

- - - Aktualisiert - - -

Hallo Moppi,
den Strom habe ich bereits gemessen. Ich habe auch schon 1k PullUp Widerstände eingebaut gehabt. Pegel blieb bei 1 V.
Seltsam ist daß beim HYX-S009 der Logikpegel bei 5V bleibt.
Deshalb vermute ich daß etwas mit dem Servo faul ist.
Ich kann mir nicht vorstellen daß ein Logikeingang so niederohmig sein kann.
Seltsamerweise benehmen sich die Servos gleich.
Deshalb die Nachfrage nach Ersatzmöglichkeiten.

Ich überlege mir noch einen Transistor einzubauen welcher genug Strom bringen kann.

beste Grüße
Chriatian

Moppi
31.12.2020, 16:16
Hallo Christian,


Ich habe auch schon 1k PullUp Widerstände eingebaut gehabt. Pegel blieb bei 1 V.

nicht Pullup! R in die Signalleitung zum Servo einklinken. Die Leitung, die am Ausgang des µC hängt. Die Leitung, wo das PWM-Signal drüber läuft. Ist doch die, welche auf 1V einbricht?

Port-Ausgang mit PWM -> 470 Ohm -> Servo

MfG

Searcher
31.12.2020, 16:35
Für mich bleibt weiterhin fraglich ob andere Servos die Lösung sind oder ob/was ich noch an der Stromversorgung nacharbeiten muß.

Es sieht tatsächlich so aus, als wenn der Steuereingang der Servos zu viel Strom zieht. Dadurch bricht die Spannung am ATmega Ausgangspin zusammen. Ich denke, das daß das eigentliche Problem ist. Die scheinbare Beeinflußung der beiden könnte über die interene Überlastung des µC zustande kommen. Bei absolute Maximum Rating stehen im Datenblatt 40mA pro Portpin. Laut I_Control_05Ohm_2.jpg (https://www.roboternetz.de/community/attachment.php?attachmentid=35397&d=1609416593) im Beitrag (https://www.roboternetz.de/community/threads/75566-2-Servos-gegenseitige-beeinflussung?p=663294&viewfull=1#post663294) fließen über die Impulslänge fast 160mA, wenn ich das Oszi-bild richtig interpretiere.

Das ist für ein Servo meiner Meinung nach nicht in Ordnung. Auch wenn die Servo Serie so ausgelegt ist, kann man die ja nur mit erhöhtem Aufwand ansteuern.

Die HF-Störungen, Einschwingen und sonstige Nadelimpulse, die Du gemessen hast würde ich erst mal nicht überbewerten. Oft hat man Fehlmessungen wegen unzureichender GND Verbindung, zu langen Kabeln oder Sonstiges. Standardabblockkondensatoren und Standardpufferelkos sollten erst mal reichen. Auf Steckbrett hatte ich bei zu vielen Elkos an jeder Ecke plötzlich Schwingungen in der Versorgung.

Leider habe ich zu wenig praktische Erfahrung mit Servos und kann keine empfehlen. Versuchsweise könnte man trotzdem mal für eine echt starke Stromversorgung für die Servos zum Testen sorgen. Transistor zwischenschalten hast Du ja auch erwähnt.

Kurz: Für mich sind die Servos jetzt die Schuldigen.

Gruß
Searcher

autoguider
31.12.2020, 18:45
Hallo Moppi,
ich habe den 470 Ohm Widerstand in die Signalleitung eingebaut.
Prozessorseitig messe ich die 5V. Damit wird der Ausgang des Prozessors nicht mehr mit soviel Strom belastet.
Servoseitig messe ich 800 mV Pegel und die abklingende e-Funktion eines RC-Gliedes.
Statt 500µs habe ich jetzt eine Inpulsbreite an der Basis von 560 µs.
das ist sicher kompensierbar.

Hier das Oszillogramm.
35406
Das Servo scheint mit dem Pegel zurechzukommen.

beste Grüße
Christian

Moppi
01.01.2021, 07:00
Hallo Christian,

diese 0.8V sind normal zu wenig für einen HIGH-Pegel, Du schreibst aber, der Servo kommt damit zurecht.



Wenn ich zum Beispiel an einer LED messe, messe ich vor Widerstand auch die volle Spannung vom Ausgang, an der LED - nach R - 1.3V (z.B.). Und ebenso, weil ich davon gerade mehrere in Betrieb habe, messe ich bei einem Transistor, der voll durchgesteuert ist (als Schalter betrieben wird), vor Basiswiderstand die volle Steuerspannung und an der Transistorbasis 0.8V. Es sieht wohl so aus, dass in dem Servo ein Transistor verbaut ist, der da am Steuereingang liegt. Gibt man dort die volle Spannung drauf (5V) ist der voll durchgesteuert.

Ich habe eine Lüftersteuerung mit einem ATmega328P gebaut und Transistoren zur Ansteuerung des Lüfters. Die Ts steuere ich dort auch über Basiswiderstand an. Einen sogar mit 2.2kOhm und einen mit 1kOhm. Normal sind aber 470Ohm ausreichend. Man kann den Basiswiderstand berechnen. Da hängt ja noch ein langes Kabel dran, zum Servo. Vielleicht sollte der R dann eher klein gewählt werden (hier scheint einer zu fehlen?).

Ein Transistor im Servo erzeugt offenbar diese 0.8V am Eingang, wo Du misst. Wenn ich weiter spekuliere würde ich auch sagen, dass der Transistor dann, weil nicht unüblich (mache ich auch so, bei Open Collector, als Schalter) ein NPN mit Emitter gegen Masse (ohne Emitterwiderstand) ist. Dann liegt die Basis - Emitter - Strecke des T gegen GND. Und Du misst die Basis-Emitter-Spannung (~0.8V, typisch für Silizium-T). Wahrscheinlich ist am Collector noch ein Widerstand gegen Plus der Digitalversorgngsspannung im Servo, um ein passendes HIGH-Signal für die nachfolgende Elektronik zu erzeugen.

Dann fungiert am Steuereingang des Servo ein Transistor als einfacher Schaltverstärker und original ohne Vorwiderstand.




MfG

- - - Aktualisiert - - -

Vermutlich darf der Basiswiderstand sogar >1k sein. Um den genau zu berechnen, müsste man die Daten des T kennen. Beim T als Schalter geht es aber darum, dass der voll durchsteuert. Dafür braucht der einen gewissen Strom. Meist spielen dann ein paar mA hin oder her keine Rolle. Wenn der T unbekannt ist, könnte man den Widerstand ermitteln, in dem man schaut, mit welchem Basiswiderstand (470 Ohm bis 10kOhm) der am besten zurecht kommt. Dafür kann man ja einen Spindeltrimmer vor die Basis setzen. Vielleicht nicht gerade 100kOhm als Trimmer, der lässt sich nicht so fein einstellen. Aber 10k vielleicht und dann ganz behutsam dran drehen. Wenn man meint einen "passendsten" Widerstandswert gefunden zu haben (vielleicht auch im Verbund mit mehreren Servos und anderer Beschaltung), kann man den Trimmer aus der Schaltung entfernen und den Widerstand dort messen.

- - - Aktualisiert - - -

Frohes und zufriedenes Neues Jahr 2021!

autoguider
05.01.2021, 17:40
Hallo Moppi, Searcher und Oberallgeier,
vieolen Dank für Eure Hilfe. Die Schaltung funktioniert so wie ich mir das wünsche.
Keine Ruckeln, vernünftige Signalpegel.

Anscheinend ist im Steuereingang des Servos kein, oder ein viel zu kleiner Basiswiderstand eingebaut.
Selbst mit 80 k als Längswiderstand funktionierte das Servo einwandfrei.
Da ich dann Abklingdauern im Steuerimpuls im Bereich von 3ms hatte entschied ich mich für 10k als Längswiderstand. Aber es drehte trotzdem. Genauigkeit?
Ich habe mich danach für 10k als Wert für den Längswiderstand entschieden.
Die 10 nF Kapazitäten, welche ich zum Abfangen der Spannungsspitzen eingebaut hatte, habe ich wieder entfernt weil die Spitzen keinen merklichen Einfluß auf die Funktion des Sevos hatten.
Zudem verbreiterte die Kapazität die Impulsbreite um 40µs. Das sind bei mir 4 Stufen in der Drehung. Da nicht notwendig verzichtete ich auf die Kap.

U Control an der CPU: saubere 5V, geringe Strombelastung des µP. Keine Überschwinger!

35413


Ab hier nur Darstellungen von U_Control am Servo gemessen:

Auf dem Weg zum gewählten Widerstandswert. 40k sorgen für Impulsverbreiterung

35415 -> 35414

Die Spannung liegt bei 0,7-0,8 V und entspricht dem eines pn-Übergangs. Leichtes Zappeln.

Im Envelope-modus werden die Einstreuungen des anderen Servo sichtbar. Diese Spitzen haben augenscheinlich keine Wirlung:

35416

Bei der Betrachtung über mehrere Zyklen sieht es so aus als ob unterschiedliche Zeitkonstanten am Werke sind:
35418

Meßergebnisse für gewählte Konstellation d.h. 10k Längswiderstände , keine 10 nF Kondensatoren:
35417
Paßt die Impulsweite des Steuerimpulses nicht zur der tatsächlichen Stellung des Servo, dann vibriert das Servo.
Das Vibrieren hält an bis die zur Position passende Impulsbreite erreicht ist.
Bis dahin ergibt sich in der Steuerspannung folgender Verlauf:

35419

Beste Grüße
Christian