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

Thema: Schrittmotor mit Rampen ansteuern ?

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    57
    Beiträge
    576
    Anzeige

    LiFePo4 Akku selber bauen - Video
    kurze Frage:
    Ich probiere gerade mit den maximalen Taktfrequenzen:

    Kann es sein, dass in einer ISR Routine, diese fertig gearbeitet wird, auch wenn der Load-Wert vom Timer Kürzer ist ?

    Ich dachte immer, wenn der Load-wert zu kurz ist, dass es dann die ISR abschneidet weil ja schon der nächste Überlauf da ist....?!

    (Lade am Anfang der ISR schon den Timer neu)

    Scheint aber nicht so zu sein.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.03.2005
    Ort
    OWL
    Beiträge
    216
    hmm, war eigentlich auch davon ausgegangen, dass die isr einfach von vorne beginnt... hast du die nosave-option verwendet? glaube, könnte damit zusammenhängen, bin mir aber nicht sicher.
    mehrere timer benötigst du nicht unbedingt, um mehrere motoren anzusteuern, die taktsignale dürfen nur nicht bei jedem durchlauf des interrupts erzeugt werden. bisher habe ich mich immer auf 3 achsen beschränkt, aber das sollte trotzdem gehen.

    Ruppi

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    57
    Beiträge
    576
    Hallo Ruppi

    hast du die nosave-option verwendet?
    nein, eigentlich ganz normal..


    Hättest Du vielleicht ein bisschen Code zum anschauen..?

    Derzeit habe ich es mal so gemacht.
    Leider in der ISR... (Sonst fällt mir nix besseres ein)



    Also ca. in der Art:

    ----------------ISR----------------
    Load Timer1,...

    If B < 100 Then
    A = A + B
    If A > 1000 Then
    B = B + 1
    A = 0
    End If
    End If

    hier die Takausgabe..
    Return
    ------------------

    Das läuft so, dass der Takt jedesmal ausgegeben werden kann, wenn A = 0
    Zuerst ist das eher selten, weil B noch klein ist und A und B summiert wird.
    Dann erhöht sich B und erhöht damit immer schneller das A und somit eine schnellere Taktausgabe.
    Solange bis B auf Maximum ist, dann wird die Rampenschleife nicht mehr durchlaufen..


    Leider fällt mir nix besseres ein..

    l.G. Roberto

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.03.2005
    Ort
    OWL
    Beiträge
    216
    moin,
    auf diese art wirst du nie eine saubere rampe fahren können, du möchtest ja eine lineare Geschwindigkeitsrampe erreichen. leider ist die gleichung, die du dafür nutzen musst, für einen controller zu aufwendig zu berechnen, da man in jedem interrupt eine wurzel berechnen müsste. allerdings gibt es dafür eine geeignete approximation, sodass man die berechnung mit ganzzahlen erschlagen kann.
    ich habe hier einen schönen link von atmel, dort ist alles genau beschrieben:
    atmel.com/dyn/resources/prod_documents/doc8017.pdf

    Ruppi

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    57
    Beiträge
    576
    Hallo Ruppi

    Danke für den Link.
    Leider hilft mir das auch nicht viel, weil Englsich schlecht und mit Formeln auch

    Habe jetzt einen Load-Wert in der ISR von 440 Eingestellt
    (ist 20kHz Ausgabe bei 10Mhz Q)

    Also darf ich nur ganz wennig in der ISr Machen, sonst kann ich im normalem Programm nicht mehr viel machen...

    Meine letzte Idee ist alle Werte (Ramp, normal u.s.w.) irgendwie in einen so Art Ringspeicher abzulegen, die die ISR nacheinander abarbeidet.

    Aber noch keine Ahnung, ob sowas überhaupt irgendwie geht

    Hat noch jemand einen Tipp für mich..... ?

    l.G. Robert

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    57
    Beiträge
    576
    Hallo

    Keine eine Tip ?

    Habe inzwischen meine Rampen zusammenbekommen.
    Ausgabe mit 20 kHz
    Code:
    '######################## Interrupts ###########################################
    
    '######################### Timer1 Anfang #######################################
    Takt:
    Load Timer1 , 440                                           ' 440= Bei Prescale 1 und 10Mhz Q, = 20 Khz Takt
    
    
    If Fahre > 0 Then                                           'ist was zum fahren da ?
    
       If A < 255 Then A = A + 1                                '---Rampe EIN ----
    
    
          If A > 254 Then                                       '---Rampe AUS ----
    '------------------------------------------
          Portd.0 = 0                                           '=======TAKT EIN===
    
                 If Rampe = 1 And B < 24 Then
                 '--nächsten Rampenwert holen---
                    A = Lookup(b , Rampe_rauf)
                    B = B + 1
                 End If
    
                 If Rampe = 0 And B < 24 Then
                 '--nächsten Rampenwert holen---
                    A = Lookup(b , Rampe_runter)
                    B = B + 1
                 End If
    
                 If Fahre < 24 Then         ' Rampe umschalten
                    Rampe = 0
                    B = 0
                    A = 255
                 End If
    
           '--Zählen---
           Decr Fahre
           Portd.0 = 1                                        '=======TAKT AUS===
    '---------------------------------------------
    
             If Fahre = 0 Then
                Disable Timer1
                B = 0
                Rampe = 1                                       'Rampe RAUF vorwählen
             End If
    
          End If
    End If
    
    
    Return
    '######################### Timer1 Ende #########################################
    
    Rampe_rauf:
    Data 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 , 100 , 110 , 120 , 130 , 140 , 150 , 160 , 170 , 180 , 190 , 200 , 210 , 220 , 230 , 240 , 250
    
    Rampe_runter:
    Data 250 , 240 , 230 , 220 , 210 , 200 , 190 , 180 , 170 , 160 , 150 , 140 , 130 , 120 , 110 , 100 , 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10
    Habe die Rampen jetzt in einer Data-Zeile abgelegt
    (Werte nur mal zum probieren)

    Leider musste ich in der ISR noch immer ein paar Rechnungen einbauen, aber zumindest einige zwischen dem Ein und Ausschalten vom Takt.
    Da brauche ich eh ein bisschen Zeit, für einen längeren Puls.

    Übergabe der Schritte mit der Variable "Fahre"


    Was haltet ihr davon ?
    Kritik ? Vorschläge ?

    L.G. Roberto

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Hat keiner einen TIP Deine Frage.

    Mein Tip :Kein Schrittmotor hat eine Lineare Rampe .
    Deine 10,20,30 ist nur Plazebo wenn Du SM RICHTIG nutzen willst.
    Legst Du nur H/L am SM an oder FRQ Modulierte H/L ?

    Richtig oder Nicht , was willst du ist hier die Frage !

    lg gento

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    57
    Beiträge
    576
    Hallo gento

    Es geht nicht so richtig um Schrittmotoren.
    Es wird damit ein Servomotor (mit Takt/Richtung) angesteuert.
    Der verträgt schon einiges an Anlauffrequenz, aber für die Maximale Frequenz brauche ich doch Rampen.
    (2000 *4 Encoder und 1:50 Getriebe)

    Mir geht es eher um die best mögliche Programmierung der Takterzeugung! (Da habe ich keine Erfahrung)
    (Optimal wäre halt so 40kHz Taktausgabe (+Rampen))

    Derzeit sollten zumindest 3 Motoren mit 20kHz Ausgabe zu steuern sein..
    Aber wie macht man das am besten ?
    Lösungsansätze?
    Was muss ich in der ISR rechnen und was herausen ?
    u.s.w.

    Übergebe ich die Richtung auch gleich an die ISR oder schalte ich das Dir Signal im Programm..

    Fragen über fragen

    Ein Beispielprogramm wäre auch sehr hilfreich, wie es andere vielleicht gemacht haben

    l.G. Roberto

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Ich gehe davon aus das Du für Deine Arbeit /Aufgabenstellung nicht nach 1 Euro Job bezahlt wirst , sondern Lösungen/Arbeit gerne anderen überläst?

    Gento

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    57
    Beiträge
    576
    ??? ..................

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress