PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motoransteuerung



Silverhawk
19.04.2006, 12:50
Ich habe ein 008 Board von Embedit gebaut ( http://www.embedit.de/embedit/usc008/USC008board.pdf).
Mein Problem besteht nun darin, dass ich es testen möchte, bzw. die Motoren mal testen möchte. Und ich bekomme es leider nicht hin. bisher habe ich auf allen 4 Kabeln 9V. (hab ne 9V Blockbatterie an das Board geschlossen).
Hier ist mein C-Quelltext:
/* Standard-Bibliotheken */
#include <avr/io.h>
#include <inttypes.h>

/* Programminterne Definitionen */
#define PORT_motor_ein PORTB // Port der Enable-Anschlüsse
#define PIN_motor_l_ein 2 // Pin des linken Enable-Anschlusses
#define PIN_motor_r_ein 1

#define PORT_motor_dir PORTD // Port der Richtungs-Anschlüsse
#define PIN_motor_l_for 4 // Pin des linken vorwärts-Anschlusses
#define PIN_motor_l_back 5 // evtl Pins anpassen (vertauschen)...
#define PIN_motor_r_for 7
#define PIN_motor_r_back 6

/* Prototypen */
void init (void);



int main (void) {
init ();

PORT_motor_ein |= (1<<PIN_motor_l_ein); // Linken Motor einschalten
PORT_motor_ein |= (1<<PIN_motor_r_ein); // Rechten Motor einschalten

PORT_motor_dir |= (1<<PIN_motor_l_back); // Ausgang für links rückwärts auf Low
PORT_motor_dir |= (1<<PIN_motor_r_back); // Ausgang für rechts rückwärts auf Low
PORT_motor_dir &= ~(1<<PIN_motor_l_for); // Ausgang für links vorwärts auf High
PORT_motor_dir &= ~(1<<PIN_motor_r_for); // Ausgang für rechts vorwärts auf High

do {
} while (1);

return (0);
}

void init (void) {

// 0 = Eingang, 1 = Ausgang
DDRB = 0b00001110; // DDR=Data Direction Register
DDRC = 0b00000000;
DDRD = 0b00001111;

// Alle Eingaenge hochohmig/Alle Ausgänge auf Low
PORTB = 0b00000000;
PORTC = 0x00;
PORTD = 0x00;

return;
}
Hoffe mir kann da jemand weiterhelfen. danke schonmal

SprinterSB
19.04.2006, 15:11
Du machst D.0 - D.3 als OUT, nicht D.4 - D.7. Vielleicht ist's das schon...

Silverhawk
19.04.2006, 18:08
ne, leider klappt es immernoch nicht! aber danke für die info ;)

vajk
19.04.2006, 19:55
öhm .. ich hab mir jetzt mal die Beschreibung angesehen ...

Es reicht ja nicht, daß Du den Motor einfach mal so enabelst, Du mußt ihm auch einen Herzschlag verpassen .. PWM steht für PulsWeitenModulation ... Ich denke, das die PinBezeichnung absichtlich gewählt wurde ....

.... Lies in der Doku oder im Wiki hierzu mal nach, wie das geht ...

(Der sofortige Richtungswechel ist auch nicht so pralle)

Hilfreich könnte auch das Datenblatt des Motortreibers sein ;-)

(Mit Gleichstrommotoren hab ich noch nichts gemacht, zur 297/298-Schrittmotoren-Steuerung könnt ich Dir was schnippseln, hierzu leider nicht .)

VIel Erfolg noch ...