Motorrehrichtung steuern.

Gast #2339342
Lesenswert?

Hallo Leute,

Komme einfach nicht weiter, ich hoffe ihr könnt mir hilfreiche Tipps 
geben.

Meine Schaltung ist im Anhang.

Problem ist: Der Motor dreht sich vlt nur ganz kurz, also er zuckt nur 
ganz kurz und ganz schwach weg.

Den Motor habe ich von der Schule bekommen, ich kenne keine Daten, aber 
einmal haben wir schon mal was mit dem gearbeitet
und was ich weiß benötigt er im Leerlauf 200mA.

Die Funktion ist es die Drehrichtung zu steuern indem ich auf einem Port 
einen Taster betätige ( einen für links einen für rechts).

Wenn ein Taster gedrückt wird so soll am anderen Port auf einem Pin ein 
Signal rauskommen das 5V beträgt und soll so in eine
Richtung drehen.

Wieso dreht sich der Motor aber ganz kurz und ganz schwach, de rührt 
sich nur einen halben mm vom Fleck und dann bleibt er stehen.
Also er macht nicht mal einen Schritt ( ist ein Schrittmotor ).

Die 3,3V an den Tastern sind nur dazu da um ein beim drücken ein HIGH am 
PIN0 oder PIN1 beim Port-C zu intepretieren.

Ich habe mir am Anfang gedacht das der Motor mehr Strom benötigt also 
dass an VS ( Die Motorspannung ) mehr Spannung anliegen soll.

Das stimmt meiner Meinung nach nicht weil, wenn ich zum Beispiel einen 
Input zum Beispiel den Input 2 nicht am Portpin angesteckt habe
sondern der in der Luft hängt sozusagen, läuft der Motor und das mit den 
eigentlichen 5V.

Am Enable PIN wo eigentlich eine PWM sein müsste, habe ich auch von 
einem Portpin am PortB eine reine Gleichspannung von 5V anliegen, der 
Motor soll sich einfach permanent drehen.

Könnt ihr mir da helfen, suche den Fehler schon 2,5h und finde in 
einfach nicht, ich verstehe das einfach nicht :S

Danke im Voraus
Angehängte Dateien:
#2339350
Lesenswert?

> Wieso dreht sich der Motor aber ganz kurz und ganz schwach,
> de rührt sich nur einen halben mm vom Fleck und dann bleibt
> er stehen. Also er macht nicht mal einen Schritt ( ist ein
> Schrittmotor ).

Das klingt für mich nach genau dem was ein Schrittmotor machen würde, 
wenn man einfach eine Spannung an eine Wicklung anschliessen würde: 
Einen Schritt. Und das was du da bescheibst, das klingt ganz genau nach 
einem Schritt. Oder was hast du dir erwartet, was ein Schritt ist?


Aber ich bezweifle ehrlich gesagt, dass du da einen Schrittmotor hast. 
Ein Schrittmotor hat mehr als 2 Anschlüsse.
#2339354
Lesenswert?

Kann es sein, dass du da ganz gewaltig den L298, der ein reiner 
Leistungstreiber (also H-Brücke) ist, mit dem Gespann aus L297 + L298 
verwechselst.
Ein L297 hat die ganze Logik eingebaut, die die einzelnen Spulen eines 
Schrittmotors entsprechend durchschalten, so das der Motor dreht. Der 
L298 sorgt dann für den nötigen Strom.

Hast du keinen L297 dann muss dein Programm die Aufgabe dieses Bausteins 
übernehmen und die einzelnen Spulen eines Schrittmotors (über den 
Leistungstreiber) durchschalten. Mit dem Setzen eines Ausgansgpins auf 1 
ist es da nicht getan.


D.h. falls das was du da hast, tatsächlich ein Schrittmotor ist. Wenn 
der nur 2 Anschlüsse hat, dann ist es keiner.
Gast #2339356
Lesenswert?

Es liegt ja Spannung an an dem Motor, also beim drücken von den Tastern 
da kommt dann an einem Input 0V und am anderen +5V. Der zuckt aber nur 
ganz kurz.

Wenn ich den Motor so am Netzgerät hänge ( wo ich die selbe Spannung 
anlege ) dann dreht er sich ganz normal.

:S
Gast #2339368
Lesenswert?

Mein Code:

#define ALLOCATE_EXTERN
#include "ezusb.h"
#include "ezregs.h"

void main (void)
{   int a=0x00000000;

  PORTCCFG=0x00;
  PORTBCFG=0x00;
  OEB=0x07;
  OEC=0x00;
  while(1)
 {

if(PINSC&0x01)
  {

     OUTB=0x05;

  }

else
  {

     OUTB=0x04;
  }
if(PINSC&0x02)
  {
     OUTB=0x06;
  }

else
  {
   OUTB=0x04;
  }


 }
}
#2339378
Lesenswert?

Und mach dein erstes Programm nicht so 'kompliziert'.

Der Taster ist schon wieder eine Fehlerquelle, die keiner beim Testen 
braucht.

Erstes Testprogramm
1
#define ALLOCATE_EXTERN
2
#include "ezusb.h"
3
#include "ezregs.h"
4

5
void main (void)
6
{
7
  PORTCCFG = 0x00;
8
  PORTBCFG = 0x00;
9
  OEB = 0x07;
10
  OEC = 0x00;
11

12
  OUTB = 0x05;    // ENABLE und drehen
13

14
  while( 1 )
15
  {
16
  }
17
}

dann hat man auch beide Hände zum messen frei und muss nicht ständig 
einen Taster drücken
Gast #2339395
Lesenswert?

Das ist es ja, alles stimmt, beim drücken den ersten Tasters liegt an 
Input1 eine Spannung ( 5V) und an Input2 gar nichts. Umgekehrt genau so.

An enable liegt 5V konstant, auch wenn ich keinen Taster drücke liegen 
da 5V an. So hab ichs im Programm geschrieben.

PS: Danke dir für die schnellen Antworten.

MFG
Gast #2339503
Lesenswert?

Laut diesem Datenblatt: 
http://www.datasheetcatalog.org/datasheet/SGSThomsonMicroelectronics/mXyzuxsr.pdf

Ich habe aber eine Idee wieso es sich zuuu schwach oder gar nicht 
bewegt.

Habe an den OUTPUTPINS vom Motortreiber gemessen während ein taster 
betätigt wird.  OUTPUT2 = 0,50V und OUTPUT1= 1,40V.

Ich vermute das sich der Motor mit folgender Spannung dreht: 1,40V - 
0,50V = 0,90V.

Ich vermute das das zu wenig ist, oder liege ich mit meiner vermutung 
komplett falsch?

MFG

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