- SF800 Solar Speicher Tutorial         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 37

Thema: Schrittmotor-Problem..!

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Anzeige

    Powerstation Test
    nee,wieso denn ?
    Die ganze Werte von 0 bis 5 werden durchläuft, oder habe ich gerad
    was übersehen?

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    43
    Beiträge
    186
    Hi,
    ich glaube ihr redet gerade schwer aneinander vorbei.
    Alki scheint aus der C++-Welt zu kommen und da gibt es offensichtlich keine for schleife mehr.
    @ALKI in der for-Schleife in C wird i=0 nur beim ersten betreten ausgeführt, danach werden nur noch der zwiete und dritte Befehl in der Klammer ausgefürt. Also i++ und Kontrolle ob i<6.
    Also die for schleife macht nichts anderes als dein
    Code:
    while(i<6){
    //irgendein Befehl
    i++;
    }
    Mit dem Vorteil das wenn die Schleife mehrmals aufgerufen werden muss der Parameter i immer bei 0 beginnt.
    Ich bin keine Signatur ich mach hier nur sauber

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.12.2006
    Beiträge
    205
    Hallo

    es werden die Werte von 0 bis 5 durchlaufen. Ist ja eine normale For-Schleife. (hab auch eigentlich keinen Fehler in der For-Schleife gefunden).
    Was ich aber nicht verstehe ist deine Abfrage mit dem Parameter direction. So wie das Programm jetzt ist rufst du ja irgendwann diese Funktion auf. z.B. rotate(200); Dann überprüft das Programm ob der Parameter <> 0 ist. Was soll dann überhaupt der Parameter direction?
    Wenn Direction<>0 ist führt der einmal die 6 Schritte aus und das wars. Müssten die nicht eigentlich ständig ausgeführt werden, damit sich der Motor dauerhaft dreht?

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    @zumgwadrad: ahh, thx!!!!! gut zu wissen!

    @RIFMAN: das selbe wie robojunior habe ich aber auch schon gedacht, oder hast du vor der ganzen funktion noch sowas wie ne while(true o.Ä.) schleife?

    willst du den motor einfach dauernd drehen lassen, oder um ne bestimmte anzahl schritte, die du voher eingegeben hast?
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Ich danke euch!
    das ist aber nicht das komplette Programm .Ich werde es posten,wenn ich zu Hause bin.

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Also das ist das Programm:
    Code:
    #define F_CPU 8000000
    
    #include <avr/io.h> 
    #include <stdio.h>
    #include <stdbool.h>
    #include<util/delay.h>
    
    
    
    
    #define T1 0x04
    #define T2 0x08
    #define T3 0x10
    
    
    uint8_t direction;
    uint8_t step[8] = {0xEE, 0xBC, 0xE8, 0xBA, 0xEE, 0xBC, 0xE8, 0xBA};//Halbschritt Steuerung
    uint8_t rev_step[8] = {0xBE, 0xEA, 0xB8, 0xEC, 0xBE, 0xEA, 0xB8, 0xBC};//Halbschritt Steuerung
                     
    
        
    
    
    //***********************************************
    
    void rotate(direction)
    {
       
       int i;
       if(direction)
    	{
              PORTD &=~(0x20);
    	  PORTD &=~(0x40);
    	  PORTD |= 0x80 ;
    	   
    	 for(i=0;i<8;i++)
    	  {	  
    	   _delay_ms(80);
    	   PORTA = step[i];
          };    
    	}
       else 
        {
    	 PORTD &=~(0x80);
    	 PORTD &=~(0x40); 
    	 PORTD |= 0x20;
    	 for(i=0;i<8;i++)
    	  {
    	   _delay_ms(80);
    	   PORTA = rev_step[i]; 
    	  };
    	}
    }	  
    	 
    //************************************************
    
    
    int main()
    {
     uint8_t start;
     uint8_t release1; 
     uint8_t release2; 
     uint8_t release3; 
     
     release1 = 0x01; 
     release2 = 0x01; 
     release3 = 0x01; 
     
     direction = true;
     start = false;
     
    
     DDRA |= 0xFE;//Port A pin 1-7 als Ausgang setzen
     PORTA = 0x00;//pull up's auf low setzen
     DDRD &= ~(0x1c);//Port D; PIN 2, 3 und 4 als Eingang setzen
     //PORTD &= ~(0x1c);//pull up's auf low setzen
     DDRD |= 0xE0;
     
     while(1)
     {
      if((PIND & T1)&&(release1 == 0x01)) //Taster1 gedrückt
      { 
       release1 = 0x00;
       direction = true;
       start= true;
      }
       
     else 
      { 
       if (!(PIND & T1)) 
       { 
         release1 = 0x01;
       } 
      } 
     
     
     if((PIND & T2)&&(release2 == 0x01)) //Taster2 gedrückt
      { 
        release2 = 0x00;
        direction = false;
        start = true;
      }
      else 
      { 
       if (!(PIND & T2)) 
        { 
         
    	 release2 = 0x01;
    	   
        } 
      }
      
     if((PIND & T3)&&(release3 == 0x01))//Taster3 gedückt 
      {
       PORTD |= 0x40;
       PORTD &=~(0x80) ;
       PORTD &=~(0x20);
       release3 = 0x00; 
       PORTA &=~(0x80);
       start = false;
      }
       
     else
      { 
       if (!(PIND & T3)) 
       { 
         release3 = 0x01;
    	 
       } 
      }          
    
     
     if(start == true)
      {
       	
    	rotate(direction);
      }
    
    }	 
    return 0; 
    }
    wie ihr sieht das ganze will ich mit Tastensteuerung machen.

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    ich habe es jetzt mit Halbschritt-modus geschafft,das der Schrittmotor sich einigermaßen sauber dreht, aber was mich ärgert dass er immer noch vibriert,er macht das nicht fliessend, weiss jemand was darüber?

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    bist du dir sicher, dass du den motor richtig angeschlossen hast?

    was hast du denn für einen (anschlussmäßig)? 4 anschlüsse? oder 5?
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    hallo A|KI,
    ich glaube schon, dass ich den Motor richtig angeschlossen habe, sonst hätte er sich kaum drehen können.
    das ist ein 4-Anschluss Schrittmotor.

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    ah, ok, bei denen gehts ja schwer, die falsch anzuschließen. was hat der denn sonst so für daten (schrittwinkel...)?
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress