12V Motorsteuerung mit PIC12f675

Gast #331372
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
Angehängte Dateien:
Gast #331373
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.
Gast #331375
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
Angehängte Dateien:
#331376
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.

...
Gast #331377
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
Angehängte Dateien:
Gast #331378
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.
Gast #331379
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?

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