- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 32

Thema: Servo-Befehl stört 1wire Kommunikation

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo,

    soweit läuft es jetzt, anfänglich war mein Lipo Saver ein Problem. Nun schaue ich immer, ob die Spannung für eine gewisse Zeitspanne unter 6.4 Volt fällt, erst dann schalte ich ab.

    Ich habe jetzt wiederum ein Problem mit dem "Anfangswert" des Servos. Der scheint nicht immer gleich zu sein? Also die Stellung, die er beim Start anfährt?

    ich kann Pulselängen von max. 16,384 ms ausgeben. - wann hat ein Servo seine größte Stellkraft?
    Geändert von spelli2001 (10.09.2012 um 19:31 Uhr)

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Ich bin am verzweifeln.

    Wie bekomme ich es hin, einen 7,4 Volt Servo mittels des Timer2 (8 Bit) eines Atmega8 bei 16MHz anzusprechen? Mal läuft der Servo, dann hakt er bzw. hat keine Stellkraft etc.

    Aktuell mache ich es so:

    Timerstartwert ist 61; Config Timer2 = Timer , Prescale = 1024

    Code:
        If 16ms_flag = 1 Then                                   'alle 16ms Impuls an Servo TILT 90°
                     Pulseout Portb , 2 , Servo
                     16ms_flag = 0
    
                 End If
    Mit den Werten kann ich aber nicht vernünftig arbeiten...

    Danke, ich bin echt am verzweifeln!

    Christoph

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Ich hätt' gesagt, das Konzept ist verkorkst. Den 16 Bit Timer1 auf 8 Bit PWM zu kastrieren und dann mit dem 8 Bit Timer2 zu versuchen über Pulseout eine Servosteuerung hinzumurksen ist suboptimal.
    Man hätte Timer2 für die PWM nehmen können, um mit Timer1 im Modus 14 oder 15 eine völlig auf Hardware basierende Servoansteuerung ohne jedes Gewackel zu bauen. Auch 'ne ISR kann man dranpappen, wenn man 'nen Zeitgeber braucht.
    ICR1 oder OCR1A muss als Top verwendet werden, bei 39999 gibt's 20ms, das Servo kann dann mit Werten von 2000-4000 für Compare1A oder ..B von 1-2ms eingestellt werden.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo MagicWSmoke!

    Ja, ich habes ja auch schon gemerkt...

    Ich kann aber die beiden Pins noch umlöten, sodass ich für PWM (L293D) den Timer2 und dann fürs Servo den Timer1 nehme! Das mache ich jetzt!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Ich habe jetzt den

    L293D (PWM) an (Atmega PB2, also OC1B und den
    Servo an PB1, also OC1A.

    Könntest du mir die Hardwarebasierende Ansteuerung des Servo mittels OC1A erläutern?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Mist, Hardware ist ja BP3, also OC2 !!! -- Richtig!?

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Das hier sollte einfach auf einen ATM8 umzuschreiben sein:
    Code:
    $Regfile = "m32def.dat"
    $crystal = 16000000
    $hwstack = 48
    $swstack = 32
    $framesize = 32
    
    ' ### Reine Hardware-Pulserzeugung für ein einzelnes Servo, jitterfrei ###
    
    Const WGM10 = 0
    Const WGM11 = 1
    Const WGM12 = 3
    Const WGM13 = 4
    
    Servopin Alias PortD.4
    Config Servopin = Output                                    ' OC1B als Ausgang
    
    Servo_Pos Alias Compare1B                                   ' Stellposition des Servos
    Servo_Pos = 3000                                            ' Defaultposition, 2000 = 1ms, 4000 = 2ms
    
    TCCR1A = Bits(WGM11 , WGM10 , COM1B1)                       ' Mode 15, Fast PWM, CTC
    TCCR1B = Bits(WGM13 , WGM12 , CS11)                        ' Mode 15, Prescaler 8
    COMPARE1A = 39999                                           ' Obere Zählgrenze
    Enable Compare1A
    
    Enable Interrupts
    
    Do
      For Servo_Pos = 2000 To 4500                              ' Testcode, wechselweise Endpositionen anfahren
        Waitus 80
      Next Servo_Pos
      For Servo_Pos = 4500 To 2000 Step -1
        Waitms 1
      Next Servo_Pos
    Loop
    
    End
    
    20ms_Tick_ISR:                                              ' ISR wir alle 20ms aufgerufen, kann für weitere Zwecke verwendet werden
    
    Return
    Bascom benötigt für den ATM8 nicht die Definitionen der WGM..., die sind bereits im .dat drin, können also entfallen. Was geändert werden muss, ist die Pindefinition für OC1B.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Dankeschön.


    Soweit verstehe ich das. Die "20ms-Tick-ISR" muss doch aber aber auch aufgerufen werden?

    Was ich gerade gar nicht verstehe sind OC1A und OC1B wie stehen die jetzt mit den Timern in Verbindung?

    Muss ich den Timer1 im o.g. Code nicht konfigurieren?

    Und: was mache ich jetzt mit meinem L293D, den habe ich sonst immer über Compare1a angesprochen!?

    Ich bringe gerade alles durcheinander!

    Danke.
    Geändert von spelli2001 (11.09.2012 um 22:29 Uhr)

Ähnliche Themen

  1. SD21 servo programm befehl speicherung problem
    Von michel999 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 0
    Letzter Beitrag: 17.01.2011, 16:13
  2. Servo stört Microcontroller
    Von Krampfda im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 19
    Letzter Beitrag: 08.10.2009, 20:22
  3. servo-befehl in interrupt-routine funzt nicht
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 28.02.2009, 18:49
  4. cmucam 2 frage zu befehl Servo Mask
    Von Projector im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 19.01.2007, 17:07
  5. Servo mit Bascom Befehl mach nur "scheiße"
    Von AVRboy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 22.10.2006, 22:58

Berechtigungen

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

Solar Speicher und Akkus Tests