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   944 / 1210
(#) kriszrap válasza Hp41C hozzászólására (») Máj 4, 2017 /
 
Idézet:
„Hány ilyen kimenetet vezérel a PIC?”

5db-ot
Idézet:
„A tranzisztor a LED -ek közös katódját kacsolja földre? - NPN tranzisztor kell.”

Akkor már értem NPN kell oda...
(#) dani555 hozzászólása Máj 5, 2017 /
 
Sziasztok!

Lenne egy problémám. 887-es pic-cel építettem egy hőmérsékletmérő áramkört, ahol egy potenciométerrel lehet 0 tol 100 ig beállítani a hőfokot, és ha a hőmérséklet eléri a beállított értéket, vagy fölé megy, akkor elalszik egy led, ha újra alámegy a beállított értéknek, akkor megint ég. Az egész folyamat lcd kijelzőn van megjelenítve, az érzékelő ic egy lm35dz típusú.Tulajdonképpen működik is szépen,csak szerintem kicsit bug-os a dolog, a valós értéknél szabad levegőn, (rendes borszseszes hőmérővel bemérve) mindig kicsit többet mutat, ráadásul mintha lenne egy bemelegedése, pl 21 fok van a szobában, bekapcsoláskor rögtön 23 at, majd nemsokára 24 et mutat, majd szép lassan 25 öt. Ráadásul mintha függne az a potméter tekergetésétől is a cucc kismértékben, ha pl 24 et mér, és a potival 25 fokra éllítom, akkor felvált 25 re majd oszcillál 24 és 25 között egy darabig. Lehetséges, hogy a szenzor rossz? Meg azt sem értem, h hogyan függhet egymástól a mikrokontroller 2 analóg bemenete..... (ano, és an2)

Szóval tapasztalt valaki már hasonlót? Iszonyú zavaró a dolog, megköszönném, ha valaki segítene. Itt a programkód, hátha abban van a hiba:

  1. sbit LCD_RS at RC3_bit;
  2.      sbit LCD_EN at RD1_bit;
  3.      sbit LCD_D7 at RD5_bit;
  4.      sbit LCD_D6 at RD4_bit;
  5.      sbit LCD_D5 at RC7_bit;
  6.      sbit LCD_D4 at RC6_bit;
  7.  
  8.  
  9.      sbit LCD_RS_Direction at TRISC3_bit;
  10.      sbit LCD_EN_Direction at TRISD1_bit;
  11.      sbit LCD_D7_Direction at TRISD5_bit;
  12.      sbit LCD_D6_Direction at TRISD4_bit;
  13.      sbit LCD_D5_Direction at TRISC7_bit;
  14.      sbit LCD_D4_Direction at TRISC6_bit;
  15.  
  16. int temp;
  17. int vartemp;
  18. char t[7];
  19. char vt[7];
  20.  
  21. void main()
  22. {
  23.       TRISA.F1 = 0;                      //zöld led, "tápfesz."
  24.       PORTA.F1 = 1;
  25.      
  26.       TRISA.RA0 = 1;                     //10kOhm potenciométer
  27.       TRISA.RA2 = 1;                     //LM35DZ hőmérs. érzékelő IC
  28.      
  29.      
  30.      
  31.      
  32.      
  33.       TRISC.F2 = 0;                      //narancssárga led
  34.       PORTC.F2 = 0;
  35.      
  36.       TRISC.F5 = 0;                      //LCD: D0..3 földrekötve...
  37.       PORTC.F5 = 0;
  38.       TRISC.F4 = 0;
  39.       PORTC.F4 = 0;
  40.       TRISD.F3 = 0;
  41.       PORTD.F3 = 0;
  42.       TRISD.F2 = 0;
  43.       PORTD.F2 = 0;
  44.      
  45.      
  46.       ADC_Init();
  47.       Lcd_Init();                      
  48.       Lcd_Cmd(_LCD_CLEAR);              
  49.       Lcd_Cmd(_LCD_CURSOR_OFF);        
  50.       Lcd_Out(1,1,"Homerseklet:");
  51.      
  52.       Lcd_Chr(2,7,0xdf);                 //df hexa a jó!!!
  53.       Lcd_Out(2,8,"C");
  54.      
  55.       Lcd_Chr(2,15,0xdf);                //df hexa a jó!!!
  56.       Lcd_Out(2,16,"C");
  57.      
  58.       while(1)
  59.       {
  60.               temp = adc_read(2);
  61.               vartemp = adc_read(0);
  62.               vartemp = vartemp/10.23;
  63.               temp = temp*0.488;         //-5??????
  64.  
  65.  
  66.               if(temp < vartemp)
  67.               {
  68.                    PORTC.F2 = 1;
  69.               }
  70.               else
  71.               {
  72.                    PORTC.F2 = 0;
  73.               }
  74.  
  75.              
  76.              
  77.               inttostr(temp,t);
  78.               inttostr(vartemp,vt);
  79.               Lcd_Out(2,1,t);
  80.               Lcd_Out(2,9,vt);
  81.               delay_ms(500);
  82.       }
  83. }


Nagyon köszönöm előre is a segítségeteket!
(#) Elektro.on válasza dani555 hozzászólására (») Máj 5, 2017 /
 
Szia!
Több helyen olvastram már, hogy sajnos függ egymástól. Egy A/D konverter van hozzárendelve több bemenethez. Ahogy néztem a PIC rajzát van egy kis kondi amit feltölt a mérendő értékkel és ezt méri utána. És az általad választott LM35DZ analóg kimenetet ad. Azt is el tudom képzelni, hogy nem stabil a tápja. Javasolnék egy megoldást (csak próbára) . Az LM35 nek saját stabil táplálást adj, Ne a PIC 5V -ját. A PIC nél az A/D konverziónál szintén ne a saját tápja legyen a referencia, hanem vagy belső vagy külső, de a PIC terhelésétől független stabil feszültség kellene. Az egymásra hatással lévő A/D konverterre meg azt a próbát javasolnám,
1- Kiicsit ritkábban végezz A/D konverziót. Bár a tiéd ha jól nézem nem túl sűrű.
2 - A poti és az LM35 mérése közt végezz el egy "referencia" mérést egy 3. A/D bemeneten , ami szintén egy állandó stabil feszültség legyen. ( Arra gondolok, hogy az A/D fokozatban a kondin van valami maradék feszültség, és ezt így a mérések közt mindig azonosra állítanánk be. De nem biztos, hogy ebben igazam van, csak tipp.)
3- A mért értéket matematikailag átlagold.
A hozzászólás módosítva: Máj 5, 2017
(#) kissi válasza dani555 hozzászólására (») Máj 5, 2017 /
 
Szia!

Ha két csatornán mérsz, akkor a váltások után várni kell egy bizonyos időt, hogy az új csatorna jelére töltődjön a mintavevő kondi ( adatlap !), különben pontosan az lesz, amit írsz: "áthallás" !
(#) Hp41C válasza dani555 hozzászólására (») Máj 5, 2017 / 1
 
Megint "idegesítő" leszek...
Mit csinál a adc_read(0) eljárás?
A mérendő csatorna kiválasztása után várakozni kellene a mintavevő kapacitás feltöltődésére mielőtt az A/D átalakítót indítaná. Az, hogy a csatornák egymásra hatnak, azt sugallja, hogy nem vár eleget.
Írj két adc_read(0); -t, köztük egy kis várakozással. Csak a második eredményét használd fe. Ugyanígy kezeld a adc_read(2); -t is.
(#) Droot válasza dani555 hozzászólására (») Máj 5, 2017 /
 
Amit a többiek leírtak az helyes. De soha nem mérünk így! Az a csoda hogy csak egy kicsit ugrál! Persze ha tized fok pontosan számolnál, akkor jobban látnád az ugrálást.
Mindig úgy kell mérni hogy mérsz pl 12-t, (mondjuk 50ms-onként) a legkisebb és legnagyobb értéket eldobod a többit meg átlagolod.

A 62-63 sorban nem ártana cast-olni!

A LED kapcsolásához jó lenne egy hiszterézis, higy ne kerülhessen olyan állapotba, hogy oszcillál.
(#) Barkóca válasza Hp41C hozzászólására (») Máj 5, 2017 /
 
Nem tudom ti hogy vagytok ezzel,de amikor Hp41C ennyire" idegesìtő " bìr lenni valahogy nem tudok ideges lenni.Hmm,hogy lehet?Lehet velem van valami baj?
(#) dani555 hozzászólása Máj 5, 2017 /
 
Kísérletképpen megcsináltam két nyomógombosra. Egyik fel, másik le a hőmérséklettel. A hőmérsékletet továbbra is rendben mutatja, de a nyomógombos megoldásra -1 et ír ki. xD
Nem látjátok hol csesztem el?

  1. int temp;
  2. int vartemp;
  3. char t[7];
  4. char vt[7];
  5.  
  6. void main()
  7. {
  8.       TRISA.F1 = 0;                      //zöld led, "tápfesz."
  9.       PORTA.F1 = 1;
  10.      
  11.       TRISA.RA2 = 1;                     //LM35DZ hőmérs. érzékelő IC
  12.      
  13.       TRISB.F5 = 0;                      //narancssárga led
  14.       PORTB.F5 = 0;
  15.      
  16.       TRISD.F0 = 1;                      //nyomógomb FEL
  17.       TRISA.F0 = 1;                      //NYOMÓGOMB LE
  18.  
  19.       TRISC.F2 = 0;                      //TRIAC+narancssárga led
  20.       PORTC.F2 = 0;
  21.      
  22.       TRISC.F5 = 0;                      //LCD: D0..3 földrekötve...
  23.       PORTC.F5 = 0;
  24.       TRISC.F4 = 0;
  25.       PORTC.F4 = 0;
  26.       TRISD.F3 = 0;
  27.       PORTD.F3 = 0;
  28.       TRISD.F2 = 0;
  29.       PORTD.F2 = 0;
  30.      
  31.      
  32.       ADC_Init();
  33.       Lcd_Init();                        // Initialize LCD
  34.       Lcd_Cmd(_LCD_CLEAR);               // Clear display
  35.       Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  36.       Lcd_Out(1,1,"Homerseklet:");
  37.      
  38.       Lcd_Chr(2,7,0xdf);                 //df hexa a jó!!!
  39.       Lcd_Out(2,8,"C");
  40.      
  41.       Lcd_Chr(2,15,0xdf);                //df hexa a jó!!!
  42.       Lcd_Out(2,16,"C");
  43.      
  44.       vartemp = 0;
  45.      
  46.       while(1)
  47.       {
  48.               temp = adc_read(2);
  49.               delay_ms(50);
  50.               temp = adc_read(2);
  51.               temp = temp*0.488;
  52.              
  53.               if((PORTD.F0 == 0) && (vartemp <= 100))
  54.               {
  55.                     delay_ms(50);
  56.                     if(PORTD.F0 == 0)
  57.                     {
  58.                        vartemp = vartemp + 1;
  59.                     }
  60.               }
  61.              
  62.               if((PORTA.F0 == 0) && (vartemp >= 0))
  63.               {
  64.                     delay_ms(50);
  65.                     if(PORTA.F0 == 0)
  66.                     {
  67.                        vartemp = vartemp - 1;
  68.                     }
  69.               }
  70.  
  71.  
  72.               if(temp < vartemp)
  73.               {
  74.                    PORTC.F2 = 1;
  75.               }
  76.               else
  77.               {
  78.                    PORTC.F2 = 0;
  79.               }
  80.  
  81.              
  82.              
  83.               inttostr(temp,t);
  84.               inttostr(vartemp,vt);
  85.               Lcd_Out(2,1,t);
  86.               Lcd_Out(2,9,vt);
  87.               delay_ms(500);
  88.       }
  89. }
(#) dani555 válasza dani555 hozzászólására (») Máj 5, 2017 /
 
Pedig elvben csak egy sima számlálót valósítottam meg gombnyomásra....
(#) dani555 válasza dani555 hozzászólására (») Máj 5, 2017 /
 
Probléma megoldva, de nem tudom miért van ez így: Átkötöttem a c1 lábra és az átírás után tökéletesen működik

Tényleg miért?
(#) pajti2 hozzászólása Máj 5, 2017 /
 
Kicsit off a téma.

Levegőben kellene forrasztani 0.95 mm távolságú lábakat (sot23-6-os tok), és rögzíteni forrsávos próbapanelre (vagy forrpöttyösre), ami normál 2.54 mm-es. Van ilyesmire kitalálva valami nagyon praktikus okosság?

Nézegettem breakout bordokat is sot23-6-os tokozáshoz, de a holdról kell berendelni,
és a posta egészen mulátságos pénzekbe kerülne. Magyarországi viszonteladónál nem találtam a termékből.

Ha valaki házipraktikázott már ilyesmit, örülnék bármilyen tanácsnak.
(#) nedudgi válasza pajti2 hozzászólására (») Máj 5, 2017 /
 
Tavaly a ChipCad-nél láttam hasonlókat.
(#) Lamprologus válasza pajti2 hozzászólására (») Máj 5, 2017 /
 
Ha van időd kivárni míg ideér: Akkor innen rendelhetsz!

Ha sürgős, akkor kérj meg valakit innen a fórumról, aki szokott nyákot gyártani, és megcsinálja Neked!
(#) pajti2 válasza Lamprologus hozzászólására (») Máj 6, 2017 /
 
A jelek szerint böngésző-használatból még fejlődnöm kell Az a forgalmazó bőven jó lesz, köszönöm. Hobby világban nem sürgős semmi sem.
(#) Hp41C válasza pajti2 hozzászólására (») Máj 6, 2017 /
 
Az It Media a Puskás börzés is szokott árulni.
(#) pajti2 válasza Hp41C hozzászólására (») Máj 6, 2017 /
 
Elraktam ezt a linket is, köszönöm.
(#) ktamas66 válasza pajti2 hozzászólására (») Máj 6, 2017 /
 
Ha ilyen házilag barkácsolt is jó, írd meg a címed.

DSC04088.JPG
    
(#) kriszrap hozzászólása Máj 7, 2017 /
 
Sziasztok.
Van egy pic16f628 am ami doksi szerint 5.5-3 voltig működik.
Valamiért 4.1 voltnál lekapcsol ezt abból gondolom hogy az egyik portra egy buzzert kötöttem és 4.1 hirtelen elhalkult. MikroC be programoztam lehet abba van valami furfangság??
(#) Bakman válasza kriszrap hozzászólására (») Máj 7, 2017 /
 
Brown-out Detect Reset engedélyezve van.

BOD.jpg
    
(#) Elektro.on válasza kriszrap hozzászólására (») Máj 7, 2017 /
 
A buzzer milyen feszültség tartományban működik?
Nem lehet, hogy annak kevés a táp?
(#) kriszrap válasza Elektro.on hozzászólására (») Máj 7, 2017 /
 
Buzzer nem hinnem.... De ez a brown dolog ezt kiprobalom ooo hogy tudom aktivalni???
(#) nagym6 válasza kriszrap hozzászólására (») Máj 7, 2017 /
 
Tápegységről megnézhető a buzzer alsó működési feszültséghatára.
(#) kriszrap válasza nagym6 hozzászólására (») Máj 7, 2017 /
 
Mukodik 3 v on a buzzer ...brown dolgot hogy lehet aktivalni??
(#) Pali79 válasza kriszrap hozzászólására (») Máj 7, 2017 /
 
A konfigurációs szóban.
(#) kriszrap hozzászólása Máj 7, 2017 /
 
Brown up detect et bállítottam semmi
CONFIG : $2007 : 0x2149
Multiméterrel mértem azt a lábat amit magasra engettem 4.1vnál a pic kikapcsol.
Annyit mclr lábat csak kikapcsoltam nem huztam fel 10k val 5 voltra ez lehet baj?
(#) Hp41C válasza kriszrap hozzászólására (») Máj 7, 2017 /
 
Mekkora frekvenciával megy? 10MHz alatt kellene csak mennie 3V -ról.
(#) kriszrap válasza Hp41C hozzászólására (») Máj 7, 2017 /
 
4mhzen kulso kvarcon
(#) zenetom válasza kriszrap hozzászólására (») Máj 7, 2017 /
 
MCLR lábat mindig ajánlatos pl. 10k-val tápra húzni, függetlenül a konfigtól!
(#) Hp41C válasza zenetom hozzászólására (») Máj 7, 2017 /
 
0x2149:
  1. 10 0001 0100 1001
  2. Bit4, 1..0 : Fosc: XT
  3. Bit2 : WDTE: disabled
  4. Bit3 : PWRT: enabled
  5. Bit5 : MCLR: disabled, digital I/O
  6. Bit6 : BOREN: enabled. Bor voltage min. 3.65V, typ 4.0, max. 5.43V (4.4 Extended)
  7. Bit7 : LVP: disabled
  8. Bit8 : CPD: disabled
  9. Bit12,10 : CP0
  10. Bit13,11 : CP1

Szóval BOR reset engedélyezett.
A két-két CP1 ill. CP0 bit értékének meg kellene egyeznie.
A hozzászólás módosítva: Máj 7, 2017
(#) kriszrap válasza Hp41C hozzászólására (») Máj 7, 2017 /
 
Hmm akkor jo nem ???? 10k felhuzo lesz akkor a baj ???
Következő: »»   944 / 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