|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#16
|
|||||
|
|||||
|
Re: Encoders not changing...
Quote:
We've chosen 256 counts per revolution of the drive wheel. Moving at high speed will give a couple thousand interrupts per second. Our 2005 robot didn't seem to have a problem keeping up with that kind of rate. |
|
#17
|
|||
|
|||
|
Re: Encoders not changing...
There might be a problem with storing a long to an int without typecasting... Kevin's Get_Encoder_n_Count() functions return a long. If you want to store them as ints you should typecast them:
Code:
LeftWheelCount = (int)Get_Encoder_1_Count(); RightWheelCount = (int)Get_Encoder_2_Count(); Code:
printf("Left encoder count = %d", Get_Encoder_1_Count() ); //incorrect
printf("Left encoder count = %d", (int)Get_Encoder_1_Count() ); //correct
This might be something you already know, in which case I'm sorry I can't help. But if you have a problem with encoders generating too many counts, BaneBots has an encoder divider board that we're using this year. They have jumpers to select divide by factor: 1, 4, 8, or 16. We have one 128/revolution encoder coupled 2:1 to each CIM motor shaft (that's ~5000 counts/sec at no load speed), divided by 4 so we don't overwhelm the processor with counts. |
|
#18
|
|||||
|
|||||
|
Re: Encoders not changing...
You can also try leaving things as longs and printing using "%ld" instead of "%d"
|
|
#19
|
||||
|
||||
|
Re: Encoders not changing...
i'm not sure which motors we're using but i think they're the chalupas. i'll try typecasting the method's returns as ints. I use ints because i get paranoid about the amount of space the robot really has...
![]() Thanks to everyone for all of their help! It hasn't yet been fixed, but i have great confidence it will be, thanks to this huge outpouring of help! |
|
#20
|
||||
|
||||
|
Re: Encoders not changing...
Dont be paranoid... unless you are doing some crazy coding then you should be fine.
either way, the proper replacement macro in printf for a long is %li |
|
#21
|
|||||
|
|||||
|
Re: Encoders not changing...
|
|
#22
|
|||||
|
|||||
|
Re: Encoders not changing...
Are you sure the RC is reading the sensors correctly?
What I did to test our GTS's last year was put the last 4 PWMs in User_CCP mode (digital outputs should work equally well) and have the interrupt handler toggle that. I then hooked an oscilloscope to both the GTS and the CCP pin. The wave forms matched nearly perfectly. In terms of software, the GTS and encoders should be very similar, ignoring direction. Even just putting an LED on the output pin and watching its apparent brightness should be helpful. (You probably won't see flickering, as it goes too fast.) If that works, you may need to post your code so that we can look at it. |
|
#23
|
||||
|
||||
|
Re: Encoders not changing...
i've got one last test to determine if the problem is programming or electrical/mechanical at the root. In interrupt handler low:
Code:
else if (INTCON3bits.INT2IF && INTCON3bits.INT2IE) // encoder 1 interrupt?
{
INTCON3bits.INT2IF = 0; // clear the interrupt flag
#ifdef ENABLE_ENCODER_1
--> puts("1");
Encoder_1_Int_Handler(); // call the left encoder interrupt handler (in encoder.c)
#endif
}
else if (INTCON3bits.INT3IF && INTCON3bits.INT3IE) // encoder 2 interrupt?
{
INTCON3bits.INT3IF = 0; // clear the interrupt flag
#ifdef ENABLE_ENCODER_2
--> puts("2");
Encoder_2_Int_Handler(); // call right encoder interrupt handler (in encoder.c)
#endif
}
|
|
#24
|
||||
|
||||
|
Re: Encoders not changing...
I finally fixed it!!!! yES!! But i have no idea why it didn't work. Oh well... Thank you, everyone, for your help!
|
|
#25
|
|||
|
|||
|
Re: Encoders not changing...
Any chance in sharing what you did (I know the post is late). We are having problems with the code as well, and have ruled out the possibility of a problem with the encoders with an oscilloscope.
|
|
#26
|
||||
|
||||
|
Re: Encoders not changing...
Sure. Well i got sick of trying stuff, so i tested the encoders stuff from kevin's stuff. It worked! So i did every step from the installation, and all of a sudden it worked. The testing steps we took were to check to see if the voltage was changing when the motors turn. If it does, check to see if the interrupt fires. If it does, check the interrupt handling routine. If that checks out, then either it's the print statements or i'm stumped
![]() |
|
#27
|
||||
|
||||
|
Re: Encoders not changing...
NEW PROBLEM: i now have one good encoder. The other one doesn't count. I've looked at the code, and everything is executed the same as the one that does work. Have yet to test the electrical portion, but my guess is that this is a brand new problem. Anyone have this or know how to fix it?
|
|
#28
|
|||
|
|||
|
Re: Encoders not changing...
When you say it doesn't work, do you mean it get's stuck on a certain value? Or does it just stay at 0 while you turn it...
In Kevin's encoder_readme.txt, Step 4 states the following: 4) Disable encoders not needed for your design by following the instructions in encoder.h. By default, all six encoders are enabled. Did you disable the rest of the encoders? Make sure you have the two your using enabled. Are you using correct Digital I/O ports? (2 and 12 I think for the second encoder) Other than that, I'm not sure why both won't work.....we had 2 working at one point by just following the readme. |
|
#29
|
||||
|
||||
|
Re: Encoders not changing...
yeah, i have disabled 4-6, but 2 is still active. Today when i get in, i'll check whether they're all plugged in right, and whether they even return a signal. I suspect they do, but i can't be sure.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Changing Fields? | Steve W | Championship Event | 8 | 08-04-2003 19:37 |
| Changing Chairman's | Jacqui Sutton | Chairman's Award | 1 | 03-04-2003 09:47 |
| Changing gears | archiver | 2000 | 1 | 23-06-2002 23:26 |
| ::CHANGING SERVERS:: | Brandon Martus | General Forum | 5 | 21-12-2001 10:33 |
| changing my name | Travis Covington | CD Forum Support | 1 | 09-10-2001 08:37 |