Programmierung Ardu Mini

ronny

Moderator
Hallo Leute ich bin der Ronny aus BW und habe doch gleich eine Frage, aber bitte nicht gleich schlagen. Wie enable ich den Mini im Code bzw. wie disable ich den Mower? Ja ich weiß es sind Basics, vor Jahren mit dem Multiwii Projekt hat es bei mir anscheinend besser Funktioniert.

Gruß Ronny
 
Hallo,

der Mini ist im derzeitgen Github-Repository (Entwicklungscode) nicht mehr enthalten, wird aber noch in der älteren Version 1.0a6-Azurit unterstützt: https://github.com/Ardumower/ardumower/releases
Dort oben in "config.h" den Mini aktivieren:

Code:
// ------ choose ONLY ONE robot configuration ---------------------------------------------
//  #define USE_MOWER
#define USE_MINI


Gruss,
Alexander
 
Danke Alexander, jetzte schimpft die Konsole Arduino: 1.8.2 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

sketchmini.cpp: In member function 'virtual void Mini::setup()':

mini.cpp:258: error: no matching function for call to 'RemoteControl::initSerial(int)'

rc.initSerial(PFOD_BAUDRATE);

^

sketchmini.cpp:258:30: note: candidate is:

In file included from sketchrobot.h:45:0,

from sketchmini.h:30,

from sketchconfig.h:18,

from sketchmini.cpp:35:

sketchpfod.h:58:10: note: void RemoteControl::initSerial(HardwareSerial*, uint32_t)

void initSerial(HardwareSerial* serialPort, uint32_t baudrate);

^

sketchpfod.h:58:10: note: candidate expects 2 arguments, 1 provided

exit status 1
no matching function for call to 'RemoteControl::initSerial(int)'

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
 
Probier mal bitte folgende Änderung für die betroffene Zeile mit dem Fehler (da wurde anscheinend am Code geschraubt ohne für den Mini zu testen):


Code:
rc.initSerial(&Serial2, PFOD_BAUDRATE);
 
Danke Alexander, das war der richtige Weg, jetzt piept das gute Stück einmal lang und zweimal kurz nach dem einschalten, ich glaube zu wissen das ich wohl doch einen Crash Kurs machen muß.
MfG Ronny
 
Hier der Versuch einer Anleitung:
http://wiki.ardumower.de/index.php?title=Ardumower_PCB#First-time_usage
 
Danke Dir Alexander für deine Mühe, dank deiner Hilfe bin ich jetzt soweit wie andere hier auch schon. Das soll heißen im Testbetrieb dreht nur der linke Motor und dies auch nur in eine Richtung. Es wurden schon die Settings gepostet, aber daren scheint es nicht zu liegen, hättest du da noch eine Idee?
 
Genau nach diesem bloß die deutsche Version. Ich finde es echt genial das sich einer die Mühe macht um einen Noob wie mich zu unterstützen. Ich gebe zu das ich den Mini geholt habe um zu schauen ob der Mover das geeignete für mich ist. Der Bastelzwang ist auf alle Fälle vorhanden und auch ausgeprägt, allerdings nicht unbedingt auf der Software-Seite. Was sich jedoch ändern kann.
MfG Ronny
 
Deiner Antwort kann ich immer noch nicht entnehmen ob nun PCB1.2 mit MC33926 Motortreiber oder selbst verdrahtet nach diesem Bild (http://wiki.ardumower.de/index.php?title=Ardumower_Mini) mit STL298N.
Könntest Du vielleicht mal ein Bild machen dass man sieht was Du gebaut hast?
 
Schau mal ob Jumper ENA und ENB am Motortreiber gesetzt sind und auch Jumper S1: https://www.marotronics.de/media/im...reiber-l298n-dual-h-bruecke-motor-treiber.jpg
Dann überprüfen ob die richtigen Arduino Pins verwendet wurden wie oben in mini.cpp angegeben:

#define pinMotorLeftPWM 5 // IN1
#define pinMotorLeftDir 31 // IN2
#define pinMotorRightPWM 3 // IN3
#define pinMotorRightDir 33 // IN4

Welche pins da auch immer konkret in mini.cpp stehen es muss zur aktuellen Verdrahtung passen.

Dann evtl. mal probeweise in mini.cpp bei der Stelle für die Motortreiber das "setL298N" ändern in "setMC33926"


Code:
void Mower::setActuator(char type, int value){
  switch (type){
    case ACT_MOTOR_LEFT: setMC33926(pinMotorLeftDir, pinMotorLeftPWM, value); break;
    case ACT_MOTOR_RIGHT: setMC33926(pinMotorRightDir, pinMotorRightPWM, value); break;
     ....
 
Die drei Jumper waren und sind gesetzt. Die Pins sind auch alle richtig angeschlossen. Nach der Änderung auf MC33926 brumt nur noch der rechte Motor.
Ich habe die Vermutung das der Treiber einfach nicht richtig durchschaltet, aber warum?
Ja es ist das Mega Board 2560 R3 ATmega2560 mit CH340G IC aus dem Set.
 
Man kann den Treiber ohne Arduino testen (und so erstmal die Verkabelung des Motors und den Treiber prüfen):

1. Wenn man IN2 auf HIGH (5v) legt und IN1 auf LOW (GND) muss der Motor vorwärts drehen.
2. Wenn man IN2 auf LOW (GND) legt und IN1 auf HIGH (5v) muss der Motor rückwärts drehen.

Tut er das? Dasselbe gilt für IN3 und IN4.


Code:
// L298N motor driver
// IN2/C(10)/PinPWM   IN1/D(12)/PinDir
// H                  L     Forward
// L                  H     Reverse
 
Eine Sache ist mir noch eingefallen (wird gerne vergessen): Arduino und Motortreiber müssen eine gemeinsame Masse haben. Man muss also Masse (GND) des Motortreibers mit der Arduino Masse (GND) verbinden, damit ein gemeinsamer Bezug für alle Signale gegeben ist.
 
Wenn ich nur In3 auf high lege läaüft das rechte Rad vorwärts, auch wenn In4 nicht belegt ist.IN1 und In2 sowie In4 machen überhaupt nichts.
 
Die Pins müssen einen definierten Pegel haben (LOW oder HIGH) es muss also etwas angeschlossen sein, da sonst das Verhalten undefiniert ist (zufällig). Wenn die Motoren nicht bei den gezeigten Signalen vor- bzw. zurück laufen und sonst die Motoren richtig verkabel sind und die Motortreiber-Masse (GND) mit der Arduino-Masse (GND) verbunden ist muss von einem Defekt des Motortreibers ausgegangen werden. Mach doch mal ein Bild wo man Deine Verkabelung genau sehen kann.
 
Was Du jetzt noch machen könntest (um ganz sicher zu gehen dass es der Motortreiber ist): Motortreiber-Eingang (IN1,2,3,4) wie vorher gezeigt so einstellen dass z.B. beide Motoren vorwärts laufen und dann mit einem Spannungs-Meßgerät (DC, Volt) die Eingänge (Spannungen zwischen GND und IN1,2,3,4 messen) und Ausgänge (also Spannungen zwischen OUT1,2 und OUT3,4 messen) messen. Sollten die Eingänge alle korrekt sein (wie eingestellt) aber die Ausgänge keine Spannung aufweisen ist der Treiber defekt.
 
Oben