Sida 1 av 1
Pic 12f629 och wisp628....
Postat: 8 januari 2006, 11:28:57
av gvs
Jag har fortfarande problem med västduschen som jag skrev om en annan tråd. Jag hävdade ju att problemet var löst, för det var det verkligen. Jag hade testat under lång tid. Funktionen är som följer. Då man startar upp systemet ( slår på strömmen) går en pump igång under 2 sekunder. Sen är det en paus på 15 minuter. Sen startar pumpen igen i två sekunder och så loopar den så. Detta funkar bra så länge som programmeraren än amskuten till Picen!!! Då jag kopplar bort programemraren fungerar inget.
Programmeraren fungerar perfekt så det är inte troligt att jag har gjort något udda där.
Re: Pic 12f629 och wisp628....
Postat: 8 januari 2006, 11:34:36
av RRacer
Har du en pull-up på MCLR?
Postat: 8 januari 2006, 11:38:03
av gvs
Jupp...
Kanske uttryckte mig lite konstigt...
Den funkar delvis om programmeraren inte är inkopplad. Pumpen startar som den ska och går i två sekunder men sen startar den inte igen...
Kan även meddela att om jag har separat matning till picen så funkar det bra.
Postat: 8 januari 2006, 11:44:22
av RRacer
Låter som ett logiskt fel i koden...
Postat: 8 januari 2006, 11:52:26
av gvs
Jupp em nvar?
Kod: Markera allt
int tid = 0;
int i = 0;
int foo;
void main() {
CMCON = 0xff; // turn comparators of (digital in/out)
OPTION_REG = 0x7f; // Global weak pullup enableled
WPU = 0xff; // weak pull up
TRISIO = 001111; // 0,1,2 = in 4,5 = ut
foo = (GPIO & 0x07); // masking out some bits needed?
if (foo == 0x7) tid = 15;
else if (foo == 0x6) tid = 30;
else if (foo == 0x5) tid = 60;
else if (foo == 0x4) tid = 120;
else if (foo == 0x3) tid = 180;
else if (foo == 0x2) tid = 320;
else if (foo == 0x1) tid = 480;
else if (foo == 0x0) tid = 720;
do { // beginning of a repeat loop
GPIO.F4 = 1; // turn ON pump on gpio
Delay_ms(2200); // wait for 2 seconds
GPIO.F4 = 0; // turn OFF pump
for(i=0; i<(tid*2); i++){ // Wait the number of minutes set in "tid"
Delay_ms(29000); // wait for 29 seconds
}
} while(1); // endless loop
}
Postat: 8 januari 2006, 12:01:46
av Chribbe76
Du har säkert inget fel i koden.
Att använda motorer är alltid lite våldsamt.
Du behöver mer skydd till picen helt enkelt.
Jag antar att du använder $tiff's lösning men den är alltså inte tillräcklig.
Ett schema på hela patrasket skulle underlätta.
Postat: 8 januari 2006, 12:07:44
av gvs
Ska ta och rita ett...
Tycker bara det är märkligt att det funkar med programemraren inkopplad...
BILD:
Har till exempel lite dåligt med kondingar kring 78L05....
Postat: 8 januari 2006, 12:24:37
av Chribbe76
Det är kanske inte så märkligt för programmeraren har säkert bra skydd som "smittar av sig" på din krets(det kan vara så enkelt som extra kondingar).
Postat: 8 januari 2006, 13:03:27
av sodjan
Du har ju ingen avkoppling alls efter stabben !!
Jag skulle sätta dit en elyt (10-100 uF kanske) och en 100nF ker eller polyster.
Du säger att "om jag har separat matning till picen så funkar det bra.".
Alltså något problem med spänningsmatningen. Leta fel i koden kan amn göra senare...
Diu säger först att "Då jag kopplar bort programemraren fungerar inget."
Sedan "Den funkar delvis om programmeraren inte är inkopplad."
Ren generellt skulle det underlätta om du håller dig till *en* version...
Sen skulle jag sätta en liten resistor mellan PICen och gaten på IRF540.
Gaten är kapacitiv, och på en power mosfet kan de bli en betydande
strömstöt vid omslag, du bör begränsa det till de 20mA som är
specade för PIC pinnarna, t.ex med 100 ohm.
Vad har R1 för funktion ?
Sätter du inte upp konfigen i källkoden ?
Postat: 8 januari 2006, 13:10:20
av gvs
Efter att ha undersökt programmeraren så ser jag att det sitter en konding på 22uF mellan matning och jord. Testar just nu med att inte ha programmeraren inkopplad, men istället en konding där, då löser jag problemet med att jag inte har någon avkoppling kring stabben.
Angående tvetydigheten hurvida det fungerar eller inte så är det så att den startar och kör på som den ska MINST tills pumpen stänger av, men inte till den ska starta igen.
En resistor på gaten kan vara en bra idé.
R1 sitter där för att dra upp minförbrukningen över det lägsta som stabben är specad för, verkar inte behövas.
Konfigen sätter jag i MikroC, så den syns inte i c-koden.
Postat: 8 januari 2006, 13:44:21
av sodjan
> Konfigen sätter jag i MikroC, så den syns inte i c-koden.
OK, jag tolkar det som att det inte *GÅR* att ha den i källkoden,
vilket naturligtsivs är att föredra...