Overview: A Joystick controls two motors which drive two wheels on a 'cart' for directional control.? The uC is a a PIC16F737.... I want the program to be written in PICBasicPro. [I would prefer to have the program use the PWM functionality of the uC, and not 'bit-bang' the whole thing. See TechNote item "d", below.]
This is a Phased project; please bid on Phase1 at this time.
Please take a look at all Phases. Don't consider this project unless you
a) have access to a 16F737 and a breadboard to test with,
b) are familiar PBP,? and
c) are interested to pursuing the project to completion.
I'll provide a schematic and clear information as the project progresses. [The power side of this is all pretty basic: the only major complication is the use of relays to control motor direction...See item "c)" below].
TechNote: Code 'modulariy' will be important, as, ultimately,
a) the incoming signal will be provided by a JoyStick,
b) the ramping from one speed to another needs to be both 'smooth' and be variable,?
c) the output side is complicated by the use of relays to control motor direction (e.g. it's not an H-bridge design),
hence, having a nice 'clean' segregation of functionality in the program will help as we progress.
d) I'm advising the use of the HPWM instruction, though dynamically changing the duty cycle (as the JS is moved) ? involves some complications...
Too,? ample comments (in the program) will be required.
[This bid is ONLY for PHASE 1 of this project. As soon as a 'coder' is chosen, and Phase1 ccmpleted, we'll move to subsequent Phases.]
Phase1) Provide PBP code to support simplist Pot-Wiper -to- PWM'd LEDs
A single potentiometer provides two analog signals to the uC. Two PWM outputs drive two LEDs.
[Sample code exists for this sort of thing on the Internet, but I want it pre-tested for the 16F737 with my I/O configuration, so we can start the project 'in sync' with each other.]
Phase2) Two code 'components' are added: (1) A JoyStick provides two analog inputs (and a voltage ref) to three inputs of the uC.
[I'll provide a pdf of the JS]. (2) Simple ramping (e.g. Single 'slope' value) limits the rate-of-change of the motor(s) speed. [On my end, I'll start with LEDs, but also start testing with motors.]
For example: at power-up, the JS is 'centered'. As the JS is pushed forward, both motors ramp up. If the JS is pushed forward very fast, the ramp-up is limited. If, while traveling at some high speed, the JS is released (and allowed to 'spring-back' to it's? normal 'at rest' position in the middle) the motors speed is ramped down to the stopped condition.
Phase3) The Motor Direction Control relays are added. Two additional (uC)? outputs control two relays, which, when actuated will cause current flow through (one or both of) the motors to be reversed. Clearly this has to be done with the motors at rest or very nearly at rest. Hence, a) we'll introduce a small delay between direction reversals, b) may have to consider other ramp-rates when approaching zero speed, to ensure that the motor has been fully ramped down before changing the state of the relay.