PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC16F627, Anfänger: Schaltplan+Programmierfrage :-)



PsiQ
26.06.2006, 18:58
Hallo Leute, Experten und genervte Noob-Fragen-Beantworter...

Ich (21Jahre,männlich) habe mich in letzter Zeit..so 4 Tage oderso, etwas in PIC zeugs eingelesen.. (elektronik grundlagen hab ich mir großteils selbst beigebracht, nix schule oderso)
also blätter blätter ..les.. druck..
hab mir n paar programme und schaltpläne (eagle +eagle runtergeladen)
als Beispiele angeschaut.
Nu hab ich gedacht ich lerne am schnellsten, wenn ich das Stück für Stück mal mache und baue:
Was will ich:
Drehzahl"sensor" für nen 12Volt Lüfter
keine Drehzahl:rote LED
niedrige Drehzahl:gelbe LED
mittlere+hohe Drehzahl:grüne LED

Ich hab mir die Experimentier-Platine vom Conrad besorgt, mit n paar PIC16F627A dazu.

dann hab ich datenblätter gewälzt, und mir folgendes zu obigem
"was will ich" überlegt:

Der Lüfter gibt über das drehzahlkabel bei 12Volt,
eine rechteckspannung mit 0...12...0..12Volt aus

Die Spannung lese ich in den PIC mit nem Spannungsteiler in RA0 ein,
und vergleiche Sie mit der Spannung 2.5Volt an RA3

dadurch wird *irgendwie* in dem PIC dann ein BIT abwechselnd 0 und 1
.. #Soviel zur Hardware#:
Schaltplan..(zusammengepuzzelt,passt das so, was is besser als so?)
http://www.directupload.net/images/060626/temp/3Go2NK3P.jpg (http://www.directupload.net/show/d/740/3Go2NK3P.jpg)

#Software# (Probleme)

dieses Komparator BIT zähle ich dann über ein Zeitintervall (Timer)
50 bis 10000 mal [HIGH] pro 30sek ist = hohe/mittlere Drehzahl grüneLED
1 bis 49 mal [HIGH] pro 30sek ist = niedrige Drehzahl gelbeLED
0 mal [HIGH] pro 30sek ist = ALARM,kaputt, nix! roteLED


äm.. ja.. also ich will die LED's Drehzahlabhängig ansteuern..

geht das mit dem von mir "erdachten" schaltplan?
wie hab ich da die Software zu schreiben?
Was fü ein Quarz (wie) geht mit dem PIC16F627A?

Kann mir jemand helfen?
Will mir jemand helfen?

Von Sprut.de hab ich das meiste Wissen in mein Hirn eingelesen..
da steht auch noch was zum komparator und so :-s


Danke fürs Lesen soweit schonmal :-) !


PS.:
Wie kann ich aus Eagle als PDF was ausgeben+dann hochladen, habs nun über directupload gemacht...
PPS.:
Wenn möglich *biddebidde* krieg ich ne Antwort die auf meine Fragen geht, und net nur ein schau mal da auf der 100SeitenHomepage nach...


edit:
hab mir als spieleri bissl die programme von dem vellemann programmiere von conrad angeschaut,, also n licht alla Knightrider kann ich laufenlassen,das isses dann aber schon :-)

Mobius
26.06.2006, 19:30
Hi,
Also zum Schaltplan:

Bei dem Spannungsregulator brauchst du meiner Meinung (und die des Datenblattes), die Dioden nicht. Die beiden Kondensatoren an den zwei Seiten kannst du auch getrost durch je eine pro Seite ersetzten, davon wird der 7805 net kaputt. Was aber wichtig ist, dass das Grund von dem IC wirklich auf den Ground geschalten ist.
Ja, was noch auffällt ist, dass du den + des Spannungsteilers RA4-RA6 direkt auf den 12V-Teil gezogen hast. Da aber dort, wenn ich alles richtig verstanden habe), der Lüfter-Ausgang angeschlossen wird, wird das so nicht gehen. Ich würde dir dort eher zu einem Stecker raten (in eagle die Liblaries con-lsta/b und jumper fr 2-polige) ^_^.

Als PDF kannst du aus eagle leider nicht exportieren, bzw. ich wüsste nicht, wie das gehen sollte, aber eigentlich müsste es doch gehen, jpgs im Forum hochzuladen. Dazu genügt eigentlich schon paint, mit dem du die bmps, die eagle generieren kann, einfach als jpgs abspeicherst.

Das Crystal wählst du, wie es dir beliebt, meist sind es 4MHz, womit du eine interne Taktfrequenz von 1MHz (1µs pro Befehl) erhällst, was für die meisten Anwendungen vollkommen ausreichend ist. Die Werte der beiden Kondensatoren sind wieder aus dem Datenblatt ersichtlich ;), meist aber unkritisch und um 10-33pF.

Das mit dem Spannungsteiler ist schon eine gute Idee, nur glaube ich, dass du dir das "vergleichen" zu schwer machst. Der PIC16F627 besitzt ein CCPM (Capture Compare PWM)-Modul. Wenn du den benutzt, kannst du ihn so einstellen, dass er einen Timer startet und diesen erst stoppt, wenn sich der Pegel auf dem betreffenden Pin ändert. Wie und in welcher Weise du diesen Benutzt oder einstellst, darauf möchte ich nicht eingehen, weilich dieses Modul noch nicht oft benutzt habe. Dazu empfehle ich dir den betreffenden Teil des Datenblattes zu schmöckern, beziehungsweise noch [rul=http://www.sprut.de/electronic/pic/grund/inout.htm#capcompwm]diese[/url] Seite von sprut. Danach liest du den Timer nur noch aus und kannst dann durch vergleichen ausknobeln, ob die Werte nun hoch sind (also der Lüfter langsam läuft) oder nicht.
Eine andere Möglichkeit wäre, einen eigenen Timer zus tarten und dann den Pin kontinuirlich zu überprüfen und wenn dieser von 0 auf 1 "springt", den Timer stoppen, auslesen und dann halt wieder den so erhaltenen Wert interpretieren.

MfG
Mobius

PsiQ
26.06.2006, 20:38
Danke!!
aber... :-s



Hi,
Also zum Schaltplan:

Bei dem Spannungsregulator brauchst du meiner Meinung (und die des Datenblattes), die Dioden nicht. Die beiden Kondensatoren an den zwei Seiten kannst du auch getrost durch je eine pro Seite ersetzten, davon wird der 7805 net kaputt. Was aber wichtig ist, dass das Grund von dem IC wirklich auf den Ground geschalten ist.


Ja die IC-Spannungsregler schaltung hab ich so von nem dipl ing gemoppst den ich kenne :-)
die is so wohl seeehr geschützt+genau
Ähem:
Die diode bei ground erhöht die spannung über den IC-internen Regler um den Wert (0,3Volt oderso),der bei der ausgangsspannung aufgrund der anderen (schutz)diode abfällt (so verständlich? ?)
=>deswegen Gnd-IC nicht direkt auf [Gnd],weil sonst 0,3Volt fehlen,so regelt der IC die Spannung um 0,3V hoch und an der Abnahmestelle passts wieder...
(ich überleg grad nur, ob dann das net irgendwie mit den äusseren spannung 12V vermurkst,dann wäre ja der Spannungsunterschied nur
(7V-0,3V=) 6,7Volt ..oderso..hmm.. ne is wohl wurscht..

Zum ersten Aufbau würde ich den Spannungsregler auch nur wie im Datenblatt mit 2 kondensatoren aufbauen :-)



Ja, was noch auffällt ist, dass du den + des Spannungsteilers RA4-RA6 direkt auf den 12V-Teil gezogen hast. Da aber dort, wenn ich alles richtig verstanden habe), der Lüfter-Ausgang angeschlossen wird, wird das so nicht gehen.


Irgendwie versteh ich da net was du mir da sagen willst :-s
Äh..meinst du mit RA4-RA6 = R4 bis R6 ?
den Spannungsteiler hab ich genommen, weil ich ja in den IC <5Volt einlesen will (+geringer Strom).
mit dem spannungsteiler liegt am PIN17/RA0 ~4Volt an..
da soll nur das rechtecksignal des drehzahlsensors eingelesen werden...
(oder hab ich da einfach das falsche Schaltsymbol benutzt,meinst du das?)

die 12V Versorgungsspannung (+ -) vom Lüfter ist nicht in meiner Schaltung drin (upps 8-
obius"]
Als PDF kannst du aus eagle leider nicht exportieren, bzw. ich wüsste nicht, wie das gehen sollte, aber eigentlich müsste es doch gehen, jpgs im Forum hochzuladen. Dazu genügt eigentlich schon paint, mit dem du die bmps, die eagle generieren kann, einfach als jpgs abspeicherst.


Ahja,ok, hab das mit dem attachements grade erst gesehen/kapiert...



Das Crystal wählst du, wie es dir beliebt, meist sind es 4MHz, womit du eine interne Taktfrequenz von 1MHz (1µs pro Befehl) erhällst, was für die meisten Anwendungen vollkommen ausreichend ist. Die Werte der beiden Kondensatoren sind wieder aus dem Datenblatt ersichtlich ;), meist aber unkritisch und um 10-33pF.

OK einbauen vom Quarz ist nu klar :-)
Zur Bedeutung:?
Wenn ich da nun n 20Mhz quarz (gibts das?) ranlöte, ist der dann schneller ? oder ist 10mhz das maximale..



Das mit dem Spannungsteiler ist schon eine gute Idee, nur glaube ich, dass du dir das "vergleichen" zu schwer machst. Der PIC16F627 besitzt ein CCPM (Capture Compare PWM)-Modul. Wenn du den benutzt, kannst du ihn so einstellen, dass er einen Timer startet und diesen erst stoppt, wenn sich der Pegel auf dem betreffenden Pin ändert. Wie und in welcher Weise du diesen Benutzt oder einstellst, darauf möchte ich nicht eingehen, weilich dieses Modul noch nicht oft benutzt habe. Dazu empfehle ich dir den betreffenden Teil des Datenblattes zu schmöckern, beziehungsweise noch [rul=http://www.sprut.de/electronic/pic/grund/inout.htm#capcompwm]diese[/url] Seite von sprut. Danach liest du den Timer nur noch aus und kannst dann durch vergleichen ausknobeln, ob die Werte nun hoch sind (also der Lüfter langsam läuft) oder nicht.
Eine andere Möglichkeit wäre, einen eigenen Timer zus tarten und dann den Pin kontinuirlich zu überprüfen und wenn dieser von 0 auf 1 "springt", den Timer stoppen, auslesen und dann halt wieder den so erhaltenen Wert interpretieren.


Ämme nochmal langsam..*kopfkratz*
also der pin (welcher?) wird
[High] ---timer start
[Low] ---timer läuft noch
[High] ---timer stoppt
dann schau ich nach wielange der timer lief,und kann anhand der laufzeit sagen aha hat 10mS gedauert = langsam ,
oder hat 1mS gedauert = schnell ..??

oder mal abstrakt erbrochen:
(kann eigentlich nur meinen GTR programmieren ;-) )

Loop1
If
[Timer] < [10mS]
Then
set LEDgrün = [I]
set LEDrot = [O]
else
If
[Timer] >= [10mS]
Then
set LEDgrün = [O]
set LEDrot = [I]
goto Loop1


oder so ähnlich... ...


Ähem: Zum Programmieren des IC's ...
Hat jemand noch Lust mitn bissl quelltext um sich zu schmeißen ?
am besten mit ner ausführlichen Erklärung hinter jeder Zeile :-/

DAnke =D>

PsiQ
26.06.2006, 20:45
ah, da steht ja fast mein dingens.. muß ich nur noch kapieren und ummoddeln :-)
http://www.sprut.de/electronic/pic/projekte/dehzahl/dreh.htm

morgen dann.. heute genug geschafft.. :-)