forked from misan/grbl-servo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use the PIN D11 to driver the servo. Use the commands M03 Sxxx (xxx between 0 and 255) to rotate the servo between 0-180. The command M05 turn the servo to zero degrees. you can change the pulse duration in the file spindle_control.c: #define RC_SERVO_SHORT 15 // Timer ticks for 0.6ms pulse duration (9 for 0.6ms) #define RC_SERVO_LONG 32 // Timer ticks for 2.5 ms pulse duration (39 for 2.5ms) //#define RC_SERVO_INVERT 1 // Uncomment to invert servo direction If you want to have the servo working from 0 --> 180 degrees change RC_SERVO_SHORT and put 9, RC_SERVO_LONG and put 39 If ypu want invert the servo mouvement uncomment the line above. Signed-off-by: robottini <[email protected]>
- Loading branch information
0 parents
commit 62c79f4
Showing
51 changed files
with
8,520 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/* | ||
coolant_control.c - coolant control methods | ||
Part of Grbl | ||
Copyright (c) 2012-2015 Sungeun K. Jeon | ||
Grbl is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
Grbl is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with Grbl. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include "grbl.h" | ||
|
||
|
||
void coolant_init() | ||
{ | ||
COOLANT_FLOOD_DDR |= (1 << COOLANT_FLOOD_BIT); | ||
#ifdef ENABLE_M7 | ||
COOLANT_MIST_DDR |= (1 << COOLANT_MIST_BIT); | ||
#endif | ||
coolant_stop(); | ||
} | ||
|
||
|
||
void coolant_stop() | ||
{ | ||
COOLANT_FLOOD_PORT &= ~(1 << COOLANT_FLOOD_BIT); | ||
#ifdef ENABLE_M7 | ||
COOLANT_MIST_PORT &= ~(1 << COOLANT_MIST_BIT); | ||
#endif | ||
} | ||
|
||
|
||
void coolant_set_state(uint8_t mode) | ||
{ | ||
if (mode == COOLANT_FLOOD_ENABLE) { | ||
COOLANT_FLOOD_PORT |= (1 << COOLANT_FLOOD_BIT); | ||
|
||
#ifdef ENABLE_M7 | ||
} else if (mode == COOLANT_MIST_ENABLE) { | ||
COOLANT_MIST_PORT |= (1 << COOLANT_MIST_BIT); | ||
#endif | ||
|
||
} else { | ||
coolant_stop(); | ||
} | ||
} | ||
|
||
|
||
void coolant_run(uint8_t mode) | ||
{ | ||
if (sys.state == STATE_CHECK_MODE) { return; } | ||
protocol_buffer_synchronize(); // Ensure coolant turns on when specified in program. | ||
coolant_set_state(mode); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/* | ||
coolant_control.h - spindle control methods | ||
Part of Grbl | ||
Copyright (c) 2012-2015 Sungeun K. Jeon | ||
Grbl is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
Grbl is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with Grbl. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#ifndef coolant_control_h | ||
#define coolant_control_h | ||
|
||
|
||
void coolant_init(); | ||
void coolant_stop(); | ||
void coolant_set_state(uint8_t mode); | ||
void coolant_run(uint8_t mode); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/* | ||
cpu_map.h - CPU and pin mapping configuration file | ||
Part of Grbl | ||
Copyright (c) 2012-2015 Sungeun K. Jeon | ||
Grbl is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
Grbl is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with Grbl. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
/* The cpu_map.h files serve as a central pin mapping selection file for different processor | ||
types, i.e. AVR 328p or AVR Mega 2560. Each processor has its own pin mapping file. | ||
(i.e. cpu_map_atmega328p.h) Grbl officially supports the Arduino Uno, but the | ||
other supplied pin mappings are supplied by users, so your results may vary. */ | ||
|
||
// NOTE: With new processors, only add the define name and filename to use. | ||
|
||
#ifndef cpu_map_h | ||
#define cpu_map_h | ||
|
||
|
||
#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno) Officially supported by Grbl. | ||
#include "cpu_map/cpu_map_atmega328p.h" | ||
#endif | ||
|
||
#ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560) Working @EliteEng | ||
#include "cpu_map/cpu_map_atmega2560.h" | ||
#endif | ||
|
||
/* | ||
#ifdef CPU_MAP_CUSTOM_PROC | ||
// For a custom pin map or different processor, copy and edit one of the available cpu | ||
// map files and modify it to your needs. Make sure the defined name is also changed in | ||
// the config.h file. | ||
#endif | ||
*/ | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
/* | ||
cpu_map_atmega2560.h - CPU and pin mapping configuration file | ||
Part of Grbl | ||
Copyright (c) 2012-2015 Sungeun K. Jeon | ||
Grbl is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
Grbl is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with Grbl. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
/* This cpu_map file serves as a central pin mapping settings file for AVR Mega 2560 */ | ||
|
||
|
||
#ifdef GRBL_PLATFORM | ||
#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM | ||
#endif | ||
|
||
|
||
#define GRBL_PLATFORM "Atmega2560" | ||
|
||
// Serial port pins | ||
#define SERIAL_RX USART0_RX_vect | ||
#define SERIAL_UDRE USART0_UDRE_vect | ||
|
||
// Increase Buffers to make use of extra SRAM | ||
//#define RX_BUFFER_SIZE 256 | ||
//#define TX_BUFFER_SIZE 128 | ||
//#define BLOCK_BUFFER_SIZE 36 | ||
//#define LINE_BUFFER_SIZE 100 | ||
|
||
// Define step pulse output pins. NOTE: All step bit pins must be on the same port. | ||
#define STEP_DDR DDRA | ||
#define STEP_PORT PORTA | ||
#define STEP_PIN PINA | ||
#define X_STEP_BIT 2 // MEGA2560 Digital Pin 24 | ||
#define Y_STEP_BIT 3 // MEGA2560 Digital Pin 25 | ||
#define Z_STEP_BIT 4 // MEGA2560 Digital Pin 26 | ||
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits | ||
|
||
// Define step direction output pins. NOTE: All direction pins must be on the same port. | ||
#define DIRECTION_DDR DDRC | ||
#define DIRECTION_PORT PORTC | ||
#define DIRECTION_PIN PINC | ||
#define X_DIRECTION_BIT 7 // MEGA2560 Digital Pin 30 | ||
#define Y_DIRECTION_BIT 6 // MEGA2560 Digital Pin 31 | ||
#define Z_DIRECTION_BIT 5 // MEGA2560 Digital Pin 32 | ||
#define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits | ||
|
||
// Define stepper driver enable/disable output pin. | ||
#define STEPPERS_DISABLE_DDR DDRB | ||
#define STEPPERS_DISABLE_PORT PORTB | ||
#define STEPPERS_DISABLE_BIT 7 // MEGA2560 Digital Pin 13 | ||
#define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT) | ||
|
||
// Define homing/hard limit switch input pins and limit interrupt vectors. | ||
// NOTE: All limit bit pins must be on the same port | ||
#define LIMIT_DDR DDRB | ||
#define LIMIT_PORT PORTB | ||
#define LIMIT_PIN PINB | ||
#define X_LIMIT_BIT 4 // MEGA2560 Digital Pin 10 | ||
#define Y_LIMIT_BIT 5 // MEGA2560 Digital Pin 11 | ||
#define Z_LIMIT_BIT 6 // MEGA2560 Digital Pin 12 | ||
#define LIMIT_INT PCIE0 // Pin change interrupt enable pin | ||
#define LIMIT_INT_vect PCINT0_vect | ||
#define LIMIT_PCMSK PCMSK0 // Pin change interrupt register | ||
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // All limit bits | ||
|
||
// Define spindle enable and spindle direction output pins. | ||
#define SPINDLE_ENABLE_DDR DDRH | ||
#define SPINDLE_ENABLE_PORT PORTH | ||
#define SPINDLE_ENABLE_BIT 3 // MEGA2560 Digital Pin 6 | ||
#define SPINDLE_DIRECTION_DDR DDRE | ||
#define SPINDLE_DIRECTION_PORT PORTE | ||
#define SPINDLE_DIRECTION_BIT 3 // MEGA2560 Digital Pin 5 | ||
|
||
// Define flood and mist coolant enable output pins. | ||
// NOTE: Uno analog pins 4 and 5 are reserved for an i2c interface, and may be installed at | ||
// a later date if flash and memory space allows. | ||
#define COOLANT_FLOOD_DDR DDRH | ||
#define COOLANT_FLOOD_PORT PORTH | ||
#define COOLANT_FLOOD_BIT 5 // MEGA2560 Digital Pin 8 | ||
#ifdef ENABLE_M7 // Mist coolant disabled by default. See config.h to enable/disable. | ||
#define COOLANT_MIST_DDR DDRH | ||
#define COOLANT_MIST_PORT PORTH | ||
#define COOLANT_MIST_BIT 6 // MEGA2560 Digital Pin 9 | ||
#endif | ||
|
||
// Define user-control CONTROLs (cycle start, reset, feed hold) input pins. | ||
// NOTE: All CONTROLs pins must be on the same port and not on a port with other input pins (limits). | ||
#define CONTROL_DDR DDRK | ||
#define CONTROL_PIN PINK | ||
#define CONTROL_PORT PORTK | ||
#define RESET_BIT 0 // MEGA2560 Analog Pin 8 | ||
#define FEED_HOLD_BIT 1 // MEGA2560 Analog Pin 9 | ||
#define CYCLE_START_BIT 2 // MEGA2560 Analog Pin 10 | ||
#define SAFETY_DOOR_BIT 3 // MEGA2560 Analog Pin 11 | ||
#define CONTROL_INT PCIE2 // Pin change interrupt enable pin | ||
#define CONTROL_INT_vect PCINT2_vect | ||
#define CONTROL_PCMSK PCMSK2 // Pin change interrupt register | ||
#define CONTROL_MASK ((1<<RESET_BIT)|(1<<FEED_HOLD_BIT)|(1<<CYCLE_START_BIT)|(1<<SAFETY_DOOR_BIT)) | ||
|
||
// Define probe switch input pin. | ||
#define PROBE_DDR DDRK | ||
#define PROBE_PIN PINK | ||
#define PROBE_PORT PORTK | ||
#define PROBE_BIT 7 // MEGA2560 Analog Pin 15 | ||
#define PROBE_MASK (1<<PROBE_BIT) | ||
|
||
// Start of PWM & Stepper Enabled Spindle | ||
#ifdef VARIABLE_SPINDLE | ||
// Advanced Configuration Below You should not need to touch these variables | ||
// Set Timer up to use TIMER4B which is attached to Digital Pin 7 | ||
#define PWM_MAX_VALUE 65535.0 | ||
#define TCCRA_REGISTER TCCR4A | ||
#define TCCRB_REGISTER TCCR4B | ||
#define OCR_REGISTER OCR4B | ||
|
||
#define COMB_BIT COM4B1 | ||
#define WAVE0_REGISTER WGM40 | ||
#define WAVE1_REGISTER WGM41 | ||
#define WAVE2_REGISTER WGM42 | ||
#define WAVE3_REGISTER WGM43 | ||
|
||
#define SPINDLE_PWM_DDR DDRH | ||
#define SPINDLE_PWM_PORT PORTH | ||
#define SPINDLE_PWM_BIT 4 // MEGA2560 Digital Pin 97 | ||
#endif // End of VARIABLE_SPINDLE |
Oops, something went wrong.