El Estado Oriental de Uruguay es un país ubicado en América del Sur con una población de aproximadamente 131,969 habitantes. Limita al norte con Brasil, al sur con Argentina y al oeste con el Océano Atlántico. Su capital y ciudad más grande es Montevideo. El gobierno es una república democrática y la moneda oficial es el peso uruguayo. Las principales industrias incluyen la agricultura, la pesca y el turismo.
Este proyecto, desarrollado por estudiantes de 4o de la ESO, tiene como objetivos enseñar la importancia del reciclaje a niños más pequeños a través de una obra de teatro, juegos y manualidades con materiales reciclados. La obra explica a los niños para qué sirve cada contenedor y los motivos por los que es importante reciclar. Después, realizan juegos como "baloncesto reciclador" para reforzar los conocimientos. Finalmente, en talleres manuales crean objetos como huchas y macetas para
O documento define os pinos de entrada e saída para controlar um display LCD e um pino PWM. Ele especifica os pinos de dados, enable e rs do LCD e define um pino para PWM no microcontrolador PIC.
This document defines registers and bit fields for the PIC18F452 microcontroller. It includes definitions for ports A-E, latches A-E, data direction registers A-D, and other special function registers like timers, analog-to-digital converter, and serial peripheral interface.
El Estado Oriental de Uruguay es un país ubicado en América del Sur con una población de aproximadamente 131,969 habitantes. Limita al norte con Brasil, al sur con Argentina y al oeste con el Océano Atlántico. Su capital y ciudad más grande es Montevideo. El gobierno es una república democrática y la moneda oficial es el peso uruguayo. Las principales industrias incluyen la agricultura, la pesca y el turismo.
Este proyecto, desarrollado por estudiantes de 4o de la ESO, tiene como objetivos enseñar la importancia del reciclaje a niños más pequeños a través de una obra de teatro, juegos y manualidades con materiales reciclados. La obra explica a los niños para qué sirve cada contenedor y los motivos por los que es importante reciclar. Después, realizan juegos como "baloncesto reciclador" para reforzar los conocimientos. Finalmente, en talleres manuales crean objetos como huchas y macetas para
O documento define os pinos de entrada e saída para controlar um display LCD e um pino PWM. Ele especifica os pinos de dados, enable e rs do LCD e define um pino para PWM no microcontrolador PIC.
This document defines registers and bit fields for the PIC18F452 microcontroller. It includes definitions for ports A-E, latches A-E, data direction registers A-D, and other special function registers like timers, analog-to-digital converter, and serial peripheral interface.
This document defines registers and bit fields for the PIC18F452 microcontroller. It includes definitions for ports A-E, latches A-E, data direction registers A-D, and other special function registers like timers, analog-to-digital converter, and serial peripheral interface.
O documento define os pinos de entrada e saída para controlar um LCD e PWM. Ele especifica os pinos de dados, enable e rs do LCD e define um pino PWM para saída de sinal.
This document defines registers and bit fields for the PIC18F452 microcontroller. It includes definitions for ports A-E, latches A-E, data direction registers A-D, and other special function registers like timers, analog-to-digital converter, and serial peripheral interface.
O documento define os pinos de entrada e saída para controlar um LCD e PWM. Ele especifica os pinos de dados, enable e rs do LCD e define um pino PWM para saída de sinal.
2. signed int erro1;
#pragma udata banco3
float Kp;
signed int correcao;
/*char nada3[255];
#pragma udata banco4
char nada4[255];
#pragma udata banco5
char nada5[55];
#pragma udata
char nada6[118];*/
////////////////////////////////////////////////////////////////////////////
void Wait(unsigned int B);
void lcd_escreve_duas_linhas();
void inicializa_saidas();
void lcd_ini();
void delay_10us(unsigned int numero);
void delay_ds(unsigned int atraso2);
void delay_ms(unsigned int atraso1);
void lcd_envia_nibble( char dado );
void lcd_envia_byte( char endereco, char dado );
void lcd_pos_xy( char x, char y);
void lcd_escreve( char c);
void grava_eeprom(unsigned int dado,unsigned int endereco);
unsigned int le_eeprom(unsigned int endereco);
void inicializa_entradas_analogicas();
unsigned int ADC_Read(unsigned int canal);
void inicializa_pwm_1();
void inicializa_timer_0();
void inicializa_timer_1();
void inicializa_timer_2();
void PWM1_Set_Duty(unsigned int potencia);
void lcd_escreve_uma_linha();
////////////////////////////////////////////////////////////////////////////
#include <p18f452.h>
#include <pinagem.h>
#include <lcd.h>
#include <atraso.h>
#include <bibliotecas.h>
////////////////////////////////////////////////////////////////////////////
1. void main(void)
2. {
3. inicializa_saidas();
4. inicializa_pwm_1();
5. inicializa_entradas_analogicas();
6. delay_ds(1);
7. lcd_ini();
8. delay_ds(1);
9. a=0; //INICIALIZA O LOOP DOS VALORES DE VELOCIDADE
10. loop:
11. if(a==20)Valor_PWM = 0;//VELOCIDADE 0; PWM 0
12. else if(a==40)Valor_PWM = 148;//VELOCIDADE 302; PWM 3,3
13. else if(a==60)Valor_PWM = 135;//VELOCIDADE 276; PWM 3,0
14. else if(a==80)Valor_PWM = 143;//VELOCIDADE 291; PWM 3,1
3. 15. else if(a==100)Valor_PWM = 163;//VELOCIDADE 336; PWM 3,6
16. else if(a==120)Valor_PWM = 189;//VELOCIDADE 395; PWM 4,3
17. else if(a==140)Valor_PWM = 219;//VELOCIDADE 461; PWM 5,0
18. else if(a>=160)a=0;
19. a++;
20. //Valor_PWM = ADC_Read(1); UTILIZADO SOMENTE NA ETAPA INICIAL DO TRABALHO
PARA FIXAR UM VALOR DE PWM
21. Media = 0;//INICIALIZA A MÉDIA DOS VALORES DO TACÔMETRO
22. for(y=0;y<8;y++)Media = Media + ADC_Read(0);
23. Media/=8;
24. erro1 = Valor_PWM-Media; // CALCULA O ERRO EM RPM
25. Kp = ADC_Read(2);// AQUISIÇÃO DO VALOR DO KP
26. Kp/=512;
27. correcao=erro1*Kp;//INICIA A CORREÇÃO DO VALOR DE VELOCIDADE
28. if(((Valor_PWM-correcao)>=0))current_duty_1 = current_duty_1+correcao;
29. else current_duty_1=0;
//INICIA LÓGICA PARA GARANTIR QUE O VALOR DO CURRENTY_DUTY_1 FIQUE EM 255
OU ZERO
30. if((current_duty_1>255)&&(current_duty_1<1000))current_duty_1=255;//0
31. else if((current_duty_1>=1000))current_duty_1=0;//0
32. PWM1_Set_Duty(current_duty_1); //ALTERA O DUTY CYCLE
33. sprintf (stri1,"I:%3.0u O:%3.0u E%3.0d ",Media, Valor_PWM, erro1);
34. sprintf (stri2,"Co:%3.0d Dut:%3.0u ", correcao, current_duty_1);
35. lcd_escreve_duas_linhas();
36. delay_ds(5);
37. goto loop;
38. }
Observação: Autoria Engenheiro Rodrigo Lacerda Taschetto e código das linhas 1 a 38
elaborado em conjunto com a equipe do TCC André Cunha e João Nicolotte.