Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   1149 / 1210
(#) tigris127 hozzászólása Feb 5, 2021 /
 
a pineket már leellenőriztem korábban, az rendben van.
Viszont amit furcsállok, hogy a Vss Vdd között csak 1,05V mérhető
A hozzászólás módosítva: Feb 5, 2021
(#) Hp41C válasza tigris127 hozzászólására (») Feb 7, 2021 /
 
MpLabX -en keresztül programozod? Lehet, hogy úgy működik, mint az IPE?
Az IPE nem alapértelmezésben nem ad Vdd tápot a kontrollernek. A menüben be kell állítani, hogy szolgáltassa. (Egy egész násztánc - nem tárolja le - minden esetben újra el kell járni.)
Másrészt, ha 5.00V -ot állítasz be programozási feszültségnek, a visszamért Vdd feszültség alacsonyabb lesz, mint amit a program tolerál. Próbáld 4.75V -on.
(#) aroxol hozzászólása Feb 9, 2021 /
 
Sziasztok!

Pic18-al szeretnék készíteni egy programból állítható DC tápegységet. A bemeneti tápfeszültség 14Vdc, kimenet 0-12Vcd lenne. Áram a lehető legkisebb 10K terhelés esetén nem változzon a feszültség. Van valakinek ötlete a megvalósításra? Programozás nem gond, csak a hardver nem áll össze.
(#) Bakman válasza aroxol hozzászólására (») Feb 9, 2021 /
 
PWM kimenet, RC tag, műveleti erősítő. LM324-gyel viszonylag jól le lehet menni a nulla közelébe.
(#) aroxol válasza Bakman hozzászólására (») Feb 9, 2021 /
 
Van esetleg egy sematikus rajzod? Fontos lenne a kimenet tejesen DC legyen.
A hozzászólás módosítva: Feb 9, 2021
(#) Bakman válasza aroxol hozzászólására (») Feb 9, 2021 /
 
Mit jelent a "teljesen"? Milyen felbontásra van szükséged?
(#) aroxol válasza Bakman hozzászólására (») Feb 9, 2021 /
 
Mi az a felbontás?

Lehetőleg ne legyen frekvencia.
(#) bbalazs_ válasza aroxol hozzászólására (») Feb 9, 2021 /
 
Hogy mekkora lépésekben szeretnél fel-le menni. Mondjuk ha 0.05V a felbontás, akkor ennek többszörösét tudod csak beállítani.
Valamekkora hullámosság PWM esetén biztosan lesz.
Ha tényleg csak pár mA kell, akkor elgondolkodhatsz áteresztőtápos megoldáson is, de ott a teljes feszültségcsökkenés a tranyót fogja fűteni. Itt nagyon kicsi lesz a hullámosság.
(#) aroxol válasza bbalazs_ hozzászólására (») Feb 9, 2021 /
 
A 0.05V lépések úgy gondolom elég lenne.

Rákerestem az áteresztőtápra de ezt hogy tudom Pic-el szabályozni?
(#) bbalazs_ válasza aroxol hozzászólására (») Feb 9, 2021 /
 
digitális potméterrel pl.
(#) Pali79 válasza bbalazs_ hozzászólására (») Feb 10, 2021 /
 
Egy nagyobb feszültséget is elviselő digitális potméterrel simán megoldható a feszültség osztó is, nem?
(#) djadji hozzászólása Feb 10, 2021 /
 
Sziasztok! szeretnék készíteni egy olyan eszközt, ami félóránként méri a hómérsékletet és a páratartalmat. Ez eddig megvan, siket megcsinálni Ezzel a szenzorral.
A gondom az, hogy szeretném ha ezt a mérést végezné 1-2-5 napig (vagy 2 hétig is akár) és utána ezekhez az adatokhoz hozzá tudnék jutni. Memóriát kapcsolni a PIChez? Amit PCvel lehetne kiolvasni? Vagy valami kijelzőt rá, amire kiiírhatná sorban és fel lehet jegyezni?
Van valakinek ilyesmivel tapasztalata, melyik a jól használható megoldás?
(#) lóri válasza djadji hozzászólására (») Feb 10, 2021 /
 
Szia! Kijelzőről félóránként lejegyezni nehézkes. Én sd kártyát használnék, majd pc-ről kiolvasnám.
Ettől függetlenül memóriát érdemes mellérakni.
(#) djadji válasza lóri hozzászólására (») Feb 10, 2021 /
 
SD kártya.. nem is jutott eszembe. Köszi!
Viszont akkor minek mellé a memória? (még küldő memóriát se használtam soha) Minden félórában lefut a folyamat, a mérés eredményét SD-re írja egy dátummal és időponttal. Ehhez a PIC belső memóriáját használnám. Vagy valami más oka is a külső memóriának?
(#) lóri válasza djadji hozzászólására (») Feb 10, 2021 /
 
Valójában nem értek hozzá, de a hex-es Józsi mondta, hogy érdemes külső memóriát használni. 1Megás 500 Forintocska és nem is foglal sok helyet. Én mindenhova rakok, plusz rtc-t.
(#) nedudgi válasza djadji hozzászólására (») Feb 10, 2021 / 1
 
A PIC belső memóriája néha korlátozott számú írást visel el, ha elkopik, a PIC megy a levese. Külső memória esetén olcsóbb a csere.
(#) djadji válasza nedudgi hozzászólására (») Feb 10, 2021 /
 
Köszi. Erre még sose gondoltam.
Esetleg egy konkrét memórát tudnátok ajánlani? Mivel sose használtam, legalább lenne egy kiindulási eszközöm.
És köszönöm a tippeket.
(#) lóri válasza djadji hozzászólására (») Feb 10, 2021 /
 
Én 24LC1025-öt használok, de ez nem mérvadó.
(#) Lamprologus válasza djadji hozzászólására (») Feb 10, 2021 /
 
1. Ha kijlező, akkor Nextion ... jó sok adatot meg tud jeleníteni, grafikonokat tud létrehozni, érintős ...

2. Ha Rx-Tx lábavan a PIC-nek akkor egy USB-RS232 adapterrel soros adatátvitel...

3. Ha tud USB-t a PIC akkor meg azon átküldeni PC-re az adatokat
A hozzászólás módosítva: Feb 10, 2021
(#) glaci hozzászólása Feb 10, 2021 /
 
Sziasztok!
DS18B20-al mérnék hőmérsékletet, de 000.0000 értéket mutat. Mikroc-ben programozok PIC16F887-t.
A library-ban levő példaprogrammal próbálnám megszólaltatni, de nem akar a 0-án kívül semmit sem mutatni.

  1. //  Set TEMP_RESOLUTION to the corresponding resolution of used DS18x20 sensor:
  2. //  18S20: 9  (default setting; can be 9,10,11,or 12)
  3. //  18B20: 12
  4. const unsigned short TEMP_RESOLUTION = 12;
  5.  
  6. char *text = "000.0000";
  7. unsigned temp;
  8.  
  9. void Display_Temperature(unsigned int temp2write) {
  10.   const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
  11.   char temp_whole;
  12.   unsigned int temp_fraction;
  13.  
  14.   // Check if temperature is negative
  15.   if (temp2write & 0x8000) {
  16.      text[0] = '-';
  17.      temp2write = ~temp2write + 1;
  18.      }
  19.  
  20.   // Extract temp_whole
  21.   temp_whole = temp2write >> RES_SHIFT ;
  22.  
  23.   // Convert temp_whole to characters
  24.   if (temp_whole/100)
  25.      text[0] = temp_whole/100  + 48;
  26.   else
  27.      text[0] = '0';
  28.  
  29.   text[1] = (temp_whole/10)%10 + 48;             // Extract tens digit
  30.   text[2] =  temp_whole%10     + 48;             // Extract ones digit
  31.  
  32.   // Extract temp_fraction and convert it to unsigned int
  33.   temp_fraction  = temp2write << (4-RES_SHIFT);
  34.   temp_fraction &= 0x000F;
  35.   temp_fraction *= 625;
  36.  
  37.   // Convert temp_fraction to characters
  38.   text[4] =  temp_fraction/1000    + 48;         // Extract thousands digit
  39.   text[5] = (temp_fraction/100)%10 + 48;         // Extract hundreds digit
  40.   text[6] = (temp_fraction/10)%10  + 48;         // Extract tens digit
  41.   text[7] =  temp_fraction%10      + 48;         // Extract ones digit
  42.  
  43.   // Print temperature on LCD
  44.   Lcd_Out(2, 5, text);
  45. }
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53. void main()
  54. {
  55.  
  56.   ANSEL  = 0;                        // Configure AN pins as digital I/O
  57.   ANSELH = 0;
  58.   C1ON_bit = 0;                      // Disable comparators
  59.   C2ON_bit = 0;
  60.    InitTimer0();
  61.    //megszakítások
  62.    szamlal=0; figyel=0; sek=0;  //perc=0;  ora=0;
  63.    TRISA=0b00111110;                //1,2 portok vízszint bemenetek
  64.    TRISB=1;                //csapok záró-nyitó  kimenetei nyomó gombok bemenetei
  65.    TRISC=0b00001100;                    //kimenetek
  66.    TRISD=0b00000000;
  67.  
  68.    TRISE.RE2=1;
  69.  
  70.    INTCON.RBIE=1;
  71.    INTCON.RBIF=0;
  72.    IOCB=0b11111111;
  73.     INTCON.GIE = 1;
  74.  
  75.   Lcd_Init();                        // Initialize LCD
  76.   Lcd_Cmd(_LCD_CLEAR);               // Clear display
  77.   Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  78.  
  79.  
  80.  ////////////////////////
  81.                
  82.   while(1)
  83.   {
  84.  
  85.  
  86.  ///////////////////////////////   //
  87.  
  88.     //--- Perform temperature reading
  89.     Ow_Reset(&PORTE, 2);                         // Onewire reset signal
  90.     Ow_Write(&PORTE, 2, 0xCC);                   // Issue command SKIP_ROM
  91.     Ow_Write(&PORTE, 2, 0x44);                   // Issue command CONVERT_T
  92.     Delay_ms(1000);
  93.  
  94.     Ow_Reset(&PORTE, 2);
  95.     Ow_Write(&PORTE, 2, 0xCC);                   // Issue command SKIP_ROM
  96.     Ow_Write(&PORTE, 2, 0xBE);                   // Issue command READ_SCRATCHPAD
  97.      Delay_us(120);
  98.     temp =  Ow_Read(&PORTE, 2);
  99.     temp = (Ow_Read(&PORTE, 2) << 8) + temp;
  100.  
  101.     //--- Format and display result on Lcd
  102.     Display_Temperature(temp);
  103.  
  104.     Delay_ms(500);
  105.  
  106.  
  107.  ///////////////////////////////    ////////////////////
  108.  
  109.      
  110.   }
  111. }



Mi a nem működés oka?
A hozzászólás módosítva: Feb 10, 2021
(#) Bakman válasza glaci hozzászólására (») Feb 10, 2021 /
 
Több oka lehet, a kiderítésében sokat tud segíteni egy logikai analizátor. Pl. nincs/nem jó a felhúzó ellenállás, nem jó a kontroller órajele, nem jó az IC stb.

A kódból nem derül ki. Mekkora órajellel járatod a PIC-et? A viszonlyag szűkös időkeretek miatt érdemes nagyobb órajellel hajtani a kontrollert, legalább a teszt erejéig. A belső, maximum 8 MHz még kevés is lehet, attól függően, hogy a 1-Wire kód mennyire vagy mennyire nem optimalizált.
(#) glaci válasza Bakman hozzászólására (») Feb 10, 2021 /
 
Szia!
Az oszcillátor belső és 8 MHz. Lehet meg kéne emelni?
(#) glaci válasza glaci hozzászólására (») Feb 10, 2021 /
 
A mikroe javaslata szerint az oszcillátor frekvenciának legalább 4MHz-nek kell lenni.
(#) glaci válasza glaci hozzászólására (») Feb 11, 2021 /
 
Szóval: 8MHz belső oszcillátor, a PORTE.RE2 láb az onewire bemenet. A DS18B20 szonda jó, más hőmérőben működik, a PORTE.RE2 láb vezérelhető. A PIC16F887 példa programjával nem és nem akar működni.
(#) Bakman válasza glaci hozzászólására (») Feb 11, 2021 /
 
Logikai analizátorral kell megnézni az adatvonalat, anélkül csak tippelgetni lehet. Azzal azonnal látszik, hol a hiba. Nincs vezérelve a láb vagy hibás időzítések vannak stb.
(#) nedudgi válasza glaci hozzászólására (») Feb 11, 2021 /
 
Felhúzóellenállás mekkora?
(#) glaci válasza nedudgi hozzászólására (») Feb 11, 2021 /
 
Szia! 4,7K.
(#) glaci válasza Bakman hozzászólására (») Feb 11, 2021 /
 
Szia! Nekem olyan nincs.Ez jó lehet?
(#) Bakman válasza glaci hozzászólására (») Feb 11, 2021 /
 
Igen, használok ilyet.
(#) tigris127 hozzászólása Feb 12, 2021 /
 
Sziasztok PIC16F1827 helyettesíthető?
Következő: »»   1149 / 1210
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem