Arduino: Widerstand von Motor messen
LTD 13.11.2015 - 15:55 6934 9
LTD
frecher fratz
|
Hallo, ich überlege gerade, wie ich das Blockieren eines Gleichstrom-Elektromotors messen und so den Motor anhalten kann. Mein Plan wäre die Ansteuerung des Motors per Motorshield und die Messung des Widerstands, der beim Blockieren in die Höhe schnellen sollte. Ich weiß nur nicht, wie ich den Pin zur Widerstandsmessung anschließen muss, ohne den Motorstromkreis mit dem des Arduino Stromkreis zu verbinden und so den Arduino zu zerstören. Ich würde zuerst den Motorwiderstand in Bewegung und bei Blockade messen. Dann den Pin vom Arduino mit einem dem gemessenen Widerstand ähnlichen Widerstand mit 5V verbinden und zuletzt den Motor mit GND und dem Widerstand an 5V verbinden. Kann das so klappen? Die Idee habe ich von dem Tutorial abgeleitet: Tutorial
|
XeroXs
doh
|
Bin gespannt was da die Elektronikexperten dazu sagen, aber ich denke deine Annahme ist falsch.
Wenn der Motor blockiert wird der Motorstrom ja sehr groß - das würde eher auf einen sehr kleinen Motorwiderstand bei Blockade hindeuten.
Die Schwierigkeit wird sein den Anlaufstrom und die Blockade zu unterscheiden.
|
Blaues U-boot
blupp, blupp
|
ist beim motorshield keine strommessung dabei, die ein äquivalentes spannungssignal zum auswerten liefert? ist die bessere variante.
der motorstromkreis soll keinen kontakt zum arduino bekommen!
|
AdRy
Auferstanden
|
Normal misst man einfach den Strom und wenn der zu groß wird (=blockade bzw. zu große last) dreht man ab. z.b. machst du einen Spannungsteiler parallel zum Motor bei dem die Teilspannung max 5V ist (bei normalbetrieb vom motor) und du das mit dem Arduino misst. Zieht der Motor mehr strom, geht die spannung runter und somit auch die vom Spannungsteiler.
oder du hast einen Motor mit drehzahlmessung.
|
LTD
frecher fratz
|
Nein ist ein normaler Motor. Danke, das mit dem Spannungsteiler muss ich mir gleich mal durchlesen.
Edit: muss ich hierfür nicht auch die Stromkreise verbinden?
Edit2: wenn ich einen Motor mit 3-5V nehme, benötige ich auch keinen Spannungsteiler mehr, nicht wahr? Dann könnte ich direkt den Motor als Widerstand ansehen und den Pin nach dem Motor anhängen. Sinkt die Spannung, blockiert der Motor... Hat den Vorteil, das ich alles mit einer 5V Schiene lösen könnte.
Bearbeitet von LTD am 13.11.2015, 17:32
|
wacht
pewpew
|
Also ich hab ja seit bald 15 Jahren keinen Motor mehr angsteuert aber vom Gfuehl her is ein Spannungsteiler parallel zum Motor groebster Pfusch "net wirklich elegant" und Motor direkt an Digitalausgaenge haengen is nono... You can measure the current going through the DC motor by reading the SNS0 and SNS1 pins. On each channel will be a voltage proportional to the measured current, which can be read as a normal analog input, through the function analogRead() on the analog input A0 and A1. For your convenience it is calibrated to be 3.3V when the channel is delivering its maximum possible current, that is 2A. Laut hier geht das ja mit dem Motorshield. Falls das das richtige is, kenn mich mit sowas nimma aus...
|
LTD
frecher fratz
|
Nein leider, have das von Adafruit, version 1.2 oder so.
|
Vinci
hatin' on summer
|
Ach herje... so viel Halbwissen. Also erstmal sinkt bei steigender Stromaufnahme in direkter Folge gar nichts. Wenn die Versorgung stark genug ist dann fahrt die da durch bis du mit dem Motor Schweißen kannst. Diese Annahme wäre nur dann wahr, wenn man von einer Konstantleistungsquelle ausginge, die du unter Garantie nicht besitzt. So wie ich das seh hast du 3 Möglichkeiten: a) eine Motorstrom-Messung (billig) b) eine EMK Messung (noch billiger) c) eine Drehzahlmessung (teuer) ad a) Die simpelsten Form einer Motorstrom-Messung wäre ein kleiner (0.00x - 0.x Ohm) Serienwiderstand mit einem Verstärker. Der Verstärker ist deshalb notwendig, weil über den kleinen Widerstand nur kleine Spannungen abfallen, die direkt am Arduino nicht messbar sind. Dafür lässt sich an dem Widerstand der tatsächliche Stromverlauf ablesen. ad b) Drehst du die PWM zur Erzeugung der Motorspannung (siehe L293 Halbbrücken-Treiber) ab, dann könntest du theoretisch mit einem Spannungsteiler die sogenannte Generatorspannung am Motor messen, die nur dann anfällt wenn sich der Motor tatsächlich dreht. Den eigentlich Motorstrom könntest du hiermit jedoch nicht messen... Allerdings sollte klar sein, dass irgendwas faul is wenn du den Motor Vollgas ansteuerst, dieser aber stehn bleibt. Als Vorteil gibt dir die Generatorspannung ein Feedback zur Umdrehungsgeschwindigkeit, da diese direkt proportional dazu ist. ad c) Optische Encoder sind zwar auch nur in Vergleich mit den beiden anderen Varianten teuer, dafür muss man das Ding aber halt irgendwie an der Achse befestigen... was ned immer super simpel is.
|
NL223
RoHS-konform
|
genau, afoch strom messen und gut is... alles andere is meiner meinung nach viel zu aufwendig, ausser du willst drehzahlregeln einfache motorschutzschalter besitzen einen thermischen auslöser, Motorstrom erhitzt eine leitung (minimale verluste, vernachlässigbar) die erwärmt sich, bei gewisser temperatur fällt der schalter, motor = aus... is aber eigentlich tolles system... Beim Anlaufen darf der Schalter ja ned gleich auslösen, im ersten moment is anlauf = blockade... zudem machts dem motor normal nix wenn er mal kurz blockiert oda sich plagt... letztendlich is beim motor ja auch die thermische überlast vor der man sich fürchten muss... ob mans ned gleich mit thermischen überlastschaltern versuchen sollte ??
|
ARM_User
Big d00d
|
Beste Variante wie die Vorredner schon sagten.
1) Strom-Shuntmessung oder 2) Permanentmagnet + Reed-Kontakt
Gibt's Datenblatt für den Motor?
Bearbeitet von ARM_User am 15.01.2016, 16:44
|