-         

Ergebnis 1 bis 3 von 3

Thema: ATMega48: Servo über Poti ansteuern

  1. #1

    ATMega48: Servo über Poti ansteuern

    Anzeige

    Hallo,

    ich habe ein folgendes Problem. Ich kann mein Servo jetzt über Bascom ansteuern, kriege es aber nicht hin, den Servo über Poti anzusteuern.
    Könnt ihr einen kurzen Programmcode schreiben?

    So sieht mein Programm ohne Poti Ansteuerung aus.

    Vielen Dank

    '******** Compailereinstellung Anfang ***
    $crystal = 12000000
    $regfile = "m48def.dat"
    $baud = 9600
    '******* Compailereinstellung ende ******
    '******** Config Ports Anfang ***********
    Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
    Config Pinb.1 = Output
    Config Portc = Input
    Config Portd = Output
    Enable Interrupts
    '******** Config Ports Ende *************
    '******** Deklaration Anfang ************
    Dim Position As Byte
    Dim Zaehler As Byte

    '******** Dekleration Ende **************
    '******** Initialisierung Anfang ********
    Zaehler = 10
    Position = 105
    '******** Initialisierung Ende **********
    '******** Hauptprogramm Anfang **********
    Servo(1) = Position

    Do
    If Pinc.1 = 0 Then
    Waitms 100
    Position = Position + Zaehler

    If Position = 165 Then
    Position = 105
    End If

    Servo(1) = Position
    Portd.0 = 1
    Waitms 200
    Portd.0 = 0

    Elseif Pinc.2 = 0 Then
    Waitms 100
    Position = Position - Zaehler

    If Position = 45 Then
    Position = 105
    End If

    Servo(1) = Position
    Portd.0 = 1
    Waitms 200
    Portd.0 = 0

    End If
    Loop

    End

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    Hallo,

    schaue Dir bitte die Initialisierung von einem ADC an. Damit kannst Du dann den eingelesen Wert (momentaner Widerstand vom Poti) für das Servo im Programm weiter verwenden.

    Viele Erfolg weiterhin und Gruß
    "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

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Weil ich mit dem Servo Befehl von Bascom Schwierigkeiten habe, biete ich Dir hier eine Alternative (Ohne Gewähr)
    Vor Einschalten das Poti ungefähr in Mittelstellung bringen.
    Code:
    'Modellbauservo einstellen mit Poti
    
    'BASCOM-Demo Version 2.0.5.0  sollte auch auf höheren Versionen laufen.
    
    'Servopulsfrequenz = 50Hz
    'Servopulslänge von  821 µs  bis  2181 µs in 256 Stufen einstellbar (Auflösung 5,333 µs)
    
    'ADC Meßwertschwankungen werden abgefangen
    
    'Servosignalausgabe an PB1(OC1A)
    'Potischleifer an PC0(ADC0), die anderen beiden Anschlüsse an GND und VCC (Referenz für ADC ist intern VCC)
    
    $regfile = "m48def.dat"
    $crystal = 12000000
    $hwstack = 32
    $swstack = 32
    $framesize = 32
    $baud = 9600
    
    Dim Adc_result As Word
    Dim Alt_wert As Word
    Dim Differenz As Integer
    
    Config Portb.1 = Output                 'Servo MUSS an PB1 !!!
    
    '***  Timer1 Konfiguration auf "Fast PWM", prescale = 64, top = ICR1, clear OC1A on compare match ***
    Icr1 = 3749
    Tccr1a = Bits(com1a1 , Wgm11)
    Tccr1b = Bits(wgm13 , Wgm12 , Cs11 , Cs10)
    '***************************  Timer1 Konfiguration ENDE  ***********************
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    Do
      Adc_result = Getadc(0)                'Potiabgriffanschluß an PC0(ADC0),die anderen je an GND und VCC
      Differenz = Adc_result - Alt_wert
      Differenz = Abs(differenz)
      If Differenz > 3 Then
        Alt_wert = Adc_result
        Shift Adc_Result , Right , 2
        Ocr1a = 154 + Adc_Result
      End If
    Loop
    
    End                                     'end program
    Gruß
    Searcher
    Geändert von Searcher (05.11.2012 um 18:49 Uhr) Grund: Variable eingespart
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Servo ansteuern mit ein 8 Bit PWM Signal über 122 Schritte?!
    Von Staind im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 26.10.2011, 14:38
  2. Servo ansteuern über Transistoren?
    Von Omit im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 21.11.2007, 06:45
  3. servo ansteuern über ISP
    Von Downad im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 06.01.2007, 21:29
  4. Antworten: 8
    Letzter Beitrag: 19.11.2006, 20:52
  5. getriebemotor über poti ansteuern
    Von RedEagle667 im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 22.08.2005, 07:49

Berechtigungen

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