Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe.


von mike t. (Firma: e+h) (zodiac95)


Lesenswert?

Hallo Leute...

Ich habe ein Problem und zwar nehmen wir das programmieren mit MPlab in 
der
Schule durch, doch ich versteh sogut wie garnichts...
und mein lehrer meinte ich sollte einen Motor ansteuern mit dem 16F887.
Wir haben schon ein Programm geschrieben für verschiedene Töne..

Jetzt meine Frage, kann ich das selbe Programm für den Motor nutzen das 
wir geschrieben haben nur für den motor?
ich meine Frequenz ist Frequenz...

Und wenn nicht könnt ihr mir sagen wie ich das dann schreibe damit ich 
den Motor ansteuen kann?

Aufgabe ist es mit 4 versch. tastern 4 versch. Geschwindigkeiten 
einzustellen
jedoch nur solange der Taster gedrückt ist...

Ich bitte euch um Hilfe... das Referat ist bald und ich hab keinen Plan 
davon...

Vielen Dank euch schonmal im vorraus :)

Lg Zodi

von klaus (Gast)


Lesenswert?

beschreib mal die Hardware, wie wird der Motor an den Controller 
angeschlossen?

von mike t. (Firma: e+h) (zodiac95)


Lesenswert?

Unser Lehrer hat eine elekt. Platte wo man in der mitte den pic drauf 
klemmt und dann mit Drähten von den Ausgängen zu dem jeweiligen 
Verbraucher fährt (z.b. led, Lautsprecher oder eben der motor).

Dann hat man bei den Eingängen (PortC und A) noch Taster die mit dem Pic 
verbunden sind.

PortB sind die Ausgänge, wobei wir bisher immer nur einen benutzt haben.

Danke für die schnelle antwort :)

Also der motor hat 2 eingänge (ich denk mal für links Drehung und rechts 
Drehung)...

Ist in der Platte eingebaut und er treibt eine Scheibe an die so ein 
Hypnose Muster hat.

von Karl H. (kbuchegg)


Lesenswert?

mike tatzke schrieb:

Ich versuchs mal freundlich zu formulieren:
Du hast tatsächlich keinen Tau. Inwieweit das deine Schuld ist, kann ich 
nicht sagen. Allerdings ist es meistens so, dass bei diesen einfachen 
Dingen die Lehrer meist recht unschuldig sind und das eigentliche 
Problem bei den Schülern liegt.

Egal.

> Also der motor hat 2 eingänge (ich denk mal für links Drehung und rechts
> Drehung)...

Nein.

Dein Motor ist höchst wahrscheinlich ein banaler Gleichstrommotor.
Der wird zb so angeschlossen
1
        +------------------------------+
2
  Plus  |                              | Anschluss A
3
    Batterie                         Motor
4
  Minus |                              | Anschluss B
5
        +------------------------------+

Dann dreht der. Vertauscht du die Anschlüsse am Motor, dann dreht der in 
die andere Richtung.
D.h. am Motor muss immer 1 Anschluss an + liegen und 1 Anschluss an - 
damit er dreht. Welcher der beiden Anschluesser an + liegt und welcher 
an -, das ist ausschlaggebends für die Drehrichtung.
Aber angeschlossen werden müssen beide, sonst hast du keinen 
geschlossenen Stromkreis und der Motor dreht sich gar nicht.

Ich finds immer wieder faszinierend, dass die Genration 'Playstation' in 
ihrem ganzen 18-jährigen Leben kein einziges mal mit banalen 
Glühbirnchen und Motoren und Batterien rumgemacht hat. Etwas was in den 
70-ern jeder 11-jährige gemacht hat um auf seinem Fahrrad den Dynamo 
loszuwerden und so nebenbei noch vor dem Physikunterricht die 
Grundregeln der banalen Elektrotechnik auf eigene Faust gelernt hat.


> Ist in der Platte eingebaut

Bitte. Es heißt 'Platine'. Ich kann mir kaum vorstellen, dass dein 
Lehrer das Wort 'Platte' benutzt hat.

> und er treibt eine Scheibe an die so ein
> Hypnose Muster hat.

Sieht mir nach einem typischen Gleichstrommotor aus, der nicht viel 
Strom braucht. Könnte direkt an den Portpins gehen.

Also:
Programm schreiben, welches die beiden Portpins an die du den Motor 
angesteckt hast bedient.
Den einen Pin auf 1 und den anderen Pin auf 0.
Da ich mal davon ausgehe, dass deine Experimentierplatinen aufeinander 
abgestimmt sind, sollte sich dann der Motor in einer Richtung drehen.
2. tes Experiment: die Pins anders rum ansteuern. Jetzt wird der eine 
Pin auf 0 und der andere auf 1 gelegt. Der Motor sollte sich anders rum 
drehen.

von klaus (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Sieht mir nach einem typischen Gleichstrommotor aus, der nicht viel
> Strom braucht. Könnte direkt an den Portpins gehen.

mir kommt das eher merkwürdig vor, ein Gleichstrommotor direkt an den 
Portpins... meistens ist ein MOSFET dazwischen, die Ansteuerung erfolgt 
über PWM.

von Joachim .. (joachim_01)


Lesenswert?

Ich hoffe mal, daß der gute Kerl-Heinz bei seiner Betrachtung über 
deinen Wissensstand nicht wirklich in Schwarze traf. Denn dann wäre das 
wirklich fatal.


Aber zur Sache:
Der Trick ist das phasenweise Ein- und Ausschalten des Motors. 
Normalerweise verwendet man für eine Motorsteuerung ein PWM-Modul 
(Pulsweitenmodulation). Man könnte das auch ohne machen - was aber 
ziemlich umständlich, fehleranfällig (weil unnötig viel Code) und 
anfängerhaft wäre. Nicht mal die Arduino-User machen so was Böses.

Du kannst Timer 2 als PWM Timer verwenden. Nutze dazu das CCP-Modul 
(Compare-Capture Modul, der Ausdruck steht für vergleichen und 
abfangen). Das Timer-Register wird mit einem zweiten Wert verglichen und 
wenn Gleichstand erreicht ist wird ein Ereignis, zB ein Interrupt 
ausgelöst. In deinem Fall reicht es aber aus, wenn man die Funktion des 
umschaltes des entsprechenden Port-Pins nutzt, da brauchts keine 
Interrupt-Routine.
Englisch kannst du? Dann lies dir mal das Dateblatt dazu durch. U. a. 
steht im 'PIC16F87X Data Sheet':

8.3.3 SETUP FOR PWM OPERATION
The following steps should be taken when configuring
the CCP module for PWM operation:
1. Set the PWM period by writing to the PR2
register.
2. Set the PWM duty cycle by writing to the
CCPR1L register and CCP1CON<5:4> bits.

3. Make the CCP1 pin an output by clearing the
TRISC<2> bit.
4. Set the TMR2 prescale value and enable Timer2
by writing to T2CON.
5. Configure the CCP1 module for PWM operation.

Du must dann mit deinen Tastern nur noch die entsprechende Pulsweite 
(ausprobieren) in das Duty Cycle Register CCPR1L + CCPR1H laden. Das ist 
alles eigentlich so trivial, daß ich mal meine selbstgeschriebenen Code 
noch nicht mal aufgehoben hab. War allerdings für PIC18.

Im grunde besteht also der Kern deiner Aufgabe nur aus etwa fünf Zeilen 
Code, nämlich ein paar Bits setzen und die entsprechenden Register laden 
(ich nehme an, Taster in einer Schleife abfragen kannst du).


Hope this helps.

von Dietrich L. (dietrichl)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> Also der motor hat 2 eingänge (ich denk mal für links Drehung und rechts
>> Drehung)...
>
> Nein.

Vielleicht ist da schon eine fertige Einheit (Motor + Treiber) verbaut?

Denn ein Motor direkt am µC ist schon etwas seltsam, schon allein wegen 
Anfahrstrom und Schutzbeschaltung (Freilaufdioden...). Aber wer weiß...

Gruß Dietrich

von asdf (Gast)


Lesenswert?

mike tatzke schrieb:
> Ich bitte euch um Hilfe... das Referat ist bald und ich hab keinen Plan
> davon...

alles kein Problem: 42

von mike t. (Firma: e+h) (zodiac95)


Lesenswert?

Danke ich werde es versuchen...
Und was Gleichstrom etc. ist weis ich auch, denn wir machen das ja nur 
in der Schule weil ich Elektroniker für Geräte und Systeme lerne.
Doch wenn unser Gnädiger Herr Lehrer von 12 unterrichts stunden mehr als 
die hälfte fehlt, und und kaum etwas erklärt, müssen wir es nunmal 
selbst bei bringen.
Und da dachte ich als ich hier das Forum entdeckte, das dies villeicht 
eine gute Möglichkeit sei...

Dennoch egal, ich bedanke mich für alle antworten und das ihr überhaupt 
so schnell geantwortet habt. :)

Nun wurde glaube ich jedoch meine Frage am Anfang nicht beantwortet 
(sofern ich da nicht etwas überlesen habe).
Im prinzip funktioniert es wie mit einem Ton aus dem Lautsprecher mit 
ca. 20 Hz oder etwa nicht?

Und diese "Platine" ist keine Platine (ich weis wie Platinen aussehen 
ich löte jeden Tag schätzugweise 4 Stück?)
Es ist eine fertige Platte sie ist etwa 10 cm dick, 50cm breit und 30cm 
lang.
Und darin sind Platinen, richtig.
Jedoch wird es von unserem Lehrer liebevoll, Programmierungsübungsplatte 
genannt...

Lg Zodi

von Joachim .. (joachim_01)


Lesenswert?

>alles kein Problem: 42
Nur wenn er die Frage dazu kennt. Aber unser junger Freund macht mir 
nicht so den Eindruck. Aber mit einem Donnergoogler sollte sich auch 
dieses Prob lösen lassen...

von Mike (Gast)


Lesenswert?

Ab und zu eine Deutschstunde oder zumindest eine Rechtschreibhilfe wäre 
auch nicht schlecht.

von asdf (Gast)


Lesenswert?

Joachim ... schrieb:
>>alles kein Problem: 42
> Nur wenn er die Frage dazu kennt. Aber unser junger Freund macht mir
> nicht so den Eindruck. Aber mit einem Donnergoogler sollte sich auch
> dieses Prob lösen lassen...

Falsch! 42 ist immer richtig. 42 ist die Antwort auf alles und jeden. 
Man muss die Antwort nur richtig interpretieren können oder man baut 
einen größeren Computer.

Mike schrieb:
> Ab und zu eine Deutschstunde oder zumindest eine Rechtschreibhilfe wäre
> auch nicht schlecht.

nana! deutsche rechtsschreibung wirt dotal überbewertet .solange die 
lesbarkeit nicht darunter leidet ist das alles kein broblem.

von Joachim .. (joachim_01)


Lesenswert?

Töne, das sind nur Frequenzen. Somit Ein- und Ausschaltzyklen pro 
Zeiteinheit. Wie lange die Ein -und Ausschaltzyklen im Verhältnis zu 
einander sind (für gewöhnlich 50%/50%) ist egal.
Eine Geschwindigkeitsansteuerung ist aber etwas anderes. Du mußt 
sozusagen die Einschaltdauer (z.B bei 20Hz) variieren. Die kann zwischen 
1% (seeehr kurz, quasi nur ein Impuls, eine Nadel auf dem Oszilloskop 
sozusagen) und fast 100% liegen, (dann wäre der Motor voll bestromt).

von mike t. (Firma: e+h) (zodiac95)


Lesenswert?

Hmm... ja okay klingt ziemlich logisch.
Und wie würde ich sowas denn genau schreiben bzw. umsetzen?
Kannst du mir da villeicht ein konkretes Beispiel zeigen bzw. 
aufschreiben?

Lg Zodi

von Karl H. (kbuchegg)


Lesenswert?

Dietrich L. schrieb:
> Karl Heinz Buchegger schrieb:
>>> Also der motor hat 2 eingänge (ich denk mal für links Drehung und rechts
>>> Drehung)...
>>
>> Nein.
>
> Vielleicht ist da schon eine fertige Einheit (Motor + Treiber) verbaut?
>

Wäre möglich.
Allerdings sollte das ein ... Zitat ...
> weil ich Elektroniker für Geräte und Systeme lerne.

... anhand des Schaltplanes bzw. durch scharfen Blick auf eine eventuell 
vorhandene Platine erkennen können.

Meine Meinung

> Denn ein Motor direkt am µC ist schon etwas seltsam, schon allein
> wegen Anfahrstrom und Schutzbeschaltung (Freilaufdioden...). Aber
> wer weiß...

Seine Beschreibung des Motors samt Scheibe mit 'Hypnosemuster' klingt 
für mich nach so einem Motörchen, wie sie in den billigen 
Solar-Baukästen für 12-jährige drinnen sind, die mit 5 oder 10mA schon 
laufen.

Aber, wie du sagst ... Wer weiß das schon
Eigentlich sollte es ja der TO wissen.

von Michael K. (olkj)


Lesenswert?

mike tatzke schrieb:
> Hmm... ja okay klingt ziemlich logisch.

ist ja auch logisch

von Karl H. (kbuchegg)


Lesenswert?

mike tatzke schrieb:
> Hmm... ja okay klingt ziemlich logisch.
> Und wie würde ich sowas denn genau schreiben bzw. umsetzen?

Du willst alles und das sofort.
Kannst du denn deinen Motor UNABHÄNGIG von irgendwelchen 
Geschwindigkeitssteuerungen per Programm laufen lassen?
Denn das wäre der allererste Schritt ... das sich erst mal überhaupt 
irgendwas tut.
Du drückst auf einen Taster und der Motor dreht sich (egal wie schnell). 
Du lässt den Taster los und der Motor bleibt wieder stehen.
Kriegst du das hin?

> Kannst du mir da villeicht ein konkretes Beispiel zeigen bzw.
> aufschreiben?

Nein, kann man nicht. Weil wir nicht wissen welche Hardware du hast, 
bzw. wie die verschaltet ist.

Genau darum geht es bei der ganzen Fragerei, ob du den Motor erst mal 
prinzipiell laufen lassen kannst. Denn dazu musst du die Verschaltung 
schon mal behirnt haben. Sprich: du müsstest unabhängig von 
irgendwelchen Programmen schon mal wissen, was du eigentlich mit den 
Motor-'Eingängen' machen musst, wenn du die einfach so verkabeln sollst, 
dass sich der Motor dreht. WEnn du das erst mal weißt, dann weißt du 
auch, was du mit den µC-Pins machen musst, wenn die den Motor erst mal 
einfach nur drehen sollen.
Man kann kein Programm schreiben, wenn nicht klar ist, was das Programm 
eigentlich tun muss um die beabsichtigte Wirkung zu erzielen.

von mike t. (Firma: e+h) (zodiac95)


Lesenswert?

Nein ich kann den Motor nicht unabhänig laufen lassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.