1. José Luis Cobián Hermosillo, Ernesto Carlos Velazco Mercado, Roberto Huerta, Marcos Avila
Rosales
Diagrama de estados y autómata de practica motor a pasos
Tabla de Estados
A B C D
Paso 1 1 1 0 0
Paso 2 0 1 1 0
Paso 3 0 0 1 1
Paso 4 1 0 0 1
Diagrama de pasos de la práctica
2. José Luis Cobián Hermosillo, Ernesto Carlos Velazco Mercado, Roberto Huerta, Marcos Avila
Rosales
Diagrama del circuito
Diseño del circuito del motor a pasos bipolar.
Código del programa en C
#include <16f84a.h>
#use delay(clock=4000000)
#define tiempo 1000
#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES NOPROTECT
int level;
//configuración para el estado 1
3. José Luis Cobián Hermosillo, Ernesto Carlos Velazco Mercado, Roberto Huerta, Marcos Avila
Rosales
void estado1(void){
output_high(pin_b4);
output_high(pin_b5);
output_low(pin_b6);
output_low(pin_b7);
delay_ms(tiempo);
level=1;
}
//configuración para el estado 2
void estado2(void){
output_low(pin_b4);
output_high(pin_b5);
output_high(pin_b6);
output_low(pin_b7);
delay_ms(tiempo);
level=2;
}
//configuración para el estado 3
void estado3(void){
output_low(pin_b4);
output_low(pin_b5);
output_high(pin_b6);
output_high(pin_b7);
delay_ms(tiempo);
level=3;
}
4. José Luis Cobián Hermosillo, Ernesto Carlos Velazco Mercado, Roberto Huerta, Marcos Avila
Rosales
//configuración para el estado 4
void estado4(void){
output_high(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_high(pin_b7);
delay_ms(tiempo);
level=4;
}
int sentido;
int cambio;
int paso;
void cambiaEstado(void)
{
if(cambio==0)
{
switch(level)
{
case 1:
if(sentido==0)
estado4();
else
estado2();
break;
case 2:
5. José Luis Cobián Hermosillo, Ernesto Carlos Velazco Mercado, Roberto Huerta, Marcos Avila
Rosales
if(sentido==0)
estado1();
else
estado3();
break;
case 3:
if(sentido==0)
estado2();
else
estado4();
break;
case 4:
if(sentido==0)
estado3();
else
estado1();
break;
}
}
}
void main(){
set_tris_a(0b1111);
set_tris_b(0b00000000);
/* while(true){
output_high(pin_b4);
output_high(pin_b5);
output_high(pin_b6);
output_high(pin_b7);