PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Mikroplatine zur Servoansteuerung



oberallgeier
31.08.2017, 09:08
Hallo alle,

etliche Servos der Billig(st)klasse (http://rn-wissen.de/wiki/images/5/54/Servo-hack2_mini.jpg)

......http://rn-wissen.de/wiki/images/5/54/Servo-hack2_mini.jpg

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 (https://www.roboternetz.de/community/threads/70923-Wie-sieht-der-optimale-Signalgang-f%C3%BCr-einen-Digitalservo-aus-%28Servo-singt-bei-Last%29?p=638615&viewfull=1#post638615) 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

oberallgeier
17.09.2017, 09:57
- 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 (https://www.pololu.com/picture/view/0J1412) , 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 (http://rn-wissen.de/wiki/index.php?title=Servos#Ansteuerung:_Signalform_und _Schaltung) 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 (https://dl.dropbox.com/s/g69zqopc3v1zeyn/Sscope_capt_17092017-0952.png?dl=0) >am Servomotor< sowie mit mässiger Belastung von Hand mit Pulslänge von etwa 9 ms (https://dl.dropbox.com/s/k62hzre0plseghe/Sscope_capt_17092017-0950.png?dl=0), ED ca. 45%. Bemerkenswert für mich ist die gemessene Spannung von etwa 0,5 Vcc direkt am angetriebenen Servomotor - IM Betrieb.

......https://dl.dropbox.com/s/j8pvtw1h9scsdd7/Sscope_capt_17092017-0950-20%25.jpg?dl=0

Zur zusätzlichen Information der Bildschirmdump vom Scope zum Ansteuerungspin (https://dl.dropbox.com/s/2y4eo6lhfigpsby/Sscope_capt_17092017-1050.png?dl=0) 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.

Klebwax
17.09.2017, 17:40
Die MotorPWM stimmt in der Frequenz mit der Periodendauer (http://rn-wissen.de/wiki/index.php?title=Servos#Ansteuerung:_Signalform_und _Schaltung) 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

oberallgeier
18.09.2017, 08:38
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 (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=625271&viewfull=1#post625271)-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.

oberallgeier
18.09.2017, 13:09
.. 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.

Klebwax
19.09.2017, 09:58
@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 (https://www.mikrocontroller.net/topic/430135#5145761), 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 (https://www.aliexpress.com/item/Free-shipping-10pcs-lot-A4950ELJTR-T-A4950-original/32820314665.html?spm=2114.search0104.3.2.FtfXn2&ws_ab_test=searchweb0_0,searchweb201602_5_10152_10 065_10151_10068_10344_10342_10343_10340_10341_1019 3_10194_10304_5550020_10307_10137_10060_10302_1015 5_10154_10056_10055_10054_5470020_10059_100031_100 99_5460020_10338_10339_10103_10102_440_10052_10053 _10107_10050_10142_10051_10320_10321_10322_5380020 _10326_10084_10083_10080_10082_10081_10177_10110_1 0111_10112_10113_10114_143_10180_10312_10313_10314 _10184_10078_10319_10079_10073_10186,searchweb2016 03_23,ppcSwitch_3&btsid=faecff25-27a3-493a-b3d7-175ae4c7c953&algo_expid=6052054a-04b0-41e8-b99e-36b54af6bf37-0&algo_pvid=6052054a-04b0-41e8-b99e-36b54af6bf37), da werd ich mich dann auch wieder eindecken.

MfG Klebwax

oberallgeier
23.09.2017, 09:22
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 (https://www.aliexpress.com/item/Free-shipping-10pcs-lot-A4950ELJTR-T-A4950-original/32820314665.html?spm=2114.search0104.3.2.FtfXn2&ws_ab_test=searchweb0_0,searchweb201602_5_10152_10 065_10151_10068_10344_10342_10343_10340_10341_1019 3_10194_10304_5550020_10307_10137_10060_10302_1015 5_10154_10056_10055_10054_5470020_10059_100031_100 99_5460020_10338_10339_10103_10102_440_10052_10053 _10107_10050_10142_10051_10320_10321_10322_5380020 _10326_10084_10083_10080_10082_10081_10177_10110_1 0111_10112_10113_10114_143_10180_10312_10313_10314 _10184_10078_10319_10079_10073_10186,searchweb2016 03_23,ppcSwitch_3&btsid=faecff25-27a3-493a-b3d7-175ae4c7c953&algo_expid=6052054a-04b0-41e8-b99e-36b54af6bf37-0&algo_pvid=6052054a-04b0-41e8-b99e-36b54af6bf37), 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° !

oberallgeier
22.10.2017, 10:05
.. 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:

.. 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.

Klebwax
23.10.2017, 07:27
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

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

oberallgeier
23.10.2017, 09:45
.. 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 (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=625271&viewfull=1#post625271). 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.

oberallgeier
07.12.2017, 09:43
Ist der A4950 hinüber? Klebwax - vielleicht kannst Du mir raten?

So - es hatte etwas gedauert bis es richtig weiterging. Der Gund war einfach: zuerst die vorhandene Quelle der Servo"simulation" die mit Encoder läuft - Archies Handdreh - NUR MAL EBEN angepasst an den Abtriebswellen-Poti der Modellbauservos .. ein Fehler nach dem andern, eben "je Änderung, desto Fehler". Schließlich ganz einfach: die neue Software wurde vollständig neu aufgebaut und in den beiden folgenden Teststationen betrieben.

Nun läuft auf einer Experimentierplatine ein mega328 in einem babyorangutan, 8 MHz interner Oszillator, 9600 Baud UART, dessen Motortreiber TB6612FNG hat eine vergleichbare Wahrheitstabelle wie der A4950. Steuerung von einem Servocontroller (selfmade, nanoClone mit 20 MHz Quarz), 20 ms Periodendauer, Pulslänge 0 µs bis 2864 µs. Und der Servo dreht prächtig je nach Positionsvorgabe des Servotesters.

Also neuer Aufbau auf einem Steckbrett mit Ziel den A4950 zu verwenden. Ein mega328 in einem nanoClone, 8 MHz interner Oszillator, UART wie oben, dazu der A4950 auf Lochrasterplatine montiert und verkabelt. Bei Testbetrieb mit Regelung wurde gemessen : PWM-Periode 256 µs (Toleranzen von intOszillator m328#), d.h. etwa 3,9 kHz. SollPosition (Ziel-Controller) 15 .. 957 Digits am Eingang PD2 = Ansteuerung vom Servotester, IstPosition 5 .. 1015 Digits vom ADC4 / ServoPoti-Abgangswelle. Ausgabe der Daten zur Kontrolle im Modus "Regelungstest" über UART im Sekundentakt, Kontrolle der PWM-Ausgänge ((OCR0A, OCR0B) mit Oszilloskop. Damit sind die Regelungswerte und die Controllerausgänge an beiden Testaufbauten gleich.

Der A4950 wurde nach Datenblatt A4950-DS, Rev. 4 verkabelt. IC-Gehäusepunkt bei 1/GND. VREF und VSS bleiben nc, später ein Test mit 5V auf VREF und 0,2Ω (kurzer Eisendraht) gegen GND an VSS. Der Effekt bleibt gleich : der Servomotor dreht sich nicht obwohl die Eingänge IN1 und IN2 entsprechend beaufschlagt werden: entweder 1(PWM)/0 oder 0/1(PWM). Auch ein Test mit 5V an IN1 und GND an IN2 ergab keine Differenzspannung zwischen OUT1 und OUT2 (VREF + VSS unbeschaltet bzw. 5V-VREF und 0,2Ω gegen GND an VSS).

Fragen:
Ist der A4950 hinüber?
Wie empfindlich ist der (Löten, Elektrostatik beim Anfassen etc)?
Ich habe ja noch 9 Stk 4950er im Vorrat . . . aber vielleicht habe ich ja schon jetzt etwas falsch gemacht.

oberallgeier
08.12.2017, 14:12
Stand 08. Dez. 2017, 14h28
Ein neuer Adapter für den A4950 wurde gelötet und im Steckboard eingebaut. Test: VREF und Vss nicht beschaltet.
Ergebnis: OUT1 und OUT2 liefern trotz PWM-Eingangssignalen konstant ca. 4 V auf beiden Kanälen. Dies ist unabhängig davon ob auf den Eingängen IN1 und IN2 ein PWM-Signal 0..250 µs von 256 µs Periodendauer anliegt .. jeweils ein Kanal high und der andere low oder ob dauerhaft +/- bzw. -/+ anliegt.

Nachtrag:
Vorerst Ende des Projektes.
Einerseits wegen des bisher schleppenden Fortgangs, andererseits sehe ich mittlerweile keinen gangbaren Weg, wie ich mit der Servo-Schnittstelle (5V .. 6V und Signal) zurechtkommen sollte, wo der Motortreiber für Load Supply Voltage erst ab 8 V spezifiziert ist. Grundidee ist ja ein wirklich minimalistischer Aufbau - so ne Art Huckepack von Controller und Motortreiber, so gut wie kein Hühnerfutter. Schade.

Klebwax
09.12.2017, 01:14
Nachtrag:
Vorerst Ende des Projektes.
Einerseits wegen des bisher schleppenden Fortgangs, andererseits sehe ich mittlerweile keinen gangbaren Weg, wie ich mit der Servo-Schnittstelle (5V .. 6V und Signal) zurechtkommen sollte, wo der Motortreiber für Load Supply Voltage erst ab 8 V spezifiziert ist. Grundidee ist ja ein wirklich minimalistischer Aufbau - so ne Art Huckepack von Controller und Motortreiber, so gut wie kein Hühnerfutter. Schade.

Schade. Minimalistischer als mit den analogen Servobausteinen wirds schwer. Man kann es aber besser machen. Ich schrieb



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.

Was ich mit Schwachstelle der Servos meinte, ist scheinbar nicht ganz rübergekommen. Historisch gab es in Fernsteuermodellen einen Akku für die Elektronik. Das waren 4 NiCads, rund 5V. Damit wurde der Empfänger und die Servos betrieben. Da konnte man z.B. 74xx Digital-ICs einsetzen. Die Antriebsenergie lieferte ein Verbrenner, das hatte mit diesem Akku nichts zu tun.

Inzwischen ist das ganz anders geworden. Der Antrieb ist elektrisch hat hat eine wesentlich höhere Spannung als 5V. Das ist aus Gründen des Wirkungsgrades auch erforderlich. Die Servos sind aber bei den rund 5V geblieben. Mit modernen Akkus sind 5V mit ausreichend Leistung für eine große Zahl von Servos schlecht darstellbar. Daher werden die Servos gerne über einen Regler (BEC) versorgt. Aber auch das ist nicht ohne Probleme. Ein Servo hat, je nach Typ, einen Spitzenstrom von 1,5 bis 2,5A. Ein Regler für 4 Servos muß also einen Spitzenstrom von 10A liefern können, anderenfalls schaltet der Regler zum Selbstschutz ab, was wiederum die Elektronik aus dem Tritt bringt. Das ist das gängige Problem bei der Verwendung von Servos nicht nur hier im Forum. Im Normalbetrieb fließt zwar ein wesentlich geringerer Strom, dafür hat der Regler bei Teillastbetrieb einen schlechten Wirkungsgrad.

Ein Akku hat diese diese Probleme nicht. Stromspitzen steckt er mühelos weg, die Spannung knickt nur ein wenig ein. 5V passen aber nicht zu den heute üblichen Lithium Akkus. Bei 2S muß man mit über 8V rechnen, also zu viel, mit 1S hat man am Ende weniger als 3V, also viel zu wenig. Daher mein Vorschlag, die Versorgung der Servomotoren von der Versorgung der Elektronik zu trennen. Das ist nicht ganz auf meinem Mist gewachsen, Dynamixel z.B. macht das auch so.

Der Ansatz sieht dann so aus: an einem 2S oder 3S (oder auch mehr Zellen) Akku werden die/alle Motore direkt betrieben, sowohl der Antrieb als auch die Servos. Die Treiber werden passend zu den Motoren gewählt, der A4950 z.B. für die kleineren, andere für die größeren. Die gesamte Elektronik des Modells oder Bots wird mit 3,3V bzw 5V versorgt. Ein Regler dafür ist leicht zu realisieren, entweder als Hybrid wie die Recom Schaltregler (https://www.recom-power.com/de/emea/products/switching-regulators.html) oder mit preiswerten Chinareglern (https://www.ebay.de/itm/5-x-DC-Spannung-Step-Down-Schaltregler-Netzteil-Modul-Wandler-Konverter-LM2596S/182545080096?hash=item2a8088df20:g:6Q8AAOSwHHFY~19 C). Da geht es auch nur um Bruchteile eines Amperes.

Man kann trotzdem die gängige Servoschnittstelle beibehalten. Die typischen RC-Motorregler zeigen es. Sie werden an der klassischen Servoschnittstelle betrieben, die Motorversorgung geht aber nicht über diese Schnittstelle. Auch einen BLDC betreibt man so. Ein Servo kann man ähnlich aufbauen.

Ein Servostecker hat drei Leitungen: GND, Servosignal und Versorgung. Im Servo selbst sind ein kleiner µC und ein Motortreiber. Der µC (und nur der µC) wird vom Servostecker mit rund 5V versorgt. Er wertet das Servosignal (und das Poti) aus und steuert die Brücke an. Die Motorspannung der Brücke wird aber direkt vom Akku geliefert und ist nicht an die 5 bis 6V Grenze der Elektronik gebunden. Es wird direkt der Fahrakku verwendet. Das geht auch mit den üblichen Motoren, man muß nur den Duty-Cycle auf einen passenden Wert (kleiner 100%) begrenzen. Das ginge sogar automatisch, man misst mit dem ADC die Brückenversorgung und passt den maximalen Duty-Cycle an den Motor an.

Ein solches Servo wäre pflegeleichter als die üblichen. Auf dem Servostecker hat es nur einen Strombedarf von ein paar Milliampere für den µC, wenn es mal kräftig zur Sache geht, muß der Akku liefern. Und durch den Einsatz eines µCs können Zusatzfunktionen wie ein Blockierschutz oder eine Fail-Safe-Automatik realisiert werden. Und wenn man sich von der Servoschnittstelle emanzipiert und z.B. i2c verwendet, kann man auch Drehgeschwindigkeit oder maximale Winkel einstellbar machen (siehe auch Dynamixel).

Ist ein wenig länger geworden, sorry oberallgeier, wenn ich deinen Thread zugetextet habe.

MfG Klebwax

oberallgeier
09.12.2017, 10:18
Danke für Deine Antwort.


.. Ist ein wenig länger geworden, sorry oberallgeier, wenn ich deinen Thread zugetextet habe ..Du liebe Zeit, das ist doch ein prima, informativer Beitrag. Zugetextet wäre es doch nur, wenn der Informationsgehalt im Missverhältnis zur Wortanzahl stünde. Das ist ja hier wirklich nicht der Fall. Dagegen schreibe gerade ich immer sündlange Texte (tldr :-/ ). Danke für Deine Ausführlichkeit.


Schade. Minimalistischer als mit den analogen Servobausteinen wirds schwer ..Stimmt. Daher meine Absicht einen Motortreiber auf den Controller zu kleben - Thermalpad nach aussen, die paar wenigen Datenleitungen mit kurzen, dünnsten Drähten dranzulöten und schon würde das Ganze in einen Mikroservo passen. Vorteile: ich fände das mal ein passables Recyclingprojektchen: es liegen aus grauer (https://www.roboternetz.de/community/threads/32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm?p=304931&viewfull=1#post304931) und jüngster Vorzeit noch ein paar angeschlagene Carson502001 und MINI ES-05 - alles Motörchen die mit >>6 V direkt am Abgrund laufen. Hübsch fände ich diesen Servo mit UART zur Parametereinstellung, evtl. serielle Stelldateneingabe und so; ist derzeit schon zT aktiv. Ausserdem hatte ich mir so ein erstes Projektchen "digitaler Servo" als sinnvoll vorgestellt.


.. Was ich mit Schwachstelle der Servos meinte, ist scheinbar nicht ganz rübergekommen ..Stimmt. Fesselflug in Urzeiten und Noob in Elektronik sind ungute Grundlagen.


.. Inzwischen ist das ganz anders geworden. Der Antrieb ist elektrisch hat hat eine wesentlich höhere Spannung als 5V ..Und da bin ich ziemlich rückständig. Das Maß meiner Dinge ist archie der auf diesen alten Modellbauservos aufbaut (mittlerweile 24? und es kommen noch einige dazu). Und so sind auch die wesentlichen Steuerungsplatinen (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=629876&viewfull=1#post629876) ausgelegt (na ja, dort kann man ALLE Servos EINER Steuerplatine mit nem separaten Stromkreis betreiben - also genau Dein Vorschlag). Der endgültige Ausschlag zur Einstellung des Projektchens waren die Tatsachen dass a) der 4950 erst ab 8 V spezifiziert ist und ich b) einen vergleichbar kleinen mit ähnlicher Leistung für 5V nicht gefunden habe und c) der Testaufbau mit dem 4950 noch Probleme macht (läuft mit dem TB6612FNG bestens). Na ja, ich hätte hier noch ein paar A3901, Dual Full Bridge mit VBB von 0? bis 7V, aber nur 400 mA pro Kanal; 800 mA für Spitzenlast find ich halt deutlich zu wenig. Aber der hat wenigstens nur schlappe 3mm*3mm*0,75mm, Package EJ, 10-contact DFN.

Schönes Wochenende.

oberallgeier
02.06.2018, 17:26
Bei diesem Projektchen habe ich nach Lieferanten für nen Motortreiber TOSHIBA TB6612FNG gesucht. Wesentliche Kaufentscheidung ist die niedrige Motorspannung < 5 V und ein Ausgangsstrom von 1.2 A(ave)/3.2 A (peak) PRO Kanal ; d.h. das Bauteil kann notfallmässig > 6 A Peak beherrschen.

Mir wurde hier schon der 4950 empfohlen, der aber erst ab 8V spezifiziert ist; die 8 V Versorgung kann ich nicht aufbringen, ich bin da auf max 5,0 V begrenzt. Ich habe noch ein paar A3901 hier, die können aber nur 400 mA pro Kanal, also mit beiden Kanälen als Spitze grad mal 0,8 A - das ist deutlich zu wenig.

Soweit ich es beurteilen kann ist der TOSHIBA TB6612FNG nur über Mouser erhältlich. 10 Stück kosten dort € 13,90 - der Versand nochmal € 20. Das erscheint mir reichlich hoch - da wäre es für erste Muster denkbar ein paar Motortreiber mit aufgelötetem Toshibachip zu kaufen und den Chip abzulöten - aber blöd wär das schon!

Kennt jemand Alternativen? Ein alternativer Treiberchip oder ein alternativer Lieferant (na ja, Aliexpress liefert vielleicht sogar das - aber . . . hmmm . . . ein anderer wär mit lieber).

Danke für Eure Hilfe

021aet04
02.06.2018, 21:41
Hast du schon versucht ob du Samples bekommst?

MfG Hannes

oberallgeier
02.06.2018, 22:34
.. Samples ..Uuups, nein, danke! Werd ich machen.

oberallgeier
26.08.2019, 17:24
.. Für kleinere Motore verwende ich gern den A4950 im SO8. Der verkraftet so bis 3A und hat zusätzlich eine eingebaute, einstellbare Strombegrenzung ..@Klebwax: Ich versuche gerade mit dem A4950 an nem tiny13/PB0 = OCR0A einen Motor zu steuern. Am Testboard erstmal mit ner Hardware-PWM und einer Schleife, die OCR0A ständig zwischen 10, 250 und 10 im 1/10tel-Sekundentakt rauf- und runtersteuert. Der Motor läuft nicht - und das Oszilloskopbild bestätigt das.

Die PWM läuft ab tiny13 bis IN2/A4950 korrekt mit 37kHz@5V, das ist auch alles.

VBB bekommt 9,8V, IN1 liegt auf 0, IN2 auf der 5V-PWM, VREF auf +5V, und RS ist mit 0,27 Ω (Blumendrahtspule) von GND nach LSS. Zwischen OUT1 und OUT2 ist keine Spannung messbar.

Hab ich nen Denkfehler (oder ist der 4950er defekt). Nen Defekt habe ich noch nicht ausgeschlossen - ich würde halt nochmal nen neuen auf den Adapter löten. Die Anschlüsse und die PWM-Frequenz sind doch ok - oder nicht?

Danke für Hinweise.

Klebwax
26.08.2019, 21:25
Ich hab vor kurzem mal eine Platine mit A4950 in Betrieb genommen. Benutze inzwischen gerne die fertigen Boards mit DRV8871, hab aber noch Platinen, wo ich den A4950 eingesetzt habe.. Als RS hab ich 0,33Ω als Minimelf und Vref auf 3,3V. Die ganze Schaltung hat 3,3V. RS könnte auch 0Ω sein, die Strombegrenzung ist außer Kraft, wenn Vref so hoch ist. Beim Entwickeln nehme ich auch gern 9-10V, dann zuckt alles bei einem Fehler nicht so heftig. Inwieweit das Exposed PAD an Masse angeschlossen sein muß, weiß ich nicht. Bei mir ist es das. Ist zwar eine unschöne Brutzellei, hat aber geklappt.

Ich hab mal in meine SW geschaut, Ich setze die Basisfrequenz für die PWM auf 8kHz. Ich hab mein Projekt und die HW noch im direkten Zugriff, es geht auch mit 38kHz bei 8V. Je nach Drehrichtung gebe ich ich die PWM auf IN1 oder IN2. Es funktioniert auch, wenn der jeweils andere Anschluß auf 0 oder 1 ist, obwohl ich den nicht aktive Eingang meisst auf 1 lasse.

Ich hab bisher noch keinen A4950 kaputt gemacht, das kann aber Glück sein.

Eigentlich sollte es so gehen, hab leider auch keinen Tip mehr.

MfG Klebwax

021aet04
26.08.2019, 22:09
Miss einmal die Spannung zwischen Out1 bzw Out2 gegen GND. So kannst du testen ob bzw welcher Ausgang defekt ist. Natürlich musst du am In 1 bzw 2 low und high Pegel anlegen.

MfG Hannes

oberallgeier
27.08.2019, 23:25
Danke Klebwax, danke 021aet04.


.. Die ganze Schaltung hat 3,3V. RS könnte auch 0Ω sein .. Beim Entwickeln nehme ich auch gern 9-10V .. Ich hab bisher noch keinen A4950 kaputt gemacht ..Ich habe den Adapter 8SOIC auf 0,1" neu gemacht. Ich war einfach nach der optischen Prüfung (10-fach Lupe) nicht wirklich zufrieden - erstens und zweitens klappte der Test nach 021aet04 nicht. Zum Glück liegen ja noch etliche ICs rum (aus dem Reich der Mitte gehts ja kaum unter ein paar Dutzend..). UND ich habe die Eingangssignale für den A4950 auf 2,5 V geteilt - einfach ein Spannungsteiler am Steckbrett vom tiny13 zum INx und ebenso ein Spannungsteiler für VREF. VBB am A4950 weiterhin knapp 10V. Seltsam ist aber: der A4950 treibt mir den Motor brav gemäß PWM-Werte-Auf-und-Ab aber nur wenn IN2 statisch und die PWM am IN1 anliegt. Eigentlich unbefriedigend - aber es läuft eben. Na ja, hin und wieder hängt sich der Tiny auf und das auch nur wenn der A4950 angeschaltet ist. Das schiebe ich auf die fliegende Konstruktion am Testboard.


Miss einmal die Spannung zwischen Out1 bzw Out2 gegen GND .. testen ob bzw welcher Ausgang defekt ist. Natürlich musst du am In 1 bzw 2 low und high Pegel anlegenDanke 021aet04 - da hast Du heute DIE Sternstunde für mich geschaffen. Eigentlich hätte ich auf diesen Test selbst draufkommen müssen - ganz ohne Mikrokontroller, ohne PWM und trotzdem saubere Aussagekraft. Und Du hattest mir damit sehr geholfen den ersten Aufbau mit dem A4950 als defekt zu erkennen.

Nun läuft also der Motor - nur eine Richtung, wie beschrieben - aber a) ist damit das Projektziel erreicht und b) werde ich mal (vielleicht) nach der Ursachen forschen. WEnn Zeit übrig ist.

Danke für Eure Hilfe.

oberallgeier
28.08.2019, 17:23
.. Na ja, hin und wieder hängt sich der Tiny auf und das auch nur wenn der A4950 angeschaltet ist ..Kaum ist ein Kerko 100 nF und ein Elko 4,7 µF 5 mm neben dem VCC-Pin des tiny zum GND - schon läufts und läuft und läuft .. mea culpa, mea maxima culpa :-/

oberallgeier
02.09.2019, 16:18
.. Nun läuft also der Motor - nur eine Richtung, wie beschrieben - aber .. werde ich .. nach der Ursachen forschen. WEnn Zeit übrig ist ..So. Noch mehr mea culpa. Ein Beinchen des A4950 hatte einen spinnfadendünnen Lötverbinder zum Nachbar. Neu verlötet läuft alles wie es soll - je nachdem ob die PWM auf IN1 oder IN2 beaufschlagt wird, dreht der Motor positiv oder negativ und, entsprechend dem duty cycle, in variabler Geschwindigkeit. Datenblattgemäß.

Klebwax
02.09.2019, 18:02
Wenn ich mit einem Chip Probleme habe, sehe ich mir alle Signale mit dem Scope an, auch Vcc und GND. Da fallen einem Kurzschlüsse, Unterbrechungen und grobe Probleme in der Versorgung auf.

MfG Klebwax