Hallo
Ich habe ein Kabel vom ADC zum I/O montiert und die beiden sind mit dem Steuerpin des Servos verbunden.
Hier ein kleines Video meiner Umsetzung an meinem Greifarm:
http://www.youtube.com/watch?v=GDv6Ys0Wsgk
Nochmals Dank radbruch
Gruß Thund3r
Hallo
Ich habe ein Kabel vom ADC zum I/O montiert und die beiden sind mit dem Steuerpin des Servos verbunden.
Hier ein kleines Video meiner Umsetzung an meinem Greifarm:
http://www.youtube.com/watch?v=GDv6Ys0Wsgk
Nochmals Dank radbruch
Gruß Thund3r
Aha!Ich habe ein Kabel vom ADC zum I/O montiert
Aber trotzdem bleibt es verblüffend, weil du nach über zwei Jahren der erste bist, der diese Idee aufgreift und es quasi auf Anhieb funktioniert, obwohl du eine vollkommen andere Art der Servoansteuerung verwendest. Das ist echt der Hammer! Vielleicht sollte sich doch mal jemand erbarmen und das Signal auf der Servoleitung mit einem Oszi genau auf diesen Effekt hin untersuchen.
Dein Projekt mit deinem Roboterarm gefällt mir natürlich auch gut ;)
Um das Roboternetz-Forum zu pushen, und unsere Videos zusammen zu halten, haben wir mal vorgeschlagen, in den Tags der youtube-Videos auch ein "roboternetz" einzufügen. (Das wurde hier mal vorgeschlagen ;)
btw: Kannst mir hierfür mal den Quellcode schicken:
http://www.youtube.com/watch?v=U5HgMhHF9DU
*gg*
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo
Vielen Dank.
Der Quellcode kommt über PN
Aber verrat erstmal nichts wird ja für den Wettbewerb benutzt
Gruß Thund3r
Hallo
Hier nochmal der Quellcode für mein Video inkl. Erklärung:
Prakitsch zum schonen der Greifmechanik, wenn der Arm etwas nicht zu fest drücken darf, um zu überprüfen ob die gewünnschte Servo Position erreicht wurde oder ob der Servo noch in Bewegung ist etc.Code:// Servo-Sensor an einem Greifer 4.3.2010 Thund3r static int reset,durch,durch2,stop,count; //Variablen die von verschiedenen Methoden verändert werden können void gtest(void) { int c; if(reset==0) // Wird nur einma zu Beginn des Programmes aufgerufen { for(c=0;c<=50;c++) { ServoG(12); } for(c=0;c<=50;c++) { ServoG(21); if(durch>durch2) // Ermittelt den höchsten Schwellwert { durch2=durch; // Speichert diesen } mSleep(40); } reset=1; // Damit es nur einmal ausgeführt wird } for(c=0;c<=50;c++) { ServoG(12); //Greifarm öffnet sich } setLEDs(0b0000); mSleep(200); for(c=0;c<=50;c++) { if(stop==0) // Wenn alles ok Greif zu { ServoG(21); mSleep(40); } else {mSleep(50);} // Wenn Widerstand erkannt (s.u.) halte Position if(durch>durch2) //Wenn Belastung höher als ermittelter Grenzwert { count++; // Anzahl der Grenzwertüberschreitungen } else{count=0;} // Wenn Grenzwert nur einmalig erreicht wurde verwerfe den Entrag if(count==2) //Wenn Grenzwert 2 mal Überschritten wird tritt Aktion in Kraft (Anzahl variabel) { setLEDs(0b1111); count=0; stop=1; // Greifvorgang wird abgebrochen und Position gehalten s.o. } } stop=0; mSleep(200); } void messG() // Messmethode { uint16_t adc5 = readADC(ADC_5); // Messwert einlesen clearLCD(); durch=adc5; // Übergeben damit andere Methoden damit arbeiten können setCursorPosLCD(0, 0); writeStringLCD("Belastung: "); // Ausgabe auf LCD Display writeIntegerLCD(adc5, DEC); } void ServoG(uint8_t pos) // Zur Ansteuerung des Servos { DDRC |= IO_PC7; // Pin auf Ausgang PORTC |= IO_PC7; // High sleep(pos); // Stellzeit PORTC &= ~IO_PC7; // Low DDRC &= ~IO_PC7; // Pin auf Eingang sleep(5); messG(); // messen sleep(180); }
Gruß Thund3r
Hallo
Eher zufällig bin ich hier mal wieder reingestolpert. Eigentlich schade, dass bisher außer Thund3r diesen Effekt niemand nutzte. Sein Video zeigt schön, wie man das umsetzen kann:
http://www.youtube.com/watch?v=GDv6Ys0Wsgk
Mich würde immer noch interessieren, ob man die Spannungsänderung auf der Signalleitung mit einem Osziloskop sehen kann. Das Testprogramm und die Messung selbst wäre wohl einfach: In der Impulspause das Signal nicht nach GND verbinden, sondern den Steuerpin auf Z-State schalten. Dann sollte in der Pulspause ein lastabhäniger Peek erkennbar sein. Die genaue Lage und Größe dieses Peeks würde mich interessieren. :)
Auch heute noch eines meiner besten Filmchen:
Bild hier
http://www.youtube.com/watch?v=39tOx0IxQ40
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo Mic,... Mich ... interessieren ... Spannungsänderung auf der Signalleitung mit einem Osziloskop sehen kann ...
Das Testprogramm .. Impulspause ... den Steuerpin auf Z-State schalten ...
derzeit arbeite ich an (m)einem Teststand für Servos, eher einem Prüfstand für eine Latte verschiedener Messungen (Leerlauf- und Lastströme, Positioniergenauigkeit, Speed, Beschleunigungen etc) an meinen Servos. Dabei wollte ich auch diesen Effekt mal verfolgen. Die Mechanik des Teststandes ist im Aufbau, als Platine nehme ich meinen KopfController für den Archie, die tasten-/LCD-gesteuerte Software läuft in wenigen Grundfunktionen.
Nun habe ich genau diese Messung am Oskar mit dem High-Torque (siehe hier) gemacht mit folgenden Abgriffen:
Steuerpin gegen GND. Das ergibt die an sich bekannte, saubere Rechteckspannung, die sich auch bei Lastmoment am Servoarm nicht ändert. Ein schulbuchmässiges Oszilloskopbild.
Steuerpin gegen Vcc, Abgriff unmittelbar am Servostecker. Hier ist die Rechteckspannung invers, Nullwert deutlich verschoben - und - der Spannungshub scheint sich bei Lastmoment am Servoarm geringfügig zu ändern. Deutlicher ist bei einer Momentenlast die Änderung des gesamten Niveaus - also am Oskar angezeigte Null- und Pulsspannung. Dabei wabert das Signalbild am Schirm leicht, umso mehr, je mehr Last da ist. Das Signalbild verlagert sich insgesamt, der Hub Puls-keinPuls scheint sich auch tatsächlich gleichzeitig zu verändern.
Dass ich bei einigen Messungen mit UART- und Prog rammer-Anschluss zum PC mit dem Netzteil in die Strombegrenzung von 1,5 A fuhr, wobei die Versorgungsspannung der Servoplatine von 8,00 V auf 7,0x V absank ist eine seltsame Nebenerscheinung, die ohne UART- und ohne Programmerverbindung verschwand. Der Servo ist dabei übrigens eine ganze Zeitlang ausgestiegen (brrrrr). Das Netzteil zur Platinen- und Servoversorgung (zwei getrennte 7805/78S05) hat keine GND-Verbindung zum Netz.
Messungen des Controllers selbst in der von Dir vorgeschlagenen Art werde ich auch durchführen. Noch ist mir zu viel unklar.
Ciao sagt der JoeamBerg
Leute,
ich bin immer noch ratlos, wodurch dieser Effekt zustande kommt.
Etwas hilflose Fragen:
1. In den Servo-Elektroniken sitzt ja wohl meist ein NE544 oder M51660L. Da ist der Impulseingang dieser ICs außen nicht beschaltet, so dass es nur um Effekte "aus dem IC heraus" handeln kann. Was kann das sein?
2. Ist der Effekt wirklich völlig unabhängig von Schwankungen der Versorgungsspannung?
3. Welche induktiven Effekte könnten eine Rolle spielen?
Genauso hilflose Antwortversuche:
1. Keine Ahnung.
2. Ich denke: Nein. Wenn es z.B. im Servo-IC einen Eingangsspannungteiler gäbe, der an VCC liegt, könnte das ein Effekt sein. Was kann man überhaupt am Eingangspin 5 eines M51660L unter VCC messen?
3. Da man in einer Impulspause die Spannung am Impulseingang des Servos mißt, könnten am Anfang der Pause Nachschwingungen eine Rolle spielen, dann spielt vielleicht auch eine Selbstinduktion eine Rolle, wenn im IC-Eingangskreis eine Induktivität wirkt.
... und:
Was diese Effekt, wenn es sie gibt, dann mit dem Ausmaß der mechanischen Servobelastung zu tun haben könnten: Keine Ahnung.
Klärt mich auf! Was tut sich da?
Klappt das mit jeder Servo-Elektronik?
Gruß
Dirk
Ich versuche mal eine Erklärung:
Es wird oft gesagt: "Wer misst misst Mist". Ich denke, das trift hier zu, aber etwas anders, als man vermutet.
Ein offener Eingang eines Chips wird sich durch interne Widerstände auf einen Spannungswert zwischen Vcc und GND einstellen. Gemeint ist hier die Spannung am Vcc Pin und am GND Pin. Etwas anderes kann der Chip ja nicht sehen. Während und nach dem Servo-Pulse wird ja der Motor eingeschaltet, es ist der Zeitpunkt des größten Stromes. Wenn der Eingang des Servo-ICs sich an seinem GND-Pin orientiert, misst man aus Sicht der Ansteuerelektronik am Steuersignal den Strom im Servo. Als Mess-Shunt fungiert dabei eine schlechte (zu hochohmige) Masseanbindung des Servos.
Man misst also den suboptimalen (so nennt man heute wohl "Mist") Aufbau einer Baugruppe. Den gleichen Effekt hat man natürlich auch in der Vcc Leitung, je nach Messpunkt kommen da noch die Innenwiderstände einer suboptimalen (unterdimensionierten) Stromversorgung hinzu.
Dies wäre meine, rein theoretische Erklärung des Phänomens.
Ein solcher, eigentlich schlechter, Aufbau einer Elektronik (zu dünne, zu lange Drähte, zu viele zu schlechte Steckverbinder, zu hohe Leitungsinduktivitäte, zu dünne Leiterbahnen, unterdimensionierte Stromversorgungen etc) retten aber manche Elektronik oder auch Mechanik.
Elektromoteren sind Biester, beim Anlaufen und beim Blockieren wollen sie hohe Ströme und liefern dabei hohe Momente. Und da sie durch diese Ströme nicht direkt zerstört werden, sondern erst durch die langsamer erfolgende Überhitzung, rettet ein "suboptimaler" Schaltungsaufbau, der als Strombegrenzung funktioniert, so manches Ritzel vor dem Zahnverlust und manche Wicklung vor dem Abbrennen.
MfG Klebwax
BTW: Hier wird in verschiedenen Threads über die Versorgung von Servos philosophiert. Ich habe aber noch nichts von wirklichen Messungen mit Shunt und Scope oder mit Stromzange und Scope gelesen. Alle berichteten Spitzenstromwerte stammen aus Vermutungen, schlecht übersetzten Produktbeschreibungen oder (eigentlich unbrauchbaren) Multimetermessungen. Da ich nur zwei jahrzehnte alte Servos aus der "Miniservo" Klasse besitze, kann ich selbst keine Messwerte beisteuern. Wenn ich einen Teststand für Servos bauen würde, hätte eine Strommessung mit guter zeitlicher Auflösung hohe Priorität.
nochmal MfG
Strom fließt auch durch krumme Drähte !
Hallo
Das könnte die gesuchte Erklärung des Effekts sein. Dann sollte man am Servo-GND auch eine Spannungsanhebung gegenüber dem ADC-GND messen können.Wenn der Eingang des Servo-ICs sich an seinem GND-Pin orientiert, misst man aus Sicht der Ansteuerelektronik am Steuersignal den Strom im Servo. Als Mess-Shunt fungiert dabei eine schlechte (zu hochohmige) Masseanbindung des Servos.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen