Microcontroladores: Control de dos servomotores con el PIC16F887.
Un servomotor funciona mediante la implementación del pwm (Modulación de Ancho de Pulso).
Los servomotores tienen tres cables:
Cable rojo: Este cable es para la alimentación(positivo).
Cable negro: Esta cable se utiliza para la conexión a tierra.
Cable blanco: Es la línea de control por donde se le envía la señal de pulso.
Partes de un servomotor
Sistema eléctrico: Permite generar el movimiento mediante el eje.
Sistema de regulación: Este sistema está conformado por medio de engranajes, que permiten regular la velocidad y el torque.
Sistema de control: Es el sistema que controla el movimiento del motor por medio de los pulsos eléctricos.
Potenciómetro: El potenciómetro es una resistencia variable. Con este elemento, es posible identificar el ángulo del eje del motor.
Giros en grados de un servomotor.
Hay servomotores en donde su eje gira a 360. El más común es cuando su eje gira a 180.
Programa: Controlar el giro de dos servomotores
Análisis.
Funciones:
#include <16F887.h>: Librería utilizada para el microcontrolador PIC16F887
#use delay(clock=4000000): Habilita la frecuencia del sistema a 4MHZ.
#fuses XT,NOWDT,NOPROTECT: Son los que permiten la configuración del microcontrolador.
#fuses XT: Habilita el oscilador del sistema.
#fuses NOWDT: Deshabilita el Watch Dog Timer.
#FUSES NOPROTECT: Deshabilita la protección contra lectura de la FLASH.
#byte PORTC=7 / #byte PORTC=0X07: Se define puerto C , que se sitúa en la dirección 0X07 de la memoria RAM.
#byte PORTA=5 / #byte PORTA=0X05: Se define puerto A , que se sitúa en la dirección 0X05 de la memoria RAM.
#byte TRISA=85 / #byte TRISA=0X85: Define el TRISA, que se sitúa en la dirección 0X85 de la memoria RAM.
#byte TRISC=87 / #byte TRISC=0X87: Define el TRISC que se sitúa en la dirección 0X87 de la memoria RAM.
TRISC=0 : Define los pines del puerto C como salidas digitales.
TRISA=255 : Define los pines del puerto A como entradas digitales.
bit_clear(puerto,pin): Pone en 0 lógico el bit de puerto definido.
bit_set(puerto,bit): Pone en 1 lógico el bit puerto definido.
bit_test(puerto,bit): Se evalúa si está activado( 1 lógico) el bit del puerto definido.
//Librería para el pic 16f887
#include <16F887.h>
//Bit de configuración para habilitar o deshabilitar lo que se necesita para el microcontrolador
#fuses XT,NOWDT,NOPROTECT
//Configurar la frecuencia del reloj del sistema
#use delay(clock=4000000)
//Define los registros que se situan en la memoria RAM
#byte PORTC=0X07
#byte TRISC=0X87
#byte PORTA=0X05
#byte TRISA=0X85
void main(){
//Los tris automáticamente define los pines como digitales
//Definir como salida digital el puerto C
TRISC=0;
//Definir como entrada digital el puerto A
TRISA=255;
while(1){
//Prueba el estado del bit cero del puerto A, devuelve un uno
if(bit_test(PORTA,0)==1)
{
//Pone en uno el bit cero del puerto c
bit_set(PORTC,0);
//Retardo
delay_us(1600);
//Pone en cero el bit cero del puerto c
bit_clear(PORTC,0);
delay_us(600);
}
else
{
//Pone en uno el bit cero del puerto c
bit_set(PORTC,0);
//Retardo
delay_us(400);
//Pone en cero el bit cero del puerto c
bit_clear(PORTC,0);
delay_us(1800);
}
//Prueba el estado del bit cero del puerto A, devuelve un uno
if(bit_test(PORTA,1)==1){
//Pone en uno el bit uno del puerto c
bit_set(PORTC,1);
delay_us(1600);
//Pobe en cero el bit uno del puerto C
bit_clear(PORTC,1);
delay_us(600);
}
else{
//Pone en uno el bit uno del puerto C
bit_set(PORTC,1);
delay_us(400);
//Pone en cero el bit cero del puerto c
bit_clear(PORTC,1);
delay_us(1800);
}
}
}
CIRCUITO.
VIDEO DE FUNCIONAMIENTO.
visita nuestros contenidos relacionados con máquinas eléctricas.
visita nuestros contenidos relacionados con PLC
visita nuestros contenidos relacionados con mediciones e instrumentación.
CONTENIDOS MÁS RELEVANTES.