- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 25

Thema: Motor PWM 19KHz?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Hi Slyd,
    du benutzt das TCCR1A bewust als Statusvariable für die PWM ... ok.. ja vermutet hatte ich den Zusammenhang ja oben schon mit dem ein/aus Schalter.
    Ok kann man so machen...
    Als Regelkreislauf kommt es aber offensichtlich dazu, das diese Kondition auch im Fahrbetrieb des Beispiels Example_05_Move_01 aufkommt - was hier dann zu ruckeln führte. Ok das ruckeln liegt an meiner Bastelei am Timer1...
    Nur darf der Regelkreislauf so exorbitant ausschlagen das der Motorcontroller meint, im Rollbetrieb zwischendrin mal eben so die PWM Generierung abschalten zu müssen? Da ist doch was im argen...
    Gruß Rolf
    Sind Sie auch ambivalent?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Der PWM Wert ist 0 wenn TCCR1A auf 0 gesetzt wird.
    Sobald in den PWM Variablen im Programm was anderes als 0 drinsteht, wird TCCR1A wieder auf den normalen Wert gesetzt (natürlich mit Verzögerung wegen Software Timer).
    Das macht also keinen Unterschied!


    Das bei Dir das Programm so seltsam reagiert wenn TCCR1A auf 0 gesetzt ist, liegt evtl. daran, dass der Overflow Interrupt dann etwas anders auftritt. Der wird ja nicht deaktiviert (weil er in der RP6Lib nicht genutzt wird).
    TCCR1A auf 0 setzen trennt den Timer von den I/O Ports ab und der Timer wird in den
    (EDIT: Natürlich nicht normal Modus sondern einer der anderen ich hatte vergessen das WGM13 ja im TCCR1B gesetzt ist)
    konfiguriert.
    Da in der RP6Lib diese Interruptvektoren nicht genutzt werden und auch nie geplant war diese jemals zu nutzen, hatte das da natürlich keine Relevanz.
    EDIT:
    Der Timer0 ist ja unabhängig vom Timer1, da TCCR1A zu setzten wirkt sich auf Timer0 natürlich nicht aus der läuft ungestört weiter. Wenn Du aber im Timer1 Interrupt das TCCR1A Register setzt wirkt sich das wohl anders aus.

    Der Regler kann den Sollwert nur soweit senken wenn die Regelabweichung stark genug wird.
    Der Stellwert sollte eigentlich nicht bis auf 0 runter gehen, aber da das Fahrzeug eine recht große Masse hat und auch erstmal abgebremst werden will wenn es gerade kurz beschleunigt hatte (plus Verzögerung wegen langsamer Änderung der PWM)... funktioniert im Fahrbetrieb aber gut genug. Kann man aber durchaus nochmal genauer untersuchen und optimieren.

    Wenn das bei *Deinem* Programm aber auch nur einmal kurz auftritt kommt alles durcheinander wegen der Verzögerung / Änderung der Timereinstellung die dann dazwischen funkt.

    Aber egal, einfach so anpassen wie Du schon gesagt hast dann sollte es laufen.

    MfG,
    SlyD
    Geändert von SlyD (29.08.2012 um 20:10 Uhr)

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Also, wenn ich das richtig sehe, dann ändert TCCR1A = 0 nicht die Frequenz, denn dann ist nur noch WGM13 gesetzt und das bedeutet Mode 8.

    Zu langsam, das hat SlyD inzwischen auch schon bemerkt.
    Geändert von radbruch (29.08.2012 um 20:12 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    P.S.: Das sollte auch so sein, denn sonst würden sich meine Servos nicht drehen, wenn der Antrieb steht...
    Ja wie in meinem zweiten EDIT zu lesen, ist hier ja die Situation so, das im Timer1 Interrupt, die Einstellungen von Timer1 geändert werden. Das war vorher ja aber nicht so, da wurde im davon völlig unabhängigen Timer0 die Einstellung vom Timer1 geändert. Müsste man mal testen wie sich das auswirkt.

    EDIT 33435: Immer diese ganze Beitragseditiererei, welch Verwirrung
    Man sollte eine Funktion im Forum haben die einem mitteilt das jemand gerade seinen Beitrag editiert während man eine Antwort schreibt

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Sorry. Ich musste das wieder entfernen, weil ich nicht nachweisen kann, dass die mit der OVL-ISR angesteuerten Servos sich auch mit aktiven Antrieben richtig verhalten. Ansonsten hat die Edit-Funktion auch meine WGM13-Recherche unnötig gemacht:

    "(EDIT: Natürlich nicht normal Modus sondern einer der anderen ich hatte vergessen das WGM13 ja im TCCR1B gesetzt ist)"

    P.S.: Es ist für mich ein schmaler Grad zwischen "Helfen" und "Sinn des Projekts". Deshalb bin ich in diesem Thread etwas zögerlich.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    *lach .. @SlyD.. naja bisher kriegen wir es ja hin uns auch trotz Edits zu verständigen.
    @Radbruch ... dadurch das Mode 8 in TCCR1B erhalten wird, laufen deine Servos auch beim abschalten des TCCR1A = 0 .. Richtig, seh ich auch so. Ein glücklicher Zufall.
    Denn ob das ne schöne Methode mit TCCR1A = 0 wärend einer Fahrt ist.. da kann man sicher drüber streiten. Ich bin aber kein Experte für Motor-Regelungen.
    Nun gut es funktioniert aber und nun auch mit Timer1. Für alle die einen freien Timer0 brauchen eine gute Nachricht. Danke noch mal.
    LG Rolf

    PS: @Radbruch, Sinn des Projekts... ist hier nicht RTOS sondern Timer0 bzw. einen Timer in der RP6Lib frei zu kriegen und das wird auch für andere interssant sein. Da lege ich in meiner Darstellung des Problems auch Wert und Gewicht drauf. Es wäre Schade wenn das "Glaubensfragen" sind.. es geht für mich rein um Aufgabenstellungen und bestmögliche Lösungen.

    Nachtrag: Evtl. muss man die Funktion vom "Bremspedal TCCR1A" mit einer Variable nachbilden wenn man nicht möchte, das TCCR1A=0 beschrieben wird. Meine Lösung, die Zuweisungen zu entfernen führt bei der RP6Lib dazu, das nach einem Motorbefehl nicht mehr abgebremst wird. Dazu eine Var myTCCR1A deklarieren und an allen Fundstellen ausser im Init ersetzen. Oder man benutzt #define CHANGE_DIRECTION_FAST und verzichtet gänzlich auf das Bremspedal (Warnung bezüglich Lebensdauer der Zahnräder beachten, für rumprobieren ist das aber ok).
    Geändert von RolfD (30.08.2012 um 13:08 Uhr)
    Sind Sie auch ambivalent?

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Timer0 bzw. einen Timer in der RP6Lib frei zu kriegen und das wird auch für andere interssant sein.
    Yep, dem stimme ich zu. Wäre sicherlich eine gute Sache.

    MfG,
    SlyD

Ähnliche Themen

  1. RN-Motor I2C Kommunikation klappt, am Motor tut sich nichts
    Von hspecht74 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 1
    Letzter Beitrag: 24.11.2008, 13:04
  2. Antworten: 0
    Letzter Beitrag: 15.03.2008, 17:28
  3. 19khz-einstellung für motortreiber l293d auf dem rp6
    Von roboterheld im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 05.10.2007, 17:50

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress