Enkla multi-mode 4wd Rover JR-001 (14 / 15 steg)
Steg 14: Kod Detaljer - Motor rampning
Jag sade tidigt en av frågorna med en 4wd robot är motor dragkraft. Detta är mot intuitivt när du först tänker på det. 4WD bilar och lastbilar har mycket bättre dragkraft och power distribution än 2wd fordon. Detta är sant, men i robotens fall det finns en motor på varje hjul och de är inte helt matchade i fart och kraft som de slår på. Det är ungefär som golv en bil i sandiga eller våta förhållanden och sladda ut. Detta orsakar bot att sladda lite och inte få dragkraft på vissa ytor. Detta märkas mycket vända på en 4 hjul vs 2 hjul chassi, där dragkraft och makt är förlorat mycket.
För att hjälpa till med detta (men inte helt eliminera det), har jag en funktion som anropar funktionen varje motor rörelse. Denna funktion "ramper" upp motor(s) till hastigheten som gör en klyfta av hastigheten av 4 och looping 4 gånger att lägga till kvoten av uppdelningen av 4 i varje steg i slingan. Detta möjliggör en långsamt bygga upp av den inställda hastigheten och ger bättre dragkraft, spårning (some-vad) och minskar slitage-och-tår på motorerna som redskap.
void ramp_it_up (uint8_t hastighet, uint8_t lf_dir, uint8_t rt_dir)
{
uint8_t ramp_val = 0, step_val = 0;
step_val = abs (hastighet / 4);
för (uint8_t jag = 0; jag < 4; i ++) {
ramp_val += step_val;
motor_left.setSpeed (ramp_val);
motor_right.setSpeed (ramp_val);
motor_left.Run (lf_dir| UTGÅVA);
motor_right.Run (rt_dir| UTGÅVA);
fördröjning (25).
}
}
Med denna metod, kan du göra samma sak i omvänt för ramp ner till stopp. Rampning hjälper också på andra redskap motorer, inte bara de som har denna bot. Jag rekommenderar starkt att använda detta på större bots också.