- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Minimallösung: asuro steuert RC-Servo

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.07.2005
    Ort
    18km südl. Lutherstadt Wittenberg
    Alter
    48
    Beiträge
    142
    Anzeige

    Praxistest und DIY Projekte
    Hi,

    Mein Nick sollte es ja schon verraten, daß ich vom RC-Modellbau abstamme...
    Wer ein Servo auch ohne 10k Widerstand und Fotodiode nutzen will, könnte ganz einfach an die Anschlüsse Con1,2 Out+,- von Buchsenleisten steckkontakte in die vorbereiteten Lötpunkte löten, und dann das Servo anstecken:
    gelb an con2 (portd.2)
    rot an+
    schwarz / braun an -

    Und wer es nicht weiß, diese Servos benötigen eine PWM mit 1,0ms - 2,0ms Impuls (1,5ms = Mittelstellung) und ca 10...20ms Pause (die Pausendauer ist nicht so kritisch sollte aber nicht unter 10ms und auch nicht weit über 20ms liegen)
    MfG Dani.

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich möchte meine Projekte einfach halten und dabei möglichst auf Löteingriffe verzichten. Die Gründe dafür sind u.a.:

    - ich bin altersbedingt fast blind und sehr zittrig
    - ich habe 'ne schlechte Elektronik-Lötausrüstung und keinen vernünftigen Arbeitsplatz
    - ich verwende nahezu den orginalen asuro, so kann jeder die Versuche nachbauen
    - einfacher und kostengünstiger Aufbau mit schnellem Erfolgserlebniss
    - mit wenigen Handgriffen ist die Erweiterung entfernt und der asuro für neue Schandtaten bereit
    - der asuro hat mindestens fünf für Servoansteuerung nutzbare LEDs...

    Die Pausenzeiten beeinflussen bei meinem Aufbau die Geschwindigkeit, mit der das servo in seine neue Position fährt. Je länger die Pausen zwischen den PWM-Impulsen sind, umso mehr Zeit läst sich das servo. Gleichzeitig sinkt auch die Stromaufnahme. Vermutlich macht das servo dann intern so etwas wie eine eigene PWM, weil der Motor nur ununterbrochen läuft, wenn die Impulse schnell genug hintereinander ankommen.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #13
    von welchen pin das atmegas bekommst du das pwm signal

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    06.02.2007
    Beiträge
    39
    @dani-bruchflieger
    ich hab den servo jetzt mal so angelötet. aber wie kann ich den jetzt steuern?

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.07.2005
    Ort
    18km südl. Lutherstadt Wittenberg
    Alter
    48
    Beiträge
    142
    Zitat Zitat von Dani-Bruchflieger
    gelb an con2 (portd.2)
    rot an+
    schwarz / braun an -
    @jpitsche: Pwm soll also am Portd.2 ausgegeben werden. (entspricht StatusLed rot)

    @asuromatze
    wenn du Bascom kannst, kann ich dir ein Beispielprogramm posten. - ich muß es aber auch erstmal noch etwas anpassen, damit es auf dem Asuro laufen kann - dazu braucht man einen freien Timer
    bsp Timer0:
    1. Timer so configurieren, daß er recht langsam läuft. möglichst so daß 255 (12 Zählschritte ca. 1ms dauern. (der Servoimpuls soll zwischen 1,0 und 2,0 ms liegen auf jeden fall sollte 128 (64) die Mittelstellung sein! -> timer0 muß ISR 2 mal anlaufen pro servo, dann kommt das nächste dran bzw. beginnt die Pause die zw. 10 und 20 ms dauern soll.)
    2. Die ISR des Timers
    Zuerst wird eine Bytevariable um 1 erhöht. (zählt Ansprünger der ISR in der Schleife.
    Wenn Zähler =1 dann Timer mit Servosollwert vorladen (0(0)=2ms 128(64)=1,5ms 255(12=1ms)
    Beim 2.mal den Port des Servos auf 0 setzen. (Pause startet)
    Frühestens bei Zähler = 13 (spätestens bei 22) den Zähler auf 0 setzen und den Servoport einschalten.

    Das ganze sind dann meherere If then Anweisungen, die intelligent verschachtelt werden müssen. zumal bei 8MHz kein Prescaler genau auf 1ms für 256 Schritte kommt - es muß immer etwas angepaßt werden, daß man grundsätzlich den Timer mit einem Grundwert vorlädt bei jedem Durchgang, aber beim 2.mal den Grundwert + den Servowert.
    Normalerweise arbeite ich mit 7Bit Auflösung (0bis 127 mit 64=Mittelstellung) das ist genau genug. Hab mir damals eine Excel-Tabelle gemacht, wo ich mit Prescalern und vorladungen der Timer rumspielen konnte für jede Quartzfrequenz, bis ich die passende Konfiguration gefunden hatte...
    Probier mal etwas rum - ich denke mal, du wirst eine gute Lösung finden. Kleiner Tipp noch: in der Abteilung Elektronik habe ich im Fred "Rechnen mit Bascom" ein Programm gepostet, daß an einem Mega8 mit 8MHz 5 Servos am Portb.0 ... b.4 per Timer1 so steuert, wie es per Potis an den Ports c.1 ... c.5 vorgegeben wurde. Allerdings ich habe mit C null Ahnung und kann nur erklären wie mans in Bascom umsetzen kann.
    MfG Dani.

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    06.02.2007
    Beiträge
    39
    ^^ich hab Bascom leider nicht. kann man den asuro nicht mit dem mitgeliefertem programm programmieren, dass er den servo steuert?

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.07.2005
    Ort
    18km südl. Lutherstadt Wittenberg
    Alter
    48
    Beiträge
    142
    Hi,

    du brauchst kein Bascom um ein Servo ansteuern zu können - das kann man auch in assambler oder C schreiben - wenn man diese Programmiersprachen kann. Nur ich habe bisher nur und ausschließlich in Bascom Programmiert, und darum hab ich davon, wie man das in C umsetzt, keine Ahnung.
    Das PWM für ein RC-Servo braucht nur einen Timer, der pro Durchlauf min. 1ms benötigt - der Timer1 eignet sich dafür noch besser, weil man ihn so einstellen kann, daß er pro Durchlauf 2ms läuft. Du mußt nur in der ISR des Timmers so intelligent programmieren, daß er einen Impuls von 1,0...2,0ms mit danach 10...20ms Pause erzeugt. Dafür gibt es verschiedene Möglichkeiten, je nach dem, ob nur ein Servo angesteuert werden soll, oder mehrere.
    Beispiel für 5Servos am Mega8 in Bascom: https://www.roboternetz.de/phpBB2/viewtopic.php?t=30663
    eventuell könnte das auch noch mit der kostenlosen Bascom-Demo kompiliert werden - aber man wird es sicherlich auch in C übersetzen können... wobei das Programm so wie es dort ist, NICHT für den Asuro geeignet ist! Soll ja nur als Beispiel dienen, wie man sowas von Hand machen kann.
    MfG Dani.

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    06.02.2007
    Beiträge
    39
    ^^ok vielen dank für deine antwort. ich werde mal schauen, ob ich das irgendwie hinbekomme.

  9. #19
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Als Programmbeispiel für den asuro könnte mein Code aus dem Startbeitrag dienen. Die angesteuerten LEDs müssen durch den verwendeten Port ersetzt werden und der betreffende Port eventuell zuvor noch auf Ausgabe programmiert werden. Außerdem muss die Logik noch invertiert werden, aus LED(OFF) wird Port=1 und umgekehrt.

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    06.02.2007
    Beiträge
    39
    ^^in welcher datei muss ich "port=1" einstellen? in "asuro.h" oder in der programmdatei?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test