Motor a pasos retroalimentado

Solo disponible en BuenasTareas
  • Páginas : 6 (1389 palabras )
  • Descarga(s) : 0
  • Publicado : 6 de febrero de 2012
Leer documento completo
Vista previa del texto
Proyecto Grua
Equipo #7

Puerto B | Configuracion | Assignacion |
RB0 | Entrada | Sensor Optoacoplador |
RB1 | Entrada | Boton de subir en modo manual |
RB2 | Entrada | Boton de bajada en modo manual |
RB3 | Salida | Bobina A del motor |
RB4 | Salida | Bobina B del motor |
RB5 | Salida | Bobina C del motor |
RB6 | Salida | Bobina D del motor |
RB7 | Entrada | Boton de ON/ OFF |
Lenguaje Basic
Compilado en Pic Simulator IDE
Simulado en Proteus

Configuración de Puertos

| ON | OFF |
RB7 | 1 | 0 |

Puerto A | Configuración | Asignación |
RA0 | Entrada x |  Posición deseada bit 0 |
RA1 | Entrada x |  Posición deseada bit 1 |
RA2 | Entrada x |  Posición deseada bit 2 |
RA3 | Entrada x |  Posición deseada bit 3 |
RA4 | Entrada | Cambio de modomanual a automático |
X = utilizados solo en modo automático
| Automático | Manual |
RA4 | 1 | 0 |

Define CONF_WORD = 0x3ff1 ; Se define la palabra de configuración como trabajara el pic, en este caso es 3ff1 que dice lo siguiente: Code Protection deshabilitado, Power-up Timer habilitado, Watchdog Timer deshabilitado, Oscillator tipo XT.
Define CLOCK_FREQUENCY = 4 ; se define lafrecuencia con la que nuestro pic trabajara en este caso 4 mhz.

Dim retro As Byte ; se declara la variable “retro” como Byte ( retro es el registro donde se ira dando el incremento de la interrupción dada por la retroalimentación del motor ).
Const tope = 12 ; declaración de la constante “tope” la máxima posición alcanzada por la grúa en este caso es igual a 12 decimal.
Dim deseada As Byte ;Declaración de la variable “deseada” esta será donde se guardara la posición ala que queramos llegar en modo automático.

INTCON.INTE = 1 ; habilita las interrupción de entrada en RB0.
Enable ; Habilita las interrupciones en general GIE
TRISA = $1f ; Configura el Puerto A
TRISB = $87; Configura el Puerto B
OPTION_REG.INTEDG = 1 ; Configura que las interrupciones sean dadas por el flanco ascendente-----------------------------------------------------------------------------------------------------------------------------------
Inicio de ciclo de escaneo (inicio) se encarga de estar escaneando el bit 7 del puerto B que es el botón de encendido si esta en 0 salta a OFF sino sigue a escanear el bit 4 del puerto A que es el botón para cambiar de modo automático a modo manual si este esta en1 entonces salta a programa2 (automático), si no continua con el bit 1 del puerto B si este esta en 1 salta a rutina de Subir si no es así salta a escanear el bit 2 del puerto B si es 1 salta a rutina de bajar si no se dio ninguna condición el programa se queda ciclado esperando una entrada por estos puertos.
inicio:
If PORTB.7 = 0 Then Goto off
If PORTA.4 = 1 Then Goto programa2
If PORTB.1 =1 Then Goto subir
If PORTB.2 = 1 Then Goto bajar
Goto inicio

off:
PORTB = $00 ; OFF se encarga de cuando el bit 7 del puerto B este en 0 des energiza el motor así para ahorrar energía en modo apagado después salta a inicio.
Goto inicio
-----------------------------------------------------------------------------------------------------------------------------------
Rutina de Subir y bajarse manda un código a los bits correspondientes alas bobinas A,B,C,D, en secuencia para asi poder hacer girar el motor a pasos, entre cada paso hay un retardo de 90 mili segundos asi para lograr una velocidad moderada y una buena respuesta de parte del motor a los cambios.
SUBIDA
| | | | A | B | C | D | | | |
Pasos | RB0 | RB1 | RB2 | RB3 | RB4 | RB5 | RB6 | RB7 | | CODIGO HEX |
1| x | x | x | 1 | 0 | 0 | 0 | x | | 08H |
2 | x | x | x | 0 | 1 | 0 | 0 | x | | 10H |
3 | x | x | x | 0 | 0 | 1 | 0 | x | | 20H |
4 | x | x | x | 0 | 0 | 0 | 1 | x | | 40H |

subir:
If retro = tope Then Goto inicio
PORTB = $08
WaitMs 90
PORTB = $10
WaitMs 90
PORTB = $20
WaitMs 90
PORTB = $40
WaitMs 90
Goto inicio

CICLO DE BAJADA
| | | | A | B | C | D | | | |...
tracking img