UTILIDADES

Control y verificación de Servo

Un diseño facil pero muy útil, para probar nuestros servos, y verificar el recorrido de cada uno.

Las conexiones son simples: el servo conectado a la salida 0(cero) RB0

Y el potenciometro de mas de 47k entre positivo y negativo y el centro a la puerta 13…

 

 

He incluido dos codigos, uno con la libreria de servo, y otro de la forma tradicional sin libreria.

Con libreria de servos
[sourcecode language="py"]
// Control de servo tradicional con libreria
// Walii.es 2011
//Pinguino.walii.es
//   +-----+
//   |servo|--------- PWM Servo control ---> to pinguino pin.
//   |     |--------- +5V
//   |  o  |--------- GND
//   |     | 
//   +-----+

uchar position=1;
int i;
void setup(void)
{
servo.attach(0);
}

void loop(void)
{
i=analogRead(13);
position=i/4;
servo.write(0,position);
delay(100);
}

[/sourcecode]

 Sin libreria de servo, pueden observar que el recorrido es mucho mayor que con la librería, esto es porque de esta forma no tenemos un limite preestablecido en él tamaño de pulso. Y si nos pasamos con esto, puede generar un reset por consumo elevado en el PINGUINO.     [sourcecode language="py"]
// Control de servo tradicional sin libreria
// Walii.es 2011
//Pinguino.walii.es
#define RUNLED PORTAbits.RA4
#define PIC18F4550                // control pin of servo
int counter;                    // counter used for interrupt
int position0;                //pin0 servo vertical
int ir0;//pin 13
int i;
int pulseWidth = 20;
void setup()
{
T1CON=0x01;                    // configure timer 1
PIE1bits.TMR1IE=1;                // set interrupt for timer 1
INTCON|=0xA0;                    // enable GIE and PEIE
pinMode(0,OUTPUT);
Serial.begin(9600);
}
//Con la siguiente rutina controlamos la señal al servo RB0.
//Leemos en cada pasada el valor de position0
void UserInterrupt()
{
if (PIR1bits.TMR1IF)
{
TMR1H=0xFF;                // reload value timer 1
TMR1L=0x9C;
PIR1bits.TMR1IF=0;            // clear interrupt flag
if (counter>position0+51) PORTBbits.RB0=0; // position
else PORTBbits.RB0=1;
if (counter==1500) counter=0;    // value for ~20 mS
counter++;
}
}

void loop()
{
ir0=analogRead(13);
position0=ir0/6;
if (position0<1) position0=1; if (position0>151) position0=151;

}
[/sourcecode]

Update de pruebas realizadas con el INTERVALOMETRO pinguino.

Aqui algunas capturas mas con relación al funcionamiento del intervalometro.

Hace un par de noches hemos gozado de unas muy bonitas tormentas eléctricas, y he intentado capturar algunas fotos con el invento hecho algunos post detras.
POST INTERVALOMETRO PINGUINO

Capturas:

 

 

Circuitos Básicos y Numeros de PINES.

Aquí dejo los planos minimos de los dos modelos actuales de PINGUINO… 18f2550 y 18f4550… como verán no necesitan de mucho para funcionar. Pero es necesario saber siempre el numero de PIN a configurar.

18f2550 (si le dan click se hace mas grande)

18f4550 (lo mismo, si le hacen click se hace mas grande)

Tabla de códigos ASCII

Siempre me vuelvo loco buscando… y siempre termino con el oraculo (google) por eso he decidido poner aquí las cosas necesarias, siempre que necesiten algo de info, busquen en la Categoría de UTILIDADES.

Tabla de conversión de caracteres ASCII

Facebook Like Add
Google PLUS ONE
De donde me visitan
Publicidad
Calendario de Posts
May 2018
M T W T F S S
« Nov    
 123456
78910111213
14151617181920
21222324252627
28293031