-         
Ergebnis 1 bis 6 von 6

Thema: Monster-Motor-Shield an Raspberry Pi wie anschließen?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2016
    Beiträge
    22

    Monster-Motor-Shield an Raspberry Pi wie anschließen?

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    will meinen Fahrroboter der mit 2 Scheibenwischermotoren ausgestattet ist jetzt von Arduino auf Raspi 3B umstellen.
    Bekomme jetzt leider den Motor nicht zum laufen. Habe 3 "WiringPi Ausgänge" jetzt mit dem Shield verbunden:

    Code:
    #include <iostream>
    #include <softPwm.h>
    #include <unistd.h>
    #include <wiringPi.h>
    
    // Motorvariablen
    
    const int M1_VORPIN = 22; // Pin 31   an D7 von Shield
    const int M1_RUEPIN = 23; // Pin 33   an D8 von Shield
    const int M1_SWPWM = 1;  // Pin 12  an D5 von Shield
    
    int main()
    {
        
        wiringPiSetup();
    
        pinMode(M1_VORPIN, OUTPUT);
        pinMode(M1_RUEPIN, OUTPUT);
        softPwmCreate(M1_SWPWM,10,100);
     
        digitalWrite(M1_VORPIN, LOW);
        digitalWrite(M1_RUEPIN, LOW);
    
        //VOR m1
        digitalWrite(M1_VORPIN, HIGH);
        digitalWrite(M1_RUEPIN, LOW);
        softPwmWrite(M1_SWPWM, 10);
    
        sleep(5);
    
        //M1 auslaufen lassen
        digitalWrite(M1_VORPIN, LOW);
        digitalWrite(M1_RUEPIN, LOW);
    
        sleep(1);
    
        return 0;
    }
    Kann mir jemand einen Tipp geben warum nichts geht? Was ist mit dem Enable-Anschluss am Shield?

    Bei Hardware-PWM habe ich gleich aufgegeben da nur ein Raspi-Ausgang (pin 12) HW-tauglich ist.

    Die 3,3V-Pegel müssten doch am Shield funktionieren?

    Danke

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.127
    hallo,
    muss man nicht erst auch die pwm-pins als OUTPUT definieren oder PWM_OUTPUT (bin mir nicht sicher)?
    Und dann kontrolliere mal sicherheitshalber auch die Pin-Nummern (bcm- versus wiringPi- oder physical Nummerierungen):
    wiringPiSetupGpio(), wiringPiSetup(), oder wiringPiSetupPhys()

    Außerdem benutze ich die Voreinstellung
    softPwmCreate (pin, 0, 100) ;
    und
    softPwmWrite(pin, x); (x von 0...100)
    evtl ist auch 10 zu niedrig?

    Außerdem:
    Welches Motorshield benutzt du?
    Welches Betriebssystem?

    Funktioniert damit sonst die Ansteuerung auch beim Arduino?
    Geändert von HaWe (18.06.2020 um 09:32 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2016
    Beiträge
    22
    Zitat Zitat von HaWe Beitrag anzeigen
    hallo,
    Und dann kontrolliere mal sicherheitshalber auch die Pin-Nummern (bcm- versus wiringPi- oder physical Nummerierungen):
    Daran lag es! Ist mir doch ein Fehler unterlaufen

    muss man nicht erst auch die pwm-pins als OUTPUT definieren oder PWM_OUTPUT (bin mir nicht sicher)?
    Nein muss man nicht

    Außerdem benutze ich die Voreinstellung
    softPwmCreate (pin, 0, 100) ;
    und
    softPwmWrite(pin, x); (x von 0...100)
    evtl ist auch 10 zu niedrig?
    Klappt! Fährt auch bei 10 aber sehr laut und unrund

    Welches Motorshield benutzt du?
    30A VNH2SP30 Stepper Motor Driver Monster Moto Shield

    Welches Betriebssystem?
    Buster

    Danke

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.127
    super, freut mich zu hören!
    Auch gut zu wissen, dass wiringPi mit dem 3B (oder sogar 3B+ ?) noch auf Buster läuft!

    - - - Aktualisiert - - -

    PS,
    wenn du oft mit kleinen pwms fähst, kann man auch die wiringPi-pwm-Frequenz hochsetzen, dann hauen die dutycycles nicht so knallhart durch
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2016
    Beiträge
    22
    wenn du oft mit kleinen pwms fähst, kann man auch die wiringPi-pwm-Frequenz hochsetzen, dann hauen die dutycycles nicht so knallhart durch
    Ich habe dann einen Servo und zwei Motoren dann auf SWPWM. Wie weit kann ich mit der Frequenz dann hoch damit der Raspi nicht überlastet wird? Zwischendrin muss er auch noch Entfernungen (US) messen. Vor der Messung werde ich dann alle SWPWM's dann auf LOW setzen?
    Bisher hatte ich am Arduino alles auf HWPWM da war das kein Problem.

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.127
    der Pi 3B ist ein Quadcore, d.h. er ist durch 2 softpwm Pins nicht überfordert.
    IIRC läuft softwPwm mit timer-IRQs (kann mich aber nicht mehr genau erinnern) und daher störungsfrei parallel zu anderen threads/tasks.

    Ich kann mich dunkel erinnern, dass das mal im Raspi.org forum diskutiert wurde mit der Freq., und dass Arduino-ähnliche Werte locker erreicht werden können (ca. 500Hz).
    HWpwm auf dem Pi besitzt der kernel (bcm GPIOs 12+13), da brauchst du also root-Rechte, hat aber ansonsten IMO keine besonderen Vorteile.
    Ich habe übrigens mit pthread-Programmen bisher bisher 6 pwm-Motoren mit softwPwm plus 6x Rotationsencoder-Reading im 100µs Takt plus UART-Kommunikation mit einem Arduino im 10ms Takt plus IR-Sensoren im 50ms Takt plus HDMI-Display-paint und plus console-print im 30ms Takt.

    PS,
    Nur 1 Anm.:
    weil US-Sensoren MEIST sehr lange blockierende delays brauchen, solltest du diese dann am besten schon auch in eigene pthreads packen, damit der Rest störungsfrei weiterläuft (zB. bei einer ununterbrochenen i2c-, SPI-, pwm- oder UART-Auslesung, softwPwm ist dabei aber auch außen vor).
    Wenn du kein MT nutzt, dann nimm also US-Sensoren, die das nicht brauchen oder nimm von vornherein IR-Sensoren (Sharp GP2D120 o.ä.).
    pthread läuft übrigens störungsfrei schon auf Singlecores (dafür wurde es entwickelt), aber auf einem Pi Quadcore läuft es wie ein Rudel Schlittenhunde
    (wenn du pthread nutzen willst und dazu Fragen hast, mach am besten dazu ein neues topic auf.)
    Geändert von HaWe (20.06.2020 um 10:18 Uhr) Grund: typo
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 01.03.2017, 20:45
  2. 502IOT: Das Über-Shield für den Raspberry Pi
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 12.04.2016, 06:30
  3. Arduino Motor Shield Frage
    Von Andi#87 im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 31.03.2014, 23:11
  4. RN-kompatibles Raspberry-Pi Shield
    Von pointhi im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 0
    Letzter Beitrag: 27.02.2014, 13:09
  5. Antworten: 4
    Letzter Beitrag: 07.09.2012, 16:06

Berechtigungen

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