Hallo, ich möchte einen Schrittmotor ganz simpel ansteuern. Um mir einmal etwas richtig darunter vorstellen zu können. Und zwar möchte ich zu nachfolgenden Code anstatt des delays eine Funktion erstellen zb. motorspeed... Um die Geschwindigkeit zu regeln, dazu brauche ich die Startfrequenz und die Maximale Schrittfrequenz. Aber ich habe keine Ahnung wie ich dies umsetzen soll bzw. darauf komme. Denn ich kann mir einfach nichts daruter vorstellen. soweit ich das verstanden habe hängt die Gechwindigkeit von der Geschwindigkeit der Schritt-sequence ab. Und wie ich im Forum Avr- tutorial hier gelesen habe ist das, mit delay zu lösen, der schlechteste fall. Die Frequenz soll wie zb. eine Ladekurve ansteigen? Wie könnte jetzt für nachfolgenden Code eine Lösung aussehen. Im Bild oben eine kleine Übersicht. Ich versorge den Motor momentan mit +5V hier Datenblatt Motor.: [[http://www.raspberrypi-spy.co.uk/wp-content/uploads/2012/07/Stepper-Motor-28BJY-48-Datasheet.pdf]] Datenblatt Treiber.: [[http://www.ti.com/lit/ds/symlink/uln2003a.pdf]] Code.:
1 | *SchrittFrequenz.c |
2 | *
|
3 | * Created: 26.01.2017 09:04:19 |
4 | * Author: USER |
5 | */
|
6 | |
7 | #define F_CPU 1000000UL
|
8 | #include <util/delay.h> |
9 | #include <avr/io.h> |
10 | |
11 | // MOTORPINS HIGH
|
12 | #define motorpin1_HIGH (PORTD |= (1<<PD0)) // ORANGE IN1
|
13 | #define motorpin2_HIGH (PORTD |= (1<<PD1)) // GELB IN2
|
14 | #define motorpin3_HIGH (PORTD |= (1<<PD2)) // VIOLETT IN3
|
15 | #define motorpin4_HIGH (PORTD |= (1<<PD3)) // BLAU IN4
|
16 | |
17 | // MOTORPINS LOW
|
18 | #define motorpin1_LOW (PORTD &= ~(1<<PD0)) // ORANGE IN1
|
19 | #define motorpin2_LOW (PORTD &= ~(1<<PD1)) // GELB IN2
|
20 | #define motorpin3_LOW (PORTD &= ~(1<<PD2)) // VIOLETT IN3
|
21 | #define motorpin4_LOW (PORTD &= ~(1<<PD3)) // BLAU IN4
|
22 | |
23 | // SCHRITTFREQUENZ
|
24 | #define Schrittfrequenz 100
|
25 | |
26 | int main(void) |
27 | { // AUSGÄNGE für MOTORSTEUERUNG |
28 | DDRD |= 0x0F; |
29 | |
30 | // Funktion Sequenz Uhrzeigersinn
|
31 | |
32 | void Rechts (void) |
33 | {
|
34 | //1
|
35 | motorpin1_HIGH; |
36 | motorpin2_LOW; |
37 | motorpin3_LOW; |
38 | motorpin4_LOW; |
39 | _delay_ms(Schrittfrequenz); |
40 | //2
|
41 | motorpin1_HIGH; |
42 | motorpin2_HIGH; |
43 | motorpin3_LOW; |
44 | motorpin4_LOW; |
45 | _delay_ms(Schrittfrequenz); |
46 | //3
|
47 | motorpin1_LOW; |
48 | motorpin2_HIGH; |
49 | motorpin3_LOW; |
50 | motorpin4_LOW; |
51 | _delay_ms(Schrittfrequenz); |
52 | //4
|
53 | motorpin1_LOW; |
54 | motorpin2_HIGH; |
55 | motorpin3_HIGH; |
56 | motorpin4_LOW; |
57 | _delay_ms(Schrittfrequenz); |
58 | //5
|
59 | motorpin1_LOW; |
60 | motorpin2_LOW; |
61 | motorpin3_HIGH; |
62 | motorpin4_LOW; |
63 | _delay_ms(Schrittfrequenz); |
64 | //6
|
65 | motorpin1_LOW; |
66 | motorpin2_LOW; |
67 | motorpin3_HIGH; |
68 | motorpin4_HIGH; |
69 | _delay_ms(Schrittfrequenz); |
70 | //7
|
71 | motorpin1_LOW; |
72 | motorpin2_LOW; |
73 | motorpin3_LOW; |
74 | motorpin4_HIGH; |
75 | _delay_ms(Schrittfrequenz); |
76 | //8
|
77 | motorpin1_HIGH; |
78 | motorpin2_LOW; |
79 | motorpin3_LOW; |
80 | motorpin4_HIGH; |
81 | _delay_ms(Schrittfrequenz); |
82 | |
83 | }
|
84 | |
85 | // MOTORSTOP
|
86 | void motorstop(void) |
87 | {
|
88 | motorpin1_LOW; |
89 | motorpin2_LOW; |
90 | motorpin3_LOW; |
91 | motorpin4_LOW; |
92 | }
|
93 | |
94 | while(1) |
95 | {
|
96 | //TODO:: Please write your application code
|
97 | }
|
98 | }
|
Danke fürs lesen Grüsse Huber