- 12V Akku mit 280 Ah bauen         
Seite 6 von 8 ErsteErste ... 45678 LetzteLetzte
Ergebnis 51 bis 60 von 75

Thema: Mehrere RC Signale einlesen und mehrere Servos ausgeben

  1. #51
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2015
    Beiträge
    10
    Anzeige

    Praxistest und DIY Projekte
    Hallo Searcher,

    also hab es so eingefügt wie du beschrieben hast. Das Servo zuckt jetzt nicht mehr so stark wie vorher.
    Leider reagiert es kein bisschen auf irgendwelche Empfängersignale.

    Ich habe das Servo auf einen Digital-Pin D8 (PB0, PCINT0) gelegt und das Empfänger Signal auf D4 (PD4, PCINT20); Stromversorgung des Empfängers (REX 5MPD) erhält dieser über das Board. Als Sender ist einer Graupner Sender MC-20 35Mhz im Einsatz.
    Neben dem Arduino Nano habe ich noch ein Pin Board verbaut mit externe Stromversorgung (5V). Komisch ist das mit der externen Stromversorgung ein weiteres Servo am Empfänger nicht arbeitet, aber mit der USB Versorgung am Arduino schon.

    Meine Vermutung ist, dass die Eingangssignal des Empfängers schon gar nicht passen?

    Danke für deine Hilfe bisher.
    VG

    - - - Aktualisiert - - -

    ach ja und die Servos fahren anscheinend nicht in die Mittelstellung, sonder in die Endstellung, besser gesagt würden gerne darüber hinaus fahren wollen.
    Irgendwie strange die Sache.

  2. #52
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von Tony DesWegeles Beitrag anzeigen
    also hab es so eingefügt wie du beschrieben hast. Das Servo zuckt jetzt nicht mehr so stark wie vorher.
    OK, scheint zu wirken.

    Leider reagiert es kein bisschen auf irgendwelche Empfängersignale.
    Ich habe das Servo auf einen Digital-Pin D8 (PB0, PCINT0) gelegt und das Empfänger Signal auf D4 (PD4, PCINT20);
    Portpinanpassungen in Baggersteuerung_V23_ATmel_V3.bas scheinen OK

    Stromversorgung des Empfängers (REX 5MPD) erhält dieser über das Board. Als Sender ist einer Graupner Sender MC-20 35Mhz im Einsatz.
    Dazu kann ich nichts sagen. Das Programm erwartet an seinen Eingängen Impulse von ca 1ms bis ca 2ms. Müssen nicht nacheinander eintreffen, können auch parallel ankommen.

    Neben dem Arduino Nano habe ich noch ein Pin Board verbaut mit externe Stromversorgung (5V). Komisch ist das mit der externen Stromversorgung ein weiteres Servo am Empfänger nicht arbeitet, aber mit der USB Versorgung am Arduino schon.
    Na ja, Servos können viel Strom ziehen und damit übrige Elektronik, die an der gleichen Stromversorgung hängt durcheinander bringen. Wäre ein eigenes Thema. Zum Testen würd ich erstmal die Servos über ein eigenes Netzteil versorgen. GND Verbindung von der externen Stromversorgung zum Arduino aber nicht vergessen.

    Meine Vermutung ist, dass die Eingangssignal des Empfängers schon gar nicht passen?
    Da kann ich nu nix zu sagen. Kann man denn da die Servosignalleitung nicht direkt anschließen? Da mußt Du schon sicher sein, was da raus kommt.

    Poste nochmal das aktuelle Programm und ich schau nochmal - aber heute wahrscheinlich nicht mehr. Du könntest erstmal alles auskommentieren bis auf Servosignal lesen und Servosignal ausgeben. Die ganzen Veränderungen, Limits usw. brauchst du erstmal zum Testen nicht. Es muß erst Lesen des/der Signal und Ausgeben der Signale funktionieren.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #53
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2015
    Beiträge
    10
    Hallo Searcher,

    also anbei nochmal das Programm.
    Ich werde deine Vorschläge nochmal testen. Die Empfängersignale kommen bestimmt zwischen 1ms und 2ms. Die Servos kommen ja damit klar.
    Aber mit Bestimmtheit kann ich es nicht sagen.

    Also schönen Abend noch.
    VG
    Angehängte Dateien Angehängte Dateien

  4. #54
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von Tony DesWegeles Beitrag anzeigen
    Die Empfängersignale kommen bestimmt zwischen 1ms und 2ms. Die Servos kommen ja damit klar.
    Dann ist es gut.

    Aber mit Bestimmtheit kann ich es nicht sagen.
    Oaahhh, genau wie ich.

    Ich sehe gerade, daß du online bist. Das ich mir heute früh Deine letzte Version aus Post #53 herunter geladen habe, sagt nichts über darüber aus ob ich Dir früh auch eine Antwort geben kann. Es ist Ostern und ich muß schauen was sie Hasen machen.

    Gruß
    Searcher


    Also schönen Abend noch.
    VG[/QUOTE]

    - - - Aktualisiert - - -

    Zitat Zitat von Searcher Beitrag anzeigen
    Portpinanpassungen in Baggersteuerung_V23_ATmel_V3.bas scheinen OK
    Leider nicht Die Pinchangeinterrupts können so nicht richtig ablaufen.
    Die Anweisung zB PCMSK1.PCINT20=1 sollte im Maskenregister PCMSK1 den PCINT20 freigeben. Es gibt den PCINT20 dort aber nicht beim ATMega328 (Datenblatt). Der ist im PCMSK2.

    Danach versuchst Du PD4 mit PCINT21 freizugeben. Darf nicht sein, da PCINT21 im gleichen PCMSK2 Register liegt wie PCINT20 (PD4) . Die Pinchangeinterrupts werden für Gruppen von Portpins ausgelöst. PCINT0 für PB0 bis PB7 (im PCMSK0 den jeweiligen Pin freigeben und mit ENABLE PCINT0 den Interrupt freigeben) das Gleiche für PC8 bis PC14 im PCMSK1 und ENABLE PCINT1. Bischen verwirrend, da PCINT einmal für einen der 3 Pinchangeinterrupts und einmal für den Portpin verwendet wird.

    Beim Vergeben der Eingänge mußt du also drauf achten, daß die zugehörigen PCINTS in verschiedenen PCMSK Registern liegen. PD2 (als INT0 kann erstmal bleiben so wie ich das im Augenblick sehe, da der INT Interrupt unabhängig von den PCINT Interrupt ist - wenn sie nicht gerade gleichzeitig verwendet werden sollen, was ja bei dir nicht der Fall ist)

    So, das wars fürs Erste. Später im Programm werden noch Interruptflags manuell gelöscht. Dazu dann mehr, wenn Du eine neue Verteilung der Eingänge hast. Wie siehts bei der Stromversorgung aus?

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #55
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2015
    Beiträge
    10
    Hallo Searcher,

    also ich habe deine Änderungen angepasst, zumindest hoffe ich alle Änderungen richtig gemacht zu haben. Macht Sinn mit den unterschiedlichen Register. Wenn man sich den ursprünglichen Code ansieht, erkennt man das die Eingänge auch auf unterschiedlichen Registern hängen.
    Das mit Stromversorgung habe ich auch gelöst.

    Was meinst du mit den Manuellen Flags?
    Angehängte Dateien Angehängte Dateien

  6. #56
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von Tony DesWegeles Beitrag anzeigen
    Was meinst du mit den Manuellen Flags?
    Da war ich einen Augenblick nicht ganz bei der Sache. Es gibt die Anweisung "Set Tifr1.ocf1b", die ein Interruptflag löscht. Ist aber hier nicht das Problem.

    Im Augenblick finde ich keinen Fehler mehr bei den Portanpassungen im Programm Sieht für mich jetzt erstmal gut aus. Timing sollte mit dem Clockdevision by 2 auch klar gehen.

    Im Header hast Du als Kommentar zB soetwas:
    'RC Eingang 1 an Pin 3 (PC0, PCINT8 ) Stick 1 (Aileron)
    'RC Eingang 2 an Pin 6 (PB4, PCINT4) Stick 2 (Elevator)
    'RC Eingang 3 an Pin 5 (PD2, INT0) Betriebsmode

    Mir ist die Nummerierung nicht klar. Nach Deinem Link mit der Zuordnungstabelle stimmen die Pinnummern im Header nicht mit den lila Nummern in der Arduinoskizze überein. Da könnte der HW-Anschluß vom Empfänger zum Arduinoeingang nicht mehr stimmen. Würd ich also nochmal überprüfen bzw Kommentae aktualisieren.

    Eigentlich fällt mir nichts mehr ein. Wenn nichts geht, mit dem RC_MAX, RC_MIN, Potiwerten spielen, oder versuchen die ganzen Pulsbeeinflussungen im Programm rauszunehmen und schauen ob die Pulse dann durchgeschleift werden. Es gibt da auch noch eine Betriebswahl:
    "If Berechnung_3 < 187 Then 'falls der Betriebswahlkanal unter Mittelstellung ist, ..."
    hab ich auch noch nicht näher betrachtet.

    Bin auf Weiteres von Dir gespannt ...

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  7. #57
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2015
    Beiträge
    10
    Hallo Searcher,

    ja der Header hat nicht mehr gestimmt. Habe das angepasst. siehe nachfolgend:
    '================================================= ==============================
    'BAGGER Steuerung V23
    '
    'RC Eingang 1 an Pin A0 (PC0, PCINT Stick 1 (Aileron)
    'RC Eingang 2 an Pin D12 (PB4, PCINT4) Stick 2 (Elevator)
    'RC Eingang 3 an Pin D2 (PD2, INT0) Betriebsmode
    'Poti 1a an Pin A5 (PC5, ADC5)
    'Poti 1b an Pin A4 (PC4, ADC4)
    'Poti 2a an Pin A3 (PC3, ADC3)
    'Poti 2b an Pin A2 (PC2, ADC2)
    'twe: Servo 1 an Pin D8 (PB0, PCINT0) Baggerarmservo
    'twe: Servo 2 an Pin D9 (PB1, PCINT1) Baggerarmservo
    'twe: Servo 3 an Pin D10 (PB2, PCINT2) Kettenantrieb
    'twe: Servo 4 an Pin D11 (PB3, PCINT3) Kettenantrieb
    '
    '================================================= ==============================


    Die Frage welche ich noch habe, oder wo ich mir unsicher bin ist bei den Ein- und Ausgängendefinition

    '-------------------------------------------------------------------------------------------------------------
    'Ein- und Ausgang festlegen
    '-------------------------------------------------------------------------------------------------------------

    Ddrb = &B00001111 'twe: PB0, PB1, PB2, PB3 werden Ausgänge, restlicher PortB bleibt Eingang
    Ddrc = &B00000000 'twe: PortC bleibt Eingang
    Ddrd = &B00000000 'twe: PortD bleibt Eingang


    Stimmt das so? Musste das um die Ports D erweiteren.

    Anbei nochmal der ganze Code.
    Angehängte Dateien Angehängte Dateien

  8. #58
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von Tony DesWegeles Beitrag anzeigen
    Die Frage welche ich noch habe, oder wo ich mir unsicher bin ist bei den Ein- und Ausgängendefinition

    Ddrb = &B00001111 'twe: PB0, PB1, PB2, PB3 werden Ausgänge, restlicher PortB bleibt Eingang
    Ddrc = &B00000000 'twe: PortC bleibt Eingang
    Ddrd = &B00000000 'twe: PortD bleibt Eingang

    Stimmt das so? Musste das um die Ports D erweiteren.
    Ja, stimmt so. Eine 1 im entsprechenden Bit von entsprechendem DDR Register bedeutet Pin als Ausgang konfiguriert.
    Der ATMega belegt nach Reset alle Register mit Defaultwerten. Beim DDRx sind das Nullen. Man müßte also Nullen nicht Schreiben, wenn man Eingänge haben möchte. "Ddrd = &B00000000" wäre unnötig, dient aber auf jeden Fall der Klarheit eines Programmes.

    Gruß
    Searcher

    PS: Ich lad mir das letzte Programm nochmal und versuche daraus, wie von mir obenvorgeschlagen, ein Durchschleifprogramm zu machen. Wird heute und morgen aber sicher nichts mehr.
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  9. #59
    Unregistriert
    Gast
    Hallo Searcher,

    danke für deinen Vorschlag. Ich werde jetzt alles nochmal komplett neu anschließen und mit dem print - Befehl versuchen zu ergründen, was vom Empfänger eigentlich ankommt.
    Denn ich denke da ist der Fehler begraben.
    An sich ist das Programm sehr nachvollziehbar, zumindest bis ich zu den asm Routinen komme. Sind ja wie ich verstanden habevon Dir selbst geschrieben, oder?

    VG
    Tom

  10. #60
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von Unregistriert Beitrag anzeigen
    danke für deinen Vorschlag. Ich werde jetzt alles nochmal komplett neu anschließen und mit dem print - Befehl versuchen zu ergründen, was vom Empfänger eigentlich ankommt.
    Denn ich denke da ist der Fehler begraben.
    Ich habe in meinen Anfangszeiten, als ich noch kein Oszilloskop besaß, mit einem Soundkartenoszilloskop solche Signale beobachten können. Hab leider keine Unterlagen mehr dazu, läßt sich aber im INET finden. Signal an Soundkarte-Soundin, Freeware Oszilloskop gestartet und mit viel Phantasie erahnt was vorgeht. Manche Audioaufnahmeprogramme können Waveformen auch sichtbar machen

    An sich ist das Programm sehr nachvollziehbar, zumindest bis ich zu den asm Routinen komme. Sind ja wie ich verstanden habevon Dir selbst geschrieben, oder?
    Ja, die ASM Teile sind von mir.
    Zum Messen des Impulses am Eingang wird bei einem (PCINT) in die entsprechende Interruptroutine gesprungen.
    Dort wird mit "sbis pinC , 0" festgestellt ob der PCINT Flankenwechsel nach high oder low ging.
    Es wird entsprechend verzweigt und der Timer1 ausgelesen und gesichert zur Nachbearbeitung im Hauptprogramm.
    War der Pin low, ist der Impuls zu Ende und es wird noch ein Flag gesetzt um dem Hauptprogramm mitzuteilen, das jetz die Impulslänge berechnet werden kann.

    Servoausgabe:
    Die Servoimpulse für alle Servos werden nacheinander ausgegeben. Der Interrupt ...

    Fotsetzung folgt später, Sorry.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 6 von 8 ErsteErste ... 45678 LetzteLetzte

Ähnliche Themen

  1. Mehrere analoge Werte über ein ADC einlesen möglich?
    Von HeXPloreR im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 07.08.2012, 18:18
  2. Schaltkreis für mehrere Servos
    Von Sebbokalypse im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 12.11.2009, 19:46
  3. Mehrere Signale umschalten
    Von flexxo im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 25.02.2007, 14:56
  4. Antworten: 9
    Letzter Beitrag: 02.04.2006, 18:53
  5. Mehrere Signale über einen Interrupt erkennen
    Von Minifriese im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 04.06.2004, 09:31

Berechtigungen

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

LiFePO4 Speicher Test