Skip to main content
Topic: PICShift (Read 4226 times) previous topic - next topic


Here is a board with the 50x31 Sick of Beige case.

This board uses a 6-pin PIC (PIC10F322) to generate a pulse of an exact length from the rising edge of a button.  This is going on The Ohio State University's formula car (, and will actuate our pneumatic shifters.  Originally we used a monostable 555 circuit to generate the pulse, but we wanted something we could program different times into rather than adjusting a potentiometer.  Also, since this is going on a formula car with a lot of vibrations, we try and avoid potentiometers when we can.

Here are some more pics of the board:

(Those are the MOSFETs we use to switch power for the pistons on the back)

(5V section of the board to the left of the divide, 12V section to the right)

(Schematic of the board.  Pretty simple stuff, except using the ICSP header and 4 IO can be a bit challenging on a 6 pin PIC.  I also had to be sure no one could mess up and send erratic signals to the shifters, potentially damaging the system.  Notice that DAT and CLK can't be connected while the MOSFETs are connected)

This was my first project involving polygons, PIC, Sick of Beige, and Eagle (although I have used NI multisim).  So all and all this was a really interesting learning experience.

Big shout out to Ian for the advice/support!  Also, this being my first PIC project, this site was incredibly helpful, so a big thank you to all you forum people as well!  Finally, although we will be switching to Seeed, Laen has been an awesome PCB service.  So thanks, Laen!

Re: PICShift

Reply #1
Awsome, love that you've already encased it. Nice board design as well.

P.S. don't miss-understand this as a critique. Perhaps it would have been better to keep the 555 and use a DIP8/12/16 switch (depending on the resolution you want) through a resistor network for control. This would not have to be programed, but only flipping of switches, removing the POT problem, but keeping the 555 simplicity.
best regards FIlip.

Re: PICShift

Reply #2
Thanks, dude!  And I never thought of using DIP switches, that would totally take care of the vibration problem.  However, there are a few reasons why we went with the PIC that I didn't mention in the original post.  Partly because we wanted to have some special features on the board (such as not letting an upshift and downshift command interfere), not letting shift commands happen faster than the engine can handle, and v2 will have an extra IO to take in RPM data from the ECU so we can play around with a pseudo-automatic transmission.  Really, I'm diggin the PIC because of our ability to update the board with simple firmware patches.  Also, after reading this site for about a month I just couldn't wait to do something with a PIC, so there's that.

Also, I welcome any critiques, I'm looking to improve my design skills and this is probably the best place to get advice from pro hackers!

Re: PICShift

Reply #3
Awsome, BTW will you releast the source code for the auto shiffer when and if you implement it.. It sounds insanely cool
best regards FIlip.

Re: PICShift

Reply #4
Our ECU controls the ignition during the shift.  We tap the switching pin of the paddle input of PICShift to send in the raw rising edges of the paddles to the ECU, and in v2 we will have dedicated pins for that so we don't have to have two wires in one spot.

As for the code, it was my first time coding a PIC, so I only had some bits of code from the forums to go off of, so it's not great.  I have an unnecessary config header and c file, and a pretty inconsistent coding style.  Since then, I've done a couple of PIC projects, so I know have a more developed style, and a better understanding of header files.  At the moment, the only special feature we have is a cooldown (a fail safe to avoid the shifter switching too many times too fast.  It will lockout the board until reset), and allowing the driver to upshift while the downshift paddle is still held after the command is executed, and vice versa.  Anywho, excuse the sloppy coding style, and this is just the first pass at PICShift, so not all the special features are implemented yet.