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   1176 / 1210
(#) proli007 válasza Laja1 hozzászólására (») Márc 13, 2022 /
 
Bocs igazad van! Így még az a lehetőség marad, hogy a belső referenciát állítod arra az értékre, hogy a minimális tápfesz esetén pont akkora értéket adjon mint a zéner feszültsége. És a kettőt hasonlítod össze a komparátorral. (Mondjuk sosem használtam a komparátort.)
(#) Josi777 válasza proli007 hozzászólására (») Márc 13, 2022 /
 
Semmi baj, jól esett, hogy hozzám szóltál
(#) KoblogPerGyok hozzászólása Márc 14, 2022 /
 
Üdv Mesterek!

DSPIC 33FJ32MC202-vel szimulálok PWM jeleket. Elvileg sikerült megoldanom, hogy a PWM kitöltési tényezője 1 byte legyen, úgy, hogy a PWM frekvencia:

#define PWM_FREQ 313223UL //PWM frequency in Hz
#define PWM_2_FREQ 313223UL
#define FCY 39936000UL //FCY = FOSC / 2

Bár lehet itt tévedek, mert ennek a CHIP-nek nem ennyi a belső óra frekvenciája. A belső órát használnám, PLL-el be van állítva FCY*2-re, azaz az FCY az instrukciós frekvencia. A PWM frekvencia éppen akkora, hogy a PWM kitöltési tényezője 255-lehet maximum. Ez nagy vonalakban mőködik is, de hibázik. Nekem itthon DSPIC33FJ128MC802-esem van, de nem tudom azt szimulálni, ezért haszmálom a másikat. Az enyém belső órája 737287300 Hz, amit a PLL-el állítok be a fenti értékre. Esetleg ez okozza a hibát? Gyorssabban járatom mint kellene?

Bizonyos időintervallumokban betesz plusz jeleket a PWM-értékek közé. A csatolt képeken látszik, miről beszélek. Olyan, mintha másik PWM jel bekerülne pluszban. Az egészet azért csinálom, mert egy lineárisan felfutó feszültséget szeretnék elérni. Egyelőre passzív aluláteresztő szűrőre tettem a kimenetet, azt várnám, hogy 0-3.3V lineáris felfutású kimenetem legyen, ami 0.1s alatt éri el a maximumot.

Elvileg megy is, de a PWM hibája miatt csúnya tüskék jelennek meg. Az MPLAB-ban megnéztem, hogy mikor az egyik tüske van, akkor a kitöltési tényező mekkora. Az jó.

Mi lehet hiba? Valamelyik lábat le kell húzni, vagy fel kell húzni? Nem tudom.

Volt valaki aki ilyesmi hibába futott bele? Mi a megoldás szerintetek?
(#) KoblogPerGyok hozzászólása Márc 14, 2022 /
 
Itt egy újabb kép, hogy mit is szeretnék, de a tüskék is jobban látszódnak.
(#) KoblogPerGyok hozzászólása Márc 14, 2022 /
 
Kiegészítés:

A PWM kitöltési tényezőjét a Timer3 interrup-jában állítom. A Timer 3 jó értéket ad.

  1.   void PWM_2_duty(unsigned char P2)
  2.      {
  3.  
  4.          //P1DC1 = (2UL*P1TPER+2)*PWM_DUTY/100;
  5.          P2DC1 = (unsigned long int)P2;
  6.       }
  7.  
  8.       void PWM_2_init(unsigned long int Fcy, unsigned long int PWM_2_Frekvencia){
  9.          //setup output pins
  10.          LATBbits.LATB8=0;
  11.          TRISBbits.TRISB8 = 0;
  12.  
  13.          //setup PWM ports
  14.          PWM2CON1 = 0;                //clear all bits (use defaults)
  15.          PWM2CON1bits.PMOD1 = 0;     //PWM1Ly,PWM1Hy are in independent running mode
  16.          PWM2CON1bits.PEN1L = 0;     //PWM1L1 NORMAL I/O
  17.          PWM2CON1bits.PEN1H = 1;     //PWM1H1 PWM OUTPUT
  18.  
  19.          //PWM mode and prescaler
  20.          //PWM1, MOTORS 0,1,2    
  21.          P2TCON = 0;                    //clear all bits (use defaults)
  22.          P2TCONbits.PTMOD = 0b00;    //Free-runing mode
  23. //         P1TCONbits.PTCKPS = 0b11;    // 1:64 prescaler
  24.          P2TCONbits.PTCKPS = 0b00;    // 1:1 prescaler
  25.  
  26.          //setup desired frequency by setting period for 1:64 prescaler
  27. //         P1TPER = ((Fcy  / (64 * PWM_Frekvencia)) - 1);    
  28.          P2TPER = ((Fcy  / (PWM_2_Frekvencia)) - 1);
  29.  
  30.          //PWM_duty((unsigned int)(2UL*P1TPER+2)*0.5);      
  31.       }
  32.       void PWM_2_start()
  33.       {
  34.          //PWM2 engedélyezése:
  35.          P2TMR = 0;
  36.          P2TCONbits.PTEN = 1;  
  37.       }
  38.      void PWM_2_stop()
  39.       {
  40.          //PWM2 tiltása:
  41.          P2TMR = 0;
  42.          P2TCONbits.PTEN = 0;  
  43.       }


És a main C-ben meghívom az PWM_2_init -et, és a timer3 interruptban:

  1. void __attribute__((__interrupt__, no_auto_psv)) _T3Interrupt(void)
  2. {
  3. /* Interrupt Service Routine code goes here */
  4. IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag
  5.  
  6. ////Ide kell a PWM kitöltési tényezoje
  7. if (t3_szamlalo<255)
  8.     {
  9.     t3_szamlalo+=1;
  10.        
  11.     }
  12. else
  13.     {
  14.         t3_szamlalo =(unsigned long int)0;
  15.     }
  16. P2DC1 =(unsigned long int)t3_szamlalo;
  17. }
A hozzászólás módosítva: Márc 14, 2022
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Márc 16, 2022 /
 
Üdv!

Meglett a megoldás! A csúcson, de lehet még kicsit magasabb frekvencián próbáltam meg hajtani a PWM-et, nem szabad. Illetve a kitöltési tényező váltását is másképpen oldottam meg, úgy megy!

Köszönöm 'sdrlab' fórumtársnak az ötleteket!
(#) Owert hozzászólása Márc 16, 2022 /
 
Üdv Mindenkinek!

Építettem tavalyelőtt egy automata csévélőgépet, PIC16F877A a fővezérlő és egy Arduino Nano felel a fúrógép sebességszabályozásáért. Egy évig, viszonylag stabilan működött a rendszer, de most a fúrógépet lecseréltem, és az alábbi problémába ütköztem: programfutás közben a PIC mikrovezérlő programja lefagy. Okozhatja-e a fagyást a közelben lévő új fúrógép (több elektromos zaj)? A mikrovezérlők egy 12V-os kapcsolóüzemű tápról kapják a feszültséget, LM7805-tel leszabályozva, kondenzátorokkal (1000uF, 100n), a mikrovezérlőnél a betápnál 100n-os kerémia kondenzátorokkal plusz szűrés. Az elektronika műanyag dobozban van. Építő jellegű hozzászólásokat előre is köszönöm.
(#) kissi válasza Owert hozzászólására (») Márc 16, 2022 /
 
Szia!

Idézet:
„Okozhatja-e a fagyást a közelben lévő új fúrógép (több elektromos zaj)?”
Mivel előtte "jól" működött, akkor szerintem egyértelműen ez a változás okozza. A megszűntetése nem egyszerű, csak jó tervezéssel, elrendezéssel és dobozolással lehet, itt csak az általános ötleteket tudod hozzá elolvasni ( van külön ilyen témájú topic, keress rá!) !
A hozzászólás módosítva: Márc 16, 2022
(#) eSDi válasza Owert hozzászólására (») Márc 16, 2022 /
 
Hali!

Adatlap 14.4-es MCLR bekezdés, majd ott a FIGURE 14-5: RECOMMENDED MCLR
CIRCUIT. Ha nem ez van a MCLR lábon, akkor az tud furcsaságokat okozni.
(#) Laja1 válasza eSDi hozzászólására (») Márc 16, 2022 /
 
Bocsánat, hogy belekotyogok. Ez a megoldás valamennyi PIC tipusra igaz? Tehát egyiket se célszerű direkt VDD-re kötni? A kondenzatort hogyan válasszuk meg? Köszönöm!
(#) Bakman válasza eSDi hozzászólására (») Márc 16, 2022 /
 
Mit tud okozni ha direkt Vdd-re van kötve vagy egyszerű bemenetként van használva, már amelyiken lehet?
(#) eSDi válasza Laja1 hozzászólására (») Márc 16, 2022 /
 
Úgy látom, hogy az újabb típusoknál is benne van az adatlapban, mint minimum ajánlott bekötés. Nekem személy szerint csak a fent említett 16F877A-nál volt ez miatt hasonló jelenség régebben. Építettem egy NiMH akku töltőt és véletlenszerű időközönként lefagyott és a kijelzőn mindenféle zagyvaság jelent meg. A szimpla felhúzó ellenállást lecseréltem az ajánlott megoldásra és jó lett.
Ezt leszámítva, azóta mindenhol csak a szimpla felhúzó ellenállást használom és nincs gond.
(#) eSDi válasza Bakman hozzászólására (») Márc 16, 2022 /
 
Direktben nem tanácsos, legalább egy felhúzó ellenállás kell. Máshogy nem is működne az ICSP.
Bemenetre állítva van valami belső áramkör, ha jól tudom, amire átkapcsolja a MCLR-t. Gondolom, akkor normálisan működik. Tesztelni kellene, hogy mennyire zavarérzékeny, ha belsőre van állítva.
(#) Owert válasza eSDi hozzászólására (») Márc 17, 2022 /
 
Köszönöm szépen, közvetlenül van kötve úgy emlékszem, hamarosan módosítom is.
(#) Bakman válasza Owert hozzászólására (») Márc 17, 2022 /
 
Gyaníthatóan nem fog segíteni az ügyön. "Megobolondulni" akkor tud a kontroller, ha a kritikus szint alá esik a tápfeszültség és nincs bekapcsolva a BOD. Utóbbi egyszerűen újraindítaná a kontrollert.
(#) majkimester válasza Owert hozzászólására (») Márc 17, 2022 /
 
Estleg nézd meg, hogy az LVP engedélyezve van-e a configban?
Lásd még ITT
(#) eSDi válasza Bakman hozzászólására (») Márc 18, 2022 /
 
A 16F877A-nál, ha a TBOR időnél (100µs) kisebb a tápfesz beesése a VBOR feszültség (4V) alá, akkor nem lesz reset. A MCLR-nek meg elég 2µs a resethez.
Próbálok visszaemlékezni, hogy is volt nálam az eset, de már homályos. Mintha, nálam sem lett volna bekapcsolva a BOR és akkor csinálta a zagyvaságot, viszont a bekapcsolása után is megmaradt a probléma, csak újra indulásként jelentkezett. Ezért kellett a MCLR áramkör, ami után jó lett. Én 20MHz-en járattam a PIC-et, lehet pont egy kicsit instabilabbat fogtam ki.
(#) Lamprologus válasza Laja1 hozzászólására (») Márc 21, 2022 /
 
Vagy én nézek el valamit ezen a rajzon, vagy tényleg nem jó!

A zéner álltal előállított feszültséget kéne a Vref lábra kötni ( plusz táp - ellenállás - zener - 0V, a zener és az ellenállás közös pontja a Vrefre), és az AN bemenetre kötni a poti álltal leosztott feszültséget.
(#) proli007 válasza Laja1 hozzászólására (») Márc 21, 2022 /
 
Hello! Nem néztél el semmit, az NEM JÓ!!
(#) Laja1 válasza Lamprologus hozzászólására (») Márc 21, 2022 /
 
Igaz, igaz. Azóta rájöttem, ahogy március 11-én meg is irtam. Minden jól működik! Köszönöm, hogy ránéztél!!
(#) Naresh Jain válasza Hp41C hozzászólására (») Márc 27, 2022 /
 
Dear friend, can we attached two or three more mosfet to control the lights for on/off, with other microcontroller
(#) Bakman válasza Naresh Jain hozzászólására (») Márc 27, 2022 /
 
Show some circuit diagram, there's a lots of possible combinations and not clear, what you want.
(#) Naresh Jain válasza Bakman hozzászólására (») Márc 27, 2022 /
 
This is the required circuit and program
(#) Bakman válasza Naresh Jain hozzászólására (») Márc 27, 2022 /
 
No circuit/schematic diagram inside the file. That is only the source codes of the controller program. See attached image for an example, what we're looking for.
(#) Naresh Jain válasza Bakman hozzászólására (») Márc 27, 2022 /
 
Dear thanks for your quick response, schematic diagram attached here
(#) Bakman válasza Naresh Jain hozzászólására (») Márc 27, 2022 /
 
Connecting two-three triacs to the PIC not problem, see image. For more triacs, you'll need gate driver, output current of the microcontroller is limited.

If you want to control more lamps with one circuit (lamps connected parallel), use stronger triac if the currently used one is not enough. Do not connect ouputs to each other!
A hozzászólás módosítva: Márc 27, 2022
(#) Naresh Jain válasza Bakman hozzászólására (») Márc 27, 2022 /
 
Dear, I have schematic diagram for idea, but I have not the code for same
(#) Naresh Jain válasza Bakman hozzászólására (») Ápr 1, 2022 /
 
Dear friend, I am waiting for your response, please solve my problem
(#) Bakman válasza Naresh Jain hozzászólására (») Ápr 1, 2022 /
 
Sorry, I've forgotten it.

The last schematic looks fine. The triacs not conneted parallel, both have individual control input and controlled output. In this arrangement, you can control any triac (and power output) independently.
(#) Naresh Jain válasza Bakman hozzászólására (») Ápr 1, 2022 /
 
Dear Thank you very much for your attention, but problem is I have not code for this schematic, I have code for first schematic (attached below) in which only one triac used to control fan speed only, I am very weak in program writing , I need fan regulator and
control two or three switches too, we need to change in code, Please help
A hozzászólás módosítva: Ápr 1, 2022
Következő: »»   1176 / 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