- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: H-Brücke mit PWM

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2003
    Ort
    Bad Krozingen
    Alter
    41
    Beiträge
    125

    H-Brücke mit PWM

    Anzeige

    E-Bike
    Hi Leute, ich habe vor kurzem erfolgreiche meine H-brücke aufgebaut und die auch schon geproggt..das Anfangsprogramm war jedoch relativ simpel und das hoch und runterzählen der PWM hat der hauptprozzi. Ich hab es so programmiert, dass ich über eine Softwareserielle immer einen wert schick (2 räder, 2 brücken, 2 serielle)
    -1023 bis -1= pwm links, 0=stopp,1 bis 1023 pwm rechts, dass sie die werte die ich vom hauptprozzi schick.
    Jetzt will ich allerdings nicht mehr vom hauptprozzi aus anfahren und abbremsen lassen, sonder will das die brücke übernehmen lassen, doch bisher hab ich es nicht gebacken gekriegt, wer kann mir helfen?
    ( Hauptprozzi M16, Brücke M8 )
    Hier mal das vorherige Programm und den einenregelungsversuch
    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    $baud = 19200
    
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pind.7 = Output
    Enable Interrupts
    
    Dim A As Word
    Dim I As Integer
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Open "Comc.3:19200,8,n,1" For Input As #1
    
    
    
    
    Do
    Portd.6 = 1
    Portd.7 = 1
    
    Input #1 , I
    Print I
    Select Case I
    Case Is > 0 : Gosub Rechts
    Case 0 : Gosub Stopp
    Case Is < 0 : Gosub Links
    End Select
    Loop
    
    
    Links:
    A = I * -1
    Pwm1a = 0
    Pwm1b = A
    Return
    
    Rechts:
    Pwm1a = I
    Pwm1b = 0
    Return
    
    Stopp:
    Pwm1a = 0
    Pwm1b = 0
    Return
    
    
    End
    Nicht funktionierende Eigenregelung:
    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    $baud = 19200
    
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pind.7 = Output
    Enable Interrupts
    
    Dim A As Word
    Dim I As Integer
    Dim L As Integer
    Dim R As Integer
    Dim R1 As Integer
    Dim S1 As Integer
    Dim S2 As Integer
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Open "Comc.3:19200,8,n,1" For Input As #1
    
    Portd.6 = 1
    Portd.7 = 1
    
    Do
    
    I = Inkey(#1)
    Select Case I
    Case Is > 0 : Gosub Rechts
    Case 0 : Gosub Stopp
    Case Is < 0 : Gosub Links
    End Select
    Loop
    
    
    Links:
    A = I * -1
    If R > 0 Then
    For R1 = R To 0 Step -25
    Pwm1a = R1
    Pwm1b = 0
    Next
    End If
    If L < 1 Then
    For L = 0 To A Step 25
    Pwm1b = L
    Pwm1a = 0
    Next
    End If
    Pwm1b = A
    Pwm1a = 0
    Return
    
    Rechts:
    If A > 0 Then
    For L = A To 0 Step -25
    Pwm1b = L
    Pwm1a = 0
    Next
    End If
    If R < 1 Then
    For R = 0 To I Step 25
    Pwm1a = R
    Pwm1b = 0
    Next
    End If
    Pwm1a = I
    Return
    
    Stopp:
    If A > 0 Then
    For S1 = A To 0 Step -50
    Pwm1b = S1
    Pwm1a = 0
    Next
    End If
    If R > 0 Then
    For S2 = R To 0 Step -50
    Pwm1a = S2
    Pwm1b = 0
    Next
    End If
    
    Return
    
    
    End
    Vielleicht steh ich ja auch auf der leitung oder man kann es viel einfacher machen..bitte helft mir, bin halt nicht der progger vor dem herren..


    Gruss Gobstar

  2. #2
    Gast
    hmm so beim durchsehen hab ich mich gefragt: wenn der proz z.b. in die "stop-funktion" springt woher weiss der dann was "A" ist dieser wert wird nur in der "Links"- Sache gesetzt und davor nicht.
    auch bei den anderen sachen wie R,L usw ist am anfang kein wert zugeordnet.
    versuch am anfang vor der "do-loop" sache diesen variablen einen wert zu geben z.b.:
    A=0
    L=0
    ...

    vielleicht sieht jemand anderes noch ebs und kann mal was dazuschreiben

    CU

  3. #3
    Gast
    Jo, hatt ich auch schon drin, dachte halt dass der Wert eh anfangs vll. als 0 definiert ist..aber auch wenn ich es vorher angebe, funzt es nicht, leider


    Gruss Stefan

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.08.2004
    Ort
    Verden (bei Bremen)
    Alter
    37
    Beiträge
    247
    ich hab zwar keinen schimmer vom Programmieren aber warum hast du die wenn dann sache im nicht wieder nach obe gegeben?

    vl. ist der affe dort begraben? also das das ding nicht weiß was er machen soll wenn die IF Clause unerfüllt iss ???

Berechtigungen

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

Solar Speicher und Akkus Tests