PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM mit Tastern verändern



Gremlin
02.03.2012, 16:14
Hi Leute hab endlich meine erste PWM mit dem 16F627 erzeugt :) möchte gerne nen brushless Motor damit steuern. Jetzt hab ich aber noch ne kleine Nuss zu knacken und zwar möchte ich gerne die PWM mit zwei Tastern verändern, einmal schneller und langsamer. Hier mein Programm für den Pic vllt habt ihr nen Tipp oder nen Codeschnipsel für mich.

Danke schon im vorraus

;32,768kHz Quarz
; Anfangsinitialisierung
...
init
; Vorteiler 1:1 und Timer2 einschalten
BCF T2CON,T2CKPS1 ; Vorteiler 1:1
BSF T2CON,TMR2ON ; Timer2 ein

; Frequenz auf 50Hz einstellen
BSF STATUS,RP0 ; Bank1
MOVLW D'163'
MOVWF PR2 ; 50Hz
BCF STATUS,RP0 ; Bank1

; Tastverhältnis einstellen
MOVLW D'17' ; langsam=3 schnell=17
MOVWF CCPR1L

; PWM MODE mit CCP1 initialisieren
CLRF CCP1CON ; CCP1-Modus aus
BSF CCP1CON,CCP1M3 ; CCP1-Modus PWM-Mode
BSF CCP1CON,CCP1M2

loop
GOTO loop


end

pointhi
02.03.2012, 20:34
villeicht kennst as schon: http://www.sprut.de/electronic/pic/grund/pwm.htm

Du kannst bei PWM ja die DutyZykle und die Frequenz ändern. Die Frequenz wird dabei im Timer-Register eingestellt. Du musst daher einfach bei tastendruck den timer schneller oder langsamer stellen. Dann hast deine veränderbare frequenz. Wenn dutyZykle immer 50% sein soll musst du noch den timerwert halbieren und in das entsprechende register schieben. /2 ist meines wissen ja eine bitverschiebung nach rechts, also kein großes problem.

brushlessmotoren wirst du aber mit einem 16F627 mit den internen pwm-modul nicht steuern können! Beschäftige mich auch teilweise damit und ein brushlessmotor ist ein drehstrommotor, also 3 phasen. und um die anzusteuern brauchst du eine 1 1/2 H-Brücke (wenn die so heißt), also 6 PWM Pins mit der gleichen Frequenz die aber immer umschalten!

siehe da: http://www.ulrichradig.de/home/index.php/avr/brushless-motor-controller

ist ein avr aber so ziemlich das gleiche bei der ansteuerung. mir hat der schaltplan weitergeholfen, villeicht hilft er auch dir. Schau auch auf der microchip webite. Bei denen gibts auch demo beispiele zum downloaden und eigene cips für die aufgabe.

mfg. pointhi

Gremlin
03.03.2012, 19:19
Hallo pointhi ja die webseit von spurt kenn ich schon trotzdem danke für die schnelle Hilfe hat mir sehr weitergeholfen :) ja das mit dem brushless motot stimmt 3 Phasen aber ich verwende den passenden regler dazu sprich ich brauch eigentlich nur ein "Servo" Signal deshalb nur 1 PWM oder denk ich da falsch?
mfg Gremiln

pointhi
03.03.2012, 19:49
Ja, mit einem Brushlessregler sollte es funktionieren. Dachte du willst es komplett selber machen. Das PWM-Signal ist aber ein 1-2ms langes signal dass sich alle 20ms wiederholt. da brauchst keine frequenzänderung.

mfg. pointhi

Gremlin
11.03.2012, 11:37
hi pointhi also hab gestern meinen motor und den regler erhalten nur folgendes Problem wenn ich mein zb. 1,5 ms langes signal vom pic auf den regler gebe dann "hupft" er ein stück weiter und "quietscht" dabei aber drehn tut er sich nicht :-( was kann das sein bzw was soll ich tun hoff du kannst mir helfen

Gremlin
11.03.2012, 11:39
sollte vllt noch erwähnen das ich ihn grad an nem labornetzteil 11,1V 5A verwende da der akku noch unterwegs ist. Könnte es damit zusammen hängen???

pointhi
11.03.2012, 11:46
Hast du ein oszilloskop zum übererprüfen?

http://www.rn-wissen.de/index.php/Servos#Ansteuerung:_Signalform_und_Schaltung

Das signal von standardservos oder regler hat jeweils einen high impuls von 1ms ... 2ms und dazwischen sind etwa 20ms pause. Wenn die pause zu lange oder zu kurz gewählt ist arbeitet der regler nicht sauber oder gar nicht.

Kannst du das programm posten wie du den servo ansteuerst?, villeicht hab ich auch noch irgendwo das beispierprogramm was ich mal geschrieben habe. Bei den 11,1V und 5A must schauen was der motor braucht. Mein alter Modellflieger mit 500g hatte einen brushlessmotor der 18A dauerlast hatte!

mfg. pointhi

Hast du die korrekten werte damit berechnet? http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html

ist echt super das tool, auch wenn du ASM programmierts.

Ich hab diese daten für einen 2ms puls bekommen:



/* * PWM registers configuration * Fosc = 32768 Hz * Fpwm = 49.95 Hz (Requested : 50 Hz) * Duty Cycle = 10 % * Resolution is 9 bits * Prescaler is 4 * Ensure that your PWM pin is configured as digital output * see more details on http://www.micro-examples.com/ * this source code is provided 'as is', * use it at your own risks */ PR2 = 0b00101000 ; T2CON = 0b00000101 ; CCPR1L = 0b00000100 ; CCP1CON = 0b0000110

und diese für einen 1ms puls:




/* * PWM registers configuration * Fosc = 32768 Hz * Fpwm = 49.95 Hz (Requested : 50 Hz) * Duty Cycle = 5 % * Resolution is 9 bits * Prescaler is 4 * Ensure that your PWM pin is configured as digital output * see more details on http://www.micro-examples.com/ * this source code is provided 'as is', * use it at your own risks */ PR2 = 0b00101000 ; T2CON = 0b00000101 ; CCPR1L = 0b00000010 ; CCP1CON = 0b00001100 ;

wenn ich mir CCPR1L anschaue kommt mir der bereich in dem man das PWM signal verändern kann etwas klein vor. Am besten sollte sich jemand noch melden der schon erfolgreich Servos mit PWM angesteuert hat. Schau mal ob du ein Application note bei Microchip findest. Glaube schon dass sie für solche anwendunge eines gemacht haben. Oder schaue mal beim RN-Servo-Controll.

http://www.rn-wissen.de/index.php/Servoansteuerung

Hier wurde es mit einem Timer gemacht, was eine nicht schlechte idee ist, solange man die ansteuerung sauber hinbekommt. (Hab ich auch mal gemacht, aber bei mehr wie 1. Servo muss man wirklich genau auf das timing aufpassen. Und ohne Oszilloskop ist das mit Timer entweder ein ratespiel oder ein nicht kleiner rechenaufwand.

mfg. pointhi

Gremlin
11.03.2012, 12:41
Ja ein Oszi hab ich sind 49,94 Hz und der High Impuls dauert 1,5ms

so hier mein Programm:

BCF T2CON,0 ;Vorteiler 1:1
BCF T2CON,1
BSF T2CON,2 ;Timer 2 ein

BSF STATUS,RP0
movlw D'163'
movwf PR2
BCF STATUS,RP0

movlw D'12'
movwf CCPR1L

clrf CCP1CON
BSF CCP1CON,3
BSF CCP1CON,2

loop
goto loop

end

das wäre mein Programm mit dem pic 16F627 und nem 32,768kHz Uhrenquarz
auf dem oszi passen die werte
ja der motor hat nen nennstrom von 30A und der regler ist für dauerbelastung von 35A
hab die möglichkeit noch den andren ausgang meines Labornetzteiles zu nehmen der liefert 10A wollte es mal so probieren nicht das ich dann den akku ranhäng und ich bekomm ne schwarze wolke ins gesicht :-( deshalb erst mit 5A

pointhi
11.03.2012, 13:02
hast du einen servo, es könnte ja sein dass der motor nicht anlaufen kann weil er zu wenig strom bekommt. wenn der servo korrekte positionen anfährt sollte der regler auch funktionieren. Ansonsten solltest du den regler mit einem modellbauempfänger mal testen.

mfg. pointhi

Gremlin
11.03.2012, 15:01
also servo geht ohne probleme hab jetzt mal noch ein ganz altes festpannungsnetzteil mit 5V 30A rausgekramt aber da genau das gleiche Servo geht motor hüpft eine stelle weiter und piepst:-( werd wohl oder übel auf den akku warten müssen und dann das ganze nochmal versuchen aber die ansteuerung mit dem pic dann ich ja eigentlich so lassen weil mit dem servo klappts ja oder???

pointhi
11.03.2012, 20:41
ja, wenn die ansteuerung passt ist das problem entweder die stromversorgung der regler oder der motor.

mfg. pointhi

Gremlin
12.03.2012, 08:14
Also hab im www nochmal nachgeguckt der Regler hat nen Softstart und die Bremse ist aus underanderem hat er noch nen Unterspannungsschutz mit 3V pro Zelle und Autom. Erkennung der Zellen Zahl 2/3S schätz das es echt an der Spannung liegt wenn die zusammenbricht schaltet er ab