ligados ao carrinho. Ele e constituido de duas pontes-H, como as da figura abaixo, cada qual ligada a um motor. No entanto, alguns problemas foram encontrados durante o desenrolar do projeto e solucoes foram adotadas. Alimentacao utilizada para um perfeito funcionamento dos motores CC era de 9 V. Ja a alimentacao requerida para o CI 7408 era de 5 V. Para isto foi adicionado ao circuito um regulador de tensao de 5 V.Problemas relacionados a polarizacao dos transistores tambem foram vistos. Para isto, foram ligados ao circuito uma combinacao de resistores e transistores para conseguir polarizar corretamente os transistores BC516 e BC517. Abaixo segue a listagem dos componentes utilizados para a montagem do driver. R11=R13=150; R15=R16=10K; R12=R17=330 DIODOS 1N4007; TRANSISTORES NPN BC517; TRANSISTORES PNP BC516; TRANSISTORES BC548; CIRCUITO INTEGRADO 7408. |SENSOR DE VELOCIDADE| O sensor de Velocidade foi implementado com dois pares de fotodiodo (TIL32) e fototransistor (TIL78), os quais capturam sinais pulsados das rodas traseiras. Estes sinais sao utilizados para fornecer a frequencia angular a partir da qual e calculada a velocidade de cada roda, fornecendo um valor intermediario como instantanea do veiculo |SOFTWARE| /* Prototipo.c */ #include<pic.h>#include "usart.h"typedef struct{char dir1,dir2,dc2,dc1;}dado;#define M1T RA0#define M1F RA1#define M2T RA2#define M2F RA3void Protocolo(char sData,dado *Data);void FormataDados(char sData,dado *Data);void iniciaPWM(void);void setDir(char dir1, char dir2);void setDuty(int dutyc01,int dutyc02);void main(void){unsigned char sData;dado cData;init_comms();INTCON=0; PORTA=0;ADCON1=ADCON1|0x06;TRISA=0;TRISC=0xF0; TRISB=0x00;CCP1CON=0;CCP2CON=0;iniciaPWM();while(1){sData=getch(); if(sData==0xAA)RC0=1;elseRC0=0;PORTB=sData;FormataDados(sData,&cData);setDir(cData.dir1,cData.dir2);setDuty(cData.dc1,cData.dc2);CCP1CON=12;CCP2CON=12;T2CON=T2CON|7; while(!PIR1);PIR1=0;}}void setDuty(int dutyc01,int dutyc02){if(dutyc01==0)CCPR1L=0x00;else if(dutyc01==1)CCPR1L=0xFA;else if(dutyc01==2)CCPR1L=0x80;else if(dutyc01==3)CCPR1L=0xFF;if(dutyc02==0)CCPR2L=0x00;else if(dutyc02==1)CCPR2L=0xFA;else if(dutyc02==2)CCPR2L=0x80;else if(dutyc02==3)CCPR2L=0xFF;} void iniciaPWM(void){ T2CON=2; TMR2=0; PR2=0xFF;CCPR1L=0x00;CCPR2L=0x00; INTCON=0;PIE1=0;CCP1CON=12;CCP2CON=12;T2CON=7; while(!PIR1);PIR1=0; }void setDir(char dir1, char dir2){if(dir1==0x00){ M1F=0;M1T=1;M2F=1;M2T=1;}else if(dir1==0x01){M2F=0;M2T=1;M1F=1;M1T=1;}else if(dir1==0x02){M1F=0;M1T=1;M2F=0;M2T=1;}else if(dir2==0x00){M1F=1;M1T=0;M2F=1;M2T=1;}else if(dir2==0x01){M2F=1;M2T=0;M1F=1;M1T=1;}else if(dir2==0x02){M1F=1;M1T=0;M2F=1;M2T=0;} } void FormataDados(char sData, dado *Data){ Data->dir1=sData&3;Data->dir2=(sData>>2)&3;Data->dc2=(sData>>4)&3; Data->dc1=(sData>>6)&3; }void putch(unsigned char byte) { while(!TXIF); TXREG = byte;}unsigned char getch() { while(!RCIF); return RCREG; } /*usart.h*/#ifndef _SERIAL_H_#define _SERIAL_H_#define BAUD 9600 #define FOSC 20000000L#define AUX ((int)(FOSC/(16UL * BAUD) -1))#define RX_PIN TRISC7#define TX_PIN TRISC6#define init_comms()RX_PIN = 1; TX_PIN = 1; SPBRG = AUX; RCSTA = (0x90); TXSTA = (0x20)void putch(unsigned char);unsigned char getch(void);#endif /*Controle.c*/#include <pic.h>#include "usart.h"void main(void){unsigned char frt,trs,tData;PORTA=0;ADCON1=ADCON1|0x06;TRISA=0;TRISB=0xFF; INTCON=0; init_comms(); frt=0;trs=0;while(1){tData=0;if(RB7==1){frt++;if(frt==1)tData=tData|0x40; else if(frt==2)tData=tData|0x80; else if(frt==3)tData=tData|0xC0; }else if(RB6==1){trs++;if(trs==1)tData=tData|0x10; else if(trs==2)tData=tData|0x20; else if(trs==3)tData=tData|0x30; }if(RB5==1){if(RB7==1)tData=tData|0x00; else if(RB6==1)tData=tData|0x03; else tData=tData|0x02; }if(RB4==1){if(RB7==1)tData=tData|0x01; else if(RB6==1)tData=tData|0x07; else tData=tData|0x0B; } putch(tData); if(trs==3)trs=0;if(frt==3)frt=0;}} |DIFICULDADES| A maior dificuldade encontrada no projeto foi o desenvolvimento do hardware, principalmente da placa do driver, formada basicamente por duas pontes H ( uma para cada motor DC) e um CI 7408. Inicialmente os valores dos resistores da ponte H foram calculados para uma alimentacao de +5V, mas com essa alimentacao os motores nao possuiam torque suficiente para movimentar o carrinho. Entao foi necessario aumentar a alimentacao da placa, regulando a tensao em 5V para o CI 7408 e o PIC e colocando amplificadores nas saidas digitais. Outro ponto importante foi a utilizacao de um cristal oscilador de 20Mhz, com o qual o PIC nao funcionava. O problema foi identificado na gravacao do microcontrolador, que apesar de estar sendo utilizado um cristal, a configuracao do endereco 2007h para nao e a XT, para cristais, mas sim HS, pois com 20MHz o PIC opera em modo de alta velocidade. |RESULTADO FINAL| |LISTA de MATERIAIS| | |FONTES de CONSULTA| Motores CC Carrinho Microcontrolador PIC Display de 7 segmentos KIT RF TIL 32