- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 38

Thema: Weglaufen der Mittelstellung bei Servohack

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hallo,

    Zitat Zitat von oberallgeier
    Das hättste Dir jetzt patentieren lassen sollen
    Verdam..., hoffentlich noch nicht zu spät

    Zitat Zitat von radbruch
    Erste Umsetzung der Erkenntnisse wären wohl Belüftungslöcher in den Servogehäusen
    Wenn die Servos dauernd mit Höchstgeschwindigkeit laufen kann ich eigentlich nur sagen: je mehr Kühlung desto besser. Hab den Servo noch nicht unter Normalbedingungen, also den Servo als Servo unter die Lupe genommen. Aber auch da könnte ich mir Wärmeeinflüsse vorstellen (und hast Du ja auch schon bestätigt), besonders, wenn er mit Belastung läuft.

    @PICture: ich werd weiter nach der Hysterese Ausschau halten


    Damit man das Zustandekommen der Testergebnisse besser einschätzen kann, ein Bild der Testumgebung und das Servotesterprogramm auf einem ATtiny24 mit 16 Bit Timer. Rechts unten im Bild kann man die im Schraubstock eingespannte, jedoch von der mit Wärmweleitpaste angeklebten Aluplatte verdeckten Servoelektronik erkennen. Ein größerer "echter" Kühlkörper brachte viel bessere Ergebnisse. Rechte Seite des Steckbretts dient nur der Ausgabe der Meßwerte Versorgungsspannung des Ganzen: 5 Volt

    Bestimmung der Zeiten geschah durch Justieren des Potis, Horchen auf Motorgeräusche und Ablesen der Pulsweite - also keine Präzisonsmessungen Tendenz ist aber eindeutig.

    Code:
    '###################################################
    'File: servo_hack_01.bas
    'IDE: BASCOM-AVR DEMO Version 2.0.5.0
    '
    'Servotester mit Servopulseinstellung über Potentiometer
    'Servopuls Auflösung ist 2µs im Bereich 500 - 2546µs bei 50Hz
    '
    'ATtiny24
    'PA0 : ADC0, Eingang vom Poti
    'PA6 : OC1A, Servosignal - Ausgang zum Servo
    'PB0 : SW UART #1 , für Ausgabe der Pulsweite an 4 fach 7-Segmentanzeige
    '#######################################################
    
    $regfile = "attiny24.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 36
    $crystal = 8000000                      'internal Oscillator
    Osccal = &H8E                           'trim internal oscillator close to real 8MHz
    
    '##### Definitionen und Initialisierung für 7segment ausgabe ######
    Dim Number_string As String * 6
    Dim Digits(5) As Byte
    Dim X As Byte
    Dim Y As Byte
    Dim Idx As Byte
    Dim Num_to_disp As Word
    Declare Sub Display_value(num_to_disp As Word)
    Open "comb.0:115200,8,n,1" For Output As #1       'comb.0 -> TX ist Pin PB0
    Y = &B11111101                          'segment g
    For X = 1 To 5 : Put #1 , Y : Next      '7 segment initialisieren
    '#### Ende Definitionen und Initialisierung für 7 Segmentausgabe #######
    
    Dim Adc_result As Word
    Dim Timer1_overflows As Byte
    Timer1_overflows = 0
    
    Porta = Porta Or &B10111110             'all Pullups on at porta , exept PA6, PA0
    Portb = Portb Or &B11111110             'all Pullups on at portb , exept PB0 - TX
    Config Porta.6 = Output                 'servo at oc1a
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    Set Tccr1a.wgm11 : Set Tccr1b.wgm12 : Set Tccr1b.wgm13       'fast pwm - icr1 as top
    Icr1 = 19999                            ' :-) 50 Hz for Servo PWM
    Set Tccr1a.com1a1                       'clear oc1a on compare match
    Ocr1a = 1500                            '1,5ms pulse - Servo neutral position
    Set Tccr1b.cs11                         'timer1 on, prescaler 8 - 1Mhz at 8MHz systemclock
    
    On Timer1 Isr_show_pulsewidth
    Enable Timer1                           'overflow interrupt enable
    
    Enable Interrupts
    
    Do
      Adc_result = Getadc(0)                'read potentiometer position at ADC0 (PA0)
      Shift Adc_result , Left               'multiply by 2
      Adc_result = Adc_result + 500         'add offset for pulses from 500 till 2546µs
      Ocr1a = Adc_result                    'assign pulsewidth to compare register
    Loop
    
    Isr_show_pulsewidth:                    'isr may take time - no problem here
      Incr Timer1_overflows
      Timer1_overflows = Timer1_overflows And &B00001111       'display update about 3 times a second
      If Timer1_overflows = 0 Then Call Display_value(ocr1a)       'display actual pulsewidth
    Return
    
    '############ Folgende Zeilen bis zum Ende nur zur Datenausgabe über 7 Segmentanzeige #############
    Sub Display_value(num_to_disp As Word)  'gibt Dezimalzahlen bis 9999 aus
       Number_string = Str(num_to_disp)     'Zahl in String geben
       Str2digits Number_string , Digits(1) 'Ziffern im String in Byte Array geben
       X = Digits(1) + 1                    'in Digits(1) befindet sich Anzahl der Ziffern der Zahl
       For Idx = 5 To 2 Step -1
         If X < Idx Then
             Put #1 , &HFF                  'Leerstellen dunkel schalten
           Else
             Y = Lookup(digits(idx) , Pattern)       'Segmentpattern aus Tabelle fischen
             Put #1 , Y                     'Segmentpattern senden
         End If
       Next
    End Sub
    
    Pattern:                                'darzustellende Zeichen (hex 0..F...)
    'Segmente abcdefg:                      ' ":" = Doppelpunkt in der Mitte
       Data &B00000011                      'Ziffer "0", 0 = segment ein, 1 = aus
       Data &B10011111                      'Ziffer "1"
       Data &B00100101                      'Ziffer "2"
       Data &B00001101
       Data &B10011001
       Data &B01001001
       Data &B01000001
       Data &B00011111
       Data &B00000001
       Data &B00001001
       Data &B00010001
       Data &B11000001
       Data &B01100011
       Data &B10000101
       Data &B01100001                      'Ziffer "E"
       Data &B01110001                      'Ziffer "F"
       Data &B11111111                      'dunkel
       Data &B11111101                      'nur Segment g eingeschaltet (-)
    
    '########### ENDE  US-Meßprogramm_ICP.bas  ##############################################
    Gruß
    Searcher
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Testumgebung.jpg  
    Geändert von Searcher (16.09.2011 um 19:58 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Servo in Mittelstellung Bring
    Von manhunt im Forum Motoren
    Antworten: 14
    Letzter Beitrag: 08.05.2008, 20:26

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress