Pic 12f629 och wisp628....

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Pic 12f629 och wisp628....

Inlägg 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.
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Re: Pic 12f629 och wisp628....

Inlägg av RRacer »

Har du en pull-up på MCLR?
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg 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.
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Inlägg av RRacer »

Låter som ett logiskt fel i koden...
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg 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
}
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg 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.
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg av gvs »

Ska ta och rita ett...
Tycker bara det är märkligt att det funkar med programemraren inkopplad...

BILD:

Bild

Har till exempel lite dåligt med kondingar kring 78L05....
Senast redigerad av gvs 8 januari 2006, 12:35:28, redigerad totalt 2 gånger.
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg 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).
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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 ?
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Skriv svar