proyecto: robot hexápodo -...
Post on 19-Sep-2018
214 Views
Preview:
TRANSCRIPT
proyecto: robot
hexápodo (spidy.00)
Departamento de Electricidad-Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Alumnos: Rodrigo García Martín Jesús Torrejón López
Instituto: I.E.S. Joan Miró Localidad: San Sebastián de los
Reyes Curso: 2008/2009
2
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Índice: Página 1. Descripción del proyecto……………………………………………………….. 3 2. Diagrama de bloques………………………………………………………........ 5 3. Análisis de los bloques……………………………………………………....... 6 3.1. Control+LCD…….………………………………………………………….. 6 3.2. Control PWM servos SD20 + Servo………………………………… 7 3.3. Alimentación………………………………………………………………... 8 3.4. Comunicación µC-PC…………………………………………………... 9 3.5. Receptor radiofrecuencia………………………………………………..10 3.6. Mando emisor radiofrecuencia……………………………………….10 4. Esquemas eléctricos…………………………………………………………..…12 4.1. Bloque control……………………………………………………………….12 4.2. Alimentación/Comunicación µC-PC………………………….....13 5. Diseño de circuitos impresos……………………………………………….14 5.1. Bloque control……………………………………………………………….14 5.2. Alimentación/Comunicación µC-PC……………………………..16 6. Diseño mecánico………………………………………………………………….18 7. Programación………………………………………………………………………19 7.1. Pruebas……………………………………………………………………….19 7.1.1. LCD…………………………………………………………………19 7.1.2 SD20+servos……………………………………………………..20 7.2. Programas………………………………………………………………….38 7.2.1. Inicialización…………………………………………………...38 7.2.2. Andar hacia delante………………………………………...48 8. Lista de componentes…………………………………………………………56 8.1. Bloque control…………………………………………………………….56 8.2. Alimentación / Comunicación µC-PC………………………...57 8.3. Estructura………………………………………………………………….58 9. Coste económico………………………………………………………………..59 10. Referencias………………………………………………………………………..60 11. Anexos……………………………………………………………………………….61 11.1. Características principales del PIC 16F876A…………………61 11.2. Características principales SD20………………………………….61
3
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
1. Descripción del proyecto
El proyecto consiste en diseñar y fabricar un robot hexápodo.
El robot está formado por seis patas, con tres servo-motores por pata para así darle al robot tres grados de libertad por cada pata, siendo estos hombro, codo y mano.
El primer grado de libertad estaría formado por el primer servo de las patas, este realizaría la función de hombro realizando movimiento de derecha a izquierda. El segundo grado de libertad sería el segundo servo de las patas; este realizaría la función de codo con movimientos de arriba abajo. El tercer servo de las patas seria la mano, también realizando movimientos de arriba abajo.
El robot consta de dos placas de circuito impreso; una de alimentación más conexión con el PC y otra de control; tanto de servos como de las distintas funciones.
El robot es controlado por un PIC16F876A y por un chip SD20. El primero de estos será el que controle la parte del LCD y el modo radiocontrol, mientras que el segundo será el encargado de controlar los servo-motores de las patas mediante una señal PWM.
Se le ha dotado de una pantalla LCD para que nos indique lo que está ocurriendo en su entorno en todo momento.
Actualmente, el robot no dispone de ningún tipo de sensores de obstáculos, pero próximamente contara con ellos.
La función de radiocontrol se realizará mediante una comunicación entre el robot y un mando en radio frecuencia con los módulos de CEBECK C-0503 y C-0504. Que son un transmisor y receptor de datos en modulación AM que trabajan a una frecuencia portadora 433,92 MHz y tienen un Ancho de Banda de 4 KHz.
El diseño de los circuitos impresos se realiza con una herramienta denominada “Proteus”, la cual, permite simular el hardware y el software a la vez, pudiendo ejecutarse paso a paso cada programa. Se puede trabajar con ficheros .ASM y C.
4
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
La programación del robot se ha realizado mediante lenguaje “c” con el programa “Pic C Compiler”.
El software se puede grabar en el robot directamente sin necesidad de extraer el microcontrolador, para ello se ha utilizado el grabador PICdownloader.exe. Los microcontroladores tienen que tener cargado previamente un programa de comunicaciones para comunicarnos con un Ordenador Personal.
5
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
2. Diagrama de bloques
CONTROL
CONTROL
SERVOS
LCD
PORT B
I2C
S1..S18
SERVOS
RECEPTOR RF
RC7
ALIMENTACIÓN
5V
COMUNICACIÓN µC-PC
RC6 RC7
HACIA TODAS LAS PLACAS
MANDO
RF
6
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
3. Análisis de los bloques 3.1. Control + LCD
Un microcontrolador PIC16F876A es el encargado de realizar el
control del robot: gestión del LCD, comunicación serie, controlador por I2C de otros dispositivos y de la comunicación por RF. Su frecuencia de trabajo es de 4Mhz, ejecutando una instrucción cada 1 µs.
Está dotado con un pulsador de inicio, un jumper (j 12) para seleccionar el modo en el que queremos que trabaje nuestro robot y un último jumper para utilizar la comunicación serie según nos interese, si es para introducirle un nuevo código o bien para ejecutarlo en modo radiofrecuencia.
La función del LCD es básicamente, mostrar información sobre el programa que está ejecutando en ese momento o cualquier otro tipo de mensaje que se desee presentar en la pantalla.
x10
7
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
3.2. Control PWM servos SD20+ Servo
Este bloque gira en torno a ese chip central. Es un PIC 16F872 preprogramado. Con la característica de que es capaz de generar 20 señales PWM independientes. Mediante comunicación I2C, le daremos instrucciones desde el PIC de control que el interpretará y según estas generará una señal PWM en una salida elegida previamente por el usuario. Tiene la particularidad de que necesita un cristal de 8 MHz con toma de tierra intermedia.
Para generar la señal PWM hemos codificado el rango de actuación de un servo, que es 180° de libertad, en 256 códigos, por lo que cada variación de una unidad en código equivale a 0,70°.
Se han incluido 6 señales digitales para, en un futuro, sensar el apoyo de las patas.
Un servo es un dispositivo similar a un motor de corriente continua, que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación, y mantenerse estable en dicha posición. Está conformado por un motor, una caja reductora y un circuito de control.
8
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
3.3. Alimentación
Está situada en la primera placa. Aunque no es el esquema final, pero actualmente nos está sirviendo para realizar las pruebas necesarias del robot.
La Fuente de Alimentación es un circuito que se encargar de obtener una tensión de 5V (VDD3) continua a partir de una superior de 12V. Para ello se ha utilizado el regulador LM 350K (Encapsulado TO3) que nos puede dar una corriente de salida Imax de 3 A.
La parte de filtrado de de señales esta formador por los condensadores C1, C2, C3 y C4.
Los condensadores C1 y C3 son condensadores de filtrado de la señal alterna. Se encargar de filtrar la señal alterna para que se quede una señal continua limpia para poder trabajar sin problemas.
Los condensadores C2 y C4 se encargan de filtrar las señales externas que el circuito pueda absorber y las lleva a masa. Esto se debe a que las pistas del circuito, actúan de antena y estos condensadores filtran esas señales.
La parte de regulación de tensión, esta formada por el potenciómetro RV1, la resistencia R38 y el condensador C15. El potenciómetro RV1 nos variara la tensión de salida según la posición en la que lo pongamos, para que esto no se produzca de manera brusca, sino que varié lentamente necesitamos el condensador C15. La resistencia R38 nos proporciona una corriente fija para el potenciómetro RV1 y el condensador C15.
Las funciones de los diodos D1, D2, D3 y D4, son las siguientes.
A K
D11 2
ON-OFF
12
BATERIA
C1
C3
C2100nF
C4
AK
D3V
12
VDD3
AK
D4
AK
D2
12345678910
J1A
12
JP1
1
MASA3
VD
D3
RC
61
RC
71(B
L)
V12
12
3
RV11k
VIN2
VOUT3
ADJ
1
U1
R38
C15
R1
9
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
El diodo D1, es un diodo de protección del circuito. Este protege de manera que si se enchufase la batería del revés, este evitaría que se estropease los componentes de circuito.
El diodo D2, sirve para proteger el regulador de tensión LM350K, evitando que las tensiones entren en el regulador por la salida de este, de manera que estas tensiones se desviarían por el diodo hasta la entrada del regulador.
El diodo D3 nos indica el funcionamiento de nuestra fuente. Cuando este se ilumine significa que la fuente de alimentación estará funcionando. Pero para que este diodo no se rompa, tenemos una resistencia limitadora de corriente, R1 que evita una corriente elevada.
El diodo D4 es otro protector del regulador LM350K. La idea general era el diseño de una placa común entre el resto de alumnos, por lo que este diodo protege so por error a la hora del cambio de placas, hemos conectado la batería a la salida de 5 voltios, el polo positivo a la masa y el polo negativo a la salida de 5 voltios.
El pin Masa3 es otro punto de masa. El conector J6 se encarga de llevar a la otra placa una salida fija de
12 V, JP1 lleva una tensión fija de 5V y J1A se encarga de de alimentar también uno de los micros de la otra placa.
3.4. Comunicación µC-PC
El cargador del programa desde el PC al micro del robot consiste
en un circuito que intercambia niveles TTL a RS 232 y viceversa donde un 0 lógico en TTL equivale a 0V en RS232 equivale a una tensión comprendida entre +3 y +15V.
Un 1 lógico en TTL equivale a +5V y en RS232 equivale a una tensión comprendida entre -3 y -15V.
El Circuito Integrado MAX 232 se encarga de convertir los niveles de TTL a RS232.
VC
C
TXPC
RXPC
1
6
2
7
3
8
4
9
5
J11
C5
C8
C6C7
C9
RC71(BL)RC61
VD
D3
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT14
R1IN13
T2OUT7
R2IN8
C2+
4
C2-
5
C1+
1
C1-
3
VS+2
VS-6
VCC
16
GND
15
U2
10
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
3.5. Receptor radiofrecuencia
La Tarjeta Receptora de Datos CEBEK C-0504 es un circuito
híbrido encargado de recibir vía radiofrecuencia, los datos digitales procedentes del Mando. La señal digital tiene que tener una frecuencia entre 20 Hz < fo < 4 KHz. y una portadora de 433,92 MHz. Este circuito demodula la señal de AM obteniendo los datos transmitidos.
3.6. Mando emisor radiofrecuencia
Receptor de Datos CEBEK C-0504
Vcc1
1
GN
D1
2
An
tena
3
GN
D2
7
GN
D3
11
TE
ST
13
Vs
14
Vcc
15
RF2CEBEK-C-0504_JOAN
VCC1(5V)
RC7(RF)
ANTENA
VS
S
RB0E
RB1E
RB2E
RB3E
RB4E
RB1E RB3E RB0E RB2E RB4E
Q1EBD136_JOAN
Emisor de Datos CEBEK C-0503
GN
D1
1
Ve
2
-3
GN
D2
4
An
tena
11
GN
D3
13
Vcc
15
E_RF1E
1
CON1E
BORNIER1_JOAN
VI1
VO3
GN
D2
U2E7805_JOAN
A K
D6E
1N4007_JOAN12
BAT1E9V
RA0/AN02
RA1/AN13
RA2/AN2/VREF-4
RA4/T0CKI6
RA5/AN4/SS7
OSC1/CLKIN9
OSC2/CLKOUT10
RC1/T1OSI/CCP212
RC2/CCP113
RC3/SCK/SCL14
RB7/PGD28
RB6/PGC27
RB526
RB425
RB3/PGM24
RB223
RB122
RB0/INT21
RC7/RX/DT18
RC6/TX/CK17
RC5/SDO16
RC4/SDI/SDA15
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI11
MCLR/Vpp/THV1
U1E
PIC16F876_JOAN
R7E2.2k
X1E
4MHz
C3E
15pF
C4E
15pF
R1E220
R2E220
R3E220
12
SW1E
12
SW3E
12
SW2E
AK
D1ELED-YELLOW_JOAN
AK
D2ELED-GREEN_JOAN
AK
D3ELED-RED_JOAN
R6E220
AK
D7ELED-RED_JOAN
Mando
1 2
SW6E
INTERRUPTOR_JOAN
C2E220uF
VDD
R4E220
12
SW4E
AK
D4ELED-RED_JOAN
R5E220
12
SW5E
AK
D5ELED-RED_JOAN
C1E220uF
VDD
Izquierda Atras Adelante Parar Derecha
11
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
El mando tiene la misión de transmitir un código asociado a cada pulsador, para poder controlar el robot.
El microcontrolador PIC 16F876a lee los pulsadores y transmite los códigos vía serie a la tarjeta transmisora de radiofrecuencia a una velocidad de 1562,5 baudios por segundo. Es una transmisión asíncrona (1bit de comienzo, 8bit de Datos, 1 bit de parada sin bit de paridad).
La Alimentación procede de un regulador 7805 que suministra 5V a todos los circuitos.
El TRT “Q1E” tiene la misión de deshabilitar la tarjeta de radiofrecuencia cuando esta no transmite datos.
La Tarjeta Emisora SAW para Datos 433,92 MHz. CEBEK C-0503 es un circuito híbrido encargado de transmitir vía radiofrecuencia, los datos digitales procedentes del microprocesador (TX). La señal digital tiene que tener una 20 Hz < fo < 4 KHz. Se modula en AM cuya frecuencia portadora es de 433,92 MHz.
El microcontrolador PIC 16F876a trabaja a una frecuencia de 4 MHz y ejecuta una instrucción en 1uS.
El Led D7E nos indica que el mando está encendido, está limitada su corriente en 20 mA.
El resto de los LED se iluminan cuando activamos el Pulsador correspondiente.
El diodo D7E tiene la misión de proteger el circuito en cado de invertir la Batería.
Los condensadores C1 y C2 son filtros.
12
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
4. Esquemas eléctricos 4.1. Bloque control
13
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
4.2. Alimentación / Comunicación µC-PC
VC
C
TXPC
RXPC
1
6
2
7
3
8
4
9
5
J11
C5
C8
C6C7
C9
RC71(BL)RC61
VD
D3
T1IN11
R1OUT12
T2IN10
R2OUT9
T1OUT14
R1IN13
T2OUT7
R2IN8
C2+
4
C2-
5
C1+
1
C1-
3
VS+2
VS-6
VCC
16
GND
15
U2
A K
D11 2
ON-OFF
12
BATERIA7.2V
C12200uF
C32200uF
C2100nF
C4100nF
AK
D3
V12
GN
D3
GN
D3
GN
D3
GN
D3
GN
D3
VDD3
GN
D3
GN
D3
AK
D41N4007_JOAN
AK
D2
1N4007_JOAN
12345678910
J1ACONN-SIL10_RODRIGO
12
JP1BORNIER 2_JOAN
VD
D3
RC
61
RC
71(B
L)
GN
D3
VD
D3
GN
D3
12
3
RV11k
VIN2
VOUT3
ADJ
1
U1LM350K_JOAN
R38240
C151uF
GN
D3
R110k
1 2
J6BORNIER 2_JOAN
V12
GN
D3
1
J1
GN
D3
14
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
5. Diseño de circuitos impresos 5.1. Bloque control
Cara de componentes y Top Copper
15
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Bottom Copper
16
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
5.2. Alimentación / Comunicación µC-PC
Cara de componentes y Top Copper
17
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Bottom Copper
18
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
6. Diseño mecánico
Teniendo en cuenta que el robot es un hexápodo se decidió que el cuerpo tuviese forma de hexágono regular. Son dos planchas de unos 30cm en la diagonal que se colocan a modo de sándwich, liberando un espacio intermedio para baterías y servos. El diseño de las patas ha sido continuo y evolutivo, y en la actualidad no disponemos de los diseños del último modelo, tanto del brazo como de la mano. Brazo Mano
Mano Codo Hombro
M
M
M
19
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
7. Programación 7.1. Pruebas 7.1.1. LCD
1º PRUEBA DEL LCD
/* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main()
{
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
{
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
lcd_gotoxy(1,1);
printf(lcd_putc,"ROBOT SPYDI");
}
20
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
7.1.2. SD20 + servos
1º PRUEBA DEL SD20
/* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main()
{
Sd20_ini();
While(1){
// Pata 1:
// Hombro 1.
Sd20(16,100); // Posicionamos el Servo1 del SD20 en 200.
delay_ms(50);
// Codo 1.
Sd20(17,80); // Posicionamos el Servo2 del SD20 en 200.
delay_ms(50);
// Mano 1.
Sd20(18,120); // Posicionamos el Servo3 del SD20 en 200.
delay_ms(100);
21
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(16,50); // Posicionamos el Servo1 del SD20 en 50.
delay_ms(50);
Sd20(17,40); // Posicionamos el Servo2 del SD20 en 50.
delay_ms(100);
Sd20(18,90); // Posicionamos el Servo3 del SD20 en 100.
delay_ms(50);
}
}
/* ******************* Función Sd20_ini ******************************* */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
/* ********************** Función Sd20(int8,int8)
************************** */
void Sd20(int8 servo, int8 posicion)
{
22
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
2º prueba del SD20 /* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main()
{
Sd20_ini();
// centrado de los servos
While(1)
{
// centrado uña
Sd20(1,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(2,127); // Posicionamos el Servo1 del SD20 en 50.
23
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(3,127); // Posicionamos el Servo1 del SD20 en 50.
while(1);
}
}
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
24
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
3º PRUEBA DEL SD20
/* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main()
{
25
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
{
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
delay_ms(2500);
lcd_gotoxy(1,1);
printf(lcd_putc,"ROBOT SPYDI");
delay_ms(2500);
lcd_gotoxy(4,1);
printf(lcd_putc,"coco y");
lcd_gotoxy(4,2);
printf(lcd_putc,"txus");
delay_ms(2500);
Sd20_ini();
While(1)
// Pata 1:
// Hombro 1.
Sd20(4,200); // Posicionamos el Servo1 del SD20 en 200.
delay_ms(50);
// Codo 1.
Sd20(5,200); // Posicionamos el Servo2 del SD20 en 200.
delay_ms(50);
// Mano 1.
Sd20(6,120); // Posicionamos el Servo3 del SD20 en 200.
delay_ms(100);
Sd20(4,50); // Posicionamos el Servo1 del SD20 en 50.
delay_ms(50);
Sd20(5,50); // Posicionamos el Servo2 del SD20 en 50.
delay_ms(100);
Sd20(6,90); // Posicionamos el Servo3 del SD20 en 100.
delay_ms(50);
}
}
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
26
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
27
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
4º PRUEBA DEL SD20
/* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main()
{
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
While(1)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
//delay_ms(2500);
lcd_gotoxy(1,2);
printf(lcd_putc,"ROBOT SPYDI");
// delay_ms(2500);
28
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
// centrado codo
Sd20(2,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(5,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(8,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(11,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(14,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(17,127); // Posicionamos el Servo1 del SD20 en 50.
// centrado hombro
Sd20(1,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(4,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(7,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(10,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(13,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(16,127); // Posicionamos el Servo1 del SD20 en 50.
// centrado mano
Sd20(3,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(6,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(9,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(12,127); // Posicionamos el Servo1 del SD20 en 100.
Sd20(15,127); // Posicionamos el Servo1 del SD20 en 50.
Sd20(18,127); // Posicionamos el Servo1 del SD20 en 50.
delay_ms(500);
// LEVANTANDO
Sd20(2,174); // Posicionamos el Servo1 del SD20 en 100.
29
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(5,174); // Posicionamos el Servo1 del SD20 en 50.
Sd20(8,174); // Posicionamos el Servo1 del SD20 en 50.
Sd20(11,80); // Posicionamos el Servo1 del SD20 en 100.
Sd20(14,80); // Posicionamos el Servo1 del SD20 en 50.
Sd20(17,80); // Posicionamos el Servo1 del SD20 en 50.
while(1);
}
}
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
30
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
5º PRUEBA DEL ROBOT (CENTRANDO TODOS LAS PATAS)
/* ************************************************** Control
del SD20 ************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) //
Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su
hardware interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100
Kbps
// Elegimos sda=PIN_C4 como
patilla de datos.
// Elegimos scl=PIN_C3 como
patilla de reloj.
#include <LCD1.c> // Incluimos el driver
LCD1.c que contiene las funciones de control del LCD.
/* ******************************************************
Declaración de funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
31
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
/* ******************************************************
Función principal o programa principal
************************************************ */
void main(){
int i,j;
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
//delay_ms(2500);
lcd_gotoxy(1,2);
printf(lcd_putc,"ROBOT SPYDI");
// delay_ms(2500);
//centrado hombro
for(i=1; i<18; i=i+3){
Sd20(i, 127);
}
//centrado codo
for(i=2; i<19; i=i+3){
Sd20(i, 127);
}
//centrdo mano
for(i=3; i<10; i=i+3){
Sd20(i, 96);
}
for(i=12; i<20; i=i+3){
Sd20(i, 160);
}
delay_ms(200);
Sd20(1, 127);
Sd20(3, 174);
Sd20(2, 174);
32
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(7, 127);
Sd20(9, 174);
Sd20(8, 174);
delay_ms(200);
Sd20(1, 80);
Sd20(3, 174);
Sd20(2, 174);
Sd20(7, 174);
Sd20(9, 174);
Sd20(8, 174);
delay_ms(200);
Sd20(1, 80);
Sd20(3, 127);
Sd20(2, 127);
Sd20(7, 174);
Sd20(9, 127);
Sd20(8, 127);
delay_ms(200);
Sd20(10, 127);
Sd20(12, 80);
Sd20(11, 80);
Sd20(16, 127);
Sd20(18, 80);
Sd20(17, 80);
delay_ms(200);
Sd20(10, 80);
Sd20(12, 80);
Sd20(11, 80);
Sd20(16, 174);
Sd20(18, 80);
Sd20(17, 80);
delay_ms(200);
Sd20(10, 80);
Sd20(12, 127);
Sd20(11, 127);
33
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(16, 174);
Sd20(18, 127);
Sd20(17, 127);
}
/* ********************************************************
Función Sd20_ini
****************************************************************
*/
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS
hasta THmax= 2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d -->
1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o
control modo expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor
de offset(Parte Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte
alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor
de offset(Parte Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte
baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
34
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
/* **************************************************
Función Sd20(int8,int8)
****************************************************************
*/
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
PRUEBA DE RANGO DE MOVIMIENTOS MAXIMOS Y MINIMOS
/* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main(){
int i;
35
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
//delay_ms(2500);
lcd_gotoxy(1,2);
printf(lcd_putc,"ROBOT SPYDI");
// delay_ms(2500);
//centrado hombro
for(i=1; i<18; i=i+3){
Sd20(i, 127);
}
//centrado codo
for(i=2; i<19; i=i+3){
Sd20(i, 127);
}
//centrdo mano
for(i=3; i<20; i=i+3){
Sd20(i, 127);
}
delay_ms(500);
//maximo codo
Sd20(2, 200);
Sd20(17, 55);
delay_ms(100);
Sd20(3,65);
Sd20(18,190);
delay_ms(500);
//minimo codo
Sd20(2, 55);
Sd20(17, 200);
delay_ms(100);
Sd20(3,127);
Sd20(18, 127);
}
36
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
37
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
38
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
7.2. Programas
INICIO: LEVANTANDO EL ROBOT Y SALUDANDO
/* ************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main(){
int i, j, k, l, aux;
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
//delay_ms(2500);
lcd_gotoxy(1,2);
printf(lcd_putc,"ROBOT SPYDI");
// delay_ms(2500);
//centrado hombro
for(i=1; i<18; i=i+3){
39
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(i, 127);
}
//centrado codo
for(i=2; i<10; i=i+3){ //DERECHA
Sd20(i, 94);
}
for(i=11; i<19; i=i+3){ //IZQUIERDA
Sd20(i, 160);
}
//centrdo mano
for(i=3; i<10; i=i+3){ //DERECHA
Sd20(i, 94);
}
for(i=12; i<20; i=i+3){ //IZQUIERDA
Sd20(i, 160);
}
delay_ms(5000);
// codo
for(aux=0; aux<130; aux++){
delay_ms(1);
j= 94+aux;
k= 160-aux;
for(i=2; i<10; i=i+3){
Sd20(i, j); //DERECHA
Sd20((i+9), k); //IZQUIERDA
}
}
delay_ms(500);
// codo
Sd20(2, 225);
Sd20(5, 225);
Sd20(8, 225);
Sd20(11, 30);
Sd20(14, 30);
Sd20(17, 30);
delay_ms(10);
40
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
//mano
Sd20(3,200);
Sd20(6,200);
Sd20(9,200);
Sd20(12,55);
Sd20(15,55);
Sd20(18,55);
delay_ms(500);
//centrado hombro
for(i=1; i<18; i=i+3){
Sd20(i, 127);
}
//centrado codo
for(i=2; i<19; i=i+3){
Sd20(i, 127);
}
//centrdo mano
for(i=3; i<10; i=i+3){
Sd20(i, 96);
}
for(i=12; i<20; i=i+3){
Sd20(i, 160);
}
delay_ms(1000);
Sd20(5, 150);
Sd20(14,104);
delay_ms(200);
Sd20(4, 150);
Sd20(15,150);
delay_ms(200);
Sd20(16, 100);
Sd20(17,50);
while(1){
Sd20(18, 180);
41
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
delay_ms(100);
Sd20(18,60);
delay_ms(100);
}
}
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
42
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
i2c_stop(); // Finalización de la transmisión.
}
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
1º INTENTO DE ANDAR
/*************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
43
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
void main(){
int i,j;
Sd20_ini();
lcd_init(); // Inicializamos el LCD.
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
//delay_ms(2500);
lcd_gotoxy(1,2);
printf(lcd_putc,"ROBOT SPYDI");
// delay_ms(2500);
// centrado patas
//centrado hombro
for(i=1; i<18; i=i+3){
Sd20(i, 127);
}
//centrado codo
for(i=2; i<10; i=i+3){
Sd20(i, 96);
}
for(i=11; i<20; i=i+3){
Sd20(i, 160);
}
//centrdo mano
for(i=3; i<10; i=i+3){
Sd20(i, 96);
}
for(i=12; i<20; i=i+3){
Sd20(i, 160);
}
// Preparacion de servos para andar
delay_ms(200);
//centrado 1º y 3º pata
Sd20(1, 127);
Sd20(3, 174);
Sd20(2, 174);
Sd20(7, 127);
Sd20(9, 174);
Sd20(8, 174);
44
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
delay_ms(200);
//centrado 1º y 3º pata
Sd20(1, 80);
Sd20(3, 174);
Sd20(2, 174);
Sd20(7, 174);
Sd20(9, 174);
Sd20(8, 174);
delay_ms(200);
//centrado 1º y 3º pata
Sd20(1, 80);
Sd20(3, 96);
Sd20(2, 96);
Sd20(7, 174);
Sd20(9, 96);
Sd20(8, 96);
delay_ms(200);
//centrado 4º y 6º pata
Sd20(10, 127);
Sd20(12, 80);
Sd20(11, 80);
Sd20(16, 127);
Sd20(18, 80);
Sd20(17, 80);
delay_ms(200);
//centrado 4º y 6º pata
Sd20(10, 80);
Sd20(12, 80);
Sd20(11, 80);
Sd20(16, 174);
Sd20(18, 80);
Sd20(17, 80);
delay_ms(200);
//centrado 4º y 6º pata
Sd20(10, 80);
Sd20(12, 160);
Sd20(11, 160);
Sd20(16, 174);
Sd20(18, 160);
45
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(17, 160);
delay_ms(600);
while(1){
// adelante patas 1,3,5
Sd20(1, 127);
Sd20(3, 174);
Sd20(2, 174);
delay_ms(100);
Sd20(7, 219);
Sd20(9, 174);
Sd20(8, 174);
delay_ms(100);
Sd20(13, 80);
Sd20(15, 80);
Sd20(14, 80);
delay_ms(200);
Sd20(1, 127);
Sd20(3, 96);
Sd20(2, 96);
delay_ms(100);
Sd20(7, 219);
Sd20(9, 96);
Sd20(8, 96);
delay_ms(100);
Sd20(13, 80);
Sd20(15, 160);
Sd20(14, 160);
// adelante patas 2.4.6
delay_ms(200);
Sd20(4, 174);
Sd20(6, 174);
Sd20(5, 174);
delay_ms(100);
Sd20(10, 33);
Sd20(12, 80);
Sd20(11, 80);
delay_ms(100);
Sd20(16, 127);
Sd20(18, 80);
Sd20(17, 80);
46
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
delay_ms(200);
Sd20(4, 174);
Sd20(6, 96);
Sd20(5, 96);
delay_ms(100);
Sd20(10, 33);
Sd20(12, 160);
Sd20(11, 160);
delay_ms(100);
Sd20(16, 127);
Sd20(18, 160);
Sd20(17, 160);
// reset inicial
delay_ms(600);
Sd20(1, 80);
Sd20(3, 96);
Sd20(2, 96);
Sd20(7, 174);
Sd20(9, 96);
Sd20(8, 96);
Sd20(4, 127);
Sd20(6, 96);
Sd20(5, 96);
Sd20(10, 80);
Sd20(12, 160);
Sd20(11, 160);
Sd20(16, 174);
Sd20(18, 160);
Sd20(17, 160);
Sd20(13, 127);
Sd20(15, 160);
Sd20(14, 160);
delay_ms(200);
}
}
47
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
48
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
MOVIMIENTO DE ANDAR HACIA DELANTE
/*************************************************** Control del SD20
************************************************ */
#include <16F876A.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use i2c(Master, force_hw, slow, sda=PIN_C4, scl=PIN_C3) // Configuración de I2C
// Definimos el PIC como maestro
// Forzamos a trabajar con su hardware
interno.(Asociado a I2C)
// Trabajamos a velocidad baja 100 Kbps
// Elegimos sda=PIN_C4 como patilla de datos.
// Elegimos scl=PIN_C3 como patilla de reloj.
#include <LCD1.c> // Incluimos el driver LCD1.c que
contiene las funciones de control del LCD.
/* ****************************************************** Declaración de
funcionesa
***************************************************************/
void Sd20_ini (void);
void Sd20(int8,int8);
/* ****************************************************** Función principal
o programa principal ************************************************ */
void main(){
int i,j;
Sd20_ini(); // Inicializamos el Sd20.
lcd_init(); // Inicializamos el LCD.
lcd_gotoxy(1,1);
printf(lcd_putc,"I.E.S JOAN MIRO");
//delay_ms(2500);
49
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
lcd_gotoxy(1,2);
printf(lcd_putc,"ROBOT SPYDI");
// delay_ms(2500);
// centrado patas
//centrado hombro
for(i=1; i<18; i=i+3){
Sd20(i, 127);
}
//centrado codo
for(i=2; i<10; i=i+3){
Sd20(i, 96);
}
for(i=11; i<20; i=i+3){
Sd20(i, 160);
}
//centrdo mano
for(i=3; i<10; i=i+3){
Sd20(i, 96);
}
for(i=12; i<20; i=i+3){
Sd20(i, 160);
}
// Preparacion de servos para andar
delay_ms(200);
while(1){
// pata 6.
// Realizara su movmiento habitual mientras el resto de patas realizaran un
movmiento pararlelo
delay_ms(100);
Sd20(16, 127);
Sd20(18, 80);
Sd20(17, 80);
Sd20(7, 94);
50
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(9, 87);
Sd20(8, 96);
Sd20(10, 160);
Sd20(12, 196);
Sd20(11, 160);
Sd20(4, 129);
Sd20(6, 96);
Sd20(5, 96);
Sd20(1, 100);
Sd20(3, 96);
Sd20(2, 96);
Sd20(13, 98);
Sd20(15, 160);
Sd20(14, 160);
delay_ms(100);
Sd20(16, 127);
Sd20(18, 160);
Sd20(17, 160);
delay_ms(100);
//pata 2
// Realizara su movmiento habitual mientras el resto de patas realizaran un
movmiento pararlelo
Sd20(4, 174);
Sd20(6, 174);
Sd20(5, 174);
Sd20(16, 136);
Sd20(18, 160);
Sd20(17, 160);
Sd20(7, 94);
Sd20(9, 78);
Sd20(8, 96);
Sd20(10, 160);
Sd20(12, 205);
Sd20(11, 160);
Sd20(1, 91);
51
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(3, 96);
Sd20(2, 96);
Sd20(13, 107);
Sd20(15, 160);
Sd20(14, 160);
delay_ms(100);
Sd20(4, 174);
Sd20(6, 96);
Sd20(5, 96);
delay_ms(100);
//pata 4
// Realizara su movmiento habitual mientras el resto de patas realizaran un
movmiento pararlelo
Sd20(10, 160);
Sd20(12, 80);
Sd20(11, 80);
Sd20(16, 145);
Sd20(18, 160);
Sd20(17, 160);
Sd20(7, 94);
Sd20(9, 69);
Sd20(8, 96);
Sd20(1, 82);
Sd20(3, 96);
Sd20(2, 96);
Sd20(13, 116);
Sd20(15, 160);
Sd20(14, 160);
delay_ms(100);
Sd20(10, 160);
Sd20(12, 160);
Sd20(11, 160);
delay_ms(100);
//pata 1
52
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
// Realizara su movmiento habitual mientras el resto de patas realizaran un
movmiento pararlelo
Sd20(1, 127);
Sd20(3, 174);
Sd20(2, 174);
Sd20(16, 154);
Sd20(18, 160);
Sd20(17, 160);
Sd20(7, 94);
Sd20(9, 60);
Sd20(8, 96);
Sd20(10, 160);
Sd20(12, 169);
Sd20(11, 160);
Sd20(4, 156);
Sd20(6, 96);
Sd20(5, 96);
Sd20(13, 125);
Sd20(15, 160);
Sd20(14, 160);
delay_ms(100);
Sd20(1, 127);
Sd20(3, 96);
Sd20(2, 96);
delay_ms(100);
//pata 5
// Realizara su movmiento habitual mientras el resto de patas realizaran un
movmiento pararlelo
Sd20(13, 80);
Sd20(15, 80);
Sd20(14, 80);
Sd20(16, 163);
Sd20(18, 160);
Sd20(17, 160);
Sd20(7, 94);
Sd20(9, 51);
53
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
Sd20(8, 96);
Sd20(10, 160);
Sd20(12, 178);
Sd20(11, 160);
Sd20(4, 147);
Sd20(6, 96);
Sd20(5, 96);
Sd20(1, 118);
Sd20(3, 96);
Sd20(2, 96);
delay_ms(100);
Sd20(13, 80);
Sd20(15, 160);
Sd20(14, 160);
delay_ms(100);
//pata 3
// Realizara su movmiento habitual mientras el resto de patas realizaran un
movmiento pararlelo
Sd20(7, 94);
Sd20(9, 174);
Sd20(8, 174);
Sd20(16, 172);
Sd20(18, 160);
Sd20(17, 160);
Sd20(10, 160);
Sd20(12, 187);
Sd20(11, 160);
Sd20(4, 138);
Sd20(6, 96);
Sd20(5, 96);
Sd20(1, 109);
Sd20(3, 96);
Sd20(2, 96);
Sd20(13, 89);
Sd20(15, 160);
Sd20(14, 160);
54
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
delay_ms(100);
Sd20(7, 94);
Sd20(9, 96);
Sd20(8, 96);
}
}
/* ******************************************************** Función
Sd20_ini
**************************************************************** */
void Sd20_ini (void)
{
// Fijamos el rango de trabajo de los servor desde THmin= 0,480 mS hasta THmax=
2,520 mS.
// THmin = Reg22,Reg23 + 20uS
// THmax =(256x255)/Reg21 +(Reg22,Reg23+20)=
// THmin = Reg22,Reg23 +20 uS = 460uS + 20uS = 480 uS ( 460d --> 1CCH )
// THmax =(256x255)/32 +(460+20)= 2520 uS
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(21); // Registro de configuración extandar o control modo
expandido.
i2c_write(32);
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(22); // Dirección 22H del SD20 Modo expansor de offset(Parte
Alta)
i2c_write(0x1); // 460D -->01CCH (Se introduce la parte alta 01H)
i2c_stop(); // Finalización de la transmisión.
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
55
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
i2c_write(23); // Dirección 23H del SD20 Modo expansor de offset(Parte
Baja)
i2c_write(0xCC); // 460D -->01CCH (Se introduce la parte baja CCH)
i2c_stop(); // Finalización de la transmisión.
}
/* ************************************************** Función
Sd20(int8,int8)
**************************************************************** */
void Sd20(int8 servo, int8 posicion)
{
i2c_start(); // Inicializa la transmisión
i2c_write(0xC2); // Seleccionamos el SD20
i2c_write(servo); // Seleccionamos el Servo1
i2c_write(posicion); // Posicionamos el Servo en el extremo A
i2c_stop(); // Finalización de la transmisión.
}
56
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
8. Lista de componentes 8.1. Bloque control Título: Control.DSN
11 Resistencias
Cantidad: Referencia Valor Coste Unitario Coste
2 R1,R2 10k 0.05 0.10
7 R3,R4,R7-R11 100 0.05 0.35
2 R5,R6 330 0.05 0.10
5 Condensadores
Cantidad: Referencia Valor Coste Unitario Coste
4 C10,C11,C13,C14 15pF 0.05 0.20
1 C16 100nF 0.05 0.05
3 Circuitos Integrados.
Cantidad: Referencia Valor Coste Unitario Coste
1 U4 PIC16F876_JOAN 5 5
2 SD20 SD20 21.47 21.47
46 Componentes diversos.
Cantidad: Referencia Valor Coste Unitario Coste
1 Conector de BAT1 Bornier 2 0.30 0.30
11 J1,J6-J11,J13,J18-J20 CONN-SIL3 0.10 1.1
2 CRISTAL X1, X2 2.00 2.00
1 RESET PULSADOR_JOAN 0.20 0.20
6
1
J2,J3,J5,J14-J16
J4
CONN-SIL4
CONN-SIL10
0.15
0.50
0.90
0.50
1
1
1
Conector de LCD1
JP
MASA
CONN-SIL14
BORNIER-2
BORNIER-1
0.15
0.15
0.15
0.15
0.15
0.15
1 LCD1 LCD-16 X 2_JOAN 7 7
1 RF1 CEBEK-C-0504_JOAN 7 7
1 Placa de C.I. 180 x 140 cm. 15 15
2 Zócalo de C.I. 28 patillas 1 2
1 Batería 12V/ 8600 mA 35 35
4 Separadores metálicos Macho-Hembra Métrica 3 0.5 2
4 Tuercas Métrica 3 0.1 0.4
4 Tornillos Métrica 3 x 10 mm. 0.1 0.4
Coste total 2 Control 101.52 €
57
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
8.2. Alimentación / Comunicación µC-PC Título: Alimentación del Circuito + Cargador de Programa. DSN
Número de Componentes: 26
3 Resistencia.
Cantidad: Referencia Valor Coste Unitario Coste
1
1
1
R1
R38
RV1
10k
240
1K
0.05
0.05
0.10
0.05
0.05
0.10
10 Condensadores.
Cantidad: Referencia Valor Coste Unitario Coste
2 C1, C3 2200 uF 0.45 0.90
3 C2, C4,C9 100nF 0.05 0.15
5 C5-C8, C15 1uF 0.15 0.45
2 Circuitos Integrados.
Cantidad: Referencia Valor Coste Unitario Coste
1 U1 LM350K 1 1
1 U2 MAX232 2 2
4 Diodos.
Cantidad: Referencia Valor Coste Unitario Coste
3 D1,D2,D4 1N4007 0.20 0.60
1 D3 LED-GREEN 0.20 0.20
7 Componentes diversos.
Cantidad: Referencia Valor Coste Unitario Coste
1 J1A CONN-SIL10 0.5 0.5
2 J6, JP1 BORNIER 2 0.5 1
1
1
SW1
J11
ON-OFF
CONN-D9M
1
2
1
2
1 Placa C.I. 70x75 cm 6 6
1 Zócalo de C.I. 16 patillas 0.5 0.5
Coste total 1 Alimentación del Circuito + Cargador de Programa 16,50 €
58
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
8.3. Estructura Título: Cuerpo, brazos y patas.DSN
Número de Componentes: 12
21 Componentes diversos.
Cantidad: Referencia Valor Coste Unitario Coste
1 Soporte de plástico 80 x 80 cm 8.00 8.00
6 Separadores. 0.20 1.20
68 Tornillos M3x 40 0.10 6.80
70 Tuercas M3 0.10 7.00
6
18
Chapa dura-aluminio
Servos
1
12.00
6.00
216.00
Coste total 4 245.00€
59
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
9. Coste económico 9.1. Desarrollo del proyecto Coste 22 € / Hora.
10 Horas de desarrollo Hardware….............................. 220 €
30 Horas de desarrollo Software................................... 660 €
15 Horas de montaje del Prototipo…............................. 330 €
10 Horas de realización de la Memoria........................ 220 €
8 Horas de búsqueda de materiales. ........................... 176 €
20 Horas de Pruebas. …................................................. 440€ ______ 2046 €
9.2. Material
Alimentación del Circuito + Cargador de Programa… 16,50 €
Control.......................................................................... 101.52 €
Mando........................................................................... 31,75 €
Resto De componentes. ............................................. 245,00 € _______
394.77 € Total. ............................................................................................... 2440.77 €
60
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
10. Referencias [1] Libros: Título: Microcontroladores PIC16F84. Desarrollo de
proyectos (2ª Edición) Autores: Enrique Palacios, Fernando Remiro, Lucas J. López.
Editorial: Ra_Ma
Título: Compilador C CCS y Simulador Proteus para microcontroladores PIC Autores: Eduardo García Breijo
Editorial: Marcombo
[2] Empresa suministradora de materiales:
Diotronic S.A. C/Juan Bravo 58. Pagina Web: www.ditronic.com
Ingeniería de Sistemas Programados. Pagina Web: www.microcontroladores.com
61
I.E.S. Joan Miró (S.S. de los Reyes) / Dpto. Electrónica
Ciclo Superior de Desarrollo de Productos Electrónicos
11. Anexos 11.1. Características principales del PIC 16F876A http://www.datasheetcatalog.org/datasheet/microchip/33023a.pdf
11.2. Características principales SD20
http://info.hobbyengineering.com/specs/devantech-sd20-tech.pdf
top related