johnny1320
Middle aged Member
- Joined
- May 15, 2013
- Messages
- 149
- Reaction score
- 17
View attachment 108998 View attachment 108999 View attachment 109000 View attachment 109001 Rudy,
I hope the below may give you some ideas or help a little with your power z-axis modifications. I did not see any significant interest in a microcontroller based motor controller based upon my initial post so I did not post intermediate development information. I have put almost a half year into the project and pretty much have a working controller.
I have also included some pictures that may provide some ideas to you and others, and garner constructive comments for my improvement.
I started with an Arduino Mega, but as I added functionality I found the need to move to the more powerful Teensy 3.5 microcontroller. It appeared most of the performance needs were driven by the display requirements.
I have been able to implement the following features
1) Joystick provides for three movement speeds (fast, medium, and slow) up or down.
2) Additional very fine control using a rotary encoder for up and down. I never use the mechanical fine feed on the quill and it stays up and locked unless drilling. No manual crank.
3) I have set the stepper to provide a controllable increment of 0.0001 inches per step (2000 steps per revolution).
4) Two storable memory locations (separate buttons) to allow for quick movement of the head without having the hold the joystick or use the rotary encoder. I use these memory positions to set a high location so when I need to change a tool, just push a button to raise the head, change the tool, then push the second button to lower the head to the approximate location needed. I do not use the stored positions to precisely set the head position. The joystick and rotary encoder along with the DRO are used for final positioning prior to a cut. Each of the store buttons allows for the execution of the move, storing the position, or erasing the position).
5) All the movements use acceleration and deceleration on the stepper motor (necessary to prevent motor stall on startup). To provide for some limited adjustment, the acceleration parameter is adjustable via a parameter menu screen.
6) On initial startup, I make the head go to the top limit so that I can set a “home” position so that the controller has an understanding of where it is when moved. This is relevant to the memory settings.
7) Added an emergency stop button that will halt the head movement when moving to a memory position or homing the head on initial startup.
8) All information is indicated on a 2.8 inch TFT color display. I display whether positions are stored, the head is on a stored position, approximate stored positions and current position from home (indicated to a tenth of an inch).
9) Error messages for limit reached, emergency stop, stepper controller status, and monitoring the field voltage which is used for stepper output signals (step/direction), inductive limit switches, and stepper controller status signal
10) Boring function; this uses two additional storable positions (a.k.a. top of bore and bottom of bore). The head movement speed to the top position is fixed (for retract), however the head speed down (boring) is adjustable between 0.006”/min on the slow side to 12”/min on the fast rate. Boring speed is adjustable using the rotary encoder prior to starting the boring operation. The boring speed may also be adjusted “on the fly” once boring is initiated.
11) PCB mounted buzzer for some audible indication of errors, button pushes, etc. I set it up so it could use a chassis mount Sonalert instead for very noisy environments or when hearing protection is needed.
12) Transit speeds are approximately 31”/min for the memory movements in JOG mode. The joystick high speed moves the head approximately 24”/min.
13) All the pushbuttons are hardware debounced through shift registers so there are no missed or press noise errors.
14) Stepper input and outputs, limit switches, and buzzer are all optically coupled.
15) I use top and bottom limit switches (inductive sensors) to prevent over travel. The controller is jumper selectable to use either the inductor sensors or typical mechanical limit switches.
If you have any questions on any of the above, please ask and I will do my best to answer.
Thanks,
Drew
Enter your email address to join: