Sari la conținut
ELFORUM - Forumul electronistilor

PWM cu PIC exista?


Postări Recomandate

versiunea 2.0RC

 

* daca puneam potentiometru trebuia ca pic-ul sa aiba ADC intern, am preferat sa stochez variabila pentru factorul de umplere in EEPROM. Afisajul e neaparat necesar dar arata mai interesat asa ;)

 

/* Generator PWM cu PIC16F628 v1.2f = 42857.14Hz */// LCD module connectionssbit LCD_RS at RA0_bit;sbit LCD_EN at RA1_bit;sbit LCD_D4 at RB4_bit;sbit LCD_D5 at RB5_bit;sbit LCD_D6 at RB6_bit;sbit LCD_D7 at RB7_bit;sbit LCD_RS_Direction at TRISA0_bit;sbit LCD_EN_Direction at TRISA1_bit;sbit LCD_D4_Direction at TRISB4_bit;sbit LCD_D5_Direction at TRISB5_bit;sbit LCD_D6_Direction at TRISB6_bit;sbit LCD_D7_Direction at TRISB7_bit;// End LCD module connections  short int  i,k,oldstate = 0;  unsigned long j,ii;  char duty_cycle[4] ;  unsigned char txt1[] = "Generator PWM";  unsigned char txt2[] = "firmware v2.0RC";void main() {  TRISB = 0x03;          // set RB0,RB1 pin as input  PORTB = 0x00;  i = EEPROM_Read(0x02);  ii = EEPROM_Read(0x02);    Lcd_Init();                        // Initialize LCD  Lcd_Cmd(_LCD_CLEAR);               // Clear display  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off  PWM1_Init(42800);           // f=42.8 KHz  PWM1_Start() ;    Lcd_Out(1,2,txt1);                 // Write text in first row  Lcd_Out(2,1,txt2);                 // Write text in second row  Delay_ms(600);    Lcd_Cmd(_LCD_CLEAR);               // Clear display  Lcd_Out(1,2,"Please wait ...");  delay_ms(200);  LCD_Out(2,1,"Loading");  LCD_Chr(2,9,0xFF);  // loading barr ++   for(k=0;k<7;k++){      LCD_Chr_CP(0xFF);      delay_ms(150);   }        Lcd_Cmd(_LCD_CLEAR);     LCD_Out(1, 2,"freq: 42.8 KHz");     LCD_Out(2, 1,"Duty Cycle:");     LCD_Out(2, 15,"%");   while (1) {if (Button(&PORTB, 0, 1, 0)) {                 // Detect logical one      i = i++;      delay_ms(10);      EEPROM_Write(0x02,i);      delay_ms(100);      ii = EEPROM_Read(0x02);}if (Button(&PORTB, 1, 1, 0)) {                  // Detect one-to-zero transition       i = i--;       delay_ms(10);       EEPROM_Write(0x02,i);       delay_ms(100);       ii = EEPROM_Read(0x02);   }      PWM1_Set_Duty(ii);      j = ii/2.56;                                            // 128/2.56 = 50%      ByteToStr(j,duty_cycle);      LCD_Out(2,12,duty_cycle); }}
Posted Image

 

Posted Image

Link spre comentariu
  • Răspunsuri 150
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

WWWOOOWWW!!Domnule jos palaria!! M-ai lasat cu gura cascata... Arata a lucru de profesionistRespectele mele.Ma apuc sa caut piesele.. O sa postez niste poze cu programatorul meu sa vadem daca merge sa programez acest PIC.Are 2 moduri de alimentare HI si Low. Treaba e ca merge cu cablu paralel.. Ce Soft imi recomandati?Am o idee vaga cum merge ICprog..Am programat 2 ori de proba cu el un pic 16f87 parca (nu sunt sigur daca e asa). O sa atasez pozele mai tarziu sa imi spineti daca se poate O sa va tin la curent cu ce voi face ca poate va intereseaza si pe dumneavoastra. Orice autor al unui produs sunt convins ca este curios ca sa afle cum merge in realitate.Sunt sigur ca fiind incepator o sa am nevoie de sfaturile Dvs. Va multumesc mult si respectele mele!! Apropo.. Pe e-bay nu am gasit acest pic.. Unde sa caut? Singura solutie este VITACOM bucuresti?

Link spre comentariu

cam orice programator programeaza acest pic.

partea de frecventa e doar de design, frecventa nu se poate ajusta din butoane. Nu stiu cum se poate modifica frecventa la PWM-ul intern dar o sa invat (poate doar daca faceam PWM software sau fol. un pic mai complex).

mai bine de atat nu se poate:

http://www.ebay.com/itm/5PCS-Microchip- ... 3a69dd52e8

http://www.ebay.com/itm/5PCS-IC-PIC16F6 ... 4604ba291e

 

asa o sa iti placa :)

http://www.ebay.com/itm/iCP22-iBoard-Ti ... 3f18ec42c5

Link spre comentariu

Ştefan Nicolae poţi pune te rog schema(completă) folosită de tine pentru că văd acolo un rezistor de 10k care nu ştiu unde merge. Mulţumesc!

Daca rezistenta de 10k este conectata cu un pin la pin 4, RA5/MCLR (reset), celalalt pin este conectat la plus (+5Vcc).
Link spre comentariu

La 18f4520 se poate merge si in half-bridge si in full bridge plus are dead-band delay programabil.

Interesant, nu stiam, desi detin o placa de dezvoltare (neatinsa) cu acest microcontroller.Oricum, citind din nou titlul topicului mi-am dat seama ca PWM se poate face cu ORICE microcontroller, caci se poate face o functie in software, asa numitul bit-bang-ing.
Link spre comentariu

@Liviu M Am folosit termenul de bit-banging in mod metaforic.E ca si cum ai spune motorul este inima masinii. Nu este o inima, dar este ca o inima. Sau sahul este sporul mintii, dupa parerea mea sahul nu este un sport, ci doar un joc. Oricum, se pare ca s-a inteles idea. Da, ai dreptate, se foloseste in general in comunicatia seriala.@cusnir nu inteleg exact despre ce e vorba dar LCd-urile de tip 1602 ( controller HD44780) sunt atat de raspandite si sunt atatea librarii pentru toate controllerele incat nu m-as mai complica cu cele de NOKIA care oricum sunt depasite si de-abia se mai gasesc. Si au plecat din Ro... dar asta e o parere personala...

Link spre comentariu

pai in schema de mai sus nu este nevoie de un controler separat ci se conecteaza direct la PIC. De ce sa ma complic si pe mine si pe altii.O sa fac doar schema de mai sus doar ca intrebam daca se poate folosi ce am deja ca sa nu mai cumpar.. Daca nu se poate atunci desigur ca o sa fiu nevoit sa procur si LCDul.. Dar repet, doar daca nu se poate altfel.. Solutia domnului Stefan Nicolae e mult mai simpla, fara nici un controler separat, si imi convine ca nu sunt multe piese unde pot sa gresesc.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări