-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Servoansteuerung über Funkfernsteuerung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2013
    Beiträge
    6

    Servoansteuerung über Funkfernsteuerung

    Anzeige

    Hallo Ihr Tüftler!

    Ich bin noch Neuling in Sachen Mikrocontrollerprogr. und bitte deshalb mal um Eure Hilfe.
    Ich möchte mit einem Attiny13 einen Servo über Funk ansteuern. Dabei soll der Servo aber mit einer langsamen Geschwindigkeit fahren. (Landeklappen, Fahrwerk an einem Modellflugzeug)

    Da ich Basic-Vorkenntnisse (VB.net), habe ich mich für Bascom entschieden und auch schon kleine
    Sachen problemlos zum Laufen bekommen. Der Programmer ist ein Diamex Prog-S.

    Ich habe folgenden Quellcode mir mal zusammengebastelt.
    So wie er hier zu sehen ist, schaltet die LED noch das Servo.
    Wenn ich „Enable Interrupts“ auskommentiere, kann ich mit der Fernst. Die LED schalten.
    Ebenfalls läuft mein Servo, wenn ich statt des Empfängereingangs einen Taster einbaue.
    Aber warum läuft es zusammen nicht?

    Schon mal vielen Dank im Voraus.
    VG Richy

    Code:
    $regfile = "ATtiny13.dat"
    $crystal = 9600000
    $hwstack = 32
    $swstack = 5
    $framesize = 20
    
    !LDI R16, &b10000000
    !LDI R17, &b00000000
    !OUT CLKPR, R16
    !OUT CLKPR, R17
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 5
    Config Pinb.0 = Output
    Config Pinb.2 = Output
    Config Pinb.4 = Input
    
                                                                'Taster1 Alias Pinb.4
                                                                'Taster1 = 1
    Led Alias Portb.2
    
    Dim A As Word
    Dim W As Word
    
    Enable Interrupts
    
    Do
    
    Pulsein W , Pinb , 4 , 1
    
    If W <= 150 Then And A < 200 Then                           'If Taster1 = 1 And A < 200 Then
    
       For A = 100 To 200 Step 1
       Servo(1) = A
       Led = 0
       Waitms 10
       Next A
    
    Elseif W > 170 Then And A > 100 Then                        'Elseif Taster1 = 0 And A > 100 Then
    
       For A = 200 To 100 Step -1
       Servo(1) = A
       Led = 1
       Waitms 5
       Next A
    
    Else
    
    Servo(1) = A
    
    End If
    
    Loop
    
    End

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Ich vermute weil "Pulsein" und "Servo()" den gleichen Timer benutzen. Das kann dann nicht funktionieren. Ich mag den Servobefehl nicht besonders dewswegen hab ich mir damals eine eigene Servoroutine geschrieben. Da ich aber mittlwerweile mit Arduino arbeite kann ich dir die Routine nicht geben ist irgendwann bei ner neuinstallation meines Systems auf der strecke geblieben...
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2013
    Beiträge
    6
    Hallo, danke erst mal für Deine Antwort.

    Würde da ein anderer µC mit 2 Timern nach diesem Schema funktionieren?
    Bzw. wie kann ich mir so eine Servoroutine vorstellen, wenn man nur diesen 8 Bit Timer hat?

    Gruß Richy

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von DanielSan Beitrag anzeigen
    Ich vermute weil "Pulsein" und "Servo()" den gleichen Timer benutzen.
    Pulsein benutzt keinen Timer, sondern ist 'ne einfache Zählschleife, diese Schleife wird jedoch vom Timerinterrupt für das Servo laufend unterbrochen und bringt dann nicht mehr das richtige Ergebnis.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2013
    Beiträge
    6
    Geht das zu verhindern?
    Funktionieren muß es. Habe sowas schon mit dem Tiny 13 gesehen.
    Oder gibt es da noch einen einfachereen Weg mit 'nem anderen µC? Es muß ja nicht der Attiny13 sein.
    Aber Bascom solls schon sein.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Richy Beitrag anzeigen
    Geht das zu verhindern?
    Nicht wirklich. Sperren des Interrupts ist in diesem Fall keine Option.
    Funktionieren muß es. Habe sowas schon mit dem Tiny 13 gesehen.
    Ach, man kann sogar sehr viel mit 'nem Tiny13 anstellen.
    Oder gibt es da noch einen einfachereen Weg mit 'nem anderen µC?
    Es gibt 'nen einfacheren Weg mit dem Tiny13, solange die Forderungen an die Funktionalität nicht ausufern.
    Was steht denn z.B dagegen, den Servokrams komplett wegzulassen und nach der Pulsein den Servopuls per Verzögerungsschleife zu erzeugen?
    Timer braucht's nicht dafür, denn schließlich wird Pulsein genau im Takt der eintreffenden Servoimpulse durchlaufen, das reicht für das Timing.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    ...

    Es gibt 'nen einfacheren Weg mit dem Tiny13, solange die Forderungen an die Funktionalität nicht ausufern.
    Was steht denn z.B dagegen, den Servokrams komplett wegzulassen und nach der Pulsein den Servopuls per Verzögerungsschleife zu erzeugen?
    Timer braucht's nicht dafür, denn schließlich wird Pulsein genau im Takt der eintreffenden Servoimpulse durchlaufen, das reicht für das Timing.
    ...jo, richtig. Und da die nächste Frage schon wartet: Der Befehl zum Servos ansteuern lautet "Pulseout". Und das ganze Pulsein und -out funktioniert am bessten ab einem Takt von ca 4MHz. Der Tiny13 kann 9,6MHz wenn man den Teiler von 8 deaktiviert.
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2013
    Beiträge
    6
    Ok, danke erst mal für die Tipps. (Wie gesagt beschäftige mich erst seit paar Wochen mit der Materie tu mich noch bissel schwer mit Timern, Freq. usw.)
    Die Anforderungen sind eigentlich nur: "Benutzerdefiniert" LANGSAM und möglichst ohne großes ruckeln.
    Werd mich morgen mal damit versuchen.

    Bis dahin.
    Gruß Richy

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    09.06.2013
    Beiträge
    6
    Super, es läuft!!!
    Servobefehl raus, PulseOut rein und dann noch die Zeiten angepasst.

    Code:
     For A = 1000 To 5000 Step 10
       Pulseout Portb , 0 , A
       Waitms 5
       Next A
    Allen beteiligten ein großes Dankeschön!

    VG Richy

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2013
    Beiträge
    23
    Hallo Richy,
    kannst du vielleicht den funktionierenden Code reinstellen.

    Gruß und Danke

    Thomas

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Servoansteuerung über SCL/ SDA
    Von Checker 1.0 im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 21.05.2012, 09:26
  2. Servoansteuerung von PC nach SD21 über Java
    Von Morbius im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 16
    Letzter Beitrag: 17.03.2005, 14:52
  3. Servoansteuerung von PC nach SD21 über Java
    Von Morbius im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 3
    Letzter Beitrag: 05.03.2005, 21:50
  4. Funkfernbedienung mit 868MHz
    Von PraktiSE1 im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 13.10.2004, 13:17
  5. Funkfernbedienung mit Bluetooth
    Von im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 12.10.2004, 15:34

Stichworte

Berechtigungen

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