- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 9 von 9

Thema: Hauptprogramm schleife fängt woanders an ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    01.06.2007
    Ort
    Recke
    Alter
    35
    Beiträge
    46

    Hauptprogramm schleife fängt woanders an ?

    Hi, ich bin nun auch endlich mal dazu gekommen mir ein Microcontrollerboard zu Kaufen (Pollin Atmel Evaluations Board V 2.0.1).
    Hab bis jetzt erfolgreich ein paar Blinklichter durch ändern des Beispielprogramms das man bei pollin bekommt hinbekommen.
    Nun hab ich ein Paar Probleme Eins nach dem anderen:

    1.

    Ich hab gerade mal ein Servo angehängt, und versuche nun einfach mal sinnlos ein wenig hin und herzufahren hab dazu mal ein kleines Programm erstellt:

    Code:
    $regfile = "m32def.dat"                                     'definieren des verwendeten Chips
    
    $crystal = 16000000                                         'definieren des verwendeten externen Quarz (16MHz)
    
    
    Ddrd = &B11100000                                           'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
    Portd = &B00000000                                          'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    Config Portb = Output
    Declare Sub Beep(byval Verz As Integer , Byval Anz As Integer)
    Dim I As Integer
    
    Enable Interrupts
    
    Call Beep(1 , 200)
    Waitms 150
    Call Beep(1 , 30)
    Waitms 150
    Call Beep(1 , 30)
    Waitms 150
    Call Beep(1 , 30)
    Waitms 150
    Call Beep(1 , 200)
    Waitms 1000
    
    
    Do                                                          'Anfang der Schleife
    
    Goto Servolauf
    Waitms 100
    
    Loop                                                        'zum Anfang der Schleife
    
    
    
    Sub Beep(byval Verz As Integer , Byval Anz As Integer)
    
       For I = 0 To Anz
          Portd.7 = 1
          Waitms Verz
          Portd.7 = 0
          Waitms Verz
       Next I
    
    End Sub
    
    Servolauf:
    
       Portd.5 = 1
    
       For I = 50 To 150
          Servo(1) = I
          Waitms 2
       Next I
    
       Portd.5 = 0
       Portd.6 = 1
    
       For I = 150 To 50 Step -1
          Servo(1) = I
          Waitms 2
       Next I
    
       Portd.6 = 0
    
       Servo(1) = 50
    
       Return
    Was mir dabei jetzt auffällt, erstens ich habe jetzt ein wenig rumprobiert um einigermaßen die anschläge des Servos zu erwischen, aber wie bekommt man da denn die genauen werte, 50 und 150 habe ich jetzt aus dem RN Artikel Servos übernommen, aber damit fährt er nicht genau auf die endpositionen. Links versucht er weiter zu fahren wie er kann, und rechts fährter nicht weit genug ?
    Zweitens ich hab das Programm jetzt im controller, was ich nicht verstehe ist er piept bei jedem programmdurchlauf wieder, das sollte er eigendlich nur ein mal am anfang machen, normal sollte doch dann nurnoch das wiederhohlt werden was in der Do Loop schleife steht oder nicht ?
    Das piepen steht vor der do loop schleife, warum wird das trotzdem bei jedem durchgang wieder ausgeführt ??



    2.

    Kennt sich jemand mit dem Pollin Board aus ? ich habe das gefühl das mit den tastern irgendwas faul ist, in der regel funktionieren die wohl aber ab und zu erkennt er einfach mal einen anderen taster oder reagiert garnicht auf den Tastendruck. Hab irgendwo im inet mal was gelesen, das das wohl irgendwie mit dem wiederstand und dem Kondensator an den tasten zusammenhängt, finde die seite allerdings nicht mehr. Schaltplan ist in der PDF zum Board
    http://www.pollin.de/shop/downloads/D810022B.PDF
    Fehler beim zusammenbauen kann ich mir nicht vorstellen, habe bereits mehrfach durchgemessen, und kann da nichts finden.

    Hoffe auf ein paar Antworten

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo tredory,

    mach aus servolauf eine sub und rufe sie mit call auf.

    Ich kenne diese Programmiersprache nicht, nur 15 andere von Fortran bis Object Pascal. Seit 10 Jahren verwende ich kein goto mehr in höheren Programmiersprachen. Mit goto aus der Schleife springen ist im Allgemeinen ungesund.

    grüsse,
    Hannes

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    mach aus servolauf eine sub und rufe sie mit call auf.
    ... oder laß sie so und ruf sie mit Gosub auf.

    Gruß Dirk

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    01.06.2007
    Ort
    Recke
    Alter
    35
    Beiträge
    46
    Das ging ja Fix, Danke dir, habe das nun geändert und den Servolauf inne Sub gepackt und siehe da er piept nurnoch einmal o.O.

    Dann bleibt noch die Frage nach den min und max Werten für den Servo, und das Tasten Problem

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Zu den Servowerten:
    Da gibts keinen Standard. Must du für dein Servo für beide Anschläge ausprobieren.

    Zu den Tastern:
    Kann ich nichts sagen.

    Gruß Dirk

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo nochmals,

    ich bin mit ziemlich sicher, dass es an den Servos liegt. Die sind nicht kalibriert. Man trimmt meist am Gestänge und an der Anlage im Modellbau. Zur Kontrolle vertausche mal die Servos an den Anschlüssen. Dann siehst du, obs am Programm oder an den Servos liegt.

    grüsse,
    Hannes

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    01.06.2007
    Ort
    Recke
    Alter
    35
    Beiträge
    46
    Hmm, Servos kalibrieren ? wie geht das ?es sind ein paar billig Servos für 4,90€ von conrad
    Was für Anschlüsse tauschen ? es gibt doch nur vcc, gnd, und die signal leitung, da kann ich doch keine von tauschen ?

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Servos kalibrieren
    In deinem Fall der Werte für die Bascom-Servofunktion gibt es nichts zu kalibrieren. Du must den unteren und oberen Wert des Servo-Drehbereichs einfach so einstellen, dass das Servo nicht am Anschlag "brummt", d.h. der Stellbereich gut eingestellt ist.
    Wenn es am linken Anschlag Probleme gibt, erhöht man einfach den unteren Grenzwert (z.B. auf 55 oder 60). "Brummt" es am rechten Anschlag, wird der obere Wert verringert (auf 145, 140 ...).
    Wenn der Anschlag offenbar nicht erreicht wird, muss man die Werte umgekehrt ändern.

    Was für Anschlüsse tauschen
    Bloß nicht, da geht das Servo und ggf. der uC kaputt.

    Gruß Dirk

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo,
    ich sagte nicht Anschlüsse tauschen, sondern die Servos vertauschen. Ich dachte du hättest 2 Servos dran hängen.

    Kalibrieren kannst du die nicht. Ich hab doch geschrieben, dass man üblicherweise am Gestänge und an der Fernsteueranlage trimmt.

    Du musst einfach die Werte ermitteln, mit denen dein Servo zurechtkommt. Entweder programmierst du die fix ein, oder du schaffst softwaremässig eine Kalibriermöglichkeit. Im letzteren Fall kannst du das Servo austauschen, ohne die Software verändern zu müssen.

    Wenn eine eventuell vorgefertigte Routine die Servos nicht gut ansteuert muss man nötigenfalls, eine bessere Software selbst schreiben.

    grüsse,
    Hannes

Berechtigungen

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

12V Akku bauen