Hallo Ich bin neu in der Mikrocontrollertechnik. Muss mich da aber jetzt reinfuchsen. Ich möchte gerne einen Servomotor mit PWM ansteuern. Habe dafür auch schon folgenden Code geschrieben. ... PTCONbits.PTEN = 1; PTCONbits.PTCKPS = 2; //Prescaler auf 1:16 PTCONbits.PTMOD = 0; PTPER = 9215; //20ms Periode PTMRbits.PTDIR = 0; //hochzählen PWMCON1bits.PEN1H = 1; //PWM Ausgang 1 aktivieren PWMCON1bits.PMOD1 = 1; PDC1 = 614; //1,5 ms Mitte ... Könnt ihr mir sagen warum der nicht geht? Bzw. wo mein Gedankenfehler ist? Als Quartz habe ich 7,3728 MHz. Hoffe ihr könnt mir da helfen. Danke für euere Bemühungen. Gruss Johannes
Lies dir dein Posting selbst nochmal durch und versuche danach mal zu beurteilen, wie ein Außenstehender darauf etwas vernünftiges antworten soll...
hmm... dachte wäre verständlich. Das ganze schreibe ich in einem C Compiler für einen dsPIC. Dies ist auch nur ein Ausschnitt für den Teil im Programm, wo ich den PWM Ausgang des PICs ansprechen möchte. Der Quartz für den PIC hat die Frequenz von 7,3728 MHz. PTCONbits.PTEN = 1; //Time Base Count Enable PTCONbits.PTCKPS = 2; //Prescaler auf 1:16 PTCONbits.PTMOD = 0; //Free Running Mode (PWM) PTPER = 9215; //20ms Periode PTMRbits.PTDIR = 0; //hochzählen des Timerregisters (PWM) PWMCON1bits.PEN1H = 1; //PWM Ausgang 1 aktivieren PWMCON1bits.PMOD1 = 1; //Independent Mode PDC1 = 614; //1,5 ms Mitte als Duty Cycle Gruss Johannes
dsPIC is ja schonmal die erste wesentliche Info. >Könnt ihr mir sagen warum der nicht geht? Weil er keine Beine hat... Scherz beiseite. Aber "Geht nicht" ist auch keine Fehlerbeschreibung.
Wenn ich es auf den dsPIC übertrage, macht der angeschlossene Servo nix. Er fährt auf keine Stellung, noch hält er eine.
Hi, nimms mir nicht krumm, aber hast du auch ne Spannungsversorgung am Servo und geht es noch? Manchmal sieht man den Wald vor lauter Bäumen nicht. MfG und3rt4ker
Spannungsversorgung liegt an von 5V. Servomotor geht auch. Habe ihn mal betrieben an einem PWM Signal das ich mit einem IC erzeugt habe.
Ich nehme an, du hast kein Oszi um das Ausgangssignal mal anzuschauen? Ich habe zwar keinen blassen von PICs, aber folgende Appnote gefunden: http://ww1.microchip.com/downloads/en/DeviceDoc/93004A.pdf Da ist auch ein Codebeispiel drin. Vielleicht hilft das.
Super... Danke... werds gleich mal durchlesen. Morgen hole ich mir ein Oszi aus der Uni. Mal sehen was meine Platine dann so ausspuckt.
Hallo, hast du evtl nen treiber-IC hinter dem PIC vergessen. Denke mal nicht das der PIC nen Servo treiben kann, oder hat der Servo das integriert? MfG Muecke
>Denke mal nicht das der PIC nen Servo treiben kann, oder hat der Servo das >integriert? (Modellbau-)Servos wie in diesem Fall haben eine Regelelektronik eingbaut. Die werden über ein pulsweitenmoduliertes Signal angesprochen. Mit PICs kenne ich mich nicht aus...
Hi das ist ein dsPIC 30F4011. Der ist extra für eine PWM Steuerung für Motoren ausgelegt. Das ganze ist auf einem Dev2 Board von Microchip drauf. Mittlerweile habe ich auch geschafft, dass der Servo wenigstens etwas tut. Egal was ich jetzt einstelle, er fährt immer kpl. nach links. Den Code habe ich etwas zu oben verändert. { TRISE = 0x0100; //PWM pins as outputs, and FLTA as input PWMCON1bits.PMOD1 = 1; PWMCON1bits.PEN1H = 1; PTCONbits.PTMOD = 1; //Time Base Mode PTCONbits.PTCKPS = 2; //Prescaler auf 1:16 PTPER = 18880; //Computer Period for desired frequency PDC1 = 1776; //1,5 ms Mitte OVDCONbits.POVD1H = 1; PTCONbits.PTEN = 1; // Start PWM } Vielleicht könnt ihr mir sagen, warum egal was ich für eine Periode einstelle immer nur nach links (ccw) fährt. Gruss Johannes
> Vielleicht könnt ihr mir sagen, warum egal was ich für eine Periode > einstelle immer nur nach links (ccw) fährt. 1. Möglichkeit: Die Pulsdauer ist entweder zu lange oder zu kurz. 2. Möglichkeit: Dein PWM-Signal ist invertiert (was dann zwangsweise zu einem zu langen Puls führt) Gruß, Magnetus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.