ASURO Library  2.80
Funktionen
motor.c-Dateireferenz

Funktionen zur Steuerung der Motoren. Mehr ...

#include "asuro.h"
Include-Abhängigkeitsdiagramm für motor.c:

gehe zum Quellcode dieser Datei

Funktionen

void SetMotorPower (int8_t leftpwm, int8_t rightpwm)
 Steuert die Motorgeschwindigkeit und Drehrichtung der Motoren.
 

Ausführliche Beschreibung

Funktionen zur Steuerung der Motoren.

Die Motorsteuerung erfolgt grundsaetzlich ueber die auf der Asuro-Platine
aufgebauten H-Bruecken. Dies ist eine Schaltung, ueber die ein Strom in
verschiedene Richtungen durch die Motoren geleitet werden kann.
Zur Geschwindigkeitssteuerung werden die beiden im Prozessor vorhandenen
PWM-Kanaele genutzt, deren Ausgangssignale die Staerke des Stromflusses in
den H-Bruecken beinflusst.
Die Initialisierung der PWM-Funktionalitaet erfolgt in der Funktion Init().

Siehe auch
Defines fuer die Auswahl der ADC-Kanaele in asuro.h
FWD, RWD, BREAK, FREE
Version
sto1 - 07.01.2006 - stochri
+++ SetMotorPower()
first implementation
V— - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
V002 - 05.02.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
V003 - 18.02.2007 - m.a.r.v.i.n
Datei gesplitted in motor_low.c und motor.c

Definiert in Datei motor.c.

Dokumentation der Funktionen

void SetMotorPower ( int8_t  leftpwm,
int8_t  rightpwm 
)

Steuert die Motorgeschwindigkeit und Drehrichtung der Motoren.

Parameter
[in]leftpwmlinker Motor (-rückwaerts, + vorwaerts) (Wertebereich -128...127)
[in]rightpwmrechter Motor (-rückwaerts, + vorwaerts) (Wertebereich -128...127)
Hinweis:
Da der Wertebereich dieser Funktion nur von -128 bis +127 reicht, aber die
urspruengliche Funktion MotorSpeed() einen Wertebereich bis +255 hat, werden
die hier uebergebene Parameter als Absolutwert mit 2 multipliziert
weitergegeben.
Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
// Setzt die Geschwindigkeit fuer den linken Motor auf 60 (vorwaerts),
// und für den rechten Motor auf -60 (rueckwaerts)
// Asuro soll auf der Stelle drehen.
SetMotorPower (60, -600);

Definiert in Zeile 89 der Datei motor.c.

{
unsigned char left, right;
if (leftpwm < 0) // Ein negativer Wert fuehrt ...
{
left = RWD; // ... zu einer Rueckwaertsfahrt, ...
leftpwm = -leftpwm; // aber immer positiv PWM-Wert
}
else
left = FWD; // ... sonst nach vorne, ...
if (leftpwm == 0)
left = BREAK; // ... oder bei 0 zum Bremsen.
if (rightpwm < 0)
{
right = RWD;
rightpwm = -rightpwm;
}
else
right = FWD;
if (rightpwm == 0)
right = BREAK;
MotorDir (left, right); // Drehrichtung setzen
/*
Die Geschwindigkeitsparameter mit 2 multiplizieren, da der Absolutwert
der Parameter dieser Funktion nur genau die Haelfte von der MotorSpeed()-
Funktion betraegt.
*/
MotorSpeed (leftpwm * 2, rightpwm * 2);
}