Académique Documents
Professionnel Documents
Culture Documents
CBBA,BOLIVIA
Introducción. -
El propósito del proyecto es reflejar un modelo de silla de ruedas eléctrica (Prototipo) para
personas con capacidades distintas, parapléjicos , etc . El control se realizara en un guante y con el
componente Adxl 335 (acelerómetro) que es un control de posición en 3 ejes X, Y , Z el cual será el
sensor principal del sistema, en su mayoría las sillas de ruedas eléctricas tienden a tener un control
(joystick) con el cual direccionan la silla pero esto dificulta el manejo para algunas personas, es por
ello se realizó este prototipo.
Objetivos:
Materiales.
Resistencias
Cables de conexion
Regulador 7805
Cristal de cuarzo (16MHz)
Atmega 16
Fuente de Alimentación(5Vdc-12Vdc-24Vdc)
AcelerometroADXL335
HK15138 Standard Analog Servo
Multímetro
Marco teórico. -
* Interface JTAG.
- Mantenimiento de eliminación de errores On-Chip.
- Programación de FLASH, EEPROM, fusibles y bits de bloqueo a través de
la interface JTAG.
- Capacidades de Boundary Scan de acuerdo con el Standard (norma) JTAG.
* I/O y encapsulados
- 32 líneas de I/O programables.
- PDIP de 40 pines, TQFP y MLF de 44 pines.
* Tensiones de funcionamiento.
- 2.7 - 5.5V (ATmega16L).
- 4.5 - 5.5V (ATmega16).
* Niveles de velocidad.
- 0 - 8 MHz (ATmega16L).
- 0 - 16 MHz (ATmega16).
Acelerómetro ADXL335
El sensor acelerómetro ADXL335 nos permite medir la aceleración en los tres ejes espaciales X,Y,Z.
Es un sensor compacto y de tamaño muy reducido. Funciona a 3.3v y normalmente lo
encontramos en forma de módulo con los componentes necesarios para su conexión directa a la
placa Arduino.
El rango capaz de medir este sensor es de -3G a +3G (G=aceleración de la gravedad, 1G=9.8m/s2)
El sensor se conecta a tres entradas analógicas, una por cada eje de medición, el conector VCC se
conecta a 3.3v
Con los valores de aceleración podemos medir la velocidad, detectar “sacudidas“, detectar
“gestos” o analizar movimientos como andar o correr (podómetro). Un ejemplo del uso de
acelerómetros es el famoso mando de la videconsola Wii (a parte de acelerómetros incluye otros
sensores como giroscopios)
Con el sensor ADXL335 además de obtener los valores de aceleración, mediante algunos cálculos
trigonométricos (que ArduinoBlocks realiza automáticamente) podemos obtener los valores de
rotación: roll (ángulo de rotación en ejex X) y pitch (ángulo de rotación en eje Y).
El valor de yaw (ángulo de rotación en eje Z) no podemos calcularlo sólo con un acelerómetro
pues en este sentido de giro la aceleración por efecto de la gravedad no varía, por lo que
necesitaríamos otros sensores más sofisticados que combinan acelerómetros con giroscopios o
sensores magnéticos (IMU).
El Circuito Integrado L293D y L293 incluye en su interior 4 drivers o medio puente H. La corriente
máxima que el L293 puede manejar es de 1A a voltajes desde 4.5 volts a 36 volts, mientras que
la corriente constante es de 600 mA.
Todas las entradas del Circuito Integrado L293D son compatibles con TTL, por lo que pueden
manejarse con la mayoría de los micro controladores y circuitos lógicos del mercado. La salida de
los drivers puede activarse y desactivarse en pares, mediante señales de habilitación. Cuando se
presenta un 1 lógico en los pines de habilitación, las señales correspondientes de salida estarán
activas y en fase con la señal de entrada. Cuando las entradas de habilitación presentan un estado
lógico 0, las salidas se encuentran en estado de alta impedancia.
Gracias a que este circuito integrado es capaz de producir corriente bidireccionales es útil en
aplicaciones que requieran controlar la dirección de giro y potencia de motores de DC, inclusive
también pudiera utilizarse para controlar Relés, motores de paso bipolares, solenoides y cualquier
otro dispositivo electrónico de corriente contínua.
ESTABLE INICIO:
Vref= 5V X Y Z
PRUEBA 1 330 360 351
PRUEBA 2 324 321 360
PRUEBA 3 330 330 360
PRUEBA 4 328 332 370
PRUEBA 5 324 324 354
PRUEBA 6 300 300 360
PRUEBA 7 310 315 365
PRUEBA 8 310 310 370
AVANZAR
VRef=5V X Y Z
PRUEBA 1 360 340 370
PRUEBA 2 370 342 360
PRUEBA 3 360 330 355
PRUEBA 4 368 335 360
PRUEBA 5 310 300 330
PRUEBA 6 325 290 325
PRUEBA 7 320 280 335
REVERSA
Vref=5V X Y Z
PRUEBA 1 310 335 385
PRUEBA 2 300 315 360
PRUEBA 3 315 315 380
PRUEBA 4 290 320 370
PRUEBA 5 290 320 385
PRUEBA6 320 345 385
GIRO DERECHA
Vref=5V X Y Z
PRUEBA 1 340 290 370
PRUEBA 2 330 290 360
PRUEBA 3 330 280 330
PRUEBA 4 340 288 355
PRUEBA 5 327 284 327
PRUEBA 6 330 270 330
PRUEBA 7 280 240 330
GRIO IZQUIERDA
Vref=5V X Y Z
PRUEBA 1 320 365 310
PRUEBA 2 300 345 330
PRUEBA 3 305 335 335
PRUEBA 4 327 360 340
PRUEBA 5 290 340 320
ESTABLE INICIO
Vref=3V X Y Z
PRUEBA 1 500 485 600
PRUEBA 2 499 500 615
PRUEBA 3 505 510 625
AVANZAR
Vref=3V X Y Z
PRUEBA 1 550 485 580
PRUEBA 2 610 590 600
PRUEBA 3 570 510 605
REVERSA
Vref=3V X Y Z
PRUEBA 1 500 485 580
PRUEBA 2 460 497 600
PRUEBA 3 420 510 603
GIRO DERECHA
Vref=3V X Y Z
PRUEBA 1 500 420 480
PRUEBA 2 530 400 499
PRUEBA 3 547 380 620
GIRO IZQUIERDA
Vref=3V X Y Z
PRUEBA 1 500 550 540
PRUEBA 2 520 600 590
PRUEBA 3 540 630 630
Procedimiento
2) Realizar pruebas de todos los sensores y actuadores para verificar su correcto funcionamiento
antes de unir todo el sistema.
3) Realizar una verificación del atmega 16 grabando un programa básico para encender un led,etc
4)Calibrar el acelerómetro ADXL335 haciendo pruebas y tomando datos de los rangos que abarca
todos sus movimientos ( adelante , reversa ,derecha , izquierda).
5)Probar el sistema completo con leds como verificadores antes de conectar los motores
7) Acoplar los motores con las llantas que se utilizaran y posteriormente terminar de armar el
prototipo con las ruedas listas para la prueba
8) Realizar pruebas con el rango de alcanze que llegara a tener los modulos TX y RX.
Código en Atmel estudio:
#include<avr/io.h>
ADMUX=entrada_adc|(1<<REFS0);
ADCSRA|= (1<<ADSC);
ADCSRA|=(1<<ADIF);
return ADCW;
void ADCinit()
{ADCSRA|=(1<<ADEN)|(1<<ADPS1)|(1<<ADPS2)|(1<<ADPS0);
void PWM_init()
DDRB|=(1<<PB3);
DDRD|=(1<<PD7);
void main()
DDRC=0b11111111;
int muestra1,muestra2,muestra3,x,y,z;
int ervin;
PWM_init();
ADCinit();
while(1)
muestra1=leer_adc(0);
x=muestra1;
muestra2=leer_adc(1);
y=muestra2;
muestra3=leer_adc(2);
z=muestra3;
if (x>=500 && x<=549 && y>=485 && y<=520 && z>=595 && z<=620 )
{ PORTC=0;
if (x>=10 && x<=490 && y>=480 && y<=515 && z>=576 && z<=610)
//OCR0=240;
//OCR2=240;
PORTC=10;
if (x>=550 && x<=1000 && y>=480 && y<=515 && z>=550 && z<=615)
PORTC=5;
}
if (x>=495 && x<=550 && y>=10 && y<=415 && z>=475 && z<=650)
//OCR0=240;
//OCR2=240;
PORTC=9;
if (x>=500 && x<=555 && y>=550 && y<=1000 && z>=540 && z<=650)
{ //OCR0=240;
//OCR2=240;
PORTC=6;
//{
//OCR0=255;
//OCR2=240;
//}
//{
//OCR0=240;
//OCR2=255;
//}
Conclusiones y recomendaciones:
Se realizo con éxito el sistema para el manejo de una silla de ruedas prototipo realizado
con tubos de cañería.
Se necesito servomotores para lograr el movimiento del prototipo ya que motores dc no
poseen mucho torque para mover el prototipo. Para ello se utilizaron servosmotores de
4.3kg
Tener en cuenta la calibración del sensor para un buen funcionamiento del sistema
Alimentar con 9V de referencia para el controlador del motor (L293d).
Los módulos de TX y RX pueden aumentar el rango de transmisión añadiendo una antena
de cobre en espiral.
El acelerómetro es recomendable utilizar un voltaje de referencia a 3V para un mejor
control.
Se trabajo el código para un PWM pero no se implemento en el proyecto porque se
requiere de otro atmega