- Fri Dec 10, 2004 7:23 pm
#2415
Though I'd share 
This very prelim design is somewhat similar to what I see you doing with your KidBot system

This is a low power, low range bidirection system.
The Laipac provides a bidirection connection to a user's controller (PC, or my eventual handheld R/C control box). I plan to eventually integrate the Nordic chip and a power booster directly onto the PCB eventually. It's currently planned to run on SPI, but a synchronous USART will probably replace it (and the RS232 interface) and free up the MSSP for serial memory or other serial components (I2C possibly).
The 18F458 has plenty of horsepower to do most of the stuff I want. The motor controller ECCP module lets me either integrate a bidirectional motor controller onboard in PWM hardware (say, for an R/C car) or drive two single direction burshed motors (Twin engine airplane). The standard CCP is still available for other uses (digital motor speed feedback, another motor controller, etc). The free analog block gives me up to 8 analog sensors, or with lots of differential sensor amps and a ±5V switching power supply, a full 6DOF IMU interface. That may be too much computation time, however. Port B can be dedicated to R/C servo driving, although I have 2 of the lines set up for a CAN bus. The remaining I/O may be useful for hardware switches, more R/C servos, etc.
The CAN bus is the expansion line. 1Mb/s and tough enough for automotive work sounds good for me. I'm thinking it'd be good for other CANoPIC (CAN on PIC) based modules, such as a dsPIC brushless controller, another PIC based servo board, a sensor board, autonomous planning board, etc. Enough bandwidth to pass stuff along, even critical stuff like motor and servo controls.
My original plans was to have fairly dedicated boards (motor board, sensor board, communications board, etc), then I realized how wasteful of hardware that might be (still working on this one), so I'm trying to integrate at least enough to get a basic R/C system up and running. I was reading about how 72MHz systems often get glitches, and I though this typ of design might bypass a lot of that, using CAN to send commands to outboard servos instead of PPM. The 18F458 was chosen as it's readily available, has lots of onboard options, and is supported by IC-Prog so it's not limited to MPLAB or ICD2 users.
Now, I'm planning on using either the 2.4GHz link or a CAN based bootloader to allow for remote programming (possibly CAN only), and probably on the fly software fine tuning and configuration. For instance, being able to program a configuration where certain ports are used for a 1Hz strobe trigger instead of R/C, or using the analog block for R/C signals instead of sensors, etc. Also servo control or fine tuning might work too.
I've also been considering using a PIC and modifying a standard servo to turn it into a serial servo instead of a PPM (servo modified for 360 degree rotation, PIC getting in serial commands and using the pot and analog to determine position and speed, basically a low cost way to make your own digital servo), but that's another project. As is building little R/C cars with power amps and running a Nordic based mesh network across the flying field to provide a distributed transmission system to a flying R/C aircraft based on this design.
[Edit]
Reviewing the 458's data sheet, I'll probably end up losing the standard PWM to use it as a timer for interrupt driven R/C servo drivers. I'm also considering more seriously a move of the Laipac to the USART. Hmmm... or I could move to an RS-485 based network and claim back the CAN bus... decisions decisions.

This very prelim design is somewhat similar to what I see you doing with your KidBot system

This is a low power, low range bidirection system.
The Laipac provides a bidirection connection to a user's controller (PC, or my eventual handheld R/C control box). I plan to eventually integrate the Nordic chip and a power booster directly onto the PCB eventually. It's currently planned to run on SPI, but a synchronous USART will probably replace it (and the RS232 interface) and free up the MSSP for serial memory or other serial components (I2C possibly).
The 18F458 has plenty of horsepower to do most of the stuff I want. The motor controller ECCP module lets me either integrate a bidirectional motor controller onboard in PWM hardware (say, for an R/C car) or drive two single direction burshed motors (Twin engine airplane). The standard CCP is still available for other uses (digital motor speed feedback, another motor controller, etc). The free analog block gives me up to 8 analog sensors, or with lots of differential sensor amps and a ±5V switching power supply, a full 6DOF IMU interface. That may be too much computation time, however. Port B can be dedicated to R/C servo driving, although I have 2 of the lines set up for a CAN bus. The remaining I/O may be useful for hardware switches, more R/C servos, etc.
The CAN bus is the expansion line. 1Mb/s and tough enough for automotive work sounds good for me. I'm thinking it'd be good for other CANoPIC (CAN on PIC) based modules, such as a dsPIC brushless controller, another PIC based servo board, a sensor board, autonomous planning board, etc. Enough bandwidth to pass stuff along, even critical stuff like motor and servo controls.
My original plans was to have fairly dedicated boards (motor board, sensor board, communications board, etc), then I realized how wasteful of hardware that might be (still working on this one), so I'm trying to integrate at least enough to get a basic R/C system up and running. I was reading about how 72MHz systems often get glitches, and I though this typ of design might bypass a lot of that, using CAN to send commands to outboard servos instead of PPM. The 18F458 was chosen as it's readily available, has lots of onboard options, and is supported by IC-Prog so it's not limited to MPLAB or ICD2 users.
Now, I'm planning on using either the 2.4GHz link or a CAN based bootloader to allow for remote programming (possibly CAN only), and probably on the fly software fine tuning and configuration. For instance, being able to program a configuration where certain ports are used for a 1Hz strobe trigger instead of R/C, or using the analog block for R/C signals instead of sensors, etc. Also servo control or fine tuning might work too.
I've also been considering using a PIC and modifying a standard servo to turn it into a serial servo instead of a PPM (servo modified for 360 degree rotation, PIC getting in serial commands and using the pot and analog to determine position and speed, basically a low cost way to make your own digital servo), but that's another project. As is building little R/C cars with power amps and running a Nordic based mesh network across the flying field to provide a distributed transmission system to a flying R/C aircraft based on this design.
[Edit]
Reviewing the 458's data sheet, I'll probably end up losing the standard PWM to use it as a timer for interrupt driven R/C servo drivers. I'm also considering more seriously a move of the Laipac to the USART. Hmmm... or I could move to an RS-485 based network and claim back the CAN bus... decisions decisions.