Motor shield Strommessung fehlerhaft?

Hallo,
ich verwende aktuell ein Arduino Uno R4 Wifi Board mit dem Arduino Motor Shield Rev3, um einen Elektrozylinder zu steuern. Die Verkabelung habe ich wie in diesem Tutorial realisiert: [https://docs.arduino.cc/tutorials/motor-shield-rev3/msr3-controlling-dc-motor/].
Die Steuerung des Motors funktioniert super. Außerdem lese ich über den Analog Pin A5 die Daten von einem Potentiometer, welches die aktuelle Position des Elektrozylinders wiedergibt, aus. Auch das klappt.
Was allerdings nicht so wirklich klappt, ist die Messung des Motorstroms. Der Wert, der über analogRead() ausgelesen wird, liegt während der Elektrozylinder sich bewegt sehr häufig bei 0 (Manchmal aber auch zwischen 600 und 800). Das kann so ja eigentlich nicht sein. Wenn der Elektrozylinder sich bewegt, muss ja ein Strom fließen.
Kann es sein, dass ein defekt am Motor Shield vorliegt (Wackelkontakt oder so)? Oder mache ich etwas falsch?
Hier ist mein Code:

int directionPin = 12;  // Channel für die Richtung (LOW = einfahren, HIGH = ausfahren)
int pwmPin = 3;         // Channel für Geschwindigkeit (0-100)
int brakePin = 9;       // Channel für Bremse (LOW = aus, HIGH = an)

int currentPin = A0;    // Channel für Strommessung
//int current = 10;

int potiPin = A5;       // Channel für das Lesen des Potentiometers (Blaues Kabel); Gelbes Kabel an Power 5V anschließen; Weißes Kabel an GND
int poti_data = 0;

bool directionState = false;  // true = ausfahren (HIGH), false = einfahren (LOW)

void setup() {

  Serial.begin(9600);
  // put your setup code here, to run once:
  pinMode(directionPin, OUTPUT);
  pinMode(pwmPin, OUTPUT);
  pinMode(brakePin, OUTPUT);

  delay(3000);
}

void loop() {

  // Richtung ändern
  directionState = !directionState;
  if(directionState == false){
    digitalWrite(directionPin, LOW);
  }
  else{
    digitalWrite(directionPin, HIGH);
  }

  // Poti ausgeben
  poti_data = analogRead(potiPin);
  Serial.println("Poti Vorher:");
  Serial.println(poti_data);

  // Bremse lösen
  digitalWrite(brakePin, LOW);
  // Geschwindigkeit einstellen
  analogWrite(pwmPin, 100);

  delay(500);

  int current = analogRead(currentPin); // Spannung zwischen 0 & 3,3V ausgedrückt in integers zwischen 0 und 1023; max 3,3 V = 2A
  Serial.println("Strom:");
  Serial.println(current);

  delay(500);

  // Bremse aktivieren
  digitalWrite(brakePin, HIGH);
  // Geschwindigkeit auf Null
  analogWrite(pwmPin, 0);

  // Poti ausgeben
  poti_data = analogRead(potiPin);
  Serial.println("Poti Nachher:");
  Serial.println(poti_data);

  delay(5000);

}

Wie hast Du die Strommessung denn angeschlossen?
Was die Steuerung des Motors über PWM bedeutet ist dir klar? Die Spannung ist einen Teil der Zeit an und sonst aus.

Gruß Tommy

Ich weiß nicht, ob der UNO R4 mit dem Shield kompatibel ist. Die verlinkte Beschreibung nennt einen UNO R3 was eine total andere Hardware ist.
Ich habe keien R4 und darum kann ich Dir keine Hilfe dazu geben.

Ich bestätige aber die Problematik der Strommessung eines PWM getakteten Verbrauchers.

Grüße Uwe

Was genau möchtest du denn eigentlich messen ?
Strom oder Spannung ?
Hier lese ich etwas von Spannung. Kannst du dich bitte klarer ausdrücken.

Also bitte noch genauer beschreiben.

Danke für deine Antwort! Habe das mit der PWM dummerweise nicht bedacht...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.