Inbetriebnahme zum testen mit L298N Motorendstufen

emulein

Member
Hallo Zusammen,

muss mir jetzt auch etwas Hilfe von euch holen!. Ich bin ja zur Zeit dabei einen Testlauf zu machen und bleibe da leider etwas stecken. Ich möchte meinen Mäher ja mit BLDC-SERVOS für die Antriebe nutzen aber dazu wollte ich erst mal mit Standardteilen alles mal soweit ans laufen bringen damit man nicht gleich mehrer Fehlerquellen auf einmal hat. Ich benutze die 1.2 Platine mit 24volt und als Software habe ich die "ardumower-1.0a4-Azurit" drauf. Sensoren habe ich noch keine dran und auch nicht aktiviert. Das Bluetoothmodul ist dran und läuft auch soweit, die APP Ardumower geht auch soweit ich das beruhrteilen kann.
Nun zu meinem Problem mit den Motoren. Über die Konsole habe ich das so angefangen wie im Wiki beschrieben und da gabe es auch keine Probleme. Wenn ich jetzt über "1" den Motortest mache dreht sich erst der eine Motor in eine Richtung und dann schneller in die andere Richtung. Das gleiche dann auch mit dem zweiten Motor. Bis dahin würde ich sagen stimmt das alles, nur habe ich erwartet das nicht immer "Left Motor fault" und "right Motor fault" in der Konsole ausgegeben wird. Die Stromsensoren habe ich natürlich auch verbaut und die scheinen auch zu funktionieren. Im Ruhezustand liegen am Ausgang 2.5 Volt an, wenn die Motoren laufen geht die Spannung einmal hoch und einmal runter, je nach Drehrichtung der Motoren. Gut es sind jetzt kleine Motoren ohne Last. Der Strom liegt hier nur bei ca. 500mA. Ich habe die Spannung verfolgt bis zum Arduinopin, kommt auch dort an. Muss ich da noch was machen das die Steuerung erkennt das die Motoren laufen?.

Ah, noch was!. Ich hatte gelesen das man im Code an manchen Stellen den Treiber L298N auch eintragen muss, da habe ich auch gemacht und hoffe das es auch richtig war.

Gruß Frank
 
Dran denken, dass die Software immer von den Standardbauteilen ausgeht. Und das sind nicht die L298-Treiber, sondern der MC33926-Treiber. Der hat neben der Stromrücklesung auch einen Ausgangspin, der Überlast (thermisch oder elektrisch oder eine Mischung von beidem) anzeigt. Der wird auf HIGH gezogen, wenn alles in Ordnung ist und auf LOW wenn ein Fehler auftritt. Dementsprechend musst du wahrscheinlich bei deiner Konstruktion diesen Eingangspin am Arduino auf 5V legen, damit die Steuerung keinen Fehler erkennt.

Gruß,
Jem
 
Hallo Jem,

ja sowas in der Richtung hatte ich vermutet!, danke für die Info. Das werde ich später noch testen im Keller. Wenn ich später meine Steuerung dran mache kann ich mir das ja in meine Motorenansteuerung mit rein machen. Mann muss es nur wissen in dem Fall.

Danke!

Gruß Frank
 
Hallo Frank
ja das war richtig

Code:
void Mower::setActuator(char type, int value){
  switch (type){
    case ACT_MOTOR_MOW: setL298N(pinMotorMowDir, pinMotorMowPWM, value); break;// Motortreiber einstellung - bei Bedarf ändern z.B setL298N auf setMC33926
    case ACT_MOTOR_LEFT: setL298N(pinMotorLeftDir, pinMotorLeftPWM, value); break;//                                                                  Motortreiber einstellung - bei Bedarf ändern z.B setL298N auf setMC33926
    case ACT_MOTOR_RIGHT: setL298N(pinMotorRightDir, pinMotorRightPWM, value); break; //                                                              Motortreiber einstellung - bei Bedarf ändern z.B setL298N auf setMC33926
    case ACT_BUZZER: if (value == 0) noTone(pinBuzzer); else tone(pinBuzzer, value); break;
    case ACT_LED: digitalWrite(pinLED, value); break;    
    case ACT_USER_SW1: digitalWrite(pinUserSwitch1, value); break;     
    case ACT_USER_SW2: digitalWrite(pinUserSwitch2, value); break;     
    case ACT_USER_SW3: digitalWrite(pinUserSwitch3, value); break;         
    case ACT_RTC:  
      if (!setDS1307(datetime)) {
        Console.println("RTC comm error!");
        addErrorCounter(ERR_RTC_COMM); 
        setNextState(STATE_ERROR, 0);       
      }
      break;


was meinst du mit Stromsensorern verbaut genau???? Welche

mit dem Motor Fault Fehler geht auch einfacher
einfach die entsprechenden Zeilen in der Mower.cpp auskommentieren


Code:
// motors------------------------------------------------------------------------------------------------
    //case SEN_MOTOR_MOW: return ADCMan.read(pinMotorMowSense); break;
    //case SEN_MOTOR_RIGHT: checkMotorFault(); return ADCMan.read(pinMotorRightSense); break;
    //case SEN_MOTOR_LEFT:  checkMotorFault(); return ADCMan.read(pinMotorLeftSense); break;
    //case SEN_MOTOR_MOW_RPM: break; // not used - rpm is upated via interrupt


Gruß
Uwe
 
Hallo Uwe,

ja Danke, im Code wäre das auch gegangen. Ich habe jetzt mal auf die schnelle einfach drei Pull-up dran gemacht und schon sind die Fehlermeldungen weg. Jetzt mal schauen wie es weiter geht. Was mich noch interisiert ob die Ansteuerung von Schrittmotoren noch im Code drin ist, das wäre die Ansteuerung die ich brauchen würde. An Stromsensoren habe ich die ACS712 5Ampere drin.

Danke auf jeden Fall an euch!

Gruß Frank
 
Hi,

ja wahrscheinlich ist es schlauer mir da was hinter euer PWM Signal zu bauen als immer am Code rum zubauen wenn eine neue Version kommt.
Das mit den BLDC Antrieben will ich aber auf alle Fälle versuchen, ich hoffe auch auf etwas geringeren Stromverbrauch der Motoren.

Mal schauen wie es weiter geht!

Gruß Frank
 
Es empfiehlt sich, wenn man nicht nach standard baut, den Kram über "Umsetzerboards" laufen zu lassen, da man sonst bei jeder neuen Version wieder den Code ändern muss.

Ich habe für den Mähmotor ein kleines Board gebaut mit nem Arduino Nano, der mir den BLDC über nen Govenor-ESC steuert (wichtig, dass es Govenor ist, da dann die Drehzahl schön gleichmäßig bleibt, egal wie hoch oder tief das Gras gerade ist) und gleichzeitig über nen ACS712 den Strom und über einen Hallsensor auch ein Geschwindigkeitssignal misst und das alles an das Mainboard weitergibt. Das Mainboard denkt dabei weiterhin, dass die Standardteile verbaut sind und ich brauche am Code nix ändern.

Gruß,
Jem
 
Hallo,

ich möchte da ja "echte BLDC Servos" mit Encoder und passender Steuerung dran bauen. Von dehnen habe ich halt noch was da. So im ersten Moment traue ich mir so einen Umsetzer per Arduino nano zu, ich hoffe ich täusche mich da nicht. Passende Getriebegehäuse mit Zahnriemen Getriebe habe ich gerade auf der Fräse. Mal schauen wie es klappt.

Was ich aber noch nicht weg bekommen habe ist das in der Konsole im steht "button pressed" obwohl keiner dran ist?!.

Gruß Frank
 
Bist du denn sicher, dass die Servos Dauerbetrieb aushalten? Und auch die Last?

Hast du mal nen Link oder Datenblatt von so einem Ding?

Gruß,
Jem
 
Hallo Jem,

ja ich denke schon!. Nicht das du die jetzt mit Modellbau Servos verwechselt ;)
Das ist ein BLDC Motor mit der Bezeichnung BN23 von Moog. Da muss dann natürlich eine Regelung davor, Encoder müssen da auch dran. Die Regelungstechnik ist auch ein ooen-souce Projekt was sehr gut dokumentiert ist. Habe schon einige Sachen damit gemacht. Wenn es dich interessiert such mal nach UPCX530 und Bestückungsautomat, link habe ich jetzt gerade nicht parat. Der gute Mann heißt Volker Besmens und ist sehr kompetent und hilfsbereit. Hat mir zu Anfang auch sehr zur Seite gestanden bei meinen Problemen.

Gruß Frank
 
Oben