- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: ATiny2313+L293D+Schrittmotor

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    33
    Beiträge
    1.080
    Blog-Einträge
    1

    ATiny2313+L293D+Schrittmotor

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    Also...

    Ich habe wie oben erwähnt folgende Bauteile:

    ATiny2313 mit diesem Code:

    Code:
    $regfile = "2313def.dat"
    $crystal = 8000000
    $baud = 9600
    
    Config Portb = Output
     Ddrd = &B0001000                                           'Pin PD3 als Ausgang konfigurieren
    Portd = &B11111111                                          'PD0...PD7 auf High setzen
    
      Portd.5 = 0
      Portd.6 = 0
    Main:
    'STEP1
    Waitms 10
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 1
    Portb.3 = 0
    
    'STEP2
    Waitms 10
    Portb.0 = 0
    Portb.1 = 1
    Portb.2 = 1
    Portb.3 = 0
    
    'STEP3
    Waitms 10
    Portb.0 = 0
    Portb.1 = 0
    Portb.2 = 1
    Portb.3 = 1
    
    'STEP4
    Waitms 10
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 1
    Goto Main
    End
    Dann noch den L293D.

    Portb.0 ist am Input 1 vom L293D
    Portb.1 ist am Input 2 vom L293D

    Portb.2 ist am Input 3 vom L293D
    Portb.3 ist am Input 4 vom L293D

    Der Rest vom L293 ist an 5V außer GND natürlich, ist an GND

    Mein Schrittmotor hat 4 Anschlüsse. Also 2 die zwei Spulen ohne Common Ground.

    Ich habe allerdings kein Datenblatt für den Motor (NEOCENE 2T2354272, 5ohm)

    Die 4 Leitungen sind farblich gekennzeichnet:

    Braun/Schwarz = 1. Spule
    Orange/Gelb = 2. Spule

    In dieser Reihenfloge:
    Braun/Schwarz/Orange/Gelb

    Wenn ich es nun wie folgt anschließe:

    Braun an Output1 vom L293D
    Schwarz an Output2 vom L293D

    Orange an Output3 vom L293D
    Gelb an Output4 vom L293D

    Zuckt es nur ständig.

    Außerdem hatte ich gerade ein komisches Phänomen:
    Wenn ich MotorVCC nicht anschließe scheint es sich in nur in eine Richtung zu drehen, aber das nur sehr ruckelig...

    Ich weiss jetzt nicht ob das am Motor, L293 oder so liegt....

    Vielleicht bricht auch einfach die Spannung zusammen...

    Währe super wenn ihr mir helfen könntet...

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    47
    Beiträge
    685
    Moin!
    Ist das nicht der Motor von Pollin? Davon stecken zwei in meinem MiniPanoBot, auf mit einem L293D. Ich kriege es auch nie auf Anhieb hin, die richtigen Bits für die Spulen rauszuschubsen, deswegen baue ich immer eine 'riesige' Verzögerung, so ca. 1 Sekunde, zwischen den Schritten ein, so daß man sieht, was der Motor macht. Dann prokele ich so lange an den Bits für den L293D herum bzw. vertausche die Leitungen am Motor, bis alles so funktioniert, wie ich mir das vorstelle. Meistens nehme ich die Bitreihenfolge aus dem RN-Wissen und tausche solange die Motorleitungen, bis es passt (so viele Möglichkeiten gibt es ja zum Glück nicht). Bei mir laufen die Motoren mit 4x1.2 AAA Akkus wunderbar, zwischen den Schritten muß ich ca 1.5 ms warten, sonst kommen die nicht hinterher.
    MfG
    Volker

    P.S.:Ich hab mir grad Deinen Code angeschaut (als Nicht-Bascom-Programmierer), was hat es denn mit dem Krams für Portd da oben auf sich? Und entspricht das
    Code:
    Config Portb = Output
    einem
    Code:
    Ddrd = &B11111111
    ?(Darauf bin ich letztens hereingefallen......)
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    nein nicht ganz

    Ddrd = &B11111111

    Setzt alle Ports von PORTD auf High.

    Portb = Output konfiguriert PortB als Ausgang


    Das habe ich mir auch gedacht, dass dieser Motor ähnlich ist wie das vom Pollin die Typen bez. stimmt aber nicht zu 100% überein. Vom Aussehen ehr sieht er aber gleich aus.

    HAst du vllt ein Datenblatt?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    47
    Beiträge
    685
    Moin!
    Ein Datenblatt habe ich leider nicht.....
    Bist Du sicher, daß das mit den Befehlen passt? DDRx sind doch eigentlich die Datenrichtungsregister? Hmmmm, außerdem sieht Deine Bitfolge etwas merkwürdig aus?

    1010
    0110
    0011
    1001

    lese ich bei dir, lt. RN-Wissen sollte das aber eher so aussehen für Vollschrittbetrieb:

    1010
    1001
    0101
    0110

    Wie gesagt, bau mal eine 1 Sek Pause zwischen den Schritten ein, mein Motor macht pro Schritt 7,5 Grad, da sieht man, ob er sich in die richtige Richtung dreht. Meine liefen zuerst auch im Vollschrittbetrieb, ich bin dann auf Halbschritt umgestiegen, weil die Motoren dann deutlich mehr Drehmoment bei 5V haben.
    MfG
    Volker
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    OK Danke so werde ich es probieren.

    Die Schrittfolge ist deswegen so komsich weil ich mich an einem anderen Schrittmotr oriantiert habe, und dort stehts eben so im Datenblatt...

    Diser HOWARD Motor auch von Pollin, deer Große schwarze^^

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    47
    Beiträge
    685
    Moin!
    Den Howard hab ich auch Der läuft bei mir mit der selben Bitfolge wie der kleine Motor, ich habe einfach die Leitungen entsprechend angeschlossen.
    Viel Erfolg!
    MfG
    Volker
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    Okay also noch eine Frage:
    ich habe das jetzt so:

    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 1
    Portb.3 = 0

    wie dus gesagt hast

    Wie schließe ich jetzt AVR und L293D an?
    Also welche Ports kommen an welche Input pins?

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    Ich habe auch so einen Schrittmotor mit Braun/Schwarz , Orange/Gelb und einem L293D aber keinen ATtiny2313 sondern ein Atmega88 20PU.
    Hab allerdings in C programmiert und mit zwei Schaltern weis nicht obs Dir hilft aber der Code sieht so aus :
    Code:
    #define  F_CPU   1000000UL 
    #include <util/delay.h> 
    #include <avr/io.h>
    
    #define Time 25
    
    #define STATSLED0_ON  (PORTC |= 1<<PC0)
    #define STATSLED0_OFF (PORTC &= ~(1<<PC0))
    #define STATSLED1_ON  (PORTC |= 1<<PC1)
    #define STATSLED1_OFF (PORTC &= ~(1<<PC1))
    #define STATSLED2_ON  (PORTC |= 1<<PC2)
    #define STATSLED2_OFF (PORTC &= ~(1<<PC2))
    
    #define SWITCH_1 	(PINB & 1<<PB0)
    #define SWITCH_2 	(PINB & 1<<PB1)
    
    // L
    void StepA1(){
    	// Step 1
    	PORTD |= 1<<PD0;
    	PORTD &= ~(1<<PD2);
    	}
    
    void StepA2(){
    	// Step 2
    	PORTD |= 1<<PD2;
    	PORTD &= ~(1<<PD0);
    	}
    
    void StopA(){
    	//stop
    	PORTD &= ~(1<<PD0);
    	PORTD &= ~(1<<PD2);
    	}
    
    
    //R
    void StepB1(){
    	// Step 1
    	PORTD |= 1<<PD4;
    	PORTD &= ~(1<<PD6);
    	}
    
    void StepB2(){
    	// Step 2
    	PORTD |= 1<<PD6;
    	PORTD &= ~(1<<PD4);
    	}
    
    void StopB(){
    	//stop
    	PORTD &= ~(1<<PD4);
    	PORTD &= ~(1<<PD6);
    	}
    
    int main(){
    
    	DDRC = 1<<PC0 | 1<<PC1 | 1<<PC2;	// LED's
    
    	DDRD = 1<<PD0 | 1<<PD2 | 1<<PD4 | 1<<PD6;	// Step1 + Step2;
    
    	DDRB &= ~(1<<PB0 | 1<<PB1);	// SWITCH_1 / SWITCH_2
    
    while(1){
    
    
    	if(! SWITCH_1 && ! SWITCH_2){
    			STATSLED0_ON;
    			STATSLED1_OFF;
    			STATSLED2_OFF;
    			StopA();
    			StopB();
    		}
    
    
    	else if(! SWITCH_1 && SWITCH_2){
    
    			StepA1();
    			_delay_ms(Time);
    			StepA2();
    			_delay_ms(Time);
    			STATSLED0_OFF;
    			STATSLED1_ON;
    			STATSLED2_OFF;
    		}
    
    	else if(SWITCH_1 && ! SWITCH_2){
    
    			StepB1();
    			_delay_ms(Time);
    			StepB2();
    			_delay_ms(Time);
    
    			STATSLED0_OFF;
    			STATSLED1_OFF;
    			STATSLED2_ON;
    
    		}
    
    	}
    }
    Hey ihr da OHM, macht doch WATT ihr VOLT !

    Strom ist machmal dick, damit er nicht aus der Steckdose läuft.

    Bild hier  

Berechtigungen

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

12V Akku bauen