Thread: PIC Advice For A Newbe
Good Day All.
As the title says I am looking for advice with regards to programming PIC's.
To date the only kind of PIC's I have worked with are called PicAxe.
Due to the design and build in software thease PIC chips are to slow for what I am after.
I am looking at building my own PIC based stepper motor driver board.
I am looking to use one PIC per axis total of 3 axis on my board.
Each axis will have the following inputs and outputs.
Mode Select 1.
Mode Select 2.
So I am going to need a PIC chip with at least 5 inputs and 8/9 outputs.
I am only looking at driving the stepper motors as unipolar.
The mode select switches will be for Full, Wave, and Half Mode stepping, I don't want to go down the micro stepper route yet.
I will be using this driver board with the Mach3 software.
Here are the two related posted on the PicAxe forum.
[ame="http://www.picaxeforum.co.uk/showthread.php?t=11593"]3 Axis Stepper and Spindle Control Circuit Diagrams[/ame].
[ame="http://www.picaxeforum.co.uk/showthread.php?t=12324"]1-5us pulse capture[/ame].
I have made a little box to put the driver board into.
Thanks for your time.
Last edited by Mad Professor; 07-06-2009 at 08:14 AM.
I can't really assist you with your PIC selection (though you've not really any specific h/w needs...eg PWM, USARTS etc ....so I'd imagine most of the PIC 18 range would suffice), but just wanted to chime in as another recent PIC novice/convert.
I'm using my PIC to control just one stepper motor - this stepper is used as a way of traversing enamelled wire onto a coil winding motor. Basically, the main DC motor has an encoder disk. The PIC counts the stripes from this disk & every x stripes (to work out how far it has travelled) it then sends out a pulse to the stepper.
I actually went the simple/lazy way & used a dedicated IC to hadle to stepper interfacing - a UCN5804.
You project sounds really interesting - good luck!
Thanks for your reply.
I did not want a boring front on my control box, yes it is a little over the top.
I was looking at the F16 / F18 range of the PIC's.
As you already said I don't need PWM, ADC, Ect.
I will be buying the PIC's from RS.
I am not going to buy any pic or parts to build the driver boards unto such time that I know I can build the board and program the PIC to do what I want / need, as I could safe the money to buy a prebuilt driver, but it's not liky to find a driver board with all the led and fan control I am looking for.
The picaxe's that I have been using upto now are programed in something that is very close to Basic.
With the picaxe chips you don't need to buy the software or magic programmer.
I have been looking around the internet and I see there are meny languages for the pic, Basic, C, C++, Pascal, Ect.
As the picaxe was based around the Basic language, so a quick google found "MELabs PICBASIC Compiler" but this is a paid software,
PICBASIC Compiler - meLabs £68.94
PICBASIC Pro Compiler - melabs £195.44.
That seems like alot of money to splash out for possibly a one time use.
Love the box and I think I know what you're trying to achieve with the pics, however I think you are over-complicating matters by trying to go that route. I think you may be better having a look at various stepper-drive IC datasheets eg: http://www.robotstorehk.com/5804.pdf these or others may provide the functionality you require already built-in.
As for your progression to Pics your 3 main choices of language would be basic, assembler and 'C'.
MP, (got a name?)
I suggest you get a PICKIT2 and program in PIC assembler (I don't think the PIC is really suited to a HLL) with MPLAB. As to choice of PIC, there are many (too many?) that'll do the job, I suggest you pick one with more I/O and internal resources than you need (you're not buying millions, so the difference in cost between that and one that'll just do the job is pennies).
I know you're re-inventing the wheel, but hey, we all know we could improve on round...
Thanks for the info.
I see on the Microchipdirect web site: PICkit 2 Starter Kit (DV164120) £35.45
Is this the best / cheapest place to buy one from?
I am just watching some PIC Programming videos on YouTube.
07-06-2009 #8Is this the best / cheapest place to buy one from?
I picked up a Pickit2 from Microchip with 16F887 development board in a promo last year for <£10 delivered, so keep your eyes open for promo's
They flog the PK2 programmer on its own for £25 + carriage + VAT.
There are some very simple DIY PC comport programmers if you want to DIY. You can download the software (MPLAB 8.2 etc.) FOC from the Microchip web site.
I think I have stepper driver code for 16 bit pics somewhere, if you want to pinch it.
how long is a piece of string?
I am just installing the MPLAB as I type.
I will keep my eyes open for a promo.
Here you go:
It was designed around a 16C84 to drive a L6219 bipolar driver, but since it uses a step table, all you need to do is change the bits to suit your output.
You'll have to change the CPU type etc. to suit whatever PIC you use.
Ignore / delete the limit switch code.
;**************************************** ; PIC Header ;**************************************** ;(c) 1994 - 2008 W.K.Todd Electronics ; ;DATE:23/08/2008 (initialised 27/09/1998) ;FILE:STEPPER.ASM - L6219 STEPPER DRIVER ;VERSION:1.10 - interrupt driven ; ; Target processor = 16C84 (eeprom PIC) ; Assembler = MPASM ; LIST P=16C84 #INCLUDE P16C84.INC ;EQUATES STPCNT EQU 0x0C ;STEP COUNTER FLAGS EQU 0x0D ;VARIOUS FLAG BITS TIMER EQU 0x0E ;GP TIMER USED TO SLOW LOOP ;interrupt service temps STATUS_TEMP EQU 0X2E W_TEMP EQU 0X2F ;BIT ADDRESSES DEBN EQU 0x00 ;DEBOUNCE FLAG CLKIN EQU 0X00 ;CLK INPUT DIRIN EQU 0x01 ;DIRECTION INPUT XLIM EQU 0x00 ;LIMIT SWITCH INPUTS YLIM EQU 0x01 ; ZLIM EQU 0x02 ; LIMIT EQU 0x03 ;LIMIT OUTPUT (ACTIVE HIGH) BYPSWT EQU 0X04 ;LIMIT BYPASS SWITCH ; ORG 0x000 GOTO START ;RESET VECTOR NOP NOP NOP ;INTERRUPT VECTORS TO HERE ; PUSH MOVWF W_TEMP ; Copy W to TEMP register, SWAPF STATUS, W ; Swap status to be saved into W MOVWF STATUS_TEMP ; Save status to STATUS_TEMP register ; Interrupt Service Routine ;test interrupt type BTFSS INTCON,INTF ;test int0 flag goto POPW bcf INTCON,INTF ;clr flag BTFSC PORTB,DIRIN ;TEST DIRECTION GOTO CLKWIZ ;DO ANTI CLK TURN DECF STPCNT,W ;DECR AND FETCH STEP COUNT ANDLW 0x07 ;MODULO 7 MOVWF STPCNT ;SAVE CALL STPTAB ;GET PHASE VALUES MOVWF PORTB GOTO POPW ;AND FINISH ;DO CLOCKWISE TURN CLKWIZ INCF STPCNT,W ;INCR AND FETCH STEP COUNT ANDLW 0x07 ;MODULO 7 MOVWF STPCNT ;SAVE CALL STPTAB ;GET PHASE VALUES MOVWF PORTB POPW SWAPF STATUS_TEMP, W ; Swap nibbles in STATUS_TEMP register ; and place result into W MOVWF STATUS ; Move W into STATUS register ; (sets bank to original state) SWAPF W_TEMP, F ; Swap nibbles in W_TEMP and place result in W_TEMP SWAPF W_TEMP, W ; Swap nibbles in W_TEMP RETFIE ; ; TABLES ;Bits/function ;7 6 5 4 3 2 1 0 ;Io1 I11 PH1 I12 I02 PH2 DIR STEP STPTAB ADDWF PCL,f ;2/3 current, half step table ; RETLW 0xC8 ;STEP0 ; RETLW 0x88 ;1 ; RETLW 0x9C ;2 ; RETLW 0x8C ;3 ; RETLW 0xEC ;4 ; RETLW 0xAC ;5 ; RETLW 0xB8 ;6 ; RETLW 0xA8 ;7 ;full current, half step table RETLW 0xC0 ;STEP0 RETLW 0x00 ;1 RETLW 0x1C ;2 RETLW 0x04 ;3 RETLW 0xE4 ;4 RETLW 0x24 ;5 RETLW 0x38 ;6 RETLW 0x20 ;7 ; ; START OF PROGRAM ; START BSF STATUS,RP0 ;select bank 1 MOVLW 0x03 ;RB0 +1 TO INPUT MOVWF TRISB MOVLW 0x17 ;RA0,1,2,4 TO INPUT MOVWF TRISA MOVLW 0XCF MOVWF OPTION_REG ;set up interrupt BCF STATUS,RP0 MOVLW 0X90 MOVWF INTCON ;enable int0 CLRF STPCNT CLRF FLAGS ;MAIN LOOP MAINLP ;TEST LIMIT SWITCHES TLBPS BTFSS PORTA,BYPSWT ;TEST LIMIT BYPASS GOTO BYPASS MOVF PORTA,W ;GET LIMIT SWITCHES ANDLW 0x07 BTFSS STATUS,Z BSF PORTA,LIMIT ;SET LIMIT IF X,Y OR ZLIM IS HIGH BTFSC STATUS,Z BYPASS BCF PORTA,LIMIT ;CLEAR LIMIT OUTPUT IF SWITCHES ARE ALL LOW GOTO MAINLP ;LOOP BACK END
NEW MEMBER: Newbe on the siteBy Phillou in forum New Member IntroductionsReplies: 0Last Post: 14-03-2014, 04:54 PM
NEW MEMBER: Newbe in FranceBy dudz in forum New Member IntroductionsReplies: 1Last Post: 17-10-2012, 05:46 PM
NEW MEMBER: NewbeBy THE PHOENIX in forum New Member IntroductionsReplies: 2Last Post: 03-12-2010, 06:20 PM
NEW MEMBER: Hi from newbeBy croy in forum New Member IntroductionsReplies: 2Last Post: 28-01-2010, 08:22 PM
NEW MEMBER: NewbeBy cncezee in forum New Member IntroductionsReplies: 3Last Post: 29-08-2009, 06:40 AM