MuIn dsNav is a versatile board based on Microchip dsPIC33FJ motor controller family. Those DSCs, thanks their's unique features, are capable to drive two motors in a closed loop control through aid of two high resolution encoders and current sensing.
990.011 MuIN dsNAV can be used as a development board for new projects or as a full working navigation board with odometry, dead reckoning and field mapping, using the software available both as source code or HEX file.
Muin dsNav is based on the open source project by Guido Ottaviani as an evolution of original award winning, dsPIC30F based, board: http://www.circuitcellar.com/microchip2007/winners/DE/MT2155.html
Its DSP features, together with 40 MIPS speed, allows you to concentrate in a single chip all the software a robot needs to navigate autonomously in an unknown environment. Using a single chip simplifies a lot the development of an autonomous mobile platform system, because all the low level procedures can talk each other directly without the need of fast, synchronous communication lines and protocols.
The enhanced PWM interfaces and a double QEI (Quadrature Encoder Interface) are perfect for a differential steering mobile platform.
Example of differential steering mobile platform:
The available, open source, software controls both motors with a fast PID to closely maintain desired speed. A sophisticated dead reckoning performed via odometry, controls the system in different ways to drive at a fixed speed, in a fixed direction or toward a specific coordinates. Thanks to the large amount of memory, a big portion of the field can be mapped performing an efficient SLAM (Simultaneous Location And Mapping).
Each set of operations can be driven via an internal scheduler or remotely through the use of a GUI (available as open source as well) and optional Xbee modules. The same GUI can be used to remotely monitor every parameters on the robot: speed, actual position on a XY reference system and motor current (if provided by the power driver). All the parameters of the platform (wheels diameter, encoder resolution, PID K parameters, etc.) can be set remotely through the GUI.
In optimal condition dsNav board, allows an accuracy better than 1% on positioning, optimizable to 0.1% after an accurate calibration. All the calibration procedures are available as a part of the whole project.
For an optimal speed control is adviced the use of high resolution encoders mounted directly on motor shaft such as quadrature optical encoders with a 300CPR revolution (Easy Roller 300CPR adviced - software by default will use this encoder). Motor control must be performed with H-Bridges in LAP mode (cannot be used S/M mode).
- DSC: dsPic33FJ128MC802, 16 bit Digital Signal Controller with DSP core
- Power supply: 6-12V
- Current consuption: about 250 mA (typical, encoders included)
- Encoders power supply:3.3V or 5V (selectable)
- Encoders input:TTL and CMOS 3.3V compatible
- Current sensing amplification: 10x or 1x (selectable)
- TTL and CMOS compatible inputs
- Encoder inputs compatible with open drain type
- Amplified current sensing input
- Double TTL serial interface, one of them RS485 compatible
- XBee ready
- 2 LEDs to monitor Xbee operations
- 2 LEDs available for system operation monitoring
- On board voltage regulators
- ICSP connector
- Open Source Code for firmware
- Open Source Code for Graphical Interface available on Mac OSX, Linux and Windows operating systems
There are two H-Bridge connectors marked as "PWM 1" and "PWM 2":
P1: PWM +
P2: PWM -
S1: optional current feedback from H-Bridge
S2: optional H-Bridge temperature feedback or H-Bridge Enable
S3: not used (reserved for future uses)
can be used to limit motor current in case the H-Bridge is near the maximum tolerance. This feedback must be an analog value between 0 and 3.3V and must have a linear variation in fuction of current consumption by H-Bridge. The input of feedback current can be amplificated by 10x factor using the dedicate jumpers:
Jumper closed (default condition) -> Gain : 1x
Jumper open -> Gain: 10x
is designed for use with LM35 temperature sensor. Software performs itself the temperature conversion in °C. The LM35 analog output is linear and feeds 10mV for 1°C. You can use other similar temperature sensor but the output voltage must not exceed 3Volts or MCU will be damaged.
A low-pass filter can be enabled on temperature plugs by closing the two dedicate jumpers on bottom side of the board (by default they're closed already):
Pinout reflects the same used by US Digital encoders:
- : common ground
A: encoder A channel
+: power supply for encoders
Encoder power supply selection
Encoder power supply is selectable by a jumper on bottom side:
By closing 1 and 2, encoders power supply will be 5V, by closing 2 and 3 power supply for encoders will be 3.3V volts. By default nothing is selected.
Are used for 2 individual, TTL-level serial communication. On UART connector, a power supply pin is available, the voltage level of this pin is selectable by using jumpers on the bottom side for each UART plug:
UART1 is shared with RS485, if RS485 is enabled, UART1 cannot be used.
UART2 is shared with XBee module, if an XBee module is installed, UART2 cannot be used.
Is used for in-circuit serial programming by use of compatible programmers. Since the board comes with a preloaded bootloader you don't need a programmer. Programmer is needed only if you want to change bootloader or load firware without the use of a bootloader.
PGC (clock) and PGD (data) pins used for ICSP can be isolated from the rest of circuitry by using two jumpers marked as "PGD" and "PGC" near PWM connectors. You must leave them opened if you want to use ICSP feature:
Is used for RS485 communication, two connectors are available. RS485 TX and RS485 RX can be enabled individually by closing the dedicate jumpers on the bottom (default open):
Termination and BIAS can be enabled by two jumpers on the bottom side (default open):
Use a power supply from 6 to 12Vdc
There are 5 led on board:
L1: its function can be user defined in software
L2: same as L1
ASSOC: used by XBee module if installed. Indicates XBee is ready
RSSI: used by XBee module if installed. Flashes when signal are received