Sie sind auf Seite 1von 20

Problema

Disear la programacin para una prtesis electromiografica de tobillo de bajo


costo
Actualmente los compaas que ofrecen este tipo de productos no son
accesible a todos los sectores
Son de difcil mantenimiento
Alto costo en Mantenimiento

Eleccin del Microcontrolador a emplear

PIC es un microcontrolador, Arduino es una placa de desarrollo basada en un


microcontrolador Atmega328
Qu es ARDUINO?
Arduino es una plataforma de prototipos electrnica de cdigo abierto (open-
source) basada en hardware y software flexibles y fciles de usar. Las placas se
pueden ensamblar a mano o encargarlas preensambladas; el software se
puede descargar gratuitamente. Los diseos de referencia del hardware estn
disponibles bajo licencia open-source, por lo que eres libre de adaptarlas a tus
necesidades. Arduino recibi una mencin honorfica en la seccin Digital
Communities del Ars Electronica Prix en 2006.
La razn por la que se decide el uso del microcontrolador de atmel es por sus
caractersticas que nos ofrece:
destacando su bajo susceptibilidad al ruido
Open Source
Compatibilidad entre microcontroladores de la misma linea
Fcil codificacin
Barato: Las placas Arduino son relativamente baratas comparadas con otras
plataformas microcontroladoras. La versin menos cara del modulo Arduino
puede ser ensamblada a mano, e incluso los mdulos de Arduino
preensamblados cuestan menos que otros.
Multiplataforma: El software de Arduino se ejecuta en sistemas operativos
Windows, Macintosh OSX y GNU/Linux. La mayora de los sistemas
microcontroladores estn limitados a Windows.
Entorno de programacin simple y claro: El entorno de programacin de
Arduino es fcil de usar para principiantes, pero suficientemente flexible para
que usuarios avanzados puedan aprovecharlo tambin.
Cdigo abierto y software extensible: El software Arduino est publicado como
herramientas de cdigo abierto, disponible para extensin por programadores
experimentados. El lenguaje puede ser expandido mediante librerias C++, y la
gente que quiera entender los detalles tcnicos pueden hacer el salto desde
Arduino a la programacin en lenguaje AVR C en el cual est basado. De forma
similar, puedes aadir cdigo AVR-C directamente en tus programas Arduino si
quieres.
Cdigo abierto y hardware extensible: El Arduino est basado en
microcontroladores ATMEGA168 y ATMEGA328 de Atmel. Los planos para los
mdulos estn publicados bajo licencia Creative Commons, por lo que
diseadores experimentados de circuitos pueden hacer su propia versin del
mdulo, extendindolo y mejorndolo. Incluso usuarios relativamente
inexpertos pueden construir la versin de la placa del mdulo para entender
como funciona y ahorrar dinero.

E/S digital
pinMode(pin, mode)
Se usa en void setup() para congurar un pin especco para que se comporte o
como INPUT o como OUTPUT.
pintMode(pin, OUTPUT); //ajusta 'pin' como salida
Los pines digitales de Arduino estan ajustados a INPUT por defecto, por lo que
no necesitan ser declarados explcitamente como entradas con pinMode(). Los
pines configurados como INPUT se dice que estn e un estado de alta
impedancia. Hay tambin convenientes resistencias de pull-up de 20KOhm,
integradas en el chip ATmega que pueden ser accedidas por software. A estas
resistencias pull-up integradas se accede de la siguiente manera.
pinMode(pin, INPUT); //ajusta 'pin' como entrada digitalWrite(pin, HIGH);
//activa la resistencia de pull-up
Las resistencias de pull-up se usaran normalmente para conectar entradas
como interruptores. Los pines configurados como OUTPUT se dice que estn en
un estado de baja impedancia y pueden proporcionar 40 mA a otros
dispositivos/circuitos.

E/S analgica
analogRead(pin)
Lee el valor desde un pin analgico especicado con una resolucin de 10 bits.
Esta funcin slo trabaja en los pines analgicos (0 - 5). Los valores enteros
devueltos estn en el rango de 0 a 1023.
value = analogRead(pin); //ajusta 'value' igual a 'pin'
Nota: Los pines analgicos al contrario que los digitales, no necesitan ser
declarados al principio como INPUT u OUTPUT.
analogWrite(pin, value)
Escribe un valor pseudo analgico usando modulacin por ancho de pulso
(PWM en ingls) a un pin de salida marcado como PWM. En los Arduinos ms
nuevos con el chip ATmega168, esta funcin trabaja en los pines 3, 5, 6, 9, 10
y 11. Los Arduinos ms antiguos con un ATmega8 slo soporta los pines 9, 10 y
11. El valor puede ser especicado como una variable o constante con un valor
de 0 a 255.
analogWrite(pin, value); //escribe 'value' al 'pin' analogico
40
Valor Nivel de salida 0 0 V (t) 64 0 V (3/4 de t) y 5 V (1/4 de t) 128 0 V (1/2 de t)
y 5 V (1/2 de t) 192 0 V (1/4 de t) y 5 v (3/4 de t) 255 5 V (t)
Cuadro 5.1: Relacin valor-salida con analogWrite()
El valor de salida vara de 0 a 5 V segn el valor de entrada (de 0 a 255) en
funcin del tiempo de pulso. Si t es el tiempo de pulso, la tabla 5.1 muestra la
equivalencia entre el valor y la salida en funcin del tiempo. Como esta es una
funcin hardware, el pin generar una onda esttica despus de una llamada a
analogWrite en segundo plano hasta la siguiente llamada a analogWrite (o una
llamada a digitalRead o digitalWrite en el mismo pin).
int led = 10; //LED con una resistencia de 220ohm en el pin 10 int pin = 0;
//potenciometro en el pin analogico 0 int value; //valor para lectura
void setup(){} //setup no es necesario
void loop() { value = analogRead(pin); //ajusta 'value' igual a 'pin' value /=
4; //convierte 0-1023 a 0-255 analogWrite(led, value); //saca la seal PWM al
led }
Diagrama de Pines para ATmega 328p de tipo TQFP
Inicio

Lectura del Sensor

Conversin de
Datos Analgicos
a Digitales

684-1023

Inicio
Lectura del Sensor

Si la conversin
esta entre

Si la posicin esta
Si la posicin esta
correcta incorrecta
0-341 342-683

Generar pwm Generar pwm Generar pwm


Generar pwm para
para Terminar Proceso para
para
0-15 16-30 30-45
Ajustar posicin

Salida Motor Salida Motor Salida Motor Salida Motor


0-15 31-45 16-30 Con Ajuste
Seudocdigo
(Control de una Prtesis de tobillo)
1.-Inicio
2.-Configurar variables libreras y puertos a utilizar
3.- Declarar la velocidad con la que se trabajara el microcontrolador
4.- Configuracin de Pwm
5.-Leer Sensor en un rango de 0 a 4.5v de seal de entrada
6.-Ajustar el valor ledo de acuerdo al convertido analgico digital
7.-condicionales de acuerdo al valor ledo
8.-si el valor est en un rango de 0 a 341 sacar pwm en un rango de 0-
15
9.-si el valor est en un rango de 342 a 683 sacar pwm en un rango de
16-30
10.-si el valor est en un rango de 683 a 1023 sacar pwm en un rango de
31-45
11.-Salida al Motor de acuerdo a la seal de pwm
12.-Comparar seal leda por el sensor y ajustar de ser necesario
13.-Repetir
14.-Fin

Das könnte Ihnen auch gefallen