Forum: Mikrocontroller und Digitale Elektronik PIC 16F690 für Wechsellstromsteller Programmieren


von Joe B. (blackbery007)


Lesenswert?

Ich habe einen pb. Ich will diese Signal
 von der Simulation auf den folgende Link:
  http://www.technik-emden.de/~elmalab/projekte/ws9899/wss_applet.html


Mithilfe von einem Poti regelbar machen-Es soll auf einen
PiC 16F690  realisiert und ich habe den Pickit 2 den Program zu lesen.
Ein Pin von 16F690 soll ein lampe haben damit ich den Oscill im labor 
darauf anschliessen kann und den signal beobachten.Ich braue es für ein 
Wechselstrommsteller.Der pic soll bei 3,7 V der eingang kurzschliessen.

Leider bin ich ganz neue bei Programmieren.


 Ich danke ihnen für ihre Hilfe

von "M" and "Q" (Gast)


Lesenswert?

Mich sein Bonde, Jamess Bonde, mich Freunde nennen James ...

von Joe B. (blackbery007)


Lesenswert?

Ich will ein Programm erstellen, das die  Helligkeit einer Lampe über 
einen  Wechselstromsteller steuert.Die Sollwertvorgabe erfolgt über ein 
Potentiometer. Alles mithilfe der PIC 16F690

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

OK James,
welchen Wechselstromsteller (Dimmer) verwendest Du ?
Wie ist der aufgebaut ?
Welche Signale liefert er und welche Signale benötigt er ?

von Joe B. (blackbery007)


Lesenswert?

Der Wechselstromsteller,sollte von mir gebaut werden,er benötige diese 
Signal von dem Link:
http://www.technik-emden.de/~elmalab/projekte/ws9899/wss_applet.html

allgemein ist auch wie von dem links mein wechselstromsteller mit dem 
Potentiometer den Winkel wie bei diesem Links zu steueren.Es ist ein 
Projekt,der ich in der HS für Leistungselektronik bekommen habe.Die 
Simulation von der Wechselstromsteller ist Mit LTspice schon gemacht,und 
jetzt sollte ich einfahc bauen,aber weil ich diesen PIC 16F690 
Programmiere brauche und kenne ich mich nicht gnaz gut mit 
Programierung.Deswegen bin ich hier angemeldet,damit ich ein Hilfe 
bekomme.

Ich danke euch im vorraus für Ihr Hilfe

von Gerd (Gast)


Lesenswert?


von Joe B. (blackbery007)


Lesenswert?

Ich habe den Link geschaue und meine ist wie  bei dem Tu-Chemnitzt aber 
mit dem PIC 16F690 zu realisieren.Deswegen sagte ich in 
Wechselstromsteller angebaut sein. Ich werde ein Bild von der Schaltung 
später machen und dir Zeigen, was es schon gemacht ist.
Danke noch mal

von blackbery007 (Gast)


Lesenswert?

Mit dem PIC 16F690 sollte als ausgang der Signal von einem Thyristor 
sein und mit hilfe von einen Potentiometer regelbar sein. Das muss ich 
auf dem PIC 16F690 programmieren  und dem Wechselstromsteller damit 
Steuerern.

Allgemein soll mein PIC in der Lage der Thyristor zu ersetzen und dazu 
regelbar sein.


 Danke für ihre Hilfe

von Joe B. (blackbery007)


Lesenswert?

Mit dem PIC 16F690 will als ausgang der Signal von einem Thyristor haben 
und mit hilfe von einen Potentiometer regelbar sein. Das muss ich auf 
dem PIC 16F690 programmieren  und dem Wechselstromsteller damit 
Steuerern.

Allgemein soll mein PIC in der Lage der Thyristor zu ersetzen und dazu 
regelbar sein.


 Danke für ihre Hilfe

von OberWumpus (Gast)


Lesenswert?

Der PIC wird nicht als Wechselstrom-Schalter in der Art eines Thyristors 
funktionieren !

Niemals !

Der Pic wird Dir auch kein Wechselstrom-Ausgangssignal liefern, wie es 
auf der Seite der Uni zu sehen ist.

Niemals !

Ich denke, Du solltest das Problem erst nochmal überdenken und dann 
nochmal formulieren, was Du wirklich brauchst und nicht wieder zum 
1000.Mal auf die Seite der Uni verweisen. Die kennen wir jetzt und 
können Dir damit nicht helfen.

Ist es evtl. Deine Aufgabe, einen Dimmer zu bauen ?
Was hast Du bisher aufgebaut oder geplant ?

von Joe B. (blackbery007)


Angehängte Dateien:

Lesenswert?

Hier ist die Schaltung, die schon gemacht und es soll mit  den PlC 
16F690 Kontrolliert sein. Den Thyristor soll ich mit den PIC 16F690 
ersetzen  und mit dem Poti regel  sein. Ich weiß nicht, ob ich diese mal 
gut erklärt habe, was ich will. Sonst soll ich noch anders schreiben, 
wenn es nicht deutlich ist.

Danke schön

von Joe B. (blackbery007)


Lesenswert?

ich will ein sinusoidale Signal mit dem PIC 16F690 machen und mit einem 
angeschlossene Poti regeln.Wer hilfe mir ein woche es fertig zu machen 
,weil ich mich nicht damit kenne.

Bitte mit C programmieren,wenn 's geht ,sonst nehme ich auch mit 
assembler.

danke

von Helmut (Gast)


Lesenswert?


von Joe B. (blackbery007)


Lesenswert?

Danke Helmut,
aber die beide Link sind mit einem anderen PIC gemacht und ich brauche 
eine sinusoidale signal. Sinal funktion von Sinus,ein signal ,der ein 
Sinus graph beschreib.

Danke

von Hc Z. (mizch)


Lesenswert?

> Den Thyristor soll ich mit den PIC 16F690 ersetzen

Es ist nicht möglich, einen Thyristor durch einen PIC zu ersetzen.  Es 
hat keinen Sinn, diese Anforderung mehrmals zu wiederholen: da musst Du 
etwas falsch verstanden oder hier falsch rübergebracht haben.

Das Schaltbild ist in einem ungebräuchlichen, nicht portablen Format 
(.wmf).  Ich habe es trotzdem zu öffnen geschafft und festgestellt, dass 
es sehr holperig zu lesen ist, weil sämtliche Kreuzungspunkte fehlen.

von Microsofti (Gast)


Lesenswert?

Hc Zimmerer schrieb:
> Das Schaltbild ist in einem ungebräuchlichen, nicht portablen Format
> (.wmf).  Ich habe es trotzdem zu öffnen geschafft und festgestellt, dass
> es sehr holperig zu lesen ist, weil sämtliche Kreuzungspunkte fehlen.

wiso ?? Windows 7 öffnet das mit Paint.
Und die Punkte sind auch da.

von Hc Z. (mizch)


Lesenswert?

Du hast eine eigenwillige Vorstellung von „portabel”.  Dieser 
Portabilität (bzw. dem Mangel an dieser) sind wohl auch die fehlenden 
Kreuzungspunkte geschuldet, denn gimp zeigt sie nicht an.

von holger (Gast)


Lesenswert?

>sind wohl auch die fehlenden
>Kreuzungspunkte geschuldet, denn gimp zeigt sie nicht an.

Dann schmeiss gimp in die Tonne. IRfanview zeigt
das Bild klar und deutlich an.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

James Bond schrieb:
> aber die beide Link sind mit einem anderen PIC gemacht und ich brauche
> eine sinusoidale signal. Sinal funktion von Sinus,ein signal ,der ein
> Sinus graph beschreib.

Auch wenn die Beispiele mit einem anderen PIC erstellt wurden, dann kann 
Mensch doch die Lösungsansätze begreifen und auf die gewünschte Hardware 
umsetzen. Etwas Lernen sollte doch bleiben, man findet nicht alles 
einfach fertig im Netz.

Und da sind wir schon bei Deinem wirklichen Problem:

Du weißt nicht, was Du willst !

Ich könnte mir vorstellen, daß ein PIC einen Thyristor ansteuert und 
dann an einem ganz anderen Punkt in der Schaltung eine Sinuskurve in der 
Form erscheint, wie Du uns anfangs immer wieder eingetrichtert hast, 
aber wir hier alle wissen, daß der PIC nicht den Thyristor ersetzt und 
dann auch noch eine Sinuswelle erzeugt.
Es wird eher so sein, daß die Sinuswelle aus dem Trafo beeinflußt wird.
Darüber solltest Du nachdenken.

Was ist das denn überhaupt für eine Schaltung ?

von Joe B. (blackbery007)


Lesenswert?

Bernd Rüter schrieb:
> James Bond schrieb:
>> aber die beide Link sind mit einem anderen PIC gemacht und ich brauche
>> eine sinusoidale signal. Sinal funktion von Sinus,ein signal ,der ein
>> Sinus graph beschreib.
>
> Auch wenn die Beispiele mit einem anderen PIC erstellt wurden, dann kann
> Mensch doch die Lösungsansätze begreifen und auf die gewünschte Hardware
> umsetzen. Etwas Lernen sollte doch bleiben, man findet nicht alles
> einfach fertig im Netz.

 Ich weiss, dass man nicht alles fertig im Netz finden kann. Mein PB 
ist, dass ich mich überhaupt mit Programmierung nicht kenne und weil ich 
eine Frist für die Abgabe habe, werde ich es nicht allein schaffen zu 
ändern( ersten: soll noch Programmierung des PIC lernen, dann den 
Anderen verstehen,damit ich auf meine wünsche anpasse.Leider habe nicht 
viel Zeit bis zur Abgabe,sollte noch die Platine montieren), um es auf 
meinem PIC zu benutzen.


>
> Und da sind wir schon bei Deinem wirklichen Problem:
>
> Du weißt nicht, was Du willst !

 was ich genaue will, ist ein Sinusoidale Sigmal mit dem Pic zu erzeugen 
wenn möglich ist, falls nichts möglich ist, werde ich von den letzten 
Link nehmen.
>
> Ich könnte mir vorstellen, daß ein PIC einen Thyristor ansteuert und
> dann an einem ganz anderen Punkt in der Schaltung eine Sinuskurve in der
> Form erscheint, wie Du uns anfangs immer wieder eingetrichtert hast,
> aber wir hier alle wissen, daß der PIC nicht den Thyristor ersetzt und
> dann auch noch eine Sinuswelle erzeugt.
> Es wird eher so sein, daß die Sinuswelle aus dem Trafo beeinflußt wird.
> Darüber solltest Du nachdenken.
>
> Was ist das denn überhaupt für eine Schaltung ?

Die Schaltung könnt ihr es vergessen,weil es ein Schaltung für den 
WechselstromSteller, der ich im Labor in HS bauen werde und es mit dem 
PlC 16F690 ergänzen  werde. Fehlt mir den PIC 16F690.


 Ü: wenn es nicht möglich ein sinusoidale Signal zubekommen ist, dann 
nehme ich den Beispiel aus dem Link.




Danke

von Helmut (Gast)


Lesenswert?

Ich verstehe den Ausdruck sinusförmiger Ausgang auch nicht.

Auch die in dem angehängten Bild messbare Ausgangsspannung ist nur 
deshalb
sinusförmig, weil das Eingangssignal dieses Sinusspannung schon hat.

Die elektrische Eigenschaft eines Tyristors gibt es nicht her.
Da sind auch nur deshalb 2 Tyristoren, weil du zwei Sinushalbwellen 
hast, eine positive und eine negative Halbwelle und ein Tyristor kann je 
nur eine!

Wenn du die Tyristoren benutzen sollst, dann must du eine Ansteuerung 
für jeweils eine Sinushalbwelle programmieren.

Das brauchst du bei einem Triac nicht --> ein Triac ist Quasi eine 
Schaltung mit 2 Tyristoren in einem Gehäuse, vereinfacht gesagt.

Der Trafo in deiner Schaltung hat die Aufgabe das Ansteuersignal des LTC 
für BEIDE Halbwellen der SCHON eingespeisten Sinuswelle zu erzeugen.

Theoretisch kannst du jede µController Dimmerschaltung auch für 
Tyristoren benutzen, die in der ZeroCross (Nullspannungserkennung) eine 
Vollweggleichrichtung (100Hz) hat und die Ansteuerung alle 10ms macht.

Das du einen µControllercode nicht für einen anderen Prozessor aus der 
gleichen Familie umsetzen kannst, nehme ich dir nicht ab.
Du must das nur dem Compiler mitteilen und wenn da das nicht kannst.....

von Joe B. (blackbery007)


Lesenswert?

Helmut schrieb:


> Theoretisch kannst du jede µController Dimmerschaltung auch für
> Tyristoren benutzen, die in der ZeroCross (Nullspannungserkennung) eine
> Vollweggleichrichtung (100Hz) hat und die Ansteuerung alle 10ms macht.
>
> Das du einen µControllercode nicht für einen anderen Prozessor aus der
> gleichen Familie umsetzen kannst, nehme ich dir nicht ab.
> Du must das nur dem Compiler mitteilen und wenn da das nicht kannst.....

Meinst du: zu dem Compiler mitteilen,dass ich ein PIC 16F690 , aber was 
wird mit der Adressierung und PIN sein?  wenn es nicht was du gemeint 
hast, kannst du mir noch bitte erklären?

Danke

von Helmut (Gast)


Angehängte Dateien:

Lesenswert?

Habe dir mal ein einfaches Beispiel aufgemalt, wie es mit einem Poti und 
einem Triac als Wechselspannungsschalter sein könnte:

Ein Poti an einen analogen Eingang angeschlossen (Wertebereich 0 bis 
1024) wird mit einem Zähler verglichen, dessen Takt kommt von einem 
Timer Taktfrequenz zB 10 µSekunden kommt.

In 10 milli-Sekunden können die 10 µ-Sekunden ungefähr 1000 mal gezählt 
werden.
Ideal um es mit dem Wert des analogen Einganges zu vergleichen.

Der Zähler wird durch den Nulldurchgang der Wechselspannung resettet.

Ist der Wert des Potis ungefähr halbe Stellung (ca 500 als ADC-Wert) 
wird der Vergleich dann positiv, wenn der Zählerwert (gespeist von einem 
Timer 10µs) auch >500 ist.

Dann bekommt der Triac Spannung und zündet = Spannung wird zu dem 
Verbraucher durchgeschaltet.

Abgeschaltet wird der Triac (genau wie ein Thyristor), wenn sein 
Haltestrom unterschritten wird.

Also im Nulldurchgang der Sinus-Wechselspannung.

von Joe B. (blackbery007)


Lesenswert?

danke,habe verstanden.

dh:was ich gefragt habe,ist allein von dem Pic nicht 
realisiertbart.Sollte ich den einfachen Dimmer Programmieren oder 
einfach dieses Beispiel,das oben gezeigt wird,für den PIC 16F690 
umschreiben?

danke

von Helmut (Gast)


Angehängte Dateien:

Lesenswert?

James Bond schrieb:
> dh:was ich gefragt habe,ist allein von dem Pic nicht
>
> realisiertbart.


Wieso sollte der PIC die oben gefordete Aufgabe nicht erfüllen können?

Der Zündwinkel von 90 Grad entspricht einer Zeit (bei 50Hz) von 5ms.

Das heißt, wenn du das Ansteuern des Triac um 5ms vezögerst, dann hast 
du den gleichen Effekt einer Ansteuerung mit einem Zündwinkel von 90 
Grad.

Rechnung: Sinus einer 50Hz Wechselspannung = 360 Grad = 20 ms = 1/50Hz

Traust du dir zu die Port Zuweisungen von einem vorhandenen Programm zu 
verändern?

Welchen Compiler benutzt du denn?

von Helmut (Gast)


Angehängte Dateien:

Lesenswert?

So könnte die Schaltung aussehen:

von Joe B. (blackbery007)


Lesenswert?

Helmut schrieb:
> James Bond schrieb:
>> dh:was ich gefragt habe,ist allein von dem Pic nicht
>>
>> realisiertbart.
>
>
> Wieso sollte der PIC die oben gefordete Aufgabe nicht erfüllen können?
>
> Der Zündwinkel von 90 Grad entspricht einer Zeit (bei 50Hz) von 5ms.
>
> Das heißt, wenn du das Ansteuern des Triac um 5ms vezögerst, dann hast
> du den gleichen Effekt einer Ansteuerung mit einem Zündwinkel von 90
> Grad.
>
> Rechnung: Sinus einer 50Hz Wechselspannung = 360 Grad = 20 ms = 1/50Hz
>
> Traust du dir zu die Port Zuweisungen von einem vorhandenen Programm zu
> verändern?

Doch traue ich mich die Port Zuweisungen von einem vorhandenen Programm 
zu verändern,natürlich wenn es nur darum geht,aber wenn ich noch 
umschreiben damit es auf dem PIC 16F690 lauft ,traue ich mich,weil ich 
schon ein paar versucht ahbe,den Compiler sagt immer "Build failed",und 
ich bin auch dabei zu lernen wie mann so was umschreiben,ob es nur die 
Port,um zu ändern oder gibt es noch was.


Dazu bin ich kein Ass in der Programmierung,aber irgendwann werde ich 
auch gut darauf haben,weil Programmierung mir gefällt und seit dem ich 
diese Aufgabe habe,es ist einfach fasziniert,was mann alles damit machen 
kann.
>
> Welchen Compiler benutzt du denn?

Ich benutze den Sofware MPLAB IDE V8.50 und den Compiler PICkit 2 ,um 
den Programm zu debuggen und zu schreiben.Ich habe den Complet Set von 
Microchip mit dem PIC 16F690 dabei zu hause und die Lampen sind schon 
angeschlossen, wenn ich was darauf probieren soll.

von Joe B. (blackbery007)


Lesenswert?

gibt es jemand der mir shcnell für diese programmierung helfen kann?Ihr 
seid meine letzen Hoffnung,sonst muss ich alles wieder nächste semester 
neue anfangen,und die gesamte Zeit,die ich schon verbracht mit der 
schaltung wird verschwinden sein.

Bitte ,Bitte Hilfe.

von Joe B. (blackbery007)


Angehängte Dateien:

Lesenswert?

Helmut schrieb:
> So könnte die Schaltung aussehen:

ich habe ein Programm gefunden der mit Assembler geschrieben ist,wollte 
wissen was meint ihr damit und ob es uns helfen kann und ob es schnell 
für den pic 16f690 umschreiben ist.
Danke

von Joe B. (blackbery007)


Angehängte Dateien:

Lesenswert?

diese AN958.zip ist ein PIC 10F206 als Triac in .asm programmiert,aber 
nicht auf dem PIC 16F690,weil ich mich nicht gut mit PIC und familie den 
PIC kenne,wollte wissen ,ob es möglich ist,es auf dem PIC 16F690 
umzuschreiben ist.

Danke

von Helmut (Gast)


Lesenswert?

Ohne jetzt eine Diskussion "erbrechen" zu wollen, schaue dich nur um:

Es gibt so viele Info`s, und du fragst so etwas.... Warum gibt es die 
10er, 12er, 16er, oder 18er Typenvielfalt?

http://www.sprut.de/electronic/pic/typen.htm

Wann mußt du abgeben oder vorstellen und könntest du es dann auch 
erklären was du dann abgibst?

von Joe B. (blackbery007)


Lesenswert?

Helmut schrieb:
> Ohne jetzt eine Diskussion "erbrechen" zu wollen, schaue dich nur um:
>
> Es gibt so viele Info`s, und du fragst so etwas.... Warum gibt es die
> 10er, 12er, 16er, oder 18er Typenvielfalt?
>
> http://www.sprut.de/electronic/pic/typen.htm
>
> Wann mußt du abgeben oder vorstellen und könntest du es dann auch
> erklären was du dann abgibst?

heute hat den Prof zu mir gesagt,dass ich nächste Termin Mittwoch was 
zeigen soll,was ich schon gemacht habe,sonst fliege ich raus.JA ich 
könnte erklären was ich da abgibt,wenn ich was habe,werde ich versucht 
zu verstehen ,damit ich erklären kann,ich setze seit 17 h vor dem 
Computer um was zu machen ,damit ich mindestens was am Mittwoch zeigen 
kann,aber leider ist mir es nciht einfahc ,weil ich mich nciht kenne.Ich 
versucht jetzt stück von einpaar Programm  mit Kommentar zu kopieren uun 
dbei mir was damit zu bastel ,hoffentlich kriege ich was für Mittwoch.

danke für den Link

von Joe B. (blackbery007)


Lesenswert?

hey Helmut,
hast du den ZIP datei dir angeschauet,was ich gepostet habe?

von Joe B. (blackbery007)


Lesenswert?

wie kann ich diese befehlt:

      #define     LED     GPIO,0


von dem PIC 10F206 für PIC 16F690.

Danke

von Joe B. (blackbery007)


Lesenswert?

warum fehlt immer bei Building ein Project mit dem Sofware MPLAB 
IDE,wenn den Source mit asm geschrieben ist ,den datei typ .OBJ,kann mir 
erklären wie ich amchen soll,damit kein fehler noch dazu kommt.


danke

von Helmut (Gast)


Lesenswert?


von Joe B. (blackbery007)


Lesenswert?

Danke


ich werde versuch etwas für morgen zu machen,
 mal schauen

 Danke für Ihr Hilfe

von Joe B. (blackbery007)


Angehängte Dateien:

Lesenswert?

Diese Programm war für  den Plc 10F206  und ich habe versuch es für den 
PIC 16F690 zu ändern, aber es lässt mein MPLAB IDE jede mal, wo ich 
compilieren will, hängen. kann man mir jemand helfen? Ich brauche es 
dringend.

 Danke Schön

von Joe B. (blackbery007)


Lesenswert?

Ich habe ein PB mit den Code
 # include <p16F690.inc>

 den Compiler fünd es nicht
 woran kann das PB liegen?
 Ich habe es mit den Triac. asm   , die ich oben geschrieben habe

 Danke für ihr hilfe

von Joe B. (blackbery007)


Lesenswert?

#include <p16F690.inc>        ; processor specific variable definitions

  errorlevel  -302              ; suppress message 302 from list file

     __CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & UNPROTECT \
  & BORDIS & IESODIS & FCMDIS);

; '__CONFIG' directive is used to embed configuration word within .asm 
file.
; The lables following the directive are located in the respective .inc 
file.
; See data sheet for additional information on configuration word 
settings.

;************************** VARIABLE DEFINITIONS 
******************************

      cblock  0x08
    OnCycles      ; number of cycles on per total cycles
              ;  1 half wave = 1 cycle
              ;  120 cycles per second (60Hz times 2)
    CycleCounter    ; cycle counter
    Toggler        ; used to detect transistion on zero cross
              ; this register "toggles" back and forth so that
              ;  a zero cross is detected
    DischargeTimer    ; counts the number of cycles it takes to 
discharge
              ;  the potentiometer RC circuit
    RAMTRIS        ; this is a baseline part so I have to create my
              ;  own tris register in RAM to keep track of my
              ;  input and output pins (very important!)
    AutoSDTimerL    ; counters for autoshutdown
    AutoSDTimerH
    AutoSDTimerZ
    Flag        ; contains misc flags
      endc

;*************************** DEFINE STATEMENTS 
********************************

;; pin definitions
#define  LED     TRISC,0
#define  POT   TRISA,0
#define  TRIAC  TRISC,3
#define  ZEROX   TRISC,2

;; masks for manipulating the POT and triac pins
#define  POT_OUTPUT    b'11111101'  ; and with this to make pot pin an 
output
#define POT_INPUT    b'00000010'  ; ior with this to make pot pin an 
input
#define  TRIAC_OUTPUT  b'11111011'  ; and with this to make triac pin an 
output
#define  TRIAC_INPUT    b'00000100'  ; ior with this to make triac pin 
an input

#define TOTALNUMCYCLES  .10
#define  SETPOINT1    .190
#define  SETPOINT2    .175
#define  SETPOINT3    .150
#define  SETPOINT4    .135
#define  SETPOINT5    .120
#define NUMONCYCLES1  .0
#define NUMONCYCLES2  .2
#define NUMONCYCLES3  .4
#define NUMONCYCLES4  .6
#define NUMONCYCLES5  .8
#define NUMONCYCLES6  .10

#define SHUTDOWNACTIVE  Flag,0
#define  POTSTATE    Flag,1

;****************************** START OF CODE 
*********************************
  org   0x00
  movlw  0x40   ;****** REMOVE THIS LINE FOR PRODUCTION ******
  movwf  OSCCAL    ; load the factory oscillator calibration value

;*********************************************************************** 
*******
; InitializeSFRs - Initialize Special Function Registers
;
;*********************************************************************** 
*******
InitializeSFRs
  movlw  b'01111000' ; turn on comparator
  movwf  CMCON0
  movlw  b'00001010'  ; Outputs: LED and Triac pins
  movwf  RAMTRIS
  tris  TRISC
  tris  TRISA
  clrf  TRISC,0    ; turn on LED and Triac
  clrf  TRISC,3
  movlw  b'01000100' ; 1:32TMR0 prescaler: 1E-6 x 256 x 32= 8.192ms, 
weak pullups disabled
  option

;*********************************************************************** 
*******
; InitializeVariables - Initialize Program Variables
;
;*********************************************************************** 
*******
InitializeVariables
  movlw  0x08      ; initialize Toggler to trigger on positive half-wave 
first
  movwf  Toggler
  movlw  0        ; number of cycles on out of total cycles (120 cycles 
per second)
  movwf  OnCycles
  clrf  CycleCounter  ; cycle counter
  clrf  AutoSDTimerL  ; Initialize Auto Shutdown Timer (set for 2 hours)
  clrf  AutoSDTimerH
  movlw  .13
  movwf  AutoSDTimerZ
  clrf  Flag

;*********************************************************************** 
*******
; Loop - Main program loop
;   - wait for zero cross pin to toggle
;  - check to see if triac should conduct during this half-cycle
;    * if it should conduct then pulse the gate of the triac
;  - if in the positive half-cycle, then call PotReadState0 to charge 
capacitor
;  - if in the negative half-cycle, then call PotReadState1 to time the 
discharge of the RC circuit
;
;*********************************************************************** 
*******
Loop
  clrwdt          ; clear Watch Dog Timer
  movf  TRISC2,w      ; mask ZEROX bit
  andlw  0x08
  xorwf  Toggler,w    ; check against toggler (did ZEROX make a 
transition?)
  btfss  STATUS,Z
  goto  Loop      ; no, then loop
  movlw  0x08      ; yes, then toggle toggler and move on
  xorwf  Toggler,f
  clrf  TMR0      ; clear the timer at zero cross
  movf  OnCycles,w    ; if this is an on cycle then turn on triac
  subwf  CycleCounter,w  ; otherwise leave triac off and continue
  btfsc  STATUS,C
  goto  EndLoop
  bsf    TRIAC      ; pulse Triac gate to turn it on

EndLoop
  incf  CycleCounter,f  ; increment cycle counter
  movlw  TOTALNUMCYCLES  ; if total cycles reached then clear cycle 
counter
  subwf  CycleCounter,w
  btfsc  STATUS,C
  clrf  CycleCounter
  btfss  POTSTATE
  goto  PotReadState0  ; charge capacitor in potentiometer read circuit
  btfsc  POTSTATE
  goto  PotReadState1  ; time decay of capacitor
  goto  Loop

;*********************************************************************** 
*******
; PotReadState0 - Charge the capacitor in the Potentiometer RC circuit
;  - turn off comparator
;  - charge Poteniometer RC capacitor
;  - turn off triac gate after 2ms
;  - toggle potentiometer read state
;
;*********************************************************************** 
*******
PotReadState0
  bcf   CMCON0,CMPON  ; turn off comparitor
  movf  RAMTRIS,w
  andlw  POT_OUTPUT    ; make POT pin an output
  movwf  RAMTRIS
  tris  TRISA,0
  tris  TRISC
  bsf    POT        ; charge cap
  bsf    POTSTATE    ; ready for next state
  clrf  DischargeTimer  ; initialize capacitor discharge timer

  clrwdt          ; clear Watch Dog Timer
  btfss  TMR0,6      ; wait 2ms and turn off triac
  goto  $-2
  bcf   TRIAC      ; turn off Triac Gate
  goto  CheckAutoShutDownTimer

;*********************************************************************** 
*******
; PotReadState0 - Release capacitor in potentiometer read circuit and 
measure
;          its decay time
;  - configure comparator for read
;  - turn off triac gate after 2ms
;  - check for comparator trip
;  - once tripped, save TMR0 value
;  - based on this value set the number of on cycles
;
;*********************************************************************** 
*******
PotReadState1
  bsf   CMCON0,CMPON  ; turn on comparator
  movf  RAMTRIS,w
  iorlw  POT_INPUT    ; make pot pin an input, RC circuit starts to 
discharge
  movwf  RAMTRIS
  tris  TRISA,0
  bcf   POTSTATE    ; ready for next state

  clrwdt          ; clear Watch Dog Timer
  btfss  TMR0,6      ; wait 2ms and turn off triac
  goto  $-2
  bcf   TRIAC      ; turn off Triac Gate

CheckForComparatorTrip
  clrwdt          ; clear Watch Dog Timer
  btfsc  CMCON0,CMPOUT
  goto  CheckForComparatorTrip
  movf  TMR0,w
  movwf  DischargeTimer

LookupTable
  movlw  SETPOINT1    ; check Discharge Time against first setpoint
  subwf  DischargeTimer,w
  btfss  STATUS,C
  goto  NextLookup1    ; if measured time is lower then goto next 
setpoint comparison
  movlw  NUMONCYCLES1  ; otherwise, set number of on cycles appropiately
  movwf  OnCycles
  bcf    LED        ; Turn off LED
  bcf    SHUTDOWNACTIVE  ; Reset SHUTDOWNACTIVE Flag if POT is turned to 
off
  clrf  AutoSDTimerL  ; Initial Auto Shutdown Timer when burner is off
  clrf  AutoSDTimerH
  movlw  .13
  movwf  AutoSDTimerZ
  goto  CheckAutoShutDownTimer
NextLookup1
  btfsc  SHUTDOWNACTIVE
  goto  CheckAutoShutDownTimer
  bsf    LED        ; Turn on LED
  movlw  SETPOINT2
  subwf  DischargeTimer,w
  btfss  STATUS,C
  goto  NextLookup2
  movlw  NUMONCYCLES2
  movwf  OnCycles
  goto  CheckAutoShutDownTimer
NextLookup2
  movlw  SETPOINT3
  subwf  DischargeTimer,w
  btfss  STATUS,C
  goto  NextLookup3
  movlw  NUMONCYCLES3
  movwf  OnCycles
  goto  CheckAutoShutDownTimer
NextLookup3
  movlw  SETPOINT4
  subwf  DischargeTimer,w
  btfss  STATUS,C
  goto  NextLookup4
  movlw  NUMONCYCLES4
  movwf  OnCycles
  goto  CheckAutoShutDownTimer
NextLookup4
  movlw  SETPOINT5
  subwf  DischargeTimer,w
  btfss  STATUS,C
  goto  NextLookup5
  movlw  NUMONCYCLES5
  movwf  OnCycles
  goto  CheckAutoShutDownTimer
NextLookup5
  movlw  NUMONCYCLES6
  movwf  OnCycles
  goto  CheckAutoShutDownTimer

;*********************************************************************** 
*******
; CheckAutoShutDownTimer - If the range has been on continuously for 2 
hours
;              then shut it off
;  - auto shutdown timer overflows at 1 hour 58min and 12sec
;  - when it overflows, turn off triac and LED
;  - will reset when user interrupts power or turns dial back to no 
cycles on
;    position
;*********************************************************************** 
*******
CheckAutoShutDownTimer
  incfsz  AutoSDTimerL,f
  goto  Loop
  incfsz  AutoSDTimerH,f
  goto  Loop
  decfsz  AutoSDTimerZ,f
  goto  Loop

AutoShutDownTripped
  bsf    SHUTDOWNACTIVE    ; set flag to indicate that auto-shutdown is 
active
  clrf  OnCycles      ; turn off triac and status LED
  bcf    LED
  goto  Loop

  END                         ; directive 'end of program'








IST DAS FÜR DEN PIC 16F690 RICHTIG?DEN INCLUDE DATEI UND DEN FILE TYP 
.OBJ IST NICHT VON DEM COMPILER ZU FINDEN.
wie kann ich es haben.danke

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Bei mir liegt die Include-datei hier:
C:\Programme\Microchip\MPASM Suite\P16F690.INC

Ich gehe davon aus, dass das bei den anderen MPLAB Installationen auch 
so ist.

Grüße,

Peter

von Helmut (Gast)


Lesenswert?

Solltest mal die 60 Hz gegen 50Hz tauschen, ob dann die anderen Zeiten 
(Cyclecounter)   stimmen?

Hast du denn ein Hex-File davon bekommen?

Wenn ja muß man wohl im Mlab anwählen, dass er OBJ erzeugt, kenne mich 
in Asm nicht aus.

von Joe B. (blackbery007)


Lesenswert?

Helmut schrieb:
> Solltest mal die 60 Hz gegen 50Hz tauschen, ob dann die anderen Zeiten
> (Cyclecounter)   stimmen?
>
> Hast du denn ein Hex-File davon bekommen?
>
> Wenn ja muß man wohl im Mlab anwählen, dass er OBJ erzeugt, kenne mich
> in Asm nicht aus.

leider hatte ich kein Hex-File davon bekommen.

von Joe B. (blackbery007)


Lesenswert?

Peter Diener schrieb:
> Bei mir liegt die Include-datei hier:
> C:\Programme\Microchip\MPASM Suite\P16F690.INC
>
> Ich gehe davon aus, dass das bei den anderen MPLAB Installationen auch
> so ist.
>
> Grüße,
>
> Peter

Danke, ich habe den file gefunden und in den Projekt dazu gemacht, 
trotzdem Kann es nicht geöffnet werden.

 Was Kann ich den wohl tun?


 Danke

von Helmut (Gast)


Lesenswert?

@alle
ich weiß, dass viele Leser über das Problem von 007 den Kopf schütteln.

Ich habe von ASM null Ahnung, mache meine Dinge mit Basic Compilern und 
mit dem leider eingestelltem Projekt "PARSIC".

Kann jemand James erläutern, wie er seinen ASM-Code mit MLAB 
konvertieren kann?

Ich habe es auch mal versucht, bin aber auch gescheitert.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

007 hat mehr Probleme, als er jetzt sieht.

1. Er versteht die Aufgabe nicht.

2. Er hat die Zeit für die Lösung vollkommen schleifen lassen.

3. Er hat keine Ahnung von uCs.

4. Ich befürchte auch, daß er keine Ahnung von Elektronik hat.

R.I.P. ...

von Joe B. (blackbery007)


Lesenswert?

ich entschuldige mich,wenn ich am anfang nicht zu euch gesagt habe,dass 
ich mich nicht mit uCs kenne und dass ich keine Ahnung mit 
Programmierung habe,dass es mein erste mal wo ich davon erfahren habe 
und gleichzeitig ,dass mir ein solche aufgabe gefragt ist.Kann sein,dass 
ich nicht gut verstanden was zu mir als Aufgabe ist,weil ich mich mit 
uCs nicht kenne.Und dazu ich weiß nciht wie lange ihr gehabt,um es zu 
lernen.Aber die Zeit habe ich nicht,weil ich auch anderen Praktika an 
der UNI habe und für den Gleiche Projekt habe ich nicht nur den 
Programmierung.D.h :ich versucht meine Zeit umzustellen,damit ich alles 
in Griff bekomme,naja obwohl ich neue mit PIC und sozusagen mit uCs 
bin,sollte ich irgendwie mit der zeit die ich habe es schaffen,wie werde 
ich es schaffen ,weiß ich noch nicht.und weil ich neue auf uCs bin,habe 
mich auf diese Forum angemeldet,weil ich denke dass ich hier Hilfe von 
leute finden werde,die schon erfahrung damit haben.

Ich danke Ihnen für Ihr Hilfe und für Ihr Verständnis.

von Peter K. (Firma: www.pic-microcontroller.de) (peter_k)


Lesenswert?

Was hälst du davon, wenn du dich schon nicht in µC auskennst,
mit einem kleinen Projekt an zu fangen ?
Da lernt man am meisten, den µC zu verstehen.
Wenn du keine Zeit dafür hast, dann ist es sowieso sinnlos,
da überhaupt ein zu steigen. µC zu verstehen braucht Zeit,
und das kann man nicht in ein paar Wochen lernen.

von Joe B. (blackbery007)


Lesenswert?

Peter K. schrieb:
> Was hälst du davon, wenn du dich schon nicht in µC auskennst,
> mit einem kleinen Projekt an zu fangen ?
> Da lernt man am meisten, den µC zu verstehen.
> Wenn du keine Zeit dafür hast, dann ist es sowieso sinnlos,
> da überhaupt ein zu steigen. µC zu verstehen braucht Zeit,
> und das kann man nicht in ein paar Wochen lernen.

Ja,dass war mir schon klar dass mann uC in ein paar Wochen lernen 
kann,dass mann ZEit dafür sich geben soll,wo ich es von den Prof und 
dafür angefang auf Internet was zu suchen.Aber ich habe mir gefragt,ob 
ich zu denn Prof sagen soll,dass ich kein Zeit dafür habe.Weil es ein 
Labor an der UNI ist.Und wo ich mich auf den Forum angemeldet 
habe,dachte ich für erfahrene,würde es einfach sein ,oder dass ich was 
auf interne finden kann,der fast fertig ist,aber danach auch mit 
fastfertig ist ,ist auch nciht einfach so möglich auf sien PIc 
einzusetzen ,wenn mann denn uCs nicht kenne.Ich habe mir einfahc alles 
möglich ausgesuch,ich hatte auch den Sofware Flowcode für PIC,dachte 
wäre einfahc für mich damit,leider ist auch nciht einfach.Leider kann 
ich nciht aufgeben,weil ich es brauche,um den LAbor zu bestehen.


Als Klein Projekt hatte ich mit "Hallo Word" angefang,aber kamm kein 
LIcht auf mein Platine ,wo ich den PIC zu testen montieren habe.Dann 
habe ich auch versuch die beispiel,von PIC zu schauen,leider konnte ich 
bei mir die beispiel nicht öffnen,weil die verschlüssel sind. NAja ihc 
suhce immer weiter,eine Lösung zu finden,weil ich es brauche.

danke

von Joe B. (blackbery007)


Lesenswert?

Kann mir jemand bitte sagen ob ich diese Config: _BODEN_OFF & _LVP_OFF 
von PIC 16F876 mit   _CP_OFF & _CPD_OFF für PIC 16F690

Danke

von Jean (Gast)


Lesenswert?

ist möglich ein PIC auf einem WechselNetz anzuschliessen und den signal 
den Netzt zu steueren? Wenn ja,wie?

danke

von 2gast (Gast)


Lesenswert?

Wenn du der Deutschensprache nicht mächtig bist,
dann schreib doch in Englisch. Wenn du das besser kannst.
Ich versteh nämlich nur Bahnhof. Sorry........

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.