Mega V3 und Motor Shield V3 ?

Hallo Gemeinde,

wenn ich das Motor Shield am Uno aufstecke, läuft der Motor.
Stecke ich es am Mega auf, läuft nichts.
Ich habe versucht das www zu befragen, leider ohne Erfolg. Was übersehe ich ?
Gelesen habe ich von V2 Problemen und SCL Connector, aber V3 nicht.

Das Shield wird mit 12V versorgt, ein 12VDC Motor ist auf A angeschlossen.
Der Uno/Mega wird über die 12V Vin versorgt, das wars eigentlich.

Danke!

const int MotorPinA = 12; // for motor A
const int MotorSpeedPinA = 3; // for motor A
const int MotorBrakePinA = 9; // for motor A
const int CW  = HIGH;
const int CCW = LOW;
void setup() {
  // motor A pin assignment
  pinMode(MotorPinA, OUTPUT);
  pinMode(MotorSpeedPinA, OUTPUT);
  pinMode(MotorBrakePinA, OUTPUT);
  Serial.begin(9600);//  seial monitor initialized 
}
void loop() {
  //start motor A at maximum speed
  digitalWrite(MotorPinA, CW);// set direction
      Serial.println("Direction CW"); 
  analogWrite(MotorSpeedPinA, 100);// set speed at maximum
      Serial.println("Speed 100");
  delay(5000);// run for 5 seconds
  digitalWrite(MotorBrakePinA, HIGH);// brake
      Serial.println("Brake applied");
  delay(2000);  
  digitalWrite(MotorBrakePinA,LOW);// release brake
      Serial.println("Brake removed");  
  digitalWrite(MotorPinA, CCW);// set direction
      Serial.println("Direction CWW"); 
  analogWrite(MotorSpeedPinA, 70);// set to 1/3
      Serial.println("Speed at 70");  
  delay(5000);// 
}// loop end

Sollte ich eine Library verwenden, bzw. welche ist die orig. Arduino Motor Shield R3 ?
Anderen Sketch?

Gibt es eine Möglichkeit das Mega Board zu testen, nicht dass es eine Macke hätte ?

hier ein paar Bilder

4711:
Sollte ich eine Library verwenden ...

Ich kenne den Mega nicht. Und die Ansteuerung des Motor-Shields ist so simpel, dass Du keine Bibliothek benötigst. Es sei denn, Du wolltest spezielle Dinge tun (Stepper mit Rampe beschleunigen u. dgl.). Und die Fotos sehen zumindest auf einen kurzen Blick gut aus.

Verhält sich der Mega denn ansonsten normal? Einen simplen geht/geht nicht-Test kannst Du ja selbst machen. Meiner Erfahrung nach sind die Original-Boards zuverlässig und robust.

Gruß

Gregor

Der Schaltplan des Motor Boards: https://www.arduino.cc/en/uploads/Main/arduino_MotorShield_Rev3-schematic.pdf
Da Hier die Standard pins ohne spezialfunktionen verwendet werden müßte das Motor Shield auf dem Arduino M 2560 gleich wie auf dem UNO funktionieren.
Was mir auffällt ist daß das Motor-Shiled eine Platikunterlage hat. Könnte es sein daß dadurch die Pins auf dem MEGA zu kurz sind? Du könntest das Shield mal ohne dem Plasik auf den MEGA stecken; den USB Stekcer hast Du ja schon isoliert.
Miß mal mit einem Multimeter die Verbindung der Pins D3, D8, D9, D11, D12, D13; GND, 5V, Vin zwischen dem Mega und dem Motorbord (Lötpunkte der Kontaktleiste auf der Unterseite des UNO/MEGA und Draht in entsprechenden Kontakt im Shield.

analogWrite(MotorSpeedPinA, 100);// set speed at maximum
      Serial.println("Speed 100");

Das ist nicht der maximal mögliche Wert. Pwm geht bis 255. Mit 100/255stel PWM könnte ein Motor nicht anlaufen. Da er es aber beim UNO macht ist bestätigt daß er anläuft und auch beim MEGA laufen müßte.

Die LEDs "A" neben den Klemmen leuchten irgendwie?

Grüße Uwe

Das Plastikteil habe ich beim Mega abgenommen, dachte auch dass hier ev. was sein könnte, nein ist aber nicht das Problem.

Ich haber gerade etwas endeckt. Am Mega waren bisher keine LED's neben den Schraubklemmen aktiv, nun doch eine und die vom Anschluss B (den ich eigentlich nicht betreibe).
Habe den Motor umgeschlossen und er läuft, bleibt stehen, läuft.

Messen mim Multimeter hat ergeben dass Pin 8 (Break Motor B) schaltet, sonst tut sich nichts, auf dem PWM Pin Motor sind 5 V drauf.
Darum läufter er , dann schaltet Pin 8 er bleibt stehen usw. usf.

Mir scheint dass beim kompilieren zwischen UNO und MEGA was falsch läuft, falsch Adressiert im Speicher oder so, bin keine Expterte um das das näher einzuordnen.

Die Einstellungen sollten korrekt sein, oder?

Ziehe das Shield ab, und prüfe die Pins des Mega.

Mir scheint dass beim kompilieren zwischen UNO und MEGA was falsch läuft, falsch Adressiert im Speicher oder so, bin keine Expterte um das das näher einzuordnen.

Flausen im Kopf?

Tipp:
Mit wirren Annahmen stehst du dir selber im Weg rum.

Habe jetzt nochmal den o.a. Settings hochgeladen, nun tut sich wieder nichts.
Dann den Wert von 100 auf 255 gesetzt und siehe da er läuft.
Allerdings sehr langsam, nicht normalen Speed?
OK, damit tut sich was aber noch nicht das richtig. Am Pin 3 kommen 5 V an.
Woran liegt das nun am Mega, dass der Motor so langsam läuft, am UNO normalen Speed.
-> jetzt habe ich den Mega separat mit 12V am Stecker versorgt und nun läufts!

Verwirrend das ganze, manchmal läufts und manchmal nicht.
Eine wirkliche Ursache finde ich nicht, mom. läuft jede Kombination. 12V am Shield oder UNO/Mega und USB... irgendwie scheint da sich was zu de/aktivieren in der Reihenfolge wie die Spannung kommt... ?

Versorgst Du den Mega und das Shield getrennt mit 12V? Das könnte Probleme geben, denn lt. Schaltbild sind die beiden Vin miteinander verbunden. Gegebenenfalls musst Du da auf dem Shield ein Brücke unterbrechen.

das mit der Brücke ist mir bekannt, wollte aber noch nicht unterbrechen und getrennt versorgen, eine Versorgung am Shield und damit Mitversorgung des UNO/Mega erscheint mir zweckdienlich.

Es läuft mom. ich weiß nicht warum, ev. ein schlechter Kontakt, keine Ahnung.

Es benötigt aber, dass sicher der Motor dreht einen Mindestwert von 130, warum ist das so, bzw. kann man das umgehen, dass der Motor noch langsamer drehen kann ?
Wenn ich mit einem PWM-Modul den Motor regle, kann ich ihn bis auf 0 runterfahren, 130 ist einfach für meine Andwendung noch zu schnell.

Es ist weiter verwirrend.
Am UNO benötigt der Motor 0,96V damit er sich dreht, dann schön langsam was OK ist.

Am Mega klappt das noch nicht, es werden immer 4,96V am Pin3 ausgegeben obwohl Analog 1V sein sollte. Beim Mega sind doch alle 1-13 PWM fähige Kontakte installiert ?

irgendwas hat der Mega, aktuell gibt er über die Serielle nur Schrott raus und ich kann ihn nicht dazu überreden wieder normal zu funktionieren, auch bekomme ich keinen Analogwert auf Pin 3 u 4 (getestet) nur digital ein/aus also 0/5V.
was ist da los?

Hab den Sketch neu und gering anders geschrieben und nun läuft er, den Fehler im alten kann ich nicht erkennen.
Aber nun ist alles gut!

Frohe Weihnachten allen!

Dann gib uns beide Sketche und wir können unser geballtes Wissen drüberlassen.
Grüße Uwe

Uno genauso wie Mega können nur 0 Volt oder 5 Volt ausgeben. PMW ist immer 5 Volt. die Drehzahl des Motors wird durch die Zeit geregelt, wie lange der 5 Volt Impuls ansteht. Mit dem Multimeter kannst du das aber nicht wirklich erkennen. Dafür brauchst du nen Oszilographen.

hier der Code (auskommentiert der alte)

void loop() {
  digitalWrite(MotorA_DirPin,LOW);
  digitalWrite(MotorA_BrakePin,LOW);
  analogWrite(MotorA_SpeedPin,50);
  delay(2000);
  digitalWrite(MotorA_BrakePin,HIGH);
  delay(2000);
  digitalWrite(MotorA_DirPin,HIGH);
  digitalWrite(MotorA_BrakePin,LOW);
  analogWrite(MotorA_SpeedPin,50);
  delay(2000);
  digitalWrite(MotorA_BrakePin,HIGH);
  delay(2000);
/*
//  analogWrite(MotorSpeedPinA, 250);// set speed at maximum
//  delay(100);
//  analogWrite(MotorSpeedPinA, 0);// set speed at maximum
  //start motor A at maximum speed
  digitalWrite(MotorBrakePinA, LOW);// brake
  digitalWrite(MotorPinA, CW);// set direction
      Serial.println("Direction CW"); 
  analogWrite(MotorSpeedPinA, 150);// set speed at maximum
      Serial.println("Speed 150");
  delay(2000);// run for 5 seconds
  digitalWrite(MotorBrakePinA, HIGH);// brake
      Serial.println("Brake applied");
  delay(2000);  
  digitalWrite(MotorBrakePinA,LOW);// release brake
      Serial.println("Brake removed");  
  digitalWrite(MotorPinA, CCW);// set direction
      Serial.println("Direction CWW"); 
  analogWrite(MotorSpeedPinA, 149);// set to 1/3
      Serial.println("Speed at 10");  
  delay(5000);// 
  digitalWrite(MotorBrakePinA, HIGH);// brake
      Serial.println("Brake applied");
  delay(2000);  
  */
}// loop end

die Spannung kann ich mit dem Multi messen, sie bewegt sich von 0,2-5V im Arbeitsbereich des Motors. Denn ich gebe ja nur einen festen Analogwert aus. Ein PWM müsste doch pulsen oder ?
Wenn ich es für das Board besser machen möchte, müsste ein Sketch mit Library und PWM umgestiegen werden oder verstehe ich das Systemprinzip hier nicht?

Besser wäre eine Anlauframpe wegen dem aufgenommenen Start-Strom, der ist auch bei den kleinen DC Motörchen schon recht ordentlich. Eine autom. Verzögerung bei Drehrichtungsumkehr usw., damit man sich das nicht zu Fuss im Sketch ausprogrammieren muss.

Der Glaube ist eines jeden Menschen Heiligtum. Wer mist, mist Mist, ist in dem Fall eine passende Aussage zu dem Thema Messen. Deshalb gibt es verschiedene Messgeräte für verschiedene Messaufgaben.

Wie schon gesagt, der Uno und der Mega geben keine geregelte Gleichspannung aus. Die können nur PWM ausgeben. Um geregelte Gleichspannung auszugeben bedarf es externer Geräte, sogenannte DA Wandler. Die machen aus einem Digitalen Wert, eine Analog Spannung.

DA - Wandler sind aber im Uno wie im Mega nicht integriert.

4711:
... Ein PWM müsste doch pulsen oder ? ...

Naja, das P in PWM steht nunmal für „Pulse“ - was also sonst sollte es sein?

Gruß

Gregor

4711:
die Spannung kann ich mit dem Multi messen, sie bewegt sich von 0,2-5V im Arbeitsbereich des Motors. Denn ich gebe ja nur einen festen Analogwert aus. Ein PWM müsste doch pulsen oder ?

Tut sie ja auch. Nur so schnell, dass Du das mit deinem Multimeter nicht messen kannst. Dazu brauchst Du ein Oszi.

Wenn du mit deinem Multimeter auf eine Spannung gehst, dann braucht das Ding eine gewisse Zeit, bis sich die Anzeige des Gerätes auf diese Spannung einpendelt. Diese Zeit ist rel. lang, daher leicht mit dem Auge zu beobachten. Diese PWM-Impulse sind im Millisekunden Bereich, also für das Auge nicht zu sehen, und das Multimeter braucht die Spannung, die es messen soll, gleichmässig fest anstehend. Erst dann wird nach gewisser Zeit diese Spannung angezeigt. Nimm dein Multimeter lege einen Messpol fest an der Quelle an, und mit dem anderen Pol machst du nur immer kurz Kontakt, und wieder weg, Kontakt, wieder weg, u.s.w. Dann siehst du so ähnliche "Analoge Messergebnisse" wie du sie an deinen Motorsteuerpin´s auch hast. Eben einfach nur unbrauchbarer Schrott, ohne jede Aussagekraft.

MicroBahner:
Tut sie ja auch. Nur so schnell, dass Du das mit deinem Multimeter nicht messen kannst. Dazu brauchst Du ein Oszi.

Nicht unbedingt. Ein digitales Multimeter kann schon einiges.
Gleichstrom: Im DC Bereich mißt Du einen Wert im AC Bereich aber nur einige 100mV.
Gepulsten Gleichstrom (wie ein PWM Signal) Du mißt im DC Bereich eine Spannung. Im AC-Bereich auch eine (nicht unbedingt die gleiche)
Wechselstrom: Du mißt im DC Bereich nichts aber einiges mim AC Bereich
Falls das Multimeter eine Frequenzfunktion hast mißt du beim PWM des Arduino 490 bzw 980 Hz je nach Ausgabepin.
Natürlich muß man sich der Funktionen und der Schranken bzw Grenzen der Messungen und des Multimeters bewußt sein. Nich Umsonst gab es in meiner Oberschule für 2 Schuljahre 4 Stunden pro Woche Meßtechnik.
Ich liebe in bestimmten Situationen noch analoge Drehspulmeßgeräte.

//  analogWrite(MotorSpeedPinA, 250);// set speed at maximum
//  delay(100);
//  analogWrite(MotorSpeedPinA, 0);// set speed at maximum

Was meinst Du was es den Motor krazt wenn er für 0,1Sekunden mal fast die Versorgungsspannung bekommt? und dann gleich wieder nichts mehr? nein nicht nur nichts sonder auch noch abgebrenst wird?

Grüße Uwe