Sure! Post what you have, and I will send you some oscilloscope shots.
Sure! Post what you have, and I will send you some oscilloscope shots.
Scalerobotics:
This snippet has the capabiltiy to increment the pulse size a little bit at a time.
With this code the car starts out driving very fast backwards, then after five to ten seconds it stops, but never starts up forward.
My theory is that the (PAUSE 20) is what is causing the 50 pulses per second, Is that correct?
Code:duty VAR WORD ' Duty cycle value (CCPR1L:CCP1CON<5:4>) range VAR word segment var word TRISC.2 = 0 ' Set PORTC.2 (CCP1) to output CCP1CON = %00001100 ' Set CCP1 to PWM T2CON = %00000101 ' Turn on Timer2, Prescale=4 ' Use formula to determine PR2 value for a 1KHz signal, ' 4MHz clock, and prescale=4. (4E6/(4*4*1E3))-1=249 ' PR2 = 249 ' Set PR2 to get 1KHz out ' PR2 = 499 ' Set PR2 to get 2KHz out ' Use formula to determine CCPR1L:CCP1CON<5:4> value for ' ends of range 20% to 80%. (249+1)*4*0.2=200 (20% value) ' (249+1)*4*0.8=800 (80% value) ' duty = 200 ' Set duty cycle to 20% range = 25 duty = 1650 ' Set duty cycle to 1.65msec segment = 0 mainloop: CCP1CON.4 = duty.0 ' Store duty to registers as CCP1CON.5 = duty.1 ' a 10-bit word CCPR1L = DUTY >> 2 Pause 20 ' Pause 1/50 of second duty = duty + 2 ' Increase duty cycle IF (duty < (1650 + segment + range)) Then mainloop ' Do it again unless 2 msec duty = duty + 2 ' Reset to 20% duty cycle segment = segment + range PAUSE 2000 'Pause 2 seconds GoTo mainloop ' Do it forever
Here is the result. It changes from off through the percentage points to all the way on, but the period remains constant at about 1.023ms. (I finally got my oscilloscope USB driver to work today!)
![]()
Thank you soooo much. What a great tool..
Two things for me to consider.
1. PAUSE seems to not have the affect I expected.
2. The PR2 constant must mean something to PBP, but I can not figure out what.
Lastly, which version of oscilloscope software do you use? Is it freeware or did it cost money. If so, how much?
Ken
The following code makes the car go full speed backwards, then stop, then full speed forwards, then stop etc. Using the RC system I can control the motor continuously though varying speed. I have not yet figured what HPWM parameters produce various speeds to the ESC. It may be that the over-specification fast pulse frequency is overriding that nuance.
To really discover what this is doing I need to study and understand the ASM code. I think HPWM is interrupt driven. I am concerned because page 87 of the PBP Manual seems to say that the slowest pulse frequency is 245 hz. I want 50 hz.
Code:'**************************************************************** '* Name : HPWMcommand.BAS * '* Author : Ken Jones * '* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 1/27/2010 * '* Version : 1.0 * '* Notes : PBP has a HPWM command. Let's try it. * '* : * '**************************************************************** ' Don't forget. The duty cycle is 0 to 256 resolution MAINLOOP: HPWM 1,110,50 ' Neutral discovered by experiment. PAUSE 5000 HPWM 1,64,50 ' Full backwards PAUSE 2000 HPWM 1,110,50 PAUSE 5000 HPWM 1,164,50 ' Full forward PAUSE 2000 goto mainloop
Ken
I think I am being told that HPWM can not do the job that I need done. Who has a suggestion?
Bookmarks