PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Strom über den Motor messen (RB40, L298, Shunt)



Xaver
01.12.2006, 20:44
Hi

Ich versuche seid einigen Tegen den Strom von einem Motor zu messen.

Mein Problem ist dabei, dass das Rauschen des Motors zu stark ist, um eine richtige messung zu machen.

Ich habe dazu mal zwei Messungen gemacht. Einmal (links) mit einer reinen ohmschen Last (20Ohm Widerstand) und beim zweiten mal (rechts) mit dem Motor. Jedesmal habe ich die PWM langsam wie eine Rampe hochgefahren. Alle 50ms habe ich die PWM (lila) inkrementiert und den A/D Wert (blau) über uart ausgegeben.

Bei der ohmschen Last sieht es noch recht gut aus. Die nichtlinearität erkläre ich mir durch die starke Erwärmung der 1/4 Kohlewiderstände :-)

Der Motor steht recht lange still bis er sich zu drehen beginnt. Den Strom kann ich dann aber nicht mehr rcihtig messen, geschweigeden später Regeln.

Der Strom wird an einem 0.22Ohm Shunt gemessen und über einen RC-Tiefpass(1KOhm 100nF -> 1.6kHz) mit einem OP 11fach verstärkt. Die Referenzspannung des ADC ist die interne 2.56V spannung. Der ADC läuft mit 172kHz und mittelt 8 Werte und die PWM hat eine Periodendauer von 21.6kHz.

Wie habt ihr denn so eure Motorstöme gemessen und welchen rat könnt ihr mir geben an richtige werte zu kommen.

Gruß Xaver[/img]

Mosi
01.12.2006, 22:16
Du solltest viel stärker integrieren, 1,6khz und 172kHz sampelrate sorgt für stark schwankende Werte. Der Strom eines Motors ist sogar abhängig von der momentanen Stellung des Rotors, schwankt also mehrmals extrem während einer einzigen Umdrehung.
Gruß, Rene

Xaver
01.12.2006, 23:21
kann ich die Schwankungen denn mit einem großen ELko direkt am Motor etwas glätten, oder ergibt sich dann nicht ein Schwingkreis?

Wenn ich von 128 ADC Werten den Mittelwert bilde, bekomme ich dann nicht auch schleppfehler?

Yossarian
01.12.2006, 23:49
Hallo
also ich würde sagen Deine Zeitkonstante von 100µs ist viel zu hoch gewählt. Ich denke 1µs würde ein besserer Wert sein.
Die Abtastzeit des ADC sollte mit der PWM übereinstimmen oder Du müßtest hinterher die gültigen Werte auswählen.

Der Elko nutzt natürlich überhaupt nichts, jedenfalls nicht im Zusammenhang mit der Strommessung.(Es sei denn Dein Netzteil ist nicht Impulsbelastbar).

Mit freundlichen Grüßen
Benno
Den Elko nicht parallel zum Motor legen !

Mosi
02.12.2006, 09:32
Mit einem Elko glätten ist der falsche Weg, du musst dein Tiefpass anders bemessen! 1,6kHz Grenzfrequenz ist entschieden zu hoch, (Also die Zeitkonstante ist zu niedrig!) Es sei denn, du willst tatsächlich den Stromverlauf über eine einzelne Umdrehung des Motors aufzeichnen.
Bedenke: Selbst ein hochdrehender Motor (30000U/min) macht in der sekunde 500U! mit einer TP-Frequenz von 1,6kHz kannst du während einer einzigen Umdrehung drei(!) Messungen auflösen!! Die allesamt stark unterschiedlich ausfallen! Bei einer Sampelrate von 172kHz sind es natürlich noch viel mehr.
Also der Weg kann nur sein: das TP anders dimensionieren, statt 100nF min. den 10-20fachen Wert nehmen, also 1-2 mikroF.
Eine Softwaremässige Mittelwertbildung kann dann evtl entfallen. Das wäre ja auch doppelt gemittelt, also unnötig.
Übrigens: bei Bürstenmotoren beträgt die optimale PWM-Frequenz so um die 3kHz, das sorgt im Zusammenspiel mit der Eigeninduktivität des Motors im Zusammenhang mit einer (zwingend erforderlichen)Freilaufdiode für geglättete Ströme. Eine höhere Frequenz lässt die Verluste durch die Schaltzeiten wieder ansteigen.

Gruß, Rene

Noch ein Nachtrag: Die fehlende Freilaufdiode direkt am Motor sorgt für zusätzliche Mess-Störungen: immer wenn die PWM abschaltet wird im Motor ein Strom induziert, der entgegengesetzt fliesst. Hast du als Schaltelement ein FET mit intergrierter Diode, kann man, auch gefördert durch die höhe Abtastung, in diesem Moment negative Ströme messen. Also unbedingt Freilaufdiode (schneller Schottky-Typ) verwenden!

Yossarian
02.12.2006, 10:32
Hallo
es kommt darauf an was er regeln will.Für eine Stromregelung ist die Zeitkonstante jedenfalls zu hoch.
Es kommt natürlich auch auf seinen Motor und seine Spannung an. Wenn dieser eine so hohe Induktivität hat oder jene so niedrig ist, daß der Strom erst nach mehreren Millisekunden seinen Sollwert erreicht, kann er seinen Tiefpass entsprechend auslegen.
Mit freundlichen Grüßen
Benno

Mosi
02.12.2006, 20:29
Der Strom eines Bürsten-Motors erreicht nicht nach einigen millisekunden seinen Sollwert, sondern verändert ihn innerhalb weniger millisekunden mehrmals! Einen einigermassen messbar-konstanten Stromfluss erreicht man erst durch integration mehrerer Umdrehungs-Zyklen.
ein3-Pol-Motor schaltet pro Umdrehung seine Spulen 6mal komplett um. D.h., pro Umdrehung werden alle Erscheinungen von Spulen an Schaltern 6mal durchlaufen. Inkl. Stromverzögerungen, Selbstinduktion, Funken =Bürstenfeuer(!!!)etc.
Es handelt sich bei einem Motor nicht nur um eine Induktivität,
In der Tat ist aber entscheidend, was er regeln will. Soll es die Drehzahl sein, ist eine Abtastung der Drehzahl das beste, mit der Abtastung des Stromes allein kann man keine Drehzahlreglung aufbauen. Eine Drehmomentregelung könnte so klappen, aber nicht, wenn pro Umdrehung mehrere extrem verschiedene Stromwerte abgetastet werden. Starkes Schwingen der Regelung wäre die Folge.
Aus dem Bauch heraus würde ich sagen, dass 2-3 Umdrehungen als Zeitkonstante minimum sein müssten. (Vermutlich eher mehr)
Das bedeutet bei einem Motor mit 6000U/min, = 100U/s, eine Umdrehung 10ms. Also minimum 30ms Zeitkonstante.
Aber das lässt sich ja einfach probieren. Einfach mal verschiedene Werte für C nehmen (auch kleiner!, wahrscheinlich aber sehr viel größer) Ich lasse mich auch gerne vom Gegenteil überzeugen, man lernt ja nicht aus.
Aber Freilaufdiode nicht vergessen!! Direkt am Motor.

Gruß, Rene

Manf
02.12.2006, 21:09
Die erwartete Kurve wäre ja eine Erhöhung bei stehendem Motor bis zu dem Stromwert bei dem das Moment ausreicht die Haftung zu überwinden, inklusive der Abweichung der Motorkonstanten in der aktuellen Stellung, vom Mittelwert der Motorkonstanten.

Dann folgt ein konstanter Strom mit dem Moment zur Überwindung der Reibung.

Das läßt sich ja in etwa herauslesen.

Abweichungen sind der Anlaufstrom zur Überwindung des Trägheitsmoments (kurzer Einschwingvorgang) und das angesprochene Rauschen bei drehenem Motor.
Manfred

Yossarian
02.12.2006, 22:21
Hallo
ich bin(da eine so genaue Stromerfassung betrieben wird) von einer Drehmomentenregelung ausgegangen.
Um einen gleichmäßigen Momentenverlauf zu erzielen , muß auch der Strom entsprechend genau geregelt werden.
D.h. ich kann nicht drei Umdrehungen warten und dann den Strom einstellen.Die Stromregelung regelt eben diese auftretenden Unregelmäßigkeiten , die während des Laufes auftreten, aus.
Für eine Drehzahlregelung dient die Strommessung eigentlich nur der Kontrolle bzw. man kann darüber eine Schwergängigkeit oder eine Blockade des Motors detektieren.
Außerdem würde ich eine PWM über 20kHz bevorzugen , um die Geräusche über der Hörschwelle zu halten.

Mit freundlichen Grüßen
Benno

magnetix48
03.12.2006, 10:34
Hallo Yossarian,

mit der PWM stellst du nicht den Strom ein, sondern die Spannung am Motor. Der Strom ergibt sich daraus. Aus deinem Diagramm ist ersichtlich, dass der Strom oberhalb einer Spannung nicht mehr steigt.
Durch die Kommutierung ist der Stromverlauf über einer Umdrehung nicht konstant, daher brauchst du eine Zeitkonstante von mindestens einer Umdrehung.
Lieber ein etwas trägeres Signal zu regeln, als so ein verrauschtes Signal, auf das deine Regelung kaum vernünftig reagieren kann.

Wenn du den Verdacht hast, dass die PWM für das verrauschte Signal verantwortlich ist, kannst du den Versuch ja mal mit einem Labornetzgerät mit glatter Ausgangsspannung wiederholen. Oder du schaust dir das Signal mal auf dem Oszilloskop an

Gruß
Detlef

Yossarian
03.12.2006, 11:07
Hallo
natürlich lege ich mit der PWM eine Spannung an den Motor. Diese Spannung schalte ich ab,wenn der Sollstrom erreicht ist und schalte sie wieder ein ,wenn der Iststrom den Sollstrom unterschreitet. Dies geschieht im Takt der PWM.Mit anderen Worten:Mit der Pulsbreite stelle ich den Strom ein.

Mit freundlichen Grüßen
Benno

Xaver
03.12.2006, 11:31
Ich möchte mit der Strommessung später eine klasische Kaskadenreglung aufbauen, mit Stromreglung, Drehzahlreglung und Lagereglung.

Um die PWM als Störung auszuschließen habe ich die Messung einmal mit einem ohmschen Widerstand gemacht. Störungen der PWM müßten ja auch dort zu sehen sein(s. Diagramm oben). Die PWM ist bei mir auf 20KHz damit keine Störgeräusche oder pipen entsteht. Laut Datenblatt ist die H-Brücke bis 25kHz(max 45kHz) zugelassen. Bei Langsameren PWMs ist auch ein brummen am Motor zu spüren. (bin froh, dass die PWM überhaubt so schnell ist)

Bei der einstellung des Filters bin ich nun etwas verwirrt. Soll ich die Zeitkonstante nun so einstellen, dass ich den Motor min. 3 Umdrehungen machen lasse? Der RB40 macht so maximal 5000 U/min. Demnach sollte ich meine Zeitkonstante auf max. 27Hz stellen? (5000/(60*3)).
Oder versuche ich dann etwas zu Regel, was ich wirklichteit viel schnell ist?

Da ich denke das sich ein träges Signal leichter regeln läßt habe ich die Zeitkonstante des Tiefpasses auf 70ms (14Hz) gestellt.

Die Messungen sehen nun sehr viel besser aus.

Zur späteren Regelung benötige ich ja auch einige Motor-/Systemkennwerte. Dazu habe ich eine Sprungantwort mit 50% PWM und mit 100%PWM gehmacht (beiden Diagramme).
Nun weiß ich aber nicht wie ich die Zeitkonstanten richtig zuordne?

69ms Tiefpass
1,48ms Abtastzeit


http://www.wsgs.net/nBot/image002.gif http://www.wsgs.net/nBot/image004.gif
http://www.wsgs.net/nBot/image002_klein.gifhttp://www.wsgs.net/nBot/image004_klein.gif

Edit: Bilder wider sichbar

magnetix48
03.12.2006, 11:39
Hallo Benno,

mit der PWM legst du an den Motor eine Spannung von PWM-Verhältnis mal Betriebsspannung. Das ist noch keine Stromregelung.
Eine Stromregelung wäre es, wenn du jetzt den Strom messen würdest und die PWM dann so veränderst, dass der Sollstrom erreicht wird.

Für ohmsche Lasten, bei denen du einen festen Widerstand hast, wie in dem ersten Diagramm, sieht die Spannungsregelung wie eine Stromregelung aus, da beides im festen Verhältnis stehen. Bei induktiven Lasten, wie z.B. einem Motor sieht es jedoch anders aus. Der Motor ist außerdem keine reine induktive Last sondern erzeugt durch die Drehung eine Gegenspannung, die auch zu berücksichtigen ist.
So wie der Aufbau zu den Diagrammen beschrieben worden ist, ist es eine durch PWM eingestellte Betriebsspannugsänderung des Motors auf die der Motor mit dem im Diagramm dargestellten Strom reagiert.

Gruß
Detlef

magnetix48
03.12.2006, 12:00
Hallo Xaver,

da war ich gerade am tippen, als du deinen Beitrag gepostet hast.
Das sieht ja schon viel freundlicher aus, als deine ersten Diagramme. Was fehlt ist ein Massstab und mir ist auch nicht ganz klar, was die Diagramme darstellen und was du als Sprung auf das System gegeben hast. Überhaupt, ist es ein offenes System in dem du einfach die PWM änderst oder ist es schon eine geschlossene Regelschleife?

Gruß
Detlef

Xaver
03.12.2006, 12:16
das ist noch ein ganz offenes System, ohne eine rückführung. Ich wollte ja auch ersteinmal einige werte haben um die Regelung parametrisieren zu können.

Mit einem klick auf den Link kommst du so der Großansicht der Bilder. Die einheiten habe ich schon richtig umgerechnet. Bei den kleinen bildern ist die Skala ist leider schwarz auf schwarz(eigentlich transparenter hintergrud).

Mit sprung meine ich , dass ich die PWM gleich auf volle pulle gestellt habe (oder halt 50%) um zu sehen wie lange der motor braucht bs Moment und drehzahl dem Strom entsprechen.

magnetix48
03.12.2006, 12:22
Hallo Xaver,

ich denke, du kannst die Zeitkonstante schneller machen, so glatt, wie die Signale aussehen. In den Diagrammen wird sicher zu viel Einfluss vom Filter zu sehen sen.

Gruß
Detlef

Mosi
03.12.2006, 12:59
Ich kann die Bilder nicht sehen, (Forbidden, Error403)
Gruß, Rene

Yossarian
03.12.2006, 13:06
Hallo
ich habe den Eindruck , wir reden aneinander vorbei.Bei einer Momentenregelung interessiert mich doch die Spannung nur insofern, daß die in der Lage sein muß,den Strom durch den Motor zu treiben.Das können 100V, 1000V oder sonst was sein (solange meine Bauteile das vertragen und die EMV nicht in die Quere kommt).Einzig und allein der Strom interessiert.Ich gebe einen Sollstrom vor und vergleiche mit dem Iststrom.Sobald die beiden übereinstimmen, schalte ich die Spannung ab.
Mit freundlichen Grüßen
Benno

magnetix48
03.12.2006, 13:18
Hallo Benno,

im fertige System von Xaver wird es wohl auch so sein, dass er mit einer Stromregelung arbeitet. Zum jetzigen Zeitpunkt kann aber von einer Regelung, geschweige denn von einer Stromregelung noch keine Rede sein. Xaver stellt mit der PWM die Motorspannung ein und misst den Stromverlauf über der Zeit.

Gruß
Detlef

Xaver
03.12.2006, 13:45
Hi Yossarian
Also wenn du nur den Iststrom mit sollstrom vergleichst und dann die spannung abschaltest, dann ist das eine sehr ruppige regelung. Die Strom(Moment) Regelung ist ja auch nur der innere Teil der Kaskadenregelung. Damit sorge ich dafür dass Lastmomente schnell ausgeregelt werden und ich den Strom begrenzen kann. Ich möchte aber später mit einer Sollgeschwindigkeit bzw Solllage den Motor regeln.

Xaver
03.12.2006, 15:40
Mit der Sprungantwort versuche ich die Zeitkonstanten des Motors zu ermitteln, denn auf den billigen Motoren steht so etwas nicht drauf. Auch weiß ich die Motorenwerte wie Widerstand R, Induktivität L oder Motorkonstante c nicht. Wenn ich den Widerstand mit einem Multimeter messe schwank er stark, je nach Ankerstellung.

Ich möchte durch messung auf die Ankerzeitkonstante und die Mechanische Zeitkonstante, sowie die Verstärkungen kommen. Ich habe mal eine Presantation gemacht wie man vom Gleichstrommotor zu den Zeitkonstanten kommt. Die ersten Seiten sind nur Herleitungen, aber auf der Letzten stehen Werte, die eigentlich ich wissen möchte.

Yossarian
03.12.2006, 18:15
Hallo


Also wenn du nur den Iststrom mit sollstrom vergleichst und dann die spannung abschaltest
das ist allgemein so üblich.Wenn Du den Strom linear regeln willst , hast Du mächtige Verlustleistungen.Daher wird eine lineare Regelung nur in Ausnahmefällen verwendet oder bei kleinen Motoren bzw. Strömen.

Mit freundlichen Grüßen
Benno

Xaver
03.12.2006, 20:51
Kann mir einer seine Werte für die RB40 12V Motoren sagen.

Haltestrom . . . . . . . . 9,7A
Haltemoment . . . .. . .1,68mNm
Leerlaufdrehzahl . . . . 6000 Upm
Leelaufstrom . . . . . . . 250mA

Widerstand . . . . . . . . 1,23 Ohm
Induktivität . . . . . . . . 5mH
c Phi . . . . . . . . . . . . . 0.01856

waste
03.12.2006, 21:35
Hallo Xaver,

willst du dir das mit der Kaskadenregelung wirklich antun. Eine Lageregelung geht auch mit einer einschleifigen Regelung und die ist um ein vielfaches einfacher als die Kakadenregelung.

Bei deinen Kurven http://www.wsgs.net/nBot/image002.gif und http://www.wsgs.net/nBot/image004.gif stimmt der Zeitmaßstab irgendwie nicht zusammen. Ich kann da keine sinnvolle Zeitkonstante herauslesen. Überprüf nochmal den Maßstab.

Im Anhang ist eine Kennlinie, die ungefähr für den RB40 passen dürfte.

Waste

Xaver
05.12.2006, 12:36
Ok, so weit so gut.

Ich trage nun mal zusammen wie ich den Strom messe.

Ich verwende für die Motoren eineH-Brücke mit einem L298. An den Sense-Ausgängen sind 0.22Ohm Lastwiderstände (5W). Von Dort führe ich die Spannung über einen Tiefpass zu einem Verstärker und dann zum MC.

Dort entspricht 5V-> 2,066A und 0V->0A. Ich kann also bis maximal 200mA den Strom des Motor messen und das in 1024 Schritten(+- 2mA).

Das Programm ist besteht aus drei Teilen.
dem AD-Wandler; dem Umrechnung in mA und der Ausgabe über UART.
Die Umrechnung erfolgt immer dann, wenn der Timer0 übergelaufen ist.
Die f_CPU Frequenz ist 11.059MHZ und der prescaler auf 64, das ergibt eine Überlaufzeit von 1.48ms. So oft wird also eine Strommessung gemacht.

Im Anhang habe ich das Komplette AVR-GCC Projekt angefügt.
Es enthält noch Tastenentprellen und Drehzahlmessung mit Interrups.

Ganz zum Schluss habe ich noch den Kurvenverlauf von Strom und Drehzahl, bei einem unbelasteten Motor und sprunghaften Ein- und wieder Ausschalten.
Ich meine, wenn man den Motor "ausrollen" lässt kann man die Trägheit ablesen. Je länger es dauert bis die Drehzahl auf 0 ist, desto Träger ist das System. Die Trägheit J entspricht dann der Steigung oder?
Und wenn die fallende Kurve stark durchgebogen ist, ist die Reibung groß.
Was man Zeit bis der Motor auf Drehzahl ist ablesen kann weiß ich leider nicht, müsste aber einer von euch sicher wissen ;-)

Gruß Bronko



/**
* AD Wandler
* Dieses Programm enthält funktionen zu auslesen der AD-Wandler
*
* V0.1
*/
#include <avr/io.h> //I/O-Register
#include <stdint.h> //standart Integertypen

#include "adwandler.h"

/***/
/** Routine zum auslesen eines einzelnen A/D-Wertes */
/***/
uint16_t get_adc(uint8_t adc_pin)
{
uint8_t i;
uint32_t result = 0; //Initialisieren wichtig, da lokale Variablen
//nicht automatisch initialisiert werden und
//zufällige Werte haben. Sonst kann Quatsch rauskommen

ADCSRA = (1<<ADEN) | AD_PRE; // Frequenzvorteiler
// setzen auf 8 (1) und ADC aktivieren (1)

ADMUX = adc_pin; // Kanal waehlen
ADMUX |= AD_REF; // Referenzspannung nutzen
//ADMUX |=(1<<ADLAR); // Werte linksbündig schreiben

/* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung warten

/* Eigentliche Messung: Mittelwertbildung aus MITTELWERT aufeinanderfolgenden Wandlungen */
for(i=0;i<MITTELWERT;i++)
{
ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion"
while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung warten
result += ADCW; // Wandlungsergebnisse aufaddieren
}
ADCSRA &= ~(1<<ADEN); // ADC deaktivieren (2)

result /= MITTELWERT; // Summe durch MITTELWERT teilen = arithm. Mittelwert

return result;
}

/**
* MOTOR
* Dieses Programm soll alle funktionen zu den Motoren beinhalten
*
* V0.1
* DEfines für die Motoren definiert
*
* V0.2
* Der Motorstrom kann ausgelesen werden
* Beim Richtungswechsel oder Speed 0 Blokieren die Motoren kurz
*
* V0.3
* PWM auf 21,6kHz geändert (nicht hörbar)
* PWM läst sich nun mit 9 bit einstellen
*
* V0.4
* Drehzahlmessung hinzugefügt
* Die Ausgabe Über UART lässt sich nun mit einer Taste starten/stopen
* Uart sendet PWM[in %] Drehzahl[in Upm] Strom[in mA]
* Fehler in der Drehzahlberechnung behoben
*
*/
/* Ermittelt den Motorstrom */
uint16_t get_Motorstrom(uint8_t motor_shunt)
{
uint16_t data;
/* liest den Aktuellen Wert am AD */
data = get_adc(motor_shunt);

/* Umrechnen in mA */
data = (data * 24)/10;

return(data);
}

/**
* Motorstrom
* Dieses Programm soll den Motorstrom an einem Pin Messen und
* Über Uart ausgeben
*
* V0.1
* programm giebt Spannung und Strom über uart aus
*
* V0.2
* Die Referenzspannungwird auf 0.5V gesenkt und der AD-Wandler im Normalen
* Modus betrieben(nicht Gain 10x)
*
* V0.3
* Der Spannungsabfall am Shunt wird nun mit einem OP 11fach verstärkt.
* Die Referenzspannung wurde wieder auf interne 2.56V gesetz
* der A/D arbeitet mit 172KHz und mittelt 8 Messungen
* die PWM arbeitet mit 21,6kHz und lässt sich mit 9Bit(max 01FF) einstellen
*
*
* V0.4
* Motorstrom wird nun in mA umgerechnet und PWM in prozent
* Die Referenzspannung des A/D-Wandlers ist nun die Versorgungsspannug Vcc (5V)
*
* V0.5
*
* Drehzahl der Motoren wird ausgegeben
*/
/** Programmteil 2 **/
/** status über UARt ausgeben **/
/* Timer0_counter hat sich geändert und sm2 ist aktiv */
if((alt!=timer0_counter)&&(sm & 0x02))
{
alt = timer0_counter;
//LED_PORT ^=(1<<LED1); //LED blinken, ist immer gut

uint16_t strom;
uint16_t drehzahl;
strom = get_Motorstrom(MOTOR_RECHTS_SHUNT); // ermittelt dden Strom
drehzahl= get_Motordrehzahl(); // ermittelt die Drehzahl

//uart_putc(0x0c); // terminal clearsceen (bildschirm löschen)

/*
uart_puts("\r\n");
uart_puts("Statusmeldung\t\trechter Motor\r\n\r\n");
uart_puts("PWM Drehzahl Motorstrom\r\n ");
*/

/* Wert der PWM ausgeben */
itoa(((uint16_t)(speed_r*100)/PWM_MAX), buffer, 10);
uart_puts(buffer);
uart_puts("\t");
/* Drehzahl ausgeben */
utoa(drehzahl, buffer, 10);
uart_puts(buffer);
uart_puts("\t");
/* Strom ausgeben */
utoa(strom, buffer, 10);
uart_puts(buffer);
uart_puts("\r\n");
}

Yossarian
05.12.2006, 14:21
Hallo
Dein R3 gehört an den Eingang des OP,nicht an Masse(Zeichnungsfehler?)
außerdem sollte von R1 zum Eingang auch ein 10k Widerstand liegen.

Mit freundlichen Grüßen
Benno

waste
05.12.2006, 16:07
Ich verwende für die Motoren eineH-Brücke mit einem L298. An den Sense-Ausgängen sind 0.22Ohm Lastwiderstände (5W). Von Dort führe ich die Spannung über einen Tiefpass zu einem Verstärker und dann zum MC.Bei der normalen Beschaltung des L298 führt das bei PWM zu falschen Stromwerten, da der induzierte Rückstrom nicht über den Sense-Widerstand fließt. Das Problem ist scheinbar nicht so trivial, jedenfalls habe ich keine Lösung auf die Schnelle gefunden.

Ganz zum Schluss habe ich noch den Kurvenverlauf von Strom und Drehzahl, bei einem unbelasteten Motor und sprunghaften Ein- und wieder Ausschalten.
Ich meine, wenn man den Motor "ausrollen" lässt kann man die Trägheit ablesen. Je länger es dauert bis die Drehzahl auf 0 ist, desto Träger ist das System. Die Trägheit J entspricht dann der Steigung oder?
Und wenn die fallende Kurve stark durchgebogen ist, ist die Reibung groß. Zur Bestimmung des Trägheitsmoments gibt es einen Thread, siehe https://www.roboternetz.de/phpBB2/viewtopic.php?t=12793
Die Biegung der Kurve hat nichts mit Größe der Reibung zu tun, sondern mit der Art der Reibung. Je nach Art (trockene, viskose oder turbulente Reibung) ist die Biegung geringer oder stärker. Bei trockener Reibung wäre es eine Gerade. Bei viskoser Reibung wäre es eine e-Funktion und bei turbulenter Reibung noch stärker gebogen. Beim RB40 gibt es alle 3 Arten, wobei die trockene Gleitreibung überwiegt. Man kann aber trotzdem das Trägheitsmoment sehr gut bestimmen, wenn man vom Beginn des Ausrollens eine Gerade mit der Anfangssteigung nach unten verlängert. Das wäre dann ein Ausrollen mit konstanter Reibung, die dem Leerlaufstrom bei voller Spannung entspricht. Das Reibmoment berechnet sich übrigens aus: Reibmoment = Motorkonstante * Leerlaufstrom

Was man Zeit bis der Motor auf Drehzahl ist ablesen kann weiß ich leider nicht, müsste aber einer von euch sicher wissenDie Zeitkonstante ist der Wert, wenn die Drehzahl 63% des Endwerts erreicht hat. Ich lese da etwa 40ms ab.

Übrigens fällt am L298 fast 2 Volt ab. Das ist bei deinen Auswertungen zu berücksichtigen, deshalb erreicht der Motor nicht die Leerlaufdrehzahl von 6000 Upm.

Waste