-         

Ergebnis 1 bis 4 von 4

Thema: Motoransteuerung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.04.2006
    Alter
    33
    Beiträge
    6

    Motoransteuerung

    Anzeige

    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:
    Code:
    /* 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

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Du machst D.0 - D.3 als OUT, nicht D.4 - D.7. Vielleicht ist's das schon...
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.04.2006
    Alter
    33
    Beiträge
    6
    ne, leider klappt es immernoch nicht! aber danke für die info

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    ö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 ...
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken dd.jpg  
    Ich kann mir keine Signatur leisten - bin selbständig!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •