- LiTime Speicher und Akkus         
Ergebnis 1 bis 9 von 9

Thema: PIC + SERVO + RS232

  1. #1
    Gast

    PIC + SERVO + RS232

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute,

    wie stell ich es an (aufbau einer schnellen Schleife) das mein Servo immer Aktuallisiert wird ohne immer di eZeit zu verlieren beim RS232 Eingang?

    Mein Programmcode bis jetzt "easy"

    Code:
    '****************************************************************
    '*  Name    : SERVO via RS232                                   *
    '*  Author  : Sommer Ulli                                       *
    '*  Notice  : Copyright (c) 2005 Sommer Ulli                    *
    '*          : All Rights Reserved                               *
    '*  Date    : 11.04.2005                                        *
    '*  Version : 1.0                                               *
    '*  Notes   : PROTON+ Compiler                                  *
    '*          :                                                   *
    '****************************************************************
    
    Include "PROTON_4.INC"		
      
    POS1     var Word
    last 	 var Word
    count1   var Word
    
    
    SERIALL:	
    	HSERIN 500,MOVE,[Wait ("PIC2,"),dec POS1,10,13]	
    	last = POS1 * 4
    	goto MOVE                         
    
    MOVE:
    Count1 = 0
    for Count1 = 0 to 40
       delayms 5
       low PORTD.0
       SERVO PORTD.2,800 + last
       next Count1
       high PORTD.0
    goto SERIALL]

    Also ich Warte bis von meinen PC-Programm PIC2, kommt, lese dananach die Position und gehe dann zum Servo stellen über.

    Der Bug ist der das die Servo Rutine immer laufen müsste um einen hohen Haltemoment am Servo zu bekommen.
    Grund ist der, das der Servo Befehl in dieser Schleife 40 mal ausgeführt wird und somit 40 * 5ms lang den Impulse stehen lässt dach Seriell einlesen will (da geht der Imp. auf Ausgang auf Low da keine durchlauf) und mir somit der Servo einbricht (keine ausregelung da kein Impulse).

    Wie schreibe ich eine Schleife oder mache ich das ganze das dies nicht passiert? Ich sende vom PC mit var Zeiten 5 - 1Sec kein Problem desto schneller wird das ganze aber ich will ja damit nicht den Programmdurchlauf davon abhängig machen.

    Ich hoffe ich hab es einigermassen erklären können.

    Danke für eue Hilfe Ulli

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    18.04.2005
    Beiträge
    7
    Hallo,


    nutze doch die IRQ !!!! In der ISR läßt du deinen Servo ansteuern.

    Gruß

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    ja daran hab ich auch schon gedacht aber ich hab keinen Plan wie ich des machen soll unter Proton+?

    Sollte mir jemand helfen könne vielen Dank

    By Ulli

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    42
    Beiträge
    102
    Ich habe heute meine servosteuerung fertiggestellt mit einer genau 20,009ms schleife die eine pulweite mit 100 stellmöglichkeiten von 0,600ms bis 2,700 ms kann.das ganze für bis zu 12 servos.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    42
    Beiträge
    102
    Ach ja ich benutze timer 2 fur die schleife bei 4mhz
    1000000:16:125:10 is bei mir 50 Hz und das sind 20 ms
    als main wird ein counter hochgezähl der aller 5 µs die Servos abfagt und bei ereichen des stellwertes diese abschaltet.
    der init macht die wieder an in 5µs abständen.und nimm nich das return beim init
    wies in c geht keine ahnung ich progge asm

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    du lässt ihn abschalten?

    Das Problem ist bei mir das die Abschaltung zu lange ist wenn die Daten eingelsen werden und der Servo dabei keine Ausregelung hat und man ihn drehen kann.

    Das ganze dauer ein paar ms je nach dem wann er die daten bekommt.

    Kannst du den ablauf deines Programmes mal genau darstellen wie du vorgehst vieleicht kann ich was daraus übernehemen.

    Bye Ulli

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    42
    Beiträge
    102
    Servos steuertz man mit puslen sekunde0 pulse 5v 1,5 ms danach 0v abgeschaltet bis 20 ms und von vorn.
    Nehme timer 2 mit vt 16 und der zahlt bis 125 und das durch 10 Nt sind genau 50 hz pulse aller 20 ms .

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    die Pulse und die Ansteuerung sind auch das Problem nicht.
    Nur die Pause beim Auslesen der RS232 ohne RxD Ansynchrone Übergabe machen die Pause teils länger.

    Hab es nun mit I2C gelöst geht wie Feuerwehr *g* ohen das der SErvo langsamer oder verzögert wird.

    Bye Ulli

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    42
    Beiträge
    102
    ich hab 10 ms zeit für die übertragung das reicht aus

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

LiTime Speicher und Akkus