www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik schrittmotor drehzahl ändern


Autor: D. Kirschner (kirsche)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi leute,

habe ein prob.

ich will bei meinem stepper die drehzahl ändern in x-0,05 schritten.

ich fange mit 0,75ms an (es geht wenn man ein bisschen mithilft xD)
#include  <avr\io.h>
#include   <util\delay.h>

#define x 0.75    // [ms] fuer Vollschritt

int main (void)

{
    DDRD = 0xFF;
  
  DDRB = 0x00;
  PORTB = 0x01;

  do 
  {  

//=============================== Vollschritt

    PORTD = 0x1A;
    _delay_ms(x);
    
    PORTD = 0x16;
    _delay_ms(x);

    PORTD = 0x15;
    _delay_ms(x);
    
    PORTD = 0x19;
    _delay_ms(x);
  
  
}while(1);
        
}

wie macht man das mit den taster der an PORTB liegt?

habs mal mit
if(!(PORTB&0x01)

x - 0.05
aber es geht nicht =(

bitte um hilfe

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D. Kirschner schrieb:
> x - 0.05

klar. Nach dem auflösen des Defines ist das ein

0.75 -0.05;

x ist keine Speicherstelle, kann also zur LAuzeit nicht verändert 
werden!
:-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber Achtung:
Du kannst _delay_ms nicht mit einer Variablen benutzen.
Daher musst du ein Hilfskonstrukt bemühen: Eine Funktion, die _delay_ms 
mit einem konstanten Wert entsprechend oft aufruft, bis du auf der 
vorgegebenen Zeit bist.

Und noch was: Gleitkommazahlen willst du da nicht wirklich benutzen.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D. Kirschner schrieb:
> wie macht man das mit den taster der an PORTB liegt?

Was für Taster denn? Sollen wir die Verschaltung erschnüffeln? Der Satz 
ist falsch und nicht eindeutig.

Es heißt entweder

Wie macht man das mit den Tastern die an PORTB liegen?
                                ^ ^^^              ^^
oder

Wie macht man das mit dem Taster der an PORTB liegt?
                      ^^^

Für eine Variante musst du dich schon entscheiden. Es ist doch nicht so 
schwer einen deutschen Satz zu bilden ...

Wieviele Taster denn? Pullup oder Pulldown?

Alles triviale Grundlagen - Tutorial machen:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Wenn ich nicht Auto fahren kann, dann nehme ich doch auch nicht an der 
Ralley Paris-Dakar teil ... gleiches gilt für Mikrcontroller und sag 
jetzt nicht, dass du das Tutorial schon gemacht hast - dann könntest du 
das nämlich.

Man darf fertigen Code auch nur dann benutzen wenn man ihn verstanden 
hat - was du offensichtlich an einigen Stellen (define & delay, ...) 
nicht getan hast.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke eher, dass erst mal anstelle des Tutorials ein C-Buch 
angebrachter wäre, wenn schon das Konzept von Variablen Schwierigkeiten 
macht.

Autor: D. Kirschner (kirsche)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, prog. noch nicht lange.

wie macht man das? mit einem Hilfskonstrukt...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einer Funktion!
Bzw einer Schleife in dieser Funktion, die zb
   _delay_us( 10 );
enstprechend oft wiederholt, so dass sich in Summe eine bestimmte 
variable Verzögerung ergibt.

Sieht so aus, als ob ich (wieder mal) mit dem Hinweis, dass die 
grundlegenden Dinge alle in Büchern stehen, goldrichtig liege.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D. Kirschner schrieb:
> wie macht man das? mit einem Hilfskonstrukt...

wie macht man was?

Es tut mir leid, du kannst dich nicht mal so artikulieren, dass wir 
wissen was gemeint ist. Stellst tausend Fragen auf einmal deren Antwort 
du nicht verstehen kannst weil dir sämtliche Grundlagen fehlen. Mein 
Ratschlag: C-Tutorial oder C-Buch. Das Galileo open book ist keine 
schlechte Wahl:
http://openbook.galileocomputing.de/c_von_a_bis_z/

Autor: D. Kirschner (kirsche)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich habe mein ziel zu hoch gesteckt...

ich habe das AVR-GCC-Tutorial noch nicht ganz durchgelesen aber ich 
versuche nebenbei eigene "projekte" zu machen damit ich die sachen ein 
wenig kompinieren kann und zum üben...

aber dann bleibe ich daweil noch bei den LEDs und so damit kenne ich 
mich inzwischen ein wenig aus

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>aber dann bleibe ich daweil noch bei den LEDs und so damit kenne ich
>mich inzwischen ein wenig aus

Nur mal als Tip: Zum Steuern eines Schrittmotors ist ein Timer im 
CTC-Mode wesentlich besser geeignet als irgendwelche Delays. Die 
Schritte legst du in einem Array ab und von dort liest du bei bei jedem 
Compare-Interrupt den nächsten Wert aus.
Das ist mehr als 'Hausaufgabe' gedacht, bevor du wieder mit einem 
Schrittmotor weitermachst. Kann man auch mit Leds auprobieren 
(16-Bit-Timer mit Prescaler 1024, damit man etwas sieht).

@Lehrmann Michael (ubimbo)

Es ist immer nett zu sehen, wenn die Einäugigen sich über die Blinden 
hermachen.

MfG Spess

Autor: D. Kirschner (kirsche)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, danke =)

werde ich machen wenn ich soweit bin und das ganze verstehe...

glg

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:

> Nur mal als Tip: Zum Steuern eines Schrittmotors ist ein Timer im
> CTC-Mode wesentlich besser geeignet als irgendwelche Delays.

Alles richtig

> Die
> Schritte legst du in einem Array ab und von dort liest du bei bei jedem
> Compare-Interrupt den nächsten Wert aus.
> Das ist mehr als 'Hausaufgabe' gedacht, bevor du wieder mit einem
> Schrittmotor weitermachst. Kann man auch mit Leds auprobieren
> (16-Bit-Timer mit Prescaler 1024, damit man etwas sieht).

Spess, du überforderst ihn!

Offenbar hat er bisher weder for-Schleifen noch Variablen noch 
Funktionen entdeckt und du willst ihm einen Interrupt und Arrays 
einreden?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Spess, du überforderst ihn!

Nein. Ich habe danach geschrieben:

'Das ist mehr als 'Hausaufgabe' gedacht, bevor du wieder mit einem
Schrittmotor weitermachst.'

Ich denke, das er deine Hinweise bezüglich C verstanden hat. Und wenn er 
das so machen will, wie ich das vorgeschlagen habe, muss er in Punkto C 
einiges zulegen. Mehr hatte ich eigentlich nicht nicht beabsichtigt.

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.