Forum: Mikrocontroller und Digitale Elektronik 12V Motorsteuerung mit PIC12f675


von Artur Müller (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute,
ich habe ein Problem und zwar muss ich für ein Praktikum
einen kleinen 12V Motor mit dem PIC12f675 ansteuern, gelötet ist schon
alles, Schaltung liegt bei. Habe versucht die Sache mal mit dem
Programm PIC-C zu programmieren, läuft auch soweit, glaub ich, nur
habe
ich leider absolut keine Ahnung wie ich das mit der PWM klären soll.
Wenn jemand Lösungsvorsschläge hat, bin ich immer offen für. Falls ihr
euch mein Programmprototyp anschauen wollt, müsst nur Bescheid geben.

Vielen Dank!

Gruß

Artur Müller

von Jonny (Gast)


Lesenswert?

Der PIC12F675 besitzt kein PWM - Modul.
Warum verwendest du statt dessen nicht den pinkompatiblen PIC12F683 ?

Allerdings benötigt man für eine H - Brücke normalerweise zwei PWM -
Ausgänge, und der PIC12F683 besitzt nur einen. Es gibt aber auch dafür
schaltungstechnisch eine Lösung, nämlich mit zwei Transistoren, die das
aufteilen.

von Schoaschi (Gast)


Lesenswert?

Naja.. was muss den dein PIC so alles machen? vl gehts ja eh ganz
einfach mit einer Software-PWM Lösung.
Also beschreibe mal was du einliest und was du damit machen musst.

von Artur Müller (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Schoaschi,
ich muss den PIC mit einem Taster ansteuern, dass heißt mit Betätigung
des Tasters soll der Motor anlaufen (dieses Programm soll auf einmal
ablaufen), dann Rechts-linkslauf und eine Rampe fahren (erst rauf und
dann runter). Wie in der Schaltung sichtbar habe ich ja auch eine
Lichtschranke und an der Spitze des Motors eine passende Scheibe mit
zwei gegeüberliegenden Schlitzen, um die Zählgenauigkeit zu erhöhen.
Das Problem ist ich weiß eigentlich gar nix, das einzige was ich
geschafft habe ist, das der Motor schon mal anspricht, und der
schwierigste Teil ist die PWM, wie ich finde.

P.S. Jonny: Ich soll eine PWM programmieren, damit der Motor eine Rampe
fahren kann. Was ich noch weiß ist, dass dies irgendwie auch mit der
Lichtschranke zu tun hat.

Gruß

Artur

von Hannes L. (hannes)


Lesenswert?

Als "Rampe" wird bezeichnet, dass der Motor nicht abrupt anfahren und
bremsen soll (wie z.B. mittels Schalter), sondern dass er langsam
anfahren soll und langsam immer schneller werden soll, bis er die
End-Drehzahl erreicht hat (genauso beim Bremsen).

Eine Software-PWM erreichst du durch einen Zähler (Register), der im
Timer-Interrupt hochgezählt wird und mit den PWM-Werten
(Tastgrad-Werte) verglichen wird. Das Vergleichsergebnis entscheidet
dann über Einschalten oder Ausschalten des Motors. Da du beide
Drehrichtungen realisieren sollst, brauchst du zur Ansteuerung einer
H-Brücke zwei PWM-Ausgänge, von denen je nach Drehrichtung immer nur
einer aktiv sein darf.

Wenn du auch die Lichtschranke zur Drehzahlmessung einbeziehen sollst,
dann wird es etwas komplexer, da du dann eine komplette Regelung
programmieren musst.

Ich hoffe, ich habe dir jetzt genügend Stichworte für die Suche im
Forum oder Web genannt.

...

von Artur Müller (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute, hab das Programm schon auf denPIC gebrannt, Fazit, es läuft
nicht.

Ich habe das TRIS-Register gesetzt ( A2 und A3 als Input, A4 und A5
Ausgang für den Motor links/rechts).

An A3 ist ein Taster, der 5V auf Masse zieht (MCLR).

Leider läuft der Motor nicht los.

Hat jemand eine Ahnung, was am Programm falsch ist?

Gruß
Artur

von Steffen (Gast)


Lesenswert?

Als erstes sollte MCLR ausgeschaltet (bzw. PIC-Intern intern auf High
gelegt) werden --> #fuses , da ihr den Pin ja als Eingang
verwendendet.

Für die Lichtschranke würde ich den GPIO OnChangeInterrupt verwenden.

von Artur Müller (Gast)


Lesenswert?

Haben MCLR ausgeschaltet und den A3 als Input für den Taster genommen.
Sobald der PIC Spannung bekommt, fängt er aber leider auch ohne
Tastendruck an zu laufen.

void main
{
 while (true)
 {
   if (Start)
   {
     motorlinks();
     delay_ms(5000);
     output_low(M_links);
     delay_ms(2000);
     ...
   }
 }
}



Wie funktioniert das mit dem GPIO OnChangeInterrupt?

von Steffen (Gast)


Lesenswert?

Wie inititalisierst du die Ausgänge? Setzt du beide auf 0?

Wie der IOC funktioniert, das findest du im Datenblatt unter 3.2.2
Interrupt-On-Change.

von Nablus (Gast)


Lesenswert?

CMCON=%00000111   ' Disable Comparators
  ANSEL=%00000000   ' Disable ADC

kontrollieren.

von F.H. (Gast)


Lesenswert?

PWM Chip mit 12 F
http://www.ees-hartz.de/pwm

von Nablus (Gast)


Lesenswert?

cny36 : fehler im schaltplan

von Artur Müller (Gast)


Lesenswert?

Vielen Dank an alle die mitgeholfen haben, ich habe es endlich geschafft
der Motor läuft wie er soll, auch die PWM mit der Lichtschranke
funkioniert.

Gruß

Artur Müller

von Marcus D. (cali)


Lesenswert?

Hallo,
ich mache gerade fast dasselbe und mich würde der Code interessieren,
sowie der korregierte Schaltplan.

Vielen Dank und Grüße
 Marcus

von Artur Müller (Gast)


Angehängte Dateien:

Lesenswert?

Hi Marcus,
hier der Schaltplan und weiter unten den Code.

Gruß

Artur Müller

von Artur Müller (Gast)


Angehängte Dateien:

Lesenswert?

So,
und nu der Code

nochmals Gruß

Artur

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.