Escolar Documentos
Profissional Documentos
Cultura Documentos
Integrantes: Santamara Jos C.I. 14217628 Sarmiento Pedro C.I. 9220599 Espinel Jos C.I.13149161 Seccin: EN4B
1-El funcionamiento del motor paso a paso para la primera condicin es oprimir el nro. 1 para activar cada bobina atreves de los puertos RB0, RB1, RB2, RB3 en sentido de las agujas del reloj por un lapso de 500ms dando un giro completo y despus detenerse como lo indica la tabla de la verdad.
2-la segunda condicin se oprime el nro. 2 para activar las bobinas del motor pero con la diferencia de que es en sentido contrario de las aguas del reloj. 3-esta condicin tiene como finalidad hacer girar el motor indefinidamente el motor con un retardo de 2ms por vuelta oprimiendo la tecla nro.3 4- es igual a la anterior pero en sentido anti horario oprimiendo la tecla 4. 5-esta condicin hace que el motor se acelere progresivamente y posteriormente se detenga.
SENTIDO ANTI HORARIO PARA UNA VUELTA RB3 0 0 0 1 RB2 0 0 1 0 RB1 0 1 0 0 RB0 1 0 0 0
Las otras tablas son iguales solo que con las condiciones DO,FOR,WHILE se hace que los ciclos sean repititivos y se cumpla lo propuesto
R1
220R
13 14 OSC1/CLKIN OSC2/CLKOUT
LED-BARGRAPH-RED
2 3 4 5 6 7 8 9 10
33 34 35 36 37 38 39 40
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
U2
RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT 15 16 17 18 23 24 25 26 1 2 3 VSS VDD VEE RS RW E 4 5 6
CTS
RTS
TXD
RXD
19 20 21 22 27 28 29 30
LM016L
LCD1
U1
PIC16F877A
R5
4.7k 4.7k 4.7k 4.7k
7 8 9 10 11 12 13 14 D0 D1 D2 D3 D4 D5 D6 D7
R4 R3 Q1 Q2
IRFZ44N IRFZ44N +88.8
R2
voltaje
Q3 Q4
IRFZ44N
IRFZ44N
// 01/04/2013 //HECHO POR: //SANTAMARIA JOSE //CI:14217628 //PEDRO SARMIENTO //CI:9220599 //ESPINEL JOSE //CI:13149161 #include <16f877A.h> #fuses XT,NOWDT, NOPROTECT,NODEBUG,NOLVP,PUT #use delay(clock=20M) #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N) #include <lcd.c> #BYTE TRISB = 0X86 #BYTE PORTB = 0X06
void main() { TRISB= 0X00; PORTB=0x00; lcd_init(); printf(lcd_putc,"\f Motor Paso\n a Paso");
printf(" \r"); printf(" Opciones rotacion del motor Paso a Paso\r"); printf("1. vuelta a la derecha \r"); printf("2. vuelta a la izquierda \r"); printf("3. vueltas indefinidas a la derecha \r"); printf("4. vueltas indefinidas a la izquierda \r"); printf("5. Aceleracion de motor a la derecha \r"); printf("6. Detener el Motor \r");
do{ ch=getc();
if(ch==1){ retardo=500; printf(lcd_putc,"\f Motor a la \n derecha"); portb=0x08; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x02; delay_ms(retardo); portb=0x01; delay_ms(retardo); } if(ch==2){ retardo=500;
printf(lcd_putc,"\f Motor a la \n izquierda"); portb=0x01; delay_ms(retardo); portb=0x02; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x08; delay_ms(retardo); } if(ch==3){ retardo=2; printf(lcd_putc,"\f Motor a la \nderecha rapido"); do{
portb=0x08; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x02; delay_ms(retardo); portb=0x01; delay_ms(retardo); aux=getc(); }while (aux!=6); printf(lcd_putc,"\f Motor detenido");
} if(ch==4){ retardo=2; printf(lcd_putc,"\f Motor a la \nizquierda rapido"); do{ portb=0x01; delay_ms(retardo); portb=0x02; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x08; delay_ms(retardo); aux=getc(); }while (aux!=6); printf(lcd_putc,"\f Motor detenido"); } if(ch==5){ retardo=500; printf(lcd_putc,"\f Motor variando \n velocidad"); for(i=1;i<62;i++){ portb=0x08; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x02;
delay_ms(retardo); portb=0x01; delay_ms(retardo); retardo= retardo-8; } for(i=0;i<625;i++){ portb=0x08; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x02; delay_ms(retardo); portb=0x01; delay_ms(retardo); } for(i=1;i<62;i++){ portb=0x08; delay_ms(retardo); portb=0x04; delay_ms(retardo); portb=0x02; delay_ms(retardo); portb=0x01; delay_ms(retardo); retardo= retardo+8; }
}while(1);