- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 41

Thema: Alles PWM oder wie?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    57
    Beiträge
    2.814
    Wie ist den der komplette Code bei dem,

    "Motor_1_Backw(200);"

    zu einem drehenden Motor geführt hat?

    Mein Code ist ein Sniplet, das einzufügen ist.
    das
    Code:
    int speed;
    halt ganz am Anfang um die Variable zu deklarieren.
    Code:
    den Abschnitt void setup()
    {
    bla bla
    }
    habe ich komplett weggelassen, da der ja bereits existieren muß wenn
    "Motor_1_Backw(200);"
    etwas bewirkt.
    (ich weis ja nicht wie, welche Pins definiert sind)

    In die Hauptschleife void loop()
    halt die For Schleifen um speed zu inkrementieren und zu dekrementieren.
    Und die beiden Funktionen unverändert von witzkatz.

    - - - Aktualisiert - - -

    Zitat Zitat von inka Beitrag anzeigen
    aber die pins haben dann trotzdem keine verbindung zur hardware, also zum motortreiber? Das ist das was ich nicht verstehe...
    Wenn sich der Motor dreht, was ist denn angeschlossen?

    Plus und Minus zu einer Stromquelle und zwei Anschlüsse zu einem Motor sind das mindeste damit überhaupt was passieren könnte.

    Ist außer diesen 4 Drähten sonst noch irgendeine Leitung irgendwo angeschlossen?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von i_make_it Beitrag anzeigen
    Wie ist den der komplette Code bei dem,

    "Motor_1_Backw(200);"

    zu einem drehenden Motor geführt hat?

    Wenn sich der Motor dreht, was ist denn angeschlossen?

    Plus und Minus zu einer Stromquelle und zwei Anschlüsse zu einem Motor sind das mindeste damit überhaupt was passieren könnte.

    Ist außer diesen 4 Drähten sonst noch irgendeine Leitung irgendwo angeschlossen?
    - das ist der code der zu einem drehendem motor geführt hat:
    Code:
    int IN1 = 9;
    int IN2 = 8;
    int IN3 = 7;
    int IN4 = 6;
    
    
    int Motor_1_Pwm;
    int Motor_2_Pwm;
    //char velo;
    
    
    void setup()
    {
      pinMode(IN1, OUTPUT);
      pinMode(IN2, OUTPUT);
      pinMode(IN3, OUTPUT);
      pinMode(IN4, OUTPUT);
    
    
      Serial.begin(9600);
      Serial.println("Enter number for control option:");
      Serial.println("1. FORWARD");
      Serial.println("2. REVERSE");
      Serial.println("3. STOP");
      Serial.println();
    }
    
    
    void loop()
    {
      char user_input;
    
    
      while (Serial.available())
      {
        user_input = Serial.read();
        /*
          digitalWrite(IN1, LOW); //OFF
          digitalWrite(IN2, LOW);
          digitalWrite(IN3, LOW);
          digitalWrite(IN4, LOW);
        */
        if (user_input == '1')
        {
          Forward();
        }
        else if (user_input == '2')
        {
          Reverse();
        }
        else if (user_input == '3')
        {
          Stop();
        }
        else
        {
          Serial.println("Invalid option entered.");
        }
      }
    }
    
    
    
    
    void Forward()
    {
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      Serial.print("Motor 1 Forward");
      Serial.println();
    
    
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      Serial.println("Motor 2 Forward");
      Serial.println();
    }
    
    
    void Reverse()
    {
      Motor_1_Backw(50);
      Motor_2_Backw(50);
    
    
    
    
      //digitalWrite(IN1, LOW);
      //digitalWrite(IN2, HIGH);
    
    
      Serial.print("Motor 1 Reverse");
      Serial.println();
    
    
      //digitalWrite(IN3, LOW);
      //digitalWrite(IN4, HIGH);
    
    
      Serial.println("Motor 2 Reverse");
      Serial.println();
    }
    
    
    void Stop()
    {
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      Serial.print("Motor 1 Stop");
      Serial.println();
    
    
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      Serial.println("Motor 2 Stop");
      Serial.println();
    
    
    }
    /*
    void Motor1Forw(char velo)
    {
        Motor1_In1 = 0;
        Motor1_Pwm = velo;
    }
    void Motor1Backw(char velo)
    {
        Motor1_In1 = 1;
        Motor1_Pwm = 255 - velo;
    }
    */
    
    
    void Motor_1_Forw(int velo)
    {
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      Motor_1_Pwm = velo;
    
    
    }
    void Motor_1_Backw(int velo)
    {
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, velo);
      //Motor_1_Pwm = 255 - velo;
    }
    
    
    void Motor_2_Forw(int velo)
    {
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      Motor_2_Pwm = velo;
    
    
    }
    void Motor_2_Backw(int velo)
    {
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, velo);
      //Motor_2_Pwm = 255 - velo;
    }
    - angeschlossen ist +/-/ IN1/IN2/IN3/IN4/motor 1/motor 2
    gruß inka

  3. #3
    HaWe
    Gast
    Zitat Zitat von inka Beitrag anzeigen
    das ist jetzt der code, der sich auch kompilieren lässt:
    Code:
    int speed;
    
    void setup() {
      // put your setup code here, to run once:
    
    }
    
    void loop(){
      for (int speed=0; speed <=255; speed++){
        Motor_1_Backw(speed);
    //    delay(10);
      }
      for (int speed=255; speed >=0; speed--){
        Motor_1_Backw(speed);
    //    delay(10);
      }
      for (int speed=0; speed <=255; speed++){
        Motor_1_Forw(speed);
    //    delay(10);
      }
      for (int speed=255; speed >=0; speed--){
        Motor_1_Forw(speed);
    //    delay(10);
      }
    }
    
    
    void Motor_1_Forw(char velo){
    int  Motor1_In1 = 0;
    int    Motor1_Pwm = velo;
    }
    
    
    void Motor_1_Backw(char velo){
    int  Motor1_In1 = 1;
    int  Motor1_Pwm = 255 - velo;
    }
    aber nach dem hochladen passiert nichts...

    ich muss mir das noch genauer anschauen...

    jetzt hast du ja immer noch das bescheuerte 255-velo drin, was soll das?
    und wo hast du definiert, was in1 und in2 für Pin-Nummern haben?
    Und dass die pinMode Output haben??

    Außerdem habe ich oben andere Funktionen hingeschrieben! (edit, c+p verrutscht)

    void Motor_1_Forw(char velo)
    {
    analogWrite(IN1, velo);
    digitalWrite(IN2, HIGH);
    }


    void Motor_1_Backw(char velo)
    {
    analogWrite(IN1, velo);
    digitalWrite(IN2, LOW);
    }
    Geändert von HaWe (21.02.2018 um 08:49 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    57
    Beiträge
    2.814
    Zitat Zitat von HaWe Beitrag anzeigen
    jetzt hast du ja immer noch das bescheuerte 255-velo drin, was soll das?
    Was daran ist bescheuert?
    (255-velo) ist die Inversion von (velo).
    Das eine nimmt man bei einer positiv Logik das andere bei einer negativ Logik.
    Bei witzkatz funktioniert es.
    Ob es mit dieser Hardware funktioniert oder das Ergebniss invertiert ist, muß sich erst noch zeigen.
    Nur "pauschal" bescheuert ist es halt nicht.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von i_make_it Beitrag anzeigen
    @Inkawie vertraut bist Du denn mir dem allgemeinen Aufbau eines ArduinoSktechs?
    Zitat Zitat von i_make_it Beitrag anzeigen

    Code:
    konstantenund Variablen Deklaration
    
    voidsetup()
    {
    Eingänge,Ausgänge konfigurieren
    Initialationenund Code der einmalig beim Controller Power On ausgeführt werdensoll. 
    }
    
    voidloop()
    {
    Hauptschleife die immer wieder durchlaufen wird 
    }
    
    void<funktionname>()
    {
    Funktionenund Interrupt Service Routinen die aus der Hauptschleife oder durchIRQ's aufgerufen werden
    }
    Istdieses allgemeine Schema bekannt oder kopierst Du eher bestehendenCode zusammen und variierst ihn dann für Deine Bedürfnisse?

    ja,dieses allgemeine schema ist mir bekannt. Und ich richte mich im allgemeinenn auch danach. Trotzdem kopiere ich mir schon mal ein paar codeblöcke zusammen und versuche sie mir zurecht zu schnitzen...




    Zitat Zitat von witkatz Beitrag anzeigen
    Ichhätte vielleicht etwas Erklärung dabei schreiben sollen, sorry.Also du wählt bspsw. IN1 für Richtung und IN2 für speed. Dannmusst du auch IN1 an einen Digitalausgang und IN2 an den PWM Ausganganschließen.
    Zitat Zitat von witkatz Beitrag anzeigen
    WennIN1 == 0 dann geht der PWM Wert proportional zu velo
    WennIN1 == 1 dann (Richtungsumkehr) geht der PWM Wert umgekehrtproportional zu velo, von 100% auf 0.
    Beimir ist der PWM Wert vom typ char, daher diese 255 - velo fürRichtungsumkehr. Bei int oder anderen Wertebereichen muss man dieFunktion entspr. anpassen.
    dieseerklärung hätte mir genügt, danke...
    gruß inka

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    @inka: Welchen Treiber hast du denn jetzt tatsächlich da dran?
    Nur um sicher zu gehen dass ich das noch richtig verstehe. Es geht immer noch um Anteuerung über IN1 und IN2 für einfache Brückentreiber wie L9110 oder den MX1508 vom Eröffnungspost, die allein über IN1 und IN2 (ohne En!) angesteuert werden. Oder?
    Weil für den echten L298N oder dem vom RoboHolIc aufgeführten TB6612FNG gilt das so nicht. Da darfst du das PWM nicht negieren.

    - - - Aktualisiert - - -

    Deswegen finde ich die Beschreibung des Teils aus dem Eröffnungspost auch zum kotzen. L298N wird nur als buzzword benutzt um mehr Interesse zu wecken. Tatsächlich haben die Teile damit nichts zu tun und Versuche mit Ansteuerung und Codebeispielen für L298 führen in eine Sackgasse.

    - - - Aktualisiert - - -

    Sorry, wenn mein 8-bit Beispiel nicht so ganz in die Arduino Umgebung gepasst hat, aber ich habe aus meiner "bescheidenen" 8-bit Welt gepostet was ich habe. @inka: wenn du den Brückentreiber an Arduino am laufen hast, kannst du vielleicht dein funktionierendes Arduino Codesnippet für die Nachwelt präsentieren, um den Thread rund zu machen. Von mir aus kannst du auch einen Sketch daraus drehen
    Geändert von witkatz (20.02.2018 um 19:43 Uhr)

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    Zitat Zitat von inka Beitrag anzeigen
    so habe ich versucht das umzusetzen:

    Code:
    int Motor_1_Pwm;
    .
    .
    .
    
    void Motor_1_Backw(char velo)
    {
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      Motor_1_Pwm = 255 - velo;
    }
    Ich hätte vielleicht etwas Erklärung dabei schreiben sollen, sorry. Also du wählt bspsw. IN1 für Richtung und IN2 für speed. Dann musst du auch IN1 an einen Digitalausgang und IN2 an den PWM Ausgang anschließen.
    Wenn IN1 == 0 dann geht der PWM Wert proportional zu velo
    Wenn IN1 == 1 dann (Richtungsumkehr) geht der PWM Wert umgekehrt proportional zu velo, von 100% auf 0.
    Bei mir ist der PWM Wert vom typ char, daher diese 255 - velo für Richtungsumkehr. Bei int oder anderen Wertebereichen muss man die Funktion entspr. anpassen.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. 2 Atmegas verwenden oder doch alles in einem
    Von moritz31 im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 12.03.2014, 17:02
  2. Alles Matrix, oder?
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 21.12.2012, 21:30
  3. Real Time Clock oder Uhrenquarz? Alles möglichst stromarm
    Von MelMan im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 08.06.2011, 17:01
  4. Was brauche ich alles
    Von Haveaniceday im Forum AVR Hardwarethemen
    Antworten: 17
    Letzter Beitrag: 02.08.2007, 12:07
  5. Ist in dem BAusatz alles drin, oder braucht man noch was ???
    Von michiE im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 3
    Letzter Beitrag: 07.03.2005, 16:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress