Jump to content
ELFORUM - Forumul electronistilor

pic16f690 pwm hard


lama
 Share

Recommended Posts

salut

incerc sa imi fac o statie de lipit si am ajuns la partea de soft

unde patesc o chestie tare ciudata

astfel am facut testul pe o alta placa(tot cu acelasi pic , un led, doua butoane) si codul parea sa merga, adica aprindem progresiv ledul

am folosit acelasi cod si letconul se tot incalzeste

asa ca l-am prefixat pe duty cycle la 1

si face acelsi lucru, adica il tot incalzeste .....

mai jos codul poate vede cineva unde gresesc .....

 

/*************************************************************************                                                                       **   Processor:     16F690                                              **   Pin assignments:                                                    **  	RA0 - ICSPDAT							**  	RA1 - ICSPCLK					**  	RA2 - SCLK							**  	RA3 - MCLR							**  	RA4 - Tin						**  	RA5 - Test Led							**  	RB4 - SCE							**  	RB5 - Buton 1							**  	RB6 - Buton 2							**  	RB7 - Buton 3							**  	RC0 - DNK							**  	RC1 - D/C							**  	RC2 - RST							**  	RC3 - Fan							**  	RC4 - DS18B20							**  	RC5 - PWMout							**  	RC7 - Buton 4							************************************************************************/#include <pic.h>	#include <stdlib.h>#include <stdio.h>#include "5110.h"#define	CLK		RA2		#define	RST		RC2					__CONFIG(FOSC_INTRCIO  & 	// INTOSC oscillator internal	WDTE_OFF &		// Watchdog timer disabled	PWRTE_ON & 		// Power up timer enabled	BOREN_OFF & 		// Brown-out detect modes disabled	CPD_OFF & 		// Protection of program code off disabled	CP_OFF & 		// Protection of data block disabled	MCLRE_OFF);		// Master clear reset#define	_XTAL_FREQ	8000000		/* Crystal frequency in MHz */#define cit_delay 	1000#define Led_test 	RA5#define ON 	1#define OFF 	0void init(void){OSCCON=0x71; /* Select 8 Mhz internal clock */TRISA = 0b00010000; TRISB = 0b11100000; //RB5,6,7TRISC = 0b10000000; // RC7 input PORTC = 0; PORTB = 0; PORTA = 0; ANSEL = 0b00001000;  // Set PORT AN3 to analog input -AN0 to AN7 digital I/OANSELH = 0x00;          // Set PORT AN8 to AN11 as Digital I/OADCON0=0b10001100;   // select right justify result. ADC port channel AN3ADCON1=0b00110000;   // Select the FRC for 8 Mhz//ADCON1=0b00100000; 	//Fosc/32VCFG=0;  //referinta la VDd- mai fortez odata desi e facuta mai susCM1CON0 = 0; CM2CON0 = 0; // disable comparator 2 (RC0, RC1, RC4 usable)C1ON=0; // Turn off Comparators C2ON=0;VRCON = 0; // disable CVref (RC2 usable) WPUB=0;WPUA=0;ADON=1;	       // turn on the A2D conversion moduleCCP1CON=0b00001100;  // Single PWM mode; P1A, P1C active-high; P1B, P1D active-highCCPR1L=0;            // Start with zero Duty Cycle  T2CON=0b00000101;    // Postscale: 1:1, Timer2=On, Prescale = 1:4PR2=0x65;            // Frequency: 4.90 kHz - resolution 8 bitsTMR2=0;              // Start with zero Counter}void main(void){ char i;unsigned int adc,adc_dec;unsigned char buf[10];	init();   	CLK=0;              // SLED4C clock pin must idle low	init_nokia();	__delay_ms(250);	nokia_build_DDRAM();		// clear the display	while(1)	{		nokia_gotoxy(0,0);		nokia_printmessage("Solder-ADC");//partea de adc			Led_test=ON;			adc=0;		adc_dec=0;for(i=0;i<100;i++)	{				GO_nDONE=1;	             // initiate conversion on the channel 0    		while(GO_nDONE) continue;  // Wait conversion done    		adc += ADRESL;           // Get the 8 bit LSB result    		adc += (ADRESH << 8); // Get the 2 bit MSB result			adc_dec +=  ( ADRESH << 8) + ADRESL;	}			adc	/= 100;		adc_dec /=100;		sprintf(buf, "ADC=%d", adc_dec);		nokia_gotoxy(0,4); 		nokia_printmessage("         ");		nokia_gotoxy(0,4);		nokia_printmessage(&buf);		Led_test=OFF;//sf partea de ADC	__delay_ms(1000);		CCPR1L=0x01;//Duty cel mai mic de 1	sprintf(buf, "Duty: %d", 0x01);	nokia_gotoxy(0,3);	nokia_printmessage(&buf);	}}

Protel Schematic.pdf

Link to comment
Share on other sites

De fapt sa intreb ceva pe cei care cunosc mai multe. Poate am inteles eu gresit.Eu am intelesc ca pwm il folosesc ca sa inclazesc heterul pina se ajunge la un echilibru(dat de perioada cind acesta este alimentat cu perioada cind nu este alimentat).Daca e asa ar trebui sa reduc frecventa?Adica el nu reuseste sa se raceasca cind nu este alimentat?Caci din testul cu un duty de 1 el tot continua sa se incalzeaza(la 400 grade l-am oprit)

Link to comment
Share on other sites

Ai cum sa te asiguri ca semnalul PWM e atat de lung pe cat il vrei?Nu de alta, da' daca ai vreo "scama" in CCPR1H (nu-l initializezi pe nicaieri), poate ca ce ai in CCPR1L nici nu mai conteaza.Bati si eu campii ca tocmai ma joc cu modului PWM de la un PIC si inca nu stiu chiar de tot cu ce se mananca (desi am vazut deja pe osciloscop semnalul pe care il vreau :da ).

Link to comment
Share on other sites

Ai cum sa te asiguri ca semnalul PWM e atat de lung pe cat il vrei?Nu de alta, da' daca ai vreo "scama" in CCPR1H (nu-l initializezi pe nicaieri), poate ca ce ai in CCPR1L nici nu mai conteaza.Bati si eu campii ca tocmai ma joc cu modului PWM de la un PIC si inca nu stiu chiar de tot cu ce se mananca (desi am vazut deja pe osciloscop semnalul pe care il vreau :da ).

din pacate nu am acces la un osciloscop. O sa initializez CCPR1H, dar teoretic nu are importanta ce e acolo rezoluti fiind pe 8.Sa vad ce iese....
Link to comment
Share on other sites

Doar prin PWM nu o sa ajungi la echilibru deoarece viteza de incalzire a varfului este mult mai mare decat viteza cu care acesta se raceste in aer.Pentru a ajunge la un echilibru trebuie sa compari valoarea data de ADC cu o valoare prestabilita, iar in momentul cand se ajunge acea valoare sa opresti PWM,in felul acesta reduci fluctuatiile de temperatura si poti folosi PWM-ul pana la 100%.Daca nu compari valoarea data de ADC cu o valoare prestabilita, o sa ai surpriza ca in momentul in care vrei sa incalzesti un traseu mai mare, nu o sa poti, pentru ca atuci viteza de racire va fi mai mare decat viteza de incalzire cu PWM = 1.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines