Advertisement
Guest User

Untitled

a guest
May 28th, 2015
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.21 KB | None | 0 0
  1. #include <controlador.h>
  2.  
  3. //////////////////////////// CONFIGURA��ES DO LCD //////////////////////////////
  4.  
  5. #define lcd_data_port getenv("SFR:portd")
  6. #define lcd_enable_pin pin_b1
  7. #define lcd_rs_pin pin_b3
  8. #define lcd_rw_pin pin_b2
  9. #define lcd_data7 pin_d7
  10. #define lcd_data6 pin_d6
  11. #define lcd_data5 pin_d5
  12. #define lcd_data4 pin_d4
  13. #include <lcd.c>
  14.  
  15. ///////////////////////////// DECLARA��O DE VARIAVEIS //////////////////////////
  16.  
  17. #define botao_incremento PIN_D0
  18. #define botao_decremento PIN_D1
  19. #define botao_stop PIN_D2
  20. #define botao_inverte PIN_D3
  21. #define encoder PIN_A2
  22.  
  23. unsigned int8 ciclo_PWM_1 = 0;
  24. unsigned int8 ciclo_PWM_2 = 0;
  25. int cont = 0;
  26. int cont1 = 0;
  27. int cont2 = 0;
  28. int porcentagem = 0;
  29. char load1[16];
  30. char load2[16];
  31. char porcnt="%";
  32. unsigned int rpm = 0;
  33. unsigned int rps = 0;
  34. int1 sentido = 0;
  35. int1 ligado = 1;
  36.  
  37. //////////////////////////// CONTADOR TIMER 0 //////////////////////////////////
  38.  
  39. #int_timer0
  40. void MyTimer()
  41. {
  42. if (input(encoder)){
  43. rps++;
  44. }
  45. cont++;
  46. if(cont == 47000)
  47. {
  48. rpm = rps*60;
  49. rps = 0;
  50. cont = 0;
  51. }
  52. }
  53. ////////////////////////////// INICIO DO C�DIGO ////////////////////////////////
  54.  
  55. void main()
  56. {
  57. //Setup do Timer0 = A CADA 1 SEGUNDO;
  58. setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1 | RTCC_8_BIT);
  59. enable_interrupts(int_timer0);
  60. //Setup do Conversor Anal�gico Digital - Leitura do Potenci�metro
  61. //setup_adc(ADC_CLOCK_INTERNAL);
  62. //setup_adc_ports(AN0);
  63. // SETUP DO PWM - Usando o Timer 2
  64. setup_ccp1(CCP_PWM); // CCP1 = PINO C2 DO PIC
  65. setup_ccp2(CCP_PWM); // CCP2 = PINO C1 DO PIC
  66. setup_timer_2(T2_DIV_BY_4,255, 1); // 500Hz em 4Mhz
  67. enable_interrupts(INT_CCP1);
  68. enable_interrupts(GLOBAL);
  69. set_pwm1_duty(0);
  70. set_pwm2_duty(0);
  71.  
  72. lcd_init();
  73.  
  74. /////////////////////////// ANIMA��O INICIAL DO LCD //////////////////////////////
  75.  
  76. while(cont2<15){
  77. load1[cont2]=254;
  78. load2[cont2]=254;
  79. cont2++;
  80. }
  81. cont2=15;
  82. while(cont1<16){
  83. load1[cont1]=255;
  84. load2[cont2]=255;
  85. printf(lcd_putc,"\f%s\n%s",load1,load2);
  86. cont1++;
  87. cont2--;
  88. delay_ms(300);
  89. }
  90. cont2=15;
  91. cont1=0;
  92. while(cont1<16){
  93. load1[cont1]=254;
  94. load2[cont2]=254;
  95. printf(lcd_putc,"\f%s\n%s",load1,load2);
  96. cont1++;
  97. cont2--;
  98. delay_ms(300);
  99. }
  100. printf(lcd_putc,"\fENG. MECATRONICA\nELETR. ANALOGICA");
  101. delay_ms(4000);
  102. printf(lcd_putc,"\f CONTROLADOR DE\n MOTOR DC ");
  103. delay_ms(4000);
  104.  
  105.  
  106. //////////////////////////// FUN��O PRINCIPAL /////////////////////////////////
  107.  
  108. while (TRUE){
  109. if (ligado == 1){
  110. output_high (PIN_A0);
  111. if (sentido == 0){
  112. output_high (PIN_B6);
  113. output_low (PIN_B7);
  114. if (input(botao_incremento)){
  115. if (ciclo_PWM_1 < 251){
  116. ciclo_PWM_1 = ciclo_PWM_1 + 5;
  117. do{}
  118. while(input(botao_incremento));
  119. }
  120. }
  121. if (input(botao_decremento))
  122. {
  123. if (ciclo_PWM_1 > 4){
  124. ciclo_PWM_1 = ciclo_PWM_1 - 5;
  125. do{}
  126. while(input(botao_decremento));
  127. }
  128. }
  129. set_pwm1_duty(ciclo_PWM_1);
  130. set_pwm2_duty(0);
  131. delay_ms(50);
  132. porcentagem = (ciclo_PWM_1/2.55);
  133. printf(lcd_putc,"\fSPEED: %d%c E: %d",porcentagem,porcnt,rpm);
  134. printf(lcd_putc,"\nDUTY: %u DIR: %d",ciclo_PWM_1,sentido);
  135. }
  136. if (sentido == 1){
  137. output_high (PIN_B7);
  138. output_low (PIN_B6);
  139. if (input(botao_incremento)){
  140. if (ciclo_PWM_2 < 251){
  141. ciclo_PWM_2 = ciclo_PWM_2 + 5;
  142. do{}
  143. while(input(botao_incremento));
  144. }
  145. }
  146. if (input(botao_decremento))
  147. {
  148. if (ciclo_PWM_2 > 4){
  149. ciclo_PWM_2 = ciclo_PWM_2 - 5;
  150. do{}
  151. while(input(botao_decremento));
  152. }
  153. }
  154. set_pwm2_duty(ciclo_PWM_2);
  155. set_pwm1_duty(0);
  156. delay_ms(50);
  157. porcentagem = (ciclo_PWM_2/2.55);
  158. printf(lcd_putc,"\fSPEED: %d%c E: %d",porcentagem,porcnt,rpm);
  159. printf(lcd_putc,"\nDUTY: %u DIR: %d",ciclo_PWM_2,sentido);
  160. }
  161. if (input(botao_inverte)){
  162. ciclo_PWM_1 = 0;
  163. ciclo_PWM_2 = 0;
  164. set_pwm1_duty(0);
  165. set_pwm2_duty(0);
  166. sentido = !sentido;
  167. do{}
  168. while(input(botao_inverte));
  169. }
  170. }
  171. if (ligado == 0){
  172. output_low (PIN_A0);
  173. ciclo_PWM_1 = 0;
  174. ciclo_PWM_2 = 0;
  175. set_pwm1_duty(0);
  176. set_pwm2_duty(0);
  177. printf(lcd_putc,"\f PAUSADO!");
  178. printf(lcd_putc,"\n MODO DE ESPERA");
  179. delay_ms(50);
  180. }
  181. if (input(botao_stop)){
  182. ligado = !ligado;
  183. do{}
  184. while(input(botao_stop));
  185. }
  186. }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement