Kurzvorstellung Privatprojekt - Ansteuerung Schrittmotor

OP #7576901
Lesenswert?

Moin µc's,

Eine Einsteigerfrage mit Vorstellung um Euch und mich kennenzulernen.

Über einen zwei-kanalig nutzbaren Operationsverstärker wird PUL und DIR einer Schrittmotor-Steuerung verschaltet und angesteuert.

Bild anbei

Nun versuche ich mittels folgendem Quellcode ein Umschalten an PUL zu realisieren.

Leider verfährt der Schrittmotor noch nicht - jemand Ideen?

1
int main(void)
2
{
3

4
RCC->AHB1ENR |= 0xFC; /* enable GPIOA clock */
5

6
GPIOC->MODER |= 0x55555555; /* set pin to output mode */
7

8
GPIOA->MODER |= 0x55555555; /* set pin to output mode */
9
while(1) {
10
GPIOC->ODR |= 0xFFFF;
11
GPIOA->ODR |= 0xFFFF;
12
delayMs(500);
13
GPIOC->ODR &= ~0xFFFF;
14
GPIOA->ODR &= ~0xFFFF;
15
delayMs(500);
16
}
17
}

Grüße TIMBO

Beitrag #7576906 wurde von einem Moderator gelöscht.
#7576937
Lesenswert?

wozu soll der OPAMP gut sein? Willst du damit die Pegel der STM32 Ausgänge erhöhen?

Ich kenne deinen Schrittmotortreiber nicht, ich denke aber das du erst die Richtung mittels High oder Low vorgeben musst und dann einen Impuls mit einer Mindeslänge X auf den PUL Eingang gibst (ggf. Pullups oder -downs nutzen damit man einen stabilen Ruhepegel hat.

Hast du geprüft ob du die beide Leitungen unabhängig ansteuern kannst und das es auch korrekt am Schrittmotortreiber ankommt.

#7576950
Lesenswert?

Ein wenig mit den Pins wackeln ist noch kein "Projekt" - es sein denn, dein "Projekt" wäre es, elementare Grundlagen zu erlernen.

Das kann man auch einfacher haben. (Am PC oder mit einer einfacheren MCU)

Bevor du dich an ARM-MCUs heran wagst, solltest du besser erstmal Programmieren lernen. Daß du das -noch?- nicht kannst, erkennt man u.A. an den fehlenden Einrückungen in deinem Code-Schnipsel.

Dein Delay-basierender Ansatz fliegt dir sowieso spätestens dann um die Ohren, sobald dein Programm etwas mehr tun soll, als einen Stepper-Motor zum Rotieren zu bringen.

Also, was soll das ganze überhaupt werden?

Gast #7576982
Lesenswert?

Timbo2023 schrieb:

1
RCC->AHB1ENR |= 0xFC; /* enable GPIOA clock */
2
GPIOC->MODER |= 0x55555555; /* set pin to output mode */
3
GPIOA->MODER |= 0x55555555; /* set pin to output mode */

Bitte benutze keine "magischen" Zahlen. Ich kann so gar nicht erkennen, ob der Quelltext das tut, was in den Kommentaren daneben steht. Die CMSIS Header Dateien enthalten für jedes Bit ein entsprechendes Symbol, das man benutzen kann und sollte.

Beim Beschrieben der MODER Register wolltest du mit Sicherheit "=" anstelle von "|=" verwenden.

Falls die Kommentare richtig sind, hast du vergessen GPIOC einzuschalten.

#7577025
Lesenswert?

Timbo2023 schrieb:

Über einen zwei-kanalig nutzbaren Operationsverstärker wird PUL und DIR einer Schrittmotor-Steuerung verschaltet und angesteuert.

Warum glaubst du das zu brauchen, wo der Rest der Welt ohne solche zusätzlichen Bauteile auskommt.

Bei denen zudem unklar ist, ob sie richtig verdrahtet sind.

Um ENAble könnte man sich auch kümmern, sprich einfach mal das Datenblatt des Schrittmototrreibers lesen oder abkupfern von Leuten, deren Aufbau funktioniert.

Und dann bleibt noch das Programm...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren