- ATmega1280 MCU with 128K FLASH, 8K SRAM and 4K EEPROM.
- Input Voltage: 7-30V
- Arduino compatible.
- Drive up to 48 servos.
- USB interface and ISP socket.
- Built in 3A, 5V switch mode power supply.
- 70 I/O pins with male and female headers.
- 16 10-bit analog inputs.
- 15 8-bit PWM outputs.
- 6 external interrupt pins.
- 4 serial communication ports.
This programmable controller from Dagu Hi-Tech is ideal for applications requiring the use of multiple servos such as humanoids, hexapods and serpents. The board has been used in the Dagu ChopSticks Spider Robot.
Using ATmega1280 CPU this controller is fully compatible with the Arduino Mega(1280), includes a 3A switch mode power supply and is capable of driving up to 48 micro servos directly. All of the 70 I/O pins are terminated as both a female header and a servo compatible 3 pin male header.
In the image shown, alternate functions of pins are labeled in blue. The female header, and the male pin closest to it, are the signal pins. The center male pin is +5V and the pin closest to the outer edge of the board is GND.
The Spider controller has been designed to be 100% compatible with the Arduino Mega and comes with the Arduino boot loader installed. The boot loader allows programs written in the Arduino IDE to be uploaded via the USB interface.
Experienced users may choose to use WinAVR or AVR studio to program their controller directly via the ISP socket. The bootloader can be removed which will free up an additional 4K of memory.
The Spider Controller has 4 serial ports and 1 I²C interface. Serial interface is used by USB. Serial ports 1,2 and 3 are available for use with devices such as LCD’s, Xbee, BlueTooth, WiFi modules and even other processors.
The I²C interface (SDA pin 20, SCL pin 21) allows the controller to communicate with devices such as external memory, real time clock (RTC), DC motor controllers. For the I²C interface to function properly 10K pullup resistors have been included.
All 70 of the I/O pins can be used for simple digital inputs or outputs. By default, all pins except digital pin 13 have their mode set to input. When a pin is in input mode it is in a high impedance state (effectively open circuit). Digital pin 13 is set to output by the boot loader and has an LED attached. Although D13 can be used as an input the LED may interfere. Note: Analog pins A0 – A9 are digital pins D54 – D63.
Writing a value of 1 to a digital pin while it is configured as an output will connect that pin to Vcc(+5V) while a value of 0 will connect that pin to ground. Each pin is capable of sinking or sourcing up to 40mA maximum but care must be taken to limit the total current to 200mA. To drive large numbers of LEDs or other devices the output pins should be buffered.
Writing a alue of 1 to a digital pin while it is set as an input will enable the internal 20K pullup resistor between that pin and Vcc while writing a value of 0 will disable the pullup resistor.
Pins A0 to A15 are by default analog inputs. Each analog input has 10bit resolution and can measure the voltage on its pin. Input voltage should not exceed the analog reference voltage and is measured using the analogRead() command. The reference voltage is +5V by default and can be changed using the analogReference() command.
The Spider controller is capable of generating 8 bit resolution pulse width modulated outputs on digital pins D2 – D13 and D44 – D45. By adding a simple RC filter to a PWM output a true analog output can be generated. PWM outputs are generated using the analogWrite() command. As the internal timers of the processor are used to generate these outputs they may be disabled by other commands using the same timer.
The board has 6 interrupt pins which allow functions to be called only when an external event occurs. These pins are useful for monitoring devices such as encoders. The interrupts and their pins are:
Interrupt 0 – D2
Interrupt 1 – D1
Interrupt 2 – D21
Interrupt 3 – D20
Interrupt 4 – D19
Interrupt 5 – D18
Using EEPROM Memory
The board’s Atmega1280 includes 4K of EEPROM memory that can be used to store information while the power is off.
All 70 I/O pins have a servo compatible 3 pin male header. The pin closest to the outer edge of the PCB is GND, the center pin is +5V and the inner most pin is the signal. This pin arrangement is also useful for powering sensors. Most miniature and standard servos that require between 4.8V and 6V will work directly from the board. High-powered servos requiring 6V or more should be powered via an external power source or directly from a battery. The board can drive up to 48 servos simultaneously using the Servo library.
The Servo command uses a timer for each 12 servos used starting with Timer 5. As these timers are also used for commands like PWM, plan the pin assignments to avoid conflicts.
1 to 12 servos use timer 5 (disabling PWM on pins 44,45 and 46).
13 to 24 servos use timers 1&5 (disabling PWM on pins 11,12,44,45 and 46).
25 to 36 servos use timers 1,4&5 (disabling PWM on pins 6,7,8,11,12,44,45 and 46).
37 to 48 servos use timers 1,3,4&5 (disabling PWM on pins 2,3,5,6,7,8,11,12,44,45 and 46).
Servos can be assigned to any digital pin from D0 – D53. Analog pins A0 – A9 (D54 – D63) can also be used if required.
How to use the I²C interface [Link]
How to use Serial interface [Link]
Interrupt library [Link]
EEPROM library [Link]
Servo library [Link]
Tutorial & Sample code for driving 48 servos [Link]
Arduino IDE [Link]
AVR Studio 6 [Link]
Possible Application Areas
Did you create a project using this product? Leave details/links below!