- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Servoansteuerung: Umschaltung von RC auf MC

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    Anzeige

    Powerstation Test
    ja, habs auch richtig rum probiert. Also, nur durchschleifen geht, aber nur wenn sonst nicht anderes im Programm passieren soll. Sobald ein wait-Befehl drin ist geht gar nichts mehr und den brauch man wen man mit dem Servo-Befehl was machen will. Hab alles probiert . Sieht aus als würde es so nicht gehen. Habt Ihr noch ne Idee??

    Gruß

    Andreas

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Der Durchschleifbefehl muss natürlich regelmäßig aufgerufen werden, und zwar schnell genug. Am einfachsten wäre es, den Eingang auf nen externen Interrupt zu legen. Bei jeden Pegelwechsel wird dann der Interrupt ausgelöst, in dem der neue Pegel zu Ausgang kopiert wird.

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hi,
    ich verstehe noch nicht, wie du mit dem AVR den Flieger steuern willst, vielleicht kannst du das mal erklären. Willst du den Flieger nur am Boden damit steuern und ist der AVR direkt mit dem Servo verbunden? Wie sollen sich die Servo-Werte im µC ändern, automatisch oder indem du irgendwelche Taster drückst?
    Das Durchschleifen würde ich jedenfalls etwas aufwändiger tun.
    Soweit ich weiß, bestimmt die Länge der High- und Low-Pegel, wie sich das Servo einstellt. Dies sollte also möglichst stabil sein und nicht von irgendwelchen anderen Dingen abhängen, die der AVR gerade tun will.
    Daher würde ich den Input an einen externen Interrupt Pin (z.B. INT1) hängen.
    Im Programm machst du dann sowas:
    Code:
    RC Alias 1
    µC Alias 0
    RC_input Alias PIND.3        'hier ist beim Mega8 der INT1 dran
    Servo_output alias PORTD.4 'irgendein Pin
    Dim Control as Byte
    Config Servo_output = Output
    Config INT1 = Change    'bei jeder Leveländerung wird die ISR ausgeführt
    ON INT1 Int1_isr
    Control=RC
    Do
       If Control=µC Then          'also Steuerung durch den µC 
          ....               'dies hängt ab von deiner Art der Eingabe bzw. Automatik, aber jedenfalls ohne waits
       End If
    Loop
    
    Int1_isr:
       If Control=RC Then           'dein Umschalter zwischen RC und µC
          Servo_output=RC_input    'dein Output Pin zum Servo wird auf den Input Pin gesetzt
       Endif
    Return
    Umschalten wirst du wohl über einen Schalter, also einen entprellten Input Pin.
    Evtl. kannst du auch ganz auf den Servo Befehl verzichten und änderst den Servo-Pin im µC-Mode über einen Timer. Dann bist du auch da flexibel.

    Gruß

    Rolf

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    Hallo Rolf,
    Sorry, ich war ein paar Tage offline (Dienstreise ohne Internetanschluß). Also, die Sache soll so funktionieren. Ich starte den Flieger ganz normal mit Fernsteuerung. Dann betätige ich einen Schiebeschalter und dann soll der Flieger zum Beispiel das Seitenruder für 20 Sekunden 30° ausschlagen, danach 20 Sek. gerade........usw. halt so das ich beliebige vorprogramierte Figuren abfliegen kann. Das Problem bei deinem Bascom Vorschlag ist, das Int1 und Int0 bereits zum Einlesen der RC-Kanäle vergeben sind.

    Gruß

    Andreas

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270
    Hallo!

    Das ist natürlich ein Problem... allerdings lösbar.... und zwar gleich auf zwei Arten:

    1. Man tauscht den Mega8 gegen einen Mega88. Der ist pinkompatibel, hat aber PCI (Pin Change Interrupt) an jedem Pin. Wenn du PCI nur an einem Pin (da wo das RC-Signal ankommt) aktivierst, kannst du dir die Abfrage des PCI-Pins sparen (es gibt ja nur einen, der enabled ist) und den Output-Pin entsprechend schalten.
    Siehe dazu mal ins Datenblatt vom Mega88.

    2. Du "missbrauchst" den Analog-Comparator. An den negativen Pin (AIN1) legst du Vcc/2 an (mit nem einfachen Widerstandsteiler). An AIN0 kommt das RC/Signal vom Empfänger. Jetzt einfach den Interrupt für den Analog-Comparator auf "Change" stellen und einsprechend dem ACO-bit den Output-Pin auf high oder low setzen.

    Und fertig ist das ganze. ICh würde allerdings Lösung 1 bevorzugen und zwar aus drei Gründen:
    1. Der Mega88 kann bis zu 20MHz, ist also ca 25% schneller als der Mega8.
    2. Er hat mehr "fraetures" (z.B. o.g. PCI).
    3. Ist ohne Software-/Hardwareänderung durch den Mega168 ersetzbar, der doppelt so viel Flash-Memory hat.
    Warum bekommen Vegetarier immer eine Extrawurst?

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    Hallo Schokohoernl,
    beide Varianten hören sich gut an....sind für mich aber Software- und Hardwareseitig absolutes Neuland. Bin aber neugierig auf beide Versionen. Werde also schaun wie ich schnell einen Mega88 ranbekomme, und ein Experimentierboard mit Spannungsteiler und Mega 8 aufbauen, danach werde ich aber bestimmt noch ein bißchen hilfe brauchen. Danke für die Tipps.

    Gruß

    Andreas

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    Hallo Schokohoernl,
    beide Varianten hören sich gut an....sind für mich aber Software- und Hardwareseitig absolutes Neuland. Bin aber neugierig auf beide Versionen. Werde also schaun wie ich schnell einen Mega88 ranbekomme, und ein Experimentierboard mit Spannungsteiler und Mega 8 aufbauen, danach werde ich aber bestimmt noch ein bißchen hilfe brauchen. Danke für die Tipps.

    Gruß

    Andreas

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270
    och... das ganze ist halb so wild. Für den Analog-Comparator gibt es in Bascom fertige Routinen (schau in der Hilfe bai "Config ACI"). Und für den PCI gibts nen Beispiel im "Samples" Ordner (PCINT_CHANGE.bas)

    MfG

    Schoko
    Warum bekommen Vegetarier immer eine Extrawurst?

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress