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

Thema: RN-Stepp 297 C-Beispiel programmiert

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.10.2007
    Beiträge
    58

    RN-Stepp 297 C-Beispiel programmiert

    Anzeige

    E-Bike
    Hallo!
    Ich habe mir RN-Stepp297 zugelegt. Da ich meinen µC in C Programmiere, musste ich die Ansteuerung für RN-Stepp auch mit C schreiben. Aber da ich kein Beispielprogramm dafür gefunden habe, habe ich mir gedacht, ich bastel mal eines Zusammen. Hier ist das ergebnis:
    (Dateien als Anhang zum Dowload)

    Code:
    /*
    ###################################################
    Profanter Stefan - 12.09.07 - RN-Stepp.c
    ---------------------------------------------------
    Schrittmotoransteuerung mit RN-Control und
    Ansteuerungsboard RN-Stepp297
    RN-Stepp297 ist die bekannte Standardschaltung
    mit L297 und L298 (Bausatz)
    
     Achtung:
     Als Grundlage für dieses Demo wurde der Bascom-Code von Frank
     und einige Teile sowie die Header-Datei des RN-Control Beispiels von Georg Richter verwendet
     (zu finden auf Robotikhardware-CD oder auf http://www.Roboternetz.de)
     
     Diese Demo ist mit WinAVR Compiler 20070525 getestet
     
     RN-Stepp297 wird wie folgt angeschlossen
     
    	Bezeichnung		RN-Stepp	->		RN-Control
    	----------------------------------------------
    	U+				JP1 (1)		->		5V+
    	U-				JP1 (2)		->		GND
    	Enable			JP1 (3)		->		PA0
    	Richtung		JP1 (4)		->		PA1
    	Takt			JP1 (5)		->		PA2
    	
     
    
    Aufgabe:
     Dieses Testprogramm zeigt wie man RN-Stepp297
     über Takt- und Richtungsleitung ansteuert
     Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
     Taste 1: Schaltet Motorstrom ein (Stellung wird gehalten)
     Taste 2: Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
     Taste 3: Bewegt Motor schneller genau 400 Halbschritte
     Taste 4: Ändert die Drehrichtung
     Taste 5: Schaltet Motor aus
    
    Autor: Profanter Stefan
    Weitere Beispiele und Beschreibung der Hardware
    in der Anleitung zu RN-Stepp297
    Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
    oder www.robotikhardware.de
    Weitere Beispiele sind im Roboternetz gerne willkommen!
    ##############################################################
    */
    
    
    //  -------------- RN-Control übliche _____________________
    
    #include <stdlib.h> 
    #include <avr/io.h>
    #include <rncontrol.h>
    
    // Schaltet den Motostrom ein
    void stepperEnable(void)
    {
    	setportaon(0);	//PA0 auf 1 setzten
    }
    
    // Schaltet den Motostrom aus
    void stepperDisable(void)
    {
    	setportaoff(0);	//PA0 auf 0 setzten
    }
    
    // Ändert die Drehrichtung
    void changeDirection(void)
    {
    	if (bit_is_set (PINA,PA1))	//überprüfung, ob PA1 gesetzt
    		setportaoff(1);	//PA1 auf 0 setzten
    	else
    		setportaon(1);	//PA1 auf 1 setzten
    	waitms(1000);	//Um ungewolltes ändern zu verhindern, da längeres Drücken der Taste die Funktion immer erneut aufruft
    }
    
    // Bewegt den Motor um steps Schritte mit einer Wartezeit zwischen den Schritten von waitTime Millisekunden
    void stepping(uint16_t steps, uint16_t waitTime){
    	for (uint16_t i=0; i<steps; i++)
    	{
    		setportaoff(2);	//PA2 auf 0 setzten
    		waitms(1);
    		setportaon(2);	//PA2 auf 1 setzten
    		waitms(waitTime);
    	}
    }
    
    
    /*### Hauptschleife ###*/
    int main(void)
    {
    
    	/*###Initialisierungsphase###*/
    	
    	//Pins bzw. Ports als Ein-/Ausgänge konfigurieren
    	DDRA |= 0x07;	//00000111 -> PORTA.0 bis PORTA.2 als Ausgänge
    	DDRC |= 0xFF;	//11111111 -> Ports für Led
    
    	//Initialisierungen
    	setportcon(0); setportcon(1); setportcon(2); setportcon(3); setportcon(4); setportcon(5); //LEDs ausschalten
    	setportdoff(7);	//Speaker aus
    
    	
    	/*###Hauptschleife###*/
    	
    
    	// Endlosschleife zum Abfragen der Tasten
    	while(1)
    	{
    		switch(button())
    		{
    			case 1: stepperEnable(); break;		//Motorstrom einschalten
    			case 2: stepping(400, 30); break;		//Bewegt Motor langsam genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
    			case 3: stepping(400, 1); break;		//Bewegt Motor schneller 400 Halbschritte
    			case 4: changeDirection(); break;		//Ändert Drehrichtung
    			case 5: stepperDisable(); break;	//Motorstrom ausschalten
    			default: break;
    		}
    	}
    	
    	
    	return 0;
    }
    Habt ihr Verbesserungsvorschläge?

    Danke!
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

12V Akku bauen