-         

Ergebnis 1 bis 7 von 7

Thema: Anfänger hat Verständnissfragen zu PWM.

  1. #1

    Anfänger hat Verständnissfragen zu PWM.

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo Leute,

    ich möchte ein Projekt realisieren bei dem ein Servo angesteuert wird. Und zwar soll das Servo, bei einem Eingangsimpuls am PIC, schnellstens in die andere Richtung auslenken und dabei ganz langsam wieder in die Ausgangsposition zurückgehen. Für die Positionen ist jeweils der Vollausschlag angedacht.

    Die Servos brauchen einen Impuls von ca 1ms für den einen Ausschlag bis 2ms für den anderen Ausschlag mit ner Pause von 19 bzw. 18ms. Komplette Impulslänge 20ms, welcher 50Hz entspricht.
    Zu meinen Verständnisfragen:

    Das Ansteuern kann man, Lt. Sprut, mit dem Timer 2 und der damit einfach zu realisierenden PWM machen.
    Der Timer 2 Lässt sich scheinbar nur über den internen Takt (4mhz) steuern. Was ist der Interne Takt? Kann ich den Internen Takt mit einem externen Quarz beeinflussen?
    Hintergrund: Wenn ich alle möglichen Teiler auf das höchste einstelle komme ich bei 4Mhz auf mehr als 61 Hz. Zumindest habe ich das so verstanden.


    Wäre toll wenn einer meine vielleicht wirren Gedanken nachvollziehen kann und mir ne Antwort geben könnte.

    Grüße
    Michael

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    21.03.2013
    Beiträge
    86
    1. Habe leider keine Ahnung von Servos.
    2. Der interne Takt entspricht der Oszillator- Frequenz / 4 = Befehle pro Sekunden.
    3. Je nachdem was der PIC sonst noch so macht, kannst Du das PWM- Signal locker in der Hauptschleife erzeugen:
    Start: Timer1 =0, Ausgang auf High setzen, dann Impulslänge (1...2ms) abwarten (= warten bis timer1 > xxx) Ausgang auf low setzen, dann den Rest erledigen und wieder warten bis Timer1 > yyy und das ganze wieder von vorne. Den Timer 1 kannst Du Dir ja entsprechend konfigurieren.
    Nach dem Impuls hast Du ja noch mindestens 18ms um die anderen Dinge zu erledigen.
    4. Würde einen C-Compiler verwenden z.B. den von CCS, der kostet nicht viel und kann ne Menge.

  3. #3
    Danke für die Antwort.
    Wenn ich das richtig verstanden habe kann ich den Takt erzeugen mit was ich will. Also egal ob Intern, mit Quarz oder Resonator und der Interne Takt ist dann 1/4 davon?

    Der Pic soll nur das machen, für andere Zwecke wird er an dieser Stelle nicht gebraucht. Das mit den Schleifen (Timer0) hab ich mir auch schon Überlegt, Denn der Timer 2 Bringt mir ein genau invertiertes Signal.

    Danke für das Angebot für C, aber ich habe das PIC2 Kit hier und versuche mich gerade mit ASM. Das liegt mir irgendwie besser, hab auch schon ein paar Dinge damit gemacht. Später werd ich mir das mit C mal genauer ansehen.

    Grüße
    Michael

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von MisterMou
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    26
    Beiträge
    433
    Mach dich wegen den 50Hz nicht verrückt. Das ist nur ein Richtwert
    Manche Servos können bis zu 200Hz gehen, langsamer geht natürlich auch.
    Mähh macht der Rasenmäher. http://moufx.wordpress.com/

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    21.03.2013
    Beiträge
    86
    Ich halte von Programmieren in ASM nichts, auch wenn ich ASM verstehe und mir hin und wieder das lst-File ansehe, um zu sehen ob der Compiler alles richtig gemacht hat.
    Die komplette Programmerstellung in ASM dauert lange und Programme sind in der Regel kaum zu pflegen. Vor allem, wenn man x-Projekte am laufen halten muss...
    PICKIT2 ist ein Superwerkzeug, mit dem arbeite ich auch. Den PICKIT3 brauchst Du Dir nicht wirklich:
    http://http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/
    Kennt Ihr das?
    Geändert von indeas (09.07.2013 um 09:28 Uhr)

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Hallo Michael,

    willkommen im Forum.
    Zitat Zitat von Eisbaer09 Beitrag anzeigen
    ... Projekt ... ein Servo angesteuert ... Impulslänge 20ms ... bei 4Mhz auf mehr als 61 Hz ...
    Hier (klick) haben wir ein paar Informationen zu Servos zusammengetragen - besonders was das Timing, die Toleranzen dazu und den Unterschied zwischen den langsamen analogen und den schnellen digitalen Servos (klick nochmal) angeht. WENN Du einen digitalen Servo hast UND WENN Dir die schnelle Updaterate (sprich: kurze Servoperiode) dieser Teile in Dein Projekt passt, dann solltest Du Dich mit kurzen Periodenzeiten beschäftigen. Für den Normalfall reichen die 50 Hz und deren sattes Toleranzband. Hier (nochnKlick) - 2ter Absatz - ist in diesem Wikiabschnitt auch auf die variable Periodenzeit eingegangen worden.

    In Assembler auf Atmel (ich habe keinerlei Erfahrung zu den PICs) hatte ich meine ersten Servotester programmiert - eine hübsche Aufgabe - und mein erster läuft immer noch: mit Regelmöglichkeit durch ein Poti, Messmöglichkeit für die Stromaufnahme . . . . Nur ist die Multipliziererei bei den Perioden- und Pulszeiten ziemlich aufwändiger als so ein Multiplikationszeichen in einer Hochsprache *ggg*.

    Trick: Du kannst natürlich bei nem Timer die doppelte oder dreifache ISR-Frequenz einstellen und in der ISR mit einem Counter dieses Vielfache wegtickern . . .

    Fazit:
    - Wissenswertes zu Servos lesen!
    - KANN Dein Servo (Datenblatt!) ne hohe Periodenfrequenz verarbeiten?
    - Brauchst oder willst Du eine hohe Periodenfrequenz für den Servo?
    - Entspricht die Schaltung den Ratschlägen im genannten Link?
    - Loslegen

    Nicht vergessen: Servos können Controller massiv stören. Zu Risiken und Nebenwirkungen lesen sie den Abschnitt "Achtung, Fehlermöglichkeiten!" im Wikiartikel. Ne separate Versorgung der Servos, getrennt von der des Controllers, ist immer die erste Wahl - und nicht den gemeinsamen GND vergessen.

    Viel Erfolg
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178
    Weil du ja schon Sprut gelesen hast, hast du das eventuell schon gesehen,
    wenn nicht kannst du dir mal den Code / Hintergrund dazu anschauen:

    Servo Inverter

    http://www.sprut.de/electronic/pic/p...rter/index.htm

    Da sollte ja dein Thema behandelt sein,
    du musst dann in der Software halt noch eine Verzögerung für eine Drehrichtung einbasteln.
    GrußundTschüß \/
    ~Jürgen

Ähnliche Themen

  1. Arduino Anfänger hat frage
    Von der_tom im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 13.12.2012, 16:53
  2. Anfänger hat Fragen...
    Von tomiliS im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 10
    Letzter Beitrag: 20.01.2009, 19:57
  3. Anfänger hat fragen zu interrupts
    Von Andy91 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 13.01.2008, 11:27
  4. Anfänger hat fragen zu C
    Von Sim Robot im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 11.01.2008, 21:01
  5. Anfänger hat Technisches Problem (Verständnis) mit PWM Prog.
    Von servo im Forum Assembler-Programmierung
    Antworten: 11
    Letzter Beitrag: 22.01.2007, 17:05

Berechtigungen

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