Forum: Mikrocontroller und Digitale Elektronik PIC16F84A kleines Programm


von Martin H. (dermaddin)


Lesenswert?

Guten Tag ich hab ein kleines Problem mit einem PIC Controller den ich 
gerne Programmieren würde.

Ich habe mir bei uns im Betrieb ein Netzteil gebaut da der 
Festspannungsregler eine knackige Temperatur von 90°C erreicht habe ich 
mir einen passiv Kühler anmontiert der das ganze auf 50°C drosselt was 
vollkommen ausreicht jedoch wollte ich mal zu Experimentierzwecken einen 
aktiven Kühler anbringen der ab 45°C für eine Halbe Minute anspringt.

Nun mein Problem ist , da ich bisher mit dem genannten Controller 
(PIC16F84A) schon gerarbeitet habe aber mithilfe eines Emulations 
Programmes mit dem  meine Schaltung einfach in Verknüpfungen aufgebaut 
habe und es mir diese dann in einen Programmcode umgewandelt hat, habe 
ich nun das Problem,  dass dieses Programm leider nicht Umfangreich 
genug ist um eine Temperatur messung durchzuführen und da ich kein C 
beherrsche und nicht so kurzfristig lernen kann wollte ich fragen ob 
jemand für mich bitte einen kleinen Programm Code schreiben könnte um 
die genannte Funktion zu erfüllen.

Er soll bei 45°C einen Lüfter für 30sekunden einschalten mehr nicht. Die 
Ausgänge des Prozessors sind irrelevant die könnt ihr gerne selber 
aussuchen. Zusätzlich müsste ich nur halt zum Programmcode weissen ob 
der Temperatur fühler PTC oder NTC für die entsprechende Programmier 
sein muss.
Als Fühler möglichkeit aufgrund der Maße hätte ich an NTC 833 gedacht
http://www1.conrad.de/conrad/layout2/detail.fh?fh_secondid=b2c188506&layout=layout2&fh_host=www1.conrad.de&fh_eds=%c3%9f&do_fh_search=1&fh_session=%2fscripts%2fwgate%2fzcop_b2c%2f~flN0YXRlPTIzMTg2OTI5NzM%3d&fh_location=%2f%2fb2cconrad_de_b2c%2fde_DE&fh_search=ntc+833&fh_refview=search

Wer Rechtschreibfehler findet darf sie behalten ^^ Greetz von maddin

von Francesco N. (franceso-)


Lesenswert?

Microchip hat mal eine AN rausgegeben, den WDT als Temperatursensor zu
verwenden, mit Assembler sourcecode. Vielleicht hilft dir das.
Es ist manchmal sehr praktisch.

von Dennis (Gast)


Lesenswert?

..dein link geht nicht


16f84a hat keinen ad wandler 1.problem
der pic hat nur um die 30 befehle von denen du nur 10 o 11 für ein 
programm brauchst - das ist in 2 tagen gelernt.

voraussetzungen:

du benötigst eine gute vorlage.

dein programm muss sicher im pic landen (größte herausforderung)

@Francesco

wie verwenden die den watch dog als temp sensor!? he?

dennis


von Francesco N. (franceso-)


Lesenswert?

Der WDT ist temperaturabhängig, von 9-18ms timeout, je nach Temperatur,
mit der Zeit bin ich mir nicht mehr sicher, kann auch eine andere sein.
Weiters soll dieser Konstant sein und relativ linear, auch zwischen 
verschiedenen Geräten.
Die lassen den einfach laufen, und zählen dabei die Überläufe eines 8bit
Timers (inkl ev. Vorteiler).
Die Genauigkeit ist 0.5 Grad Celsius mit einer zwei Punkte
Kalibrierung, 2Grad mit einer ein Punkt Kalibrierung (Offsetfehler).
Dieser Offsetfehler bewegt sich im Bereich +-7%, also ist auch 
Unkalibriert
verwendbar.

von Dennis (Gast)


Lesenswert?

...ich glaube wir meinen unterschiedliche dinge... kann das sein...

ich kenne den wdt beim pic als watchdog timer. das ist ein zählregister 
das beim 'nicht rechtzeitigen resetten' einen internen reset auslöst...

gruß,
d.

von Martin H. (dermaddin)


Lesenswert?

@ Dennis das is der Haken mit "30 Befehle" ich habe nämlich verzweifelt 
nach einer Befehlsliste gesucht wo alle nutzbaren Kommandos drinne 
stehen doch irgendwie wollte google nich so wie ich wollte :D hab leider 
keine Gefunden.

Wäre sehr informativ wenn mir jemand hier die Befehlsliste geben könnte, 
ihr könnt euch sicher ungefähr denken welche Befehle ich dafür brauche.
Und sehr gut wäre dann noch zusätzlich eine Seite in der Variablen etc. 
aufgelistet sind die ich für die Programmiersprache brauche um meinen 
Prozessor zu programmieren.
Wie gesagt die Aufgabe des PIC's : Bei 45°C einen kleinen Lüfter für 30 
Sekunden anwerfen mehr nicht.

Wenn ich mich mit dem Programmieren irgendwann ma besser auskennen 
sollte werde ich mir da noch zusätzliche Zeilen einfüge, sodass der 
Controller merkt falls es kurzzeitig hintereinander immer wieder zu 
temperatur ausschweifungen kommen sollte bis 45°C , dass er dann erstmal 
für eine bestimmt zeit in den dauerbetriebt geht und all so 
"spielereien" aber Grundliegend geht es wie gesagt um diese einfache 
Funktion : "45°C lüfter für 30sekunden einschalten" mehr nicht.

von Wegstabenverbuchsler (Gast)


Lesenswert?

"Grundliegend geht es wie gesagt um diese einfache
Funktion : "45°C lüfter für 30sekunden einschalten" mehr nicht."

Dazu kannst du aber auch einen Bimetall-Sensor aus einem alten Toaster 
nehmen , und brauchst nix zu programmieren

von Francesco N. (franceso-)


Lesenswert?

Dennis wrote:
> ...ich glaube wir meinen unterschiedliche dinge... kann das sein...
>
> ich kenne den wdt beim pic als watchdog timer. das ist ein zählregister
> das beim 'nicht rechtzeitigen resetten' einen internen reset auslöst...
>
> gruß,
> d.

Microchip beschreibt sie in der Application Note AN828. Dabei wird die 
Temperaturabhängigkeit des WDT (Watchdog-Timer) im PIC ausgenutzt.
Der Vorteil dieser Methode ist der Verzicht auf jegliche externe 
Bauteile.  Die erreichbare Genauigkeit beträgt ca. 1°.
Natürlich eignet sich diese Methode nur zur trägen Messung der 
Umgebungstemperatur.

von Martin H. (dermaddin)


Lesenswert?

@Wegstabenverbuchsler , Natürlich könnte ich das im Prinzip machen aber 
wir haben Zahlreiche MicroController von dem genannten Typ und da ich 
mich ein klitzekleines bischen schonma in C einarbeiten wollte und da 
ich das mit garantie nochmal in meinem Beruf brauchen wollte ich, dass 
mit dem PIC machen und einem EXTERNEN Sensor @ Dennis und Francesco

Der sensor sollte den Durchmesser 2mm nicht überschreiten kleiner wäre 
besser er wird zwischen die Kühlrippengelegt und kriegt ein tröpfchen 
Wärmeleitpaste

von Francesco N. (franceso-)


Lesenswert?

Nimm dieses Programm als Beispiel, dies messt ein analogen Input mit
einem Pic ohne ein ADC zu benutzen.

http://www.phanderson.com/PIC/PICC/CCS_PCM/rctime.htm

von Gregor Kopka (Gast)


Lesenswert?

Hallo Martin,

Hier das Datasheet für tippschwache (1. Hit bei google):
http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf
Da findest Du auch den Assembler-Instruktionssatz (für alle PIC16xxx 
gleich).

Auf so ein Problem mit C draufzuhauen ist m.E. etwas übertrieben (und 
geht mit dem von Dir präferierten Controller nicht so wirklich gut, da 
1. zuwenig Speicher und 2. m.W. kein Compiler).

Wenn Du das wirklich mit diesem PIC machen willst:
- die Nummer mit dem WDT
- eine recht aufwändige Zusatzbeschaltung um das Messergebnis des 
Fühlers zu digitalisieren
- eine analoge Zusatzbeschaltung zur Schwellwerterkennung mit 
TTL-Ausgang an den PIC (dann kannst Du aber prinzipiell auch gleich 
einen Bimetall dranklemmen)

Viel Erfolg!

Besser wäre einer mit A/D-Wandler um dann z.B. einen AD22100KT 
(reichelt.de ~3€) dranzupappen (ein Widerstand und ein Tantal zur 
Signalglättung und gut ist), gibt ein sehr schnelles Ergebnis mit 
stabilen Messwerten.

Wenn Du Dich wirklich mit PICs auseinandersetzen willst (und nicht nur 
jemanden suchst der schnell mal Dein Problem für Dich löst) findest Du 
über  http://en.wikipedia.org/wiki/PIC_microcontroller eigentlich alles 
was es über PIC an Wissen gibt.

BTW:
Bei Microchip gibt's auch das MPLAB zum Download.
Reicht als Lern-/Entwicklungsplattform für relativ simple Sachen wie 
dieses völlig.

Gregor

von Gregor Kopka (Gast)


Lesenswert?

@Francesco: während des schreiben des Posts wieder was gelernt... Danke!

von Frank (Gast)


Lesenswert?

auch Sprut hat den Trick mit dem WDT schonmal erwähnt:
http://sprut.de/electronic/pic/projekte/logger/logger.htm
Vielleicht sind dort ja auch weitere Hinweise zur Problemlösung zu 
finden.

bye

Frank

von Martin H. (dermaddin)


Lesenswert?

Danke Leutz für die Kommentare , speziell an Gregor das war wenigstens 
klare Kante was du da formuliert hast so kann ich was mit deinen Aussage 
anfangen , denn die ersten Antworten im Thread die kamen waren für mich 
wie Hyroglyphen.

Ich werde mich mal mit den genannten Links befassen und mal schauen ob 
ich mich zu recht finde.

Ihr könnt gerne weitere Tipps posten aber falls ich mit den Links und 
Tipps probleme haben sollte werde ich mich gegebenen Falls dann direkt 
wieder hier in diesem Thread melden nur grade kann ich in dieser 
Beziehung nichts ausprobieren da ich noch auf der Arbeit bin und noch 
was zu tun habe wenn ich zuhause bin werde ich mich mal drum kümmern.

Greetz von Maddin

von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

im anhang einmal die Befehlsliste aus dem geposteten sheet(seite38)

die gebräuchlichsten befehle sind rot unterstrichen, damit bekommt man 
schon recht weit, einige lassen sich auch noch durch 2 oder 3 andere 
zusammenbasteln.

es wird immer viel bewegt, deswegen sind die 3 mov befehle grundlegend 
für alles weiter.

zudem die befehle call und goto

und die bs,bt (bit set und bit test befehle) nicht zu vergessen, damit 
und mit einer guten vorlage bist recht schnell nah am geschehen.

die größter herausfroderung ist eh, ein programm lauffähig in den pic zu 
bekommen, bis dahin musst du dir das hier kaum antun.

quarzossi richtig einsetllen
wdt off, auf jeden fall nicht vergessen

sprut ist für solche dinge recht gut, unbedung reinschauen.

anstatt einen externen ad wandler zu kaufen, würde ich den pic16F876 
nehmen, da sind welche mit an bord, und im verhältniss ist er günstiger 
als eine externe bastellösung, zudem ist viel platz darin.

ob spurt einen programmer dafür hat, ich meine ja!

zu dem pic 16f84. ich habe mit dieser ausgabe schon eine 20 stellige 
turnhallenanzeige realisiert, mit pc tasttatur, uhr, stoppuhr usw.. 
alles in dem einen chip - also die aussage "zu wenig speicher" für diese 
popel - lüfter aufgabe ist wohl mehr als hinfällig. zudem war es damals 
noch das 16C derivat, das nur knapp halb so viele bytes hat wie die hier 
faforisierte F Variante.

so, dann mal viel spass,
Dennis

von Martin H. (dermaddin)


Lesenswert?

"Programm lauffähig auf den PIC zu bekommen" falls du damit einen 
adapter oder etwas in der richtung meinst um das an den PC zu kriegen , 
sowas haben wir auf der arbeit in massen wir müssen für Anzeigen viele 
Flashproms laden etc. und wir haben auch schon Speziell auf den 
PIC16F84A ein Codeschloss programmiert also das is nich das problem 
falls das gemeint war

von Dennis (Gast)


Lesenswert?

Hallo,

>>die größte herausfroderung ist eh, ein programm lauffähig in den pic zu
bekommen, bis dahin musst du dir das hier kaum antun.

--hmm, ich weiß nicht wie das sonst gemeint gewesen sein kann - aber es 
soll ja Leute geben die viel zwischen den Zeilen lesen!

Na wenn IHR alles in der Firma habt und Ihr bereits etwas Programmiert 
habt - dann frage ich mich warum IHR in diesem Forum wegen so einer 
Lapalie um hilfe bittet...!?

Dennis


von Martin H. (dermaddin)


Lesenswert?

Ich bin ein Azubi bei uns und hab keinen Strahl von programmier Sprachen 
, wie ich auch am anfang gesagt hatte ich zitiere

 "da ich bisher mit dem genannten Controller
(PIC16F84A) schon gerarbeitet habe aber mithilfe eines Emulations
Programmes mit dem  meine Schaltung einfach in Verknüpfungen aufgebaut
habe und es mir diese dann in einen Programmcode umgewandelt hat"

Also hab ich selber nicht mit programmier sprachen gearbeitet , und 
dieses Programm was normale verknüpfungen in den Programmcode umwandelt 
den ich nicht beherrsche ist aber leider nicht umfangreich genug um es 
für die temperatur senorik zu nutzen. Es beherrscht nur UND ODER etc. 
einen Zähler einen Timer das wars auch so im groben und ganzen. All 
diese Verknüpfungen haben vollkommen für eine Codeschloss programmierung 
gereicht nur wie schon erwähnt ist es nicht geeignet für die temperatur 
fühlung.

von Florian Francesco Fuß (Gast)


Lesenswert?

wenn du willst kannst du dir unter 
http://www.bbs1-kl.de/index.php?id=1196#2525 die ganzen befehle des pics 
ausdrucken oder ansehen.

ich arbeite auch gerade in der schule mit dem pic16F84A und habe mir ein 
aehnliches projekt ausgesucht
wenn notwendig werde ich mal um hilfe fragen^^

ciao

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.