|
|
|
![]() |
|
|||||||
|
||||||||
This white paper contains information about building and programming a Playstation 2 controller adapter to control your robot! This adapter was developed by Team 862, Lightning Robotics, and works perfectly with any off-the-shelf PS2 controller. The advantage of this model is that no modifications n...
This white paper contains information about building and programming a Playstation 2 controller adapter to control your robot! This adapter was developed by Team 862, Lightning Robotics, and works perfectly with any off-the-shelf PS2 controller. The advantage of this model is that no modifications need to be made to your PS2 controller. It is fairly inexpensive, easy to build, and competition legal! Schematics, board layouts, PIC hex file, code, and documentation are included.
1138235317ps2_adpater_whitepaper.zip
25-01-2006 22:40
Greg Marra
That's really cool, but the circuit looks fairly complicated to build and program.
You guys should consider building more and selling them to other teams. Considering that the price of a CH Flightstick on eBay is upwards of $40, you could help people get a better controller for their robot and make your team some extra money at the same time.
25-01-2006 22:41
pathew100Great job by the "geekTeam" of our robotics team. I'm the electrical/software mentor for team 862 and what they have done is amazing. Especially since they didn't even need to ask me for help! I had a major "How the heck did you do that?" moment when they first hooked it up and had it working on the breadboard.
So if you have any questions, ask the students!
Here's our website :www.lightningrobotics.com
25-01-2006 23:51
Jeff Rodriguez
Will this also work with a PSone controller?
26-01-2006 07:06
GhostInTheShellIt will work with PSOne controllers that have the analog sticks (The dual-shock analog controllers work)
26-01-2006 07:33
Joel JI had no idea you were allowed to connect a PIC between the "joystick" and PORTx of the OI.
26-01-2006 08:45
Not2B
|
Originally Posted by Joel J.
I had no idea you were allowed to connect a PIC between the "joystick" and PORTx of the OI.
|
|
Originally Posted by Manual
<R78> All equipment connected to the Joystick Ports of the IFI Operator Interface must be powered solely
through the power available through the port. External power sources of any type are not permitted on any equipment connected to the Joystick Ports. Portable computing devices may not be connected to Joystick input ports on the Operator Interface. Power-passive devices (e.g. joysticks that draw their power solely through the IFI Operator Interface joystick port) are permitted. |
27-01-2006 16:06
pathew100See also this thread on the Q&A:
Custom-circuit Controllers
This design is officially legal for FIRST competitions.
27-01-2006 18:03
acumenerraticaQuestion about your control mapping...
It was unclear in the white paper (to my insomnia-addled brain, at least) whether both joysticks are mapped to the PIC. Is it possible to run tank drive simply from the two analog sticks of a PS2 controller using your adapter method?
Replies are greatly appreciated
27-01-2006 22:08
Not2B
I'm not sure if you need 2 sets or one set... I'll have to ask the geeks. BUT - I can tell you that we drive tank style with the 2 sticks.
I'll see if I can ask the geekTeam more about it.
27-01-2006 23:44
jakepYes, the two Y axes are sent to the OI, allowing for tank drive.
The X axis on either joystick on the ps2 controller is not sent to the OI, and is instead used to send digital signals. (4 per analog input on the OI, total of 8)
30-01-2006 01:46
phrontist
Impressive! You deserve a Innovation In Control award, if you don't get it, they have no idea what they're doing!
(Espescially because it was student designed and built)
03-02-2006 22:56
Ellery
|
Originally Posted by jakep
Yes, the two Y axes are sent to the OI, allowing for tank drive.
The X axis on either joystick on the ps2 controller is not sent to the OI, and is instead used to send digital signals. (4 per analog input on the OI, total of 8) |
04-02-2006 13:10
jakepNo diodes or resistors are required for this project. Depending on how you are building it, you might need to have a resistor for the LED. However, we used an LED mounting that already had a resistor built in. We used to have some in the design, but they were removed to make it more simple.
06-02-2006 20:36
maniac_2040When it comes to changing which buttons we uses, is it possible to just modify the code in some way? My team was thinking about using the playstation controller, but would like to use both the x-axis and y-axis in at least one of the analogs. How would I go about doing this? Thanks in advance!
07-02-2006 10:52
kc8nodI can't open the schematic file. I get the error "ps2adapter.sch is not a valid ExpressSCH file". The layout file opens fine with ExpressPCB. Any ideas what's wrong?
p.s. great job guys, thanks for all the hard work.
07-02-2006 12:45
jakepThe PCB file is for use with Express PCB, the schematics were made using Eagle Layout software.
To modify the adapter to use different axes and such, you will need to modify the code. The source code is included, and it will compile with free compilers like gpasm. In the future, we will be working on a better base code to allow for more changes, buttons, and axes.
08-02-2006 16:50
kc8nodFYI, you can buy the PIC and the digipots from DigiKey:
Part Number Description Price PIC16F688-I/P-ND IC PIC MCU FLASH 4KX14 14DIP $3.35 DS1267-100-ND IC POT DUAL DIGITAL 100K 14-DIP $3.32
10-02-2006 15:56
Ellery
Jake,
I've been trying to compile and program your source code with MPLab but do I need to change your code again to be able to compile and program with the Microchip Picstart Plus programmer?
According to your Remarks you changed the PNUM_DATA 0; Pin_DATA PortA, 0; <-What were the original values?
If you are programming directly from the PS2 plug I assume you're direct wiring the plug to the board pinouts for the 7 inputs to the match the programmer pins.
Let me know what i'm missing here.
Thanks
Ellery
11-02-2006 15:32
jakepNo, you do not have to change any of the sourcecode to use a different programmer.
The comments are unfortunately somewhat misleading, which pins you use for programming are built into the chip itself. The reason for that comment was that we had to move around some of our inputs to make sure the MCLR pin was free to be wired to a custom programmer. This way, we can wire an unused pin on the PS2 plug to MCLR, and when we want to program the chip, we can apply 12volts to that pin and not worry about any of the voltage flowing to the sensitive digipots.
20-02-2006 02:28
maniac_2040I have a question regarding the code. When you're writing the digital outputs you have this smiget of code:
movlw 0x87 ; Write the first set of digital outputs
btfss datast+2, 2 ; L1
xorlw 0x80
btfss datast+2, 0 ; L2
iorlw 0x40
btfss datast+2, 3 ; R1
iorlw 0x20
btfss datast+2, 1 ; R2
iorlw 0x10
movwf digipots+2
On the first line is there any particular reason you used the hex value of 87 and then xor'd the L1 bit(when pressed) to the final output? Couldn't you just movlw 0x00 and the iorlw 0x80 just as you do all the following? I modified the code like such and wanted to know if it'd work:
;Write the first set of digital outputs
movlw 0x00
btfss PS2_BUTTON_BYTE_1, L1_BUTTON
iorlw 0x80
btfss PS2_BUTTON_BYTE_1, L2_BUTTON
iorlw 0x40
btfss PS2_BUTTON_BYTE_1, R1_BUTTON
iorlw 0x20
btfss PS2_BUTTON_BYTE_1, R2_BUTTON
iorlw 0x10
btfss PS2_BUTTON_BYTE_1, TRIANGLE_BUTTON
iorlw 0x08
btfss PS2_BUTTON_BYTE_1, CIRCLE_BUTTON
iorlw 0x04
btfss PS2_BUTTON_BYTE_1, X_BUTTON
iorlw 0x02
btfss PS2_BUTTON_BYTE_1, SQUARE_BUTTON
iorlw 0x01
movwf digipots+2
Yea I changed all the datast and #'s to some defines....will this code work?
20-02-2006 16:45
jakepNo, your code will not work. The reason is that the analog signals sent out by the digipots and the OI are not sensitive enough to accurately measure a 1 bit difference on an analog port. The max we had good results with was 4 digital outputs on one 8bit analog signal. The reason it is 0x87 is to provide an offset so that if there is a difference of 1 bit, it won't erroneously send button signals.
04-05-2006 19:03
Pavan Dave
Good job guys. I finally found this thread.
I appreciate you guys taking the time to do this and helping other FIRST teams with cool new innovative ways to control their robot.
Kudos
Pavan
08-05-2006 02:47
Barry CraigCan you post the schematics on the PS2 programmer you made? It seems very interesting and I would like to use that too, if it is alright with you.
08-05-2006 17:41
Not2B
|
Originally Posted by Barry Craig
Can you post the schematics on the PS2 programmer you made? It seems very interesting and I would like to use that too, if it is alright with you.
|
09-05-2006 18:12
d0nkYeah, i'm the one who told Not2B about that programmer. I bought it last august when i wanted to mess around with PIC's, and found it very easy to use. Use it in conjunction with the ICProg software (free, supports the programmer, which is known as a "JDM" programmer). Sparkfun also has tutorials on getting started with the programmer, and PIC's in general. If the programmer supports the IC, but doesn't have a "slot" for it (the 14/16 pin chips dont fit on the programmer), you can use the built in ICSP header, and jumper to the pic (usually in a breadboard, if programming in this manner).
16-05-2006 23:07
Barry Craig|
Originally Posted by d0nk
Yeah, i'm the one who told Not2B about that programmer. I bought it last august when i wanted to mess around with PIC's, and found it very easy to use. Use it in conjunction with the ICProg software (free, supports the programmer, which is known as a "JDM" programmer). Sparkfun also has tutorials on getting started with the programmer, and PIC's in general. If the programmer supports the IC, but doesn't have a "slot" for it (the 14/16 pin chips dont fit on the programmer), you can use the built in ICSP header, and jumper to the pic (usually in a breadboard, if programming in this manner).
|
20-11-2006 14:09
Ryan OHi,
I recently read your white papers, and I have an idea. However, to make it work, I need to shift out all the data coming from the controller in a way to register when buttons are pressed, ect, like you did to get some of them. I think that if this is possible you could wire all the x, y and buttons to one or more ports to utilize the full potential of the controller. Any help would be greatly appreciated.
Thanks,
Ryan O
Team 350 Porgrammer/Electrical
20-11-2006 15:13
6600gt|
Originally Posted by Manual <R78> All equipment connected to the Joystick Ports of the IFI Operator Interface must be powered solely through the power available through the port. External power sources of any type are not permitted on any equipment connected to the Joystick Ports. Portable computing devices may not be connected to Joystick input ports on the Operator Interface. Power-passive devices (e.g. joysticks that draw their power solely through the IFI Operator Interface joystick port) are permitted. |
20-11-2006 21:18
jakepThe design we made was used legally in two regionals and nationals last year, so it doesn't really count as a computer device.
Also, to all teams wanting to make one of these for this years competition, we, the creators of the design, must advise you about an issue we had with it. We had some power regulation issues, which cause the thing to occasionally drop connection during competitions (works fine when the OI is powered from an AC adapter, but not always in competitions when all OIs are off of one power supply). We have some ideas about updating the design to fix this problem, like adding a capacitor to help prevent short lived power drops. We don't have a solution yet, but we will probably be updating the white paper when we do. Please proceed at your own risk when building these, at least until we get a fix available. (It should be a simple solution, not requiring new boards to be made if you already did)