A low cost alternative to the current Vex offering are the new 16-Bit dsPIC30F and dsPIC33F mixed signal controllers from available from Microchip provide 30 and 40 MIPS of raw performance while still keeping all the PIC peripherals that we are used to with the current Vex controller. It should also include connectors for inter-processing communication via the UART, CAN, I2C and SPI bus for high end Vex robots.
The more powerful embedded PowerPC, TI or Philips 32-Bit ARM processors used in a high end Vex Controller that allows object oriented, multitasking, multiprocessing robot software development using Parallel C, JAVA, C++ or Ada as the embedded language, along with WI-FI, Zigbee and Ethernet networking for ultimate connectivity.
Can the dsPIC33F hardware PWM’s generate an 18.5ms or 20ms period? That would help a lot with these VEX servo’s and motors. The VEX controller with the 18f8520’s does not use the 18f8520 hardware PWM’s because the timer, TMR2, does not support a period of 18ms.
Yes, the dsPIC30F and dsPIC33F MCUs can easily generate those delays using their 16-Bit timers, as an added feature, in the dsPIC30F4011 MCU provides a Quadrature Encoder Interface (QEI) with digital filters to read high resolution optical encoders.
As far as I know the PIC18F8520 can support the 18.5ms and 20ms PWM using one of the available timers depending upon the speed of the MCU crystal or oscillator used (Fs/4). Myke Predko has a book titled “Programming Robot Controllers” available on Amazon that provides an example of controlling two RC servos using an Interrupt Service Routine (ISR) on a slower PIC16F627 using a 4Mhz crystal.
Yes, there are ways to generate 20ms period PWM’s on ports with pics, but it would be nice if the hardware PWM’s in the PIC’s supported this. I did not realize this was not possible until I tried to generate a 20ms period with the hardware PWMS’s on the 18f4550 running at 10MHz. I looked into the VEX controller, and realized they also do not use the hardware PWM’s to drive the motors.
PWM is normally used to control high speed DC and AC motors via an H-Bridge is such as an LMD18200 From National Semiconductor or an Allegro UDN2954W H-Bridge which has a high frequency PWM (nominally 20kHz) input. Vex motors on the other hand are really modified RC servos that use Pulse Coded Modulation (PCM) which depend on the signal width of between 1.0ms and 2.0ms at 18 to 20 ms intervals. This kind of signal generation can be handled via Interrupt Service Routines on PICs using its timers, prescalers and postscalers to divide the frequency from the input crystal or oscillator down to the selected ISR update period. The ISR is called each time the timer overflows.
Another solution is to use a dedicated RC Controller board such as a Parallax serial RC Servo controller that can drive up to 16 Vex motors or servos. The original Scott Edwards MiniSSC II servo can handle 8 servos at 9600 Baud, or the high end Lynxmotion SSC-32 Servo Controller, which can handle up to 32 Vex motors or servos. Unfortunately all these boards requires a master MCU such as another PIC or Stamp BS2 using a serial port at baud rates which the Vex Controller does not currently support.
The mid range or high end controller should be able to work with current Vex Motors, Servos and sensors. If dsPIC30F4011 is used, you will also be able to control DC motors using 10-Bit PWM and be able to accurately read high resolution Optical Encoders using its Quadrature Encoder Interface (QEI) for a very precise tachometer. In addition you will be able to perform Proportional Integral Derivative (PID) control of your Vex robot motors.
As for processing sensor data you get Digital Signal Processing (DSP) using its own-chip MAC, for lightning fast floating point processing needed for autonomous Vex robots. The current Vex controller should still be needed for RC Control of Vex robots.
please someone tell me how to rotate the vex servo in 0, 90, 180 degrees i mean how many ms or Hz i need to rotate in each one and if someone have the circuit to generate each pulse(because i try to controle the servo with integrate systems) pleas send me a e-mail or something like that [email protected] or [email protected]
Personally, I have replaced my vex controller with a homemade Atmel AVR microcontroller based system. I get 20mips performance with an atmega644 and it is able to handle 8 servo/motors along with serial, i2c, and spi comms. I have even been able to decode the data stream from the vex receiver. I am working on making up a set of libs and schematic for this for public release. Adding additional motor/servo control would be a simple thing of a second much smaller microcontroller like an attiny45 that would just be connected via i2c to the main controller.
I find Atmel AVR microcontrollers to be much more powerful than comparable Microchip PIC microcontrollers and somewhat cheaper. They are also easier to work with and have a full free open source development system available for them which works on mac(gcc-avr), linux(gcc-avr), and windows(winavr) platforms. All of these being based on the mainstream gcc compiler. WINAVR is a full toolsuite including compiler, debugger, and programmer software.
Also, you left out a new contender in the 32bit processor field. The AVR32 which was designed to be programmed in C as well as being a fully functional DSP and multimedia controller. With this chip camera input and visual processing as well as audio processing would be a very real possibility. The chip also has a built in java bytecode interpreter in hardware which extends the possibilities even more. The AVR32 is also considerably faster than ARM processors running at the same clock speed.