Ramos López Hugo César
Resumen 1
1. Introducción 2
1.1. Concepto de caos . . . 3
1.2. Osciladores caóticos . . . 4
1.3. Concepto de generador de números aleatorios . . . 5
1.4. Descripción del problema . . . 5
1.5. Justificación . . . 6
1.6. Objetivos . . . 7
1.6.1. Objetivo general . . . 7
2. Simulación de osciladores caóticos (MATLAB) 8 2.1. Conceptos generales . . . 8
2.1.1. Circuito de Chua . . . 8
2.1.2. Función no-lineal saturada . . . 9
2.1.3. Método de Euler . . . 11
2.1.4. Simulación con MATLAB . . . 13
2.2. Circuito de Chua . . . 13
2.3. Función no-lineal saturada (SNLF) . . . 15
2.3.1. SNLF para dos enrollamientos . . . 16
3. Diseño de osciladores caóticos basados en amplificadores operacionales 18 3.1. Implementación de las variables de estado . . . 18
3.1.1. Generalidades de los opamps . . . 18
3.1.2. Configuraciones básicas . . . 18
Configuración seguidor . . . 18
Configuración inversor . . . 19
Configuración sumador . . . 19
Configuración integrador . . . 20
Configuración restador . . . 20
3.1.3. Implementación electrónica del sistema . . . 21
Oscilador con funciones saturadas con opamps . . . 21
Oscilador con diodo de Chua implementado con opamps . . . 23
3.1.4. Pruebas de los sistemas . . . 27
Comparación de los osciladores de Chua y el basado en SNLF . . . 27
4. Diseño de generador de números aleatorios 29 4.1. Generador de números aleatorios . . . 29
4.2. Pruebas . . . 30
4.2.1. Aleatoriedad . . . 30
Prueba de mono-bits . . . 30
5. Leyes de control, simulación y pruebas 32 5.1. Leyes de control retroalimentadas . . . 33
5.2. Control simple y discontinuo . . . 34
5.3. Programación de la ley de control . . . 35
5.4. Pruebas . . . 35
5.4.1. Programa en el microcontrolador . . . 35
6. Conclusiones y trabajos futuros 38 6.1. Conclusiones . . . 38
6.2. Trabajos futuros . . . 39
Bibliografía 40
Apéndices 43
A. Código MATLAB para el modelado de SNLF de dos enrollamientos 43
B. Ley de control MATLAB 47
C. Ley de control PIC 48
1.2.1.Oscilador caótico de Chua . . . 4
2.1.1.Curva caracteristica del diodo de Chua. . . 9
2.1.2.Descripción PWL de una SNLF con 5 y 7 segmentos . . . 10
2.1.3.Representación grafica . . . 11
2.2.1.Representación gráfica del diodo de Chua . . . 14
2.2.2.Circuito de Chua generando 2 enrollamientos . . . 14
2.2.3.Señales en cada variable de estado en el tiempo . . . 15
2.3.1.Grafica de 3 segmentos para generar dos enrollamientos . . . 16
2.3.2.Oscilador caótico de dos enrollamientos, Graficas en el tiempo de las variables . 17 3.1.1.Modelo de un opamp . . . 18
3.1.2.Configuración seguidor . . . 19
3.1.3.Configuración inversor . . . 19
3.1.4.Configuración sumador . . . 19
3.1.5.Configuración integrador. . . 20
3.1.6.Configuración restador . . . 20
3.1.7.Configuración comparador de voltaje . . . 21
3.1.8.Configuración derivador . . . 21
3.1.9.Diagrama del sistema caótico . . . 22
3.1.10.Implementación con opamps . . . 22
3.1.11.a) SNLF con TL082, b) Grafica de la SNLF . . . 23
3.1.12.Configuración genérica . . . 23
3.1.13.Convertidor de impedancias generalizado . . . 24
3.1.14.Inductor con convertidor generalizado . . . 25
3.1.15.Esquema del diodo de Chua con opamp . . . 25
3.1.16.a) Diodo de Chua y b) Su pendiente . . . 26
3.1.17.Circuito de Chua completo . . . 27
3.1.18.Pruebas en laboratorio: a) Diodo de Chua y b) SNLF . . . 27
3.1.19.FFT SNLF. . . 28
4.2.1.Test de mono-bits . . . 31
5.0.1.Descripción del movimiento en un plano . . . 32
5.1.1.Configuración del control cinemático . . . 33
5.2.1.Diagrama del sistema físico completo . . . 35
5.4.1.Prueba del control de motores . . . 36
Introducción
A lo largo de la historia de la tecnología y la evolución de herramientas para la creación de aparatos llamados robots, han existido muchos modelos, pero la mayoría diseñado y construido con CPU’s o Microcontroladores a los cuales se les programa para que realicen una función especifica [16]; Los investigadores se han propuesto una idea revolucionaria: “ Construir un robot autónomo” libre de programación, y que su control este a cargo de un sistema con la capacidad de explorar todo un espacio de posibilidades de movimiento. En ese sentido, en esta investigación se describe la utilidad de los osciladores caóticos. Esto es una novedad que esta ubicada en la tecnología de control del caos para aplicaciones múltiples[2].
El caos es un fenómeno muy amplio y universal existente en varios sistemas no lineales. Por mucho tiempo fue confundido con ruido, no fue hasta que en el campo de la ingeniería se anuncio oficialmente su existencia en sistemas eléctricos en el año de 1980. Por otra parte las comunidades de científicos e ingenieros se dieron cuenta que el caos podía ser controlado[1,2].
Los sistemas caóticos se han vuelto de gran interés en las telecomunicaciones, partiendo de la teoría del caos; la cual involucra un “orden dentro del desorden“, es decir es un sistema dinámico no lineal que a partir de ciertas condiciones iniciales se podrían tener resultados prácticamente impredecibles, dichas condiciones son extremadamente sensibles puesto que la más mínima alteración repercute en su comportamiento, como es el caso de la bolsa de valores, la meteorología, en la dinámica poblacional, etc. Pero por otra parte si se conocen las condiciones iniciales podemos intentar determinar la trayectoria del sistema[1,2].
Con base en lo anteriormente mencionado, un campo de investigación muy activo hoy en día es el estudio de sistemas dinámicos no lineales y, particularmente, el de los sistemas caóticos [3,7]. A pesar de que esta rama de investigación es relativamente joven, no hay la menor duda de que está llegando a adquirir cada vez más importancia en una gran variedad de disciplinas[4,5,6,8].
El fenómeno caótico es fascinante para muchos investigadores en varios campos como en las matemáticas, física, ingeniería y otras mas.
Un robot móvil es un dispositivo electromecánico capaz de desplazarse dentro de un espacio de trabajo (laboratorio, nave industrial, corredor, habitación, etc.) con diferentes niveles de autonomía.[12]
En la robótica el primer robot móvil caótico que podía navegar atraves de un patrón caótico fue propuesto por nakamura y Sekikuchi[2,9,10,11]
1.1. Concepto de caos
Antes de comenzar a analizar las bases de esta teoría es importante profundizar en lo que significa caos. Proviene del griego “khaos” que significa abismo o abismo abierto. Por lo tanto es común pensar que el caos es aquello que carece de orden, algo confuso e incoherente. Sin embargo para la teoría del caos el enfoque difiere de los conceptos mencionados ya que en realidad el caos es la misma esencia del orden [1,13].
“Caos” es un comportamiento aperiódico a largo plazo en un sistema determinista que exhibe una dependencia muy sensible a las condiciones iniciales[14].
1. “Comportamiento aperiódico a largo plazo” significa que las trayectorias no tienden a un punto fijo, órbitas periódicas u órbitas cuasi-periódicas conforme t→∞.
2. “Determinista” significa que el sistema no tiene entradas o parámetros aleatorios. El comportamiento irregular surge de las no linealidades del sistema.
3. “Dependencia sensible a las condiciones iniciales” significa que las trayectorias que son cercanas, con el tiempo se separan exponencialmente.
Uno de los puntos más interesantes en el estudio de los sistemas caóticos es si la presencia del caos puede producir estructuras ordenadas y patrones a gran escala pero así mismo el control del caos tiene dos inconvenientes: la supresión y la sincronización del caos [15].
Un oscilador caótico es producido por un sistema caótico y no tiene ningún período. Los sistemas caóticos son deterministas y dinámicos [14].
Un sistema determinista siempre llega a los mismos puntos a partir de una condición inicial, lo que significa que la dinámica de ese sistema es reproducible. En contraste, un sistema no determinista puede presentar un comportamiento diferente cada vez que se ejecuta .
Un sistema dinámico es un sistema que describe la evolución del estado de un sistema en función del tiempo o alguna variable continua o discreta.
Existen distintos tipos de osciladores caóticos, iniciando por lo discretos que se implementan con interruptores o circuiteria digital, y los continuos que se describen con al menos 3 ecuaciones diferenciales de primer orden. Un oscilador caótico exhibe distintos tipos de comportamiento, y en cuanto a los atractores, estos pueden generar uno, dos, o múltiples enrollamientos y en varias direcciones. La generación de varios enrollamientos se realiza modificando la función perturbadora (o no-lineal). Lo que conlleva a la modificación de componentes o ecuaciones que lo describen.
Un ejemplo claro es el famoso oscilador caótico de Chua, el cual se muestra en la fig.1.1, y consiste de tres elementos dinámicos para describir el sistema de tercer orden, un resistor lineal cuyo valor varia para generar distintos comportamientos caóticos, y el diodo de Chua (NR), que es una función no-lineal que puede describirse por tramos (PWL).
Figura 1.2.1: Oscilador caótico de Chua
C1
dVC1
dt = G(VC2−VC1)−g(VC1)
C2
dVC2
dt = G(VC1−VC2) +IL
LdIL
dt = −VC2 (1.1)
g(Vc1) =G1VC1+
1
2(G2−G1)(|VC1+E| − |VC1−E|) (1.2) Con estos conceptos de osciladores caóticos pueden construirse circuitos para implemen-taciones en diversas áreas de la electrónica, industria, robótica, etc. Entre tales aplicaciones de dichos circuitos sobresale el diseño de un generador de números aleatorios.
1.3. Concepto de generador de números aleatorios
En estadística, un número aleatorio es un resultado de una variable al azar especifi-cada por una distribución. Los algoritmos para la generación de valores uniformemente distribuidos están presentes en todas las calculadoras y lenguajes de programación.
1.4. Descripción del problema
En el campo de la robótica actualmente existen un sinnúmero de estrategias para lograr que un robot simule ser autónomo, es decir se han elaborado métodos de programación sofis-ticados para implementarse en autómatas; dichos métodos requieren de un tiempo extenso de diseño para distintos fines, siendo estos tediosos para personas con poca experiencia en programación.
Entonces £como se puede evitar que el diseño de un autómata sea pesado y tardado?. Una idea principal es el uso del caos como método de control, o dicho de otro modo controlar el caos para dichos fines aplicables a la robótica, de este modo aparte de evitar los problemas antes mencionados, se pueden solucionar otros como son la lentitud de respuesta, los ciclamientos, la falta de respuesta en situaciones no consideradas, etc.
el uso de osciladores caóticos de doble enrollamiento. En el desarrollo del proyecto esta contemplado observar el funcionamiento de dos tipos de osciladores y así mismo analizarlos para decidir que oscilador sera el elegido para ser implementado en robot móvil.
1.5. Justificación
El uso de robots móviles tiene muchas aplicaciones como, transportación industrial, limpiadores de piso y hasta como bomberos; Las aplicaciones en la industria y en la vida cotidiana son mas exigentes, así mismo en el ámbito militar, debido a que se deben hacer exploraciones de terrenos para lograr una máxima seguridad de las tropas.
Para que el robot pueda satisfacer una seguridad debe cumplir con tres objetivos prin-cipales[11]:
1. Impredecibilidad de trayectoria 2. Escaneo del terreno completo 3. Rápido escaneo del lugar de trabajo
Dichos objetivos mencionados son los principales por los cuales se puede elegir un diseño de robot aplicando sistemas o circuitos caóticos, debido a su dinámica de Impredecibilidad.
Como es sabido, los sistemas no-lineales son ricos en comportamientos dinámicos,mostrando una variedad de fenómenos caóticos. Este comportamiento caótico es la razón por la cual los sistemas no lineales son usados en muchas otros campos de la ingeniería como las comunicaciones, criptografia, generador de bits aleatorios y redes neuronales [11,2].
La importancia de usar los sistemas no lineales en robots autónomos es conseguido por los controladores diseñados, los cuales aseguran el movimiento caótico. Señales, las cuales son producidas por sistemas caóticos o circuitos, son usadas para guiar robot autónomos para la exploración de terrenos o para vigilancia, búsqueda etc. La parte mas importante de los sistemas caóticos es su impredecibilidad, esta es una condición necesaria ya antes mencionada. En las literaturas son conocidos muchos sistemas caóticos, algunos como el sistema dinámico de Arnold, mapero de Taylor-Chirikov, sistema de Lorenz y el circuito de Chua, y todos han sido utilizados. [11].
1.6. Objetivos
1.6.1. Objetivo general
Estudio y diseño de un oscilador caótico para aplicación en robot móvil Objetivos específicos
- Conocer el funcionamiento de un oscilador caótico - Diseñar un oscilador caótico con opamps
- Diseñar un generador de números aleatorios basado en un oscilador caótico
- Aplicar ley de control para un robot seguidor de trayectorias basado en oscilador caótico
Conociendo los objetivos planteados, de manera general, cada uno de los capítulos que integran el trabajo correspondiente son:
La descripción general del tema principal es presentada en la introducción, de manera mas detallada en el capitulo 2 se presentan una cuestión importante para el desarrollo del proyecto y así mismo base del mismo, dicho tema es la simulación de osciladores caóticos utilizando la muy conocida herramienta MATLAB.
En el tercer capitulo es mostrada la forma de diseño de osciladores caóticos utilizan-do Amplificautilizan-dores Operacionales (opamps) y así mismo la simulación en herramientas de simulación virtual como son MULTISIM y TopSpice.
La cuarta parte esta comprendida por el diseño de un generador de números aleatorios el cual sera indispensable para convertir los datos obtenidos de la señales de salida del oscilador seleccionado en secuencias de bits aleatorios para su procesamiento descrito en el capitulo 5.
La Quinta sección consta de el análisis y comprensión de una ley de control para que el móvil a diseñar pueda obtener movimiento, así mismo de los métodos utilizados para capturar y procesar los datos obtenidos del generador de Bits aleatorios.
Simulación de osciladores caóticos
(MATLAB)
2.1. Conceptos generales
2.1.1. Circuito de Chua
Entre los circuitos caóticos diseñados, el circuito caótico de Chua es un sistema ex-tremadamente simple que puede ser fácilmente construido y manejable matemáticamente [3,14,2]. Como se muestra en la fig.1.1, el circuito de Chua contiene tres elementos de al-macenamiento de energía, un resistor lineal y una resistencia no lineal (NR) llamado diodo
de Chua, dicho circuito es descrito por un sistema de ecuaciones de estado de tercer orden cuyas variables de estado son la corriente del inductor L y los voltajes de los capacitores C1
y C2 [14,2].
El conjunto de ecuaciones que describen el comportamiento del circuito de Chua se definen por:
C1
dVC1
dt = G(VC2−VC1)−g(VC1)
C2
dVC2
dt = G(VC1−VC2) +IL
LdIL
dt = −VC2 (2.1)
g(Vc1) =G1VC1+
1
pendientes de los tres segmentos controlados por voltaje que definen el resistor no lineal y ±E son los puntos de quiebre para generar el fenómeno caótico, como se muestra en la fig. 2.1.
Figura 2.1.1: Curva caracteristica del diodo de Chua
2.1.2. Función no-lineal saturada
La función de saturación se basa en el uso de aproximaciones linealizadas por tramos (PWL), como se muestra en la fig.2.2 .En (2.3) se describe una aproximación PWL llamada serie de una función no lineal saturada (SNLF, por sus siglas en ingles), donde k ≥2 es la pendiente de la función saturada y un factor multiplicador para plateaus saturadas (en este trabajo se utilizara el concepto de plateau, en lugar de su traducción, debido a que las expresiones utilizadas tienen un trasfondo científico con ese concepto), plateau=±nk, con n = entero impar para generar enrollamientos pares, y n = entero par, para generar enrolla-mientos impares. h = retraso saturado del centro de las pendientes y debe estar de acuerdo conhi =±mdonde i = 1,..., [(enrollamientos- 2)/2] y m = 2,4,..., (enrollamientos-2) para
enrollamientos pares; e i = 1,..., [(enrollamientos -1)/ 2] y m = 1,3,..., (enrollamientos -2) para enrollamientos impares; p y q son enteros positivos [18,14].
f(x;k, h, p, q) =
q
X
i=−p
Figura 2.1.2: Descripción PWL de una SNLF con 5 y 7 segmentos
Consideremos el siguiente sistema lineal autónomo de tercer orden:
.
x = y
.
y = z
.
z = −ax−by−cz (2.4)
donde x, y y z son las variables de estado y a,b,c son constantes positivas. Para que el sistema lineal (2.4) genere un comportamiento caótico, es necesario añadir un controlador no lineal como se muestra en (2.5), donde f(x; k,h,p,q) está definido por (2.6), y se debe satisfacer que 0<a b c d<1 para cumplir las condiciones de caos [14].
.
x = y
.
y = z
.
z = −ax−by−cz+df(x;k, h, p, q) (2.5)
f(x;k, h, p, q) =
(2q+ 1)k x > qh+ 1
k(x−ih) + 2ki |x−ih| ≤1;
−p≤i≤q
(2i+ 1)k ih+ 1 < x <(i+ 1)h−1;
−p≤i≤q−1
−(2p+ 1)k x <−ph−1
(2.6)
f(x;α, k, h, p, q) =
(2q+ 1)k x > qh+α
k/α(x−ih) + 2ki |x−ih| ≤α;
−p≤i≤q
(2i+ 1)k ih+α < x <(i+ 1)h−α;
−p≤i≤q−1
−(2p+ 1)k x <−ph−α
(2.7)
2.1.3. Método de Euler
La idea del método de Euler es muy sencilla y está basada en el significado geométrico de la derivada de una función en un punto dado. Este método de integración numérica se usa para resolver el sistema de ecuaciones diferenciales descritas en (2.5). se supone la curva solución de una ecuación diferencial y se traza la recta tangente a la curva en el punto dado por la condición inicial[14]. Debido a que la recta tangente aproxima a la curva en valores cercanos al punto de tangencia, se puede tomar el valor de la recta tangente en el punto X1 como una aproximación al valor deseado y(x1), como se muestra en la fig.2.3.
Figura 2.1.3: Representación grafica
Así, se puede calcular la ecuación de la recta tangente a la curva solución de la ecuación diferencial dada en el punto (x0,y0) . Se sabe que la ecuación de la recta es:
y=m(x−x0) +y0 (2.8)
m=y′|
(x0,y0) =f(x0, y0) (2.9) Por lo tanto, la ecuación de la recta tangente es:
y =f(x0, y0) (x−x0) +y0 (2.10)
Ahora bien, se supone que x1 es un punto cercano a x0, y por lo tanto estará dado
como x1 =x0+h. De esta forma, se tiene la siguiente aproximación:
y(x1) =y(x0+h)∼=f(x0, y0) (x0 +h−x0) +y0 ∼=y0+hf(x0, y0) (2.11)
Esta aproximación puede ser suficientemente buena, si el valor de h es realmente pe-queño. Ahora bien, si:
y1 =y0+hf(x0, y0) (2.12)
Para obtener y2 únicamente hay que pensar que ahora el papel de (x0, y0) lo toma el
punto(x1, y1), y por lo tanto, al sustituir los datos se tiene:
y2 =y1+hf(x1, y1) (2.13)
Por lo tanto se puede observar claramente que la fórmula recursiva general, está dada por:
yn+1 =yn+hf(xn, yn) (2.14)
Esta es la conocida fórmula de Euler que se usa para aproximar el valor de y(xn)
aplicándola sucesivamente desdex0 hasta xn en pasos de longitud h.
2.1.4. Simulación con MATLAB
MATLAB (abreviatura de MATrix LABoratory, por sus siglas en ingles) es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de pro-gramación propio (lenguaje M). Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware.
2.2. Circuito de Chua
En la fig.2.4 se muestra la gráfica para dos enrollamientos y en la fig.2.5 se muestra la respuesta del circuito con valores g1=-1/1358, g2=-1/2464, C1=450pF, C2=1.5 nF,
L=1mH, R=1655Ω, Bp1=±.114, Bp2=±.4, condiciones iniciales Vc1=0.01 V, Vc2= 0 V,
IL=0 A y el tamaño de paso h=0.0000001; correspondiente a la fig.1.1 se realiza el análisis
del circuito para obtener (2.15)[19]:
dvc1
dt =−
vc1−vc2
RC1
− mvc1 −iNR
C1
,
dvc2
dt =−
vc1−vc2
RC2
+ il C2
, (2.15)
diL
dt =− vc2
L
Teniendo la ecuaciones que definen al circuito, se suma la parte del elemento no lineal formando de esta manera la matriz que servirá para la programación (Apéndice A)
˙ vc1 ˙ vc2 ˙ iL = − 1 RC1 −
m c1
1
RC1 0
1
RC2 −
1 RC2
1 C2
0 −L1 0
Figura 2.2.1: Representación gráfica del diodo de Chua
Figura 2.2.2: Circuito de Chua generando 2 enrollamientos
Figura 2.2.3: Señales en cada variable de estado en el tiempo
2.3. Función no-lineal saturada (SNLF)
De manera generalizada se puede decir que el modelado de un oscilador caótico con funciones no lineales saturadas, es similar al modelado del oscilador de Chua.
Para el caso citado en este trabajo el circuito modelado contiene un factor de escala para funcionamiento con circuitos electrónicos.
La simulación numérica de (2.5) y (2.7) se lleva a cabo creando un programa en MATLAB aplicando (2.14). (ver apéndice A) Si se considera el sistema de variables de estado de la forma:
˙ x ˙ y ˙ z =
0 1 0
0 0 1
−a −b −c
x y z + 0 0
−df(x;α, k, h, p, q)
(2.17)
Cuya solución aplicando (2.14) está dada por:
xn+1 yn+1 zn+1 =h
0 1 0
0 0 1
−a −b −c
x y z + 0 0
−df(x;α, k, h, p, q)
(2.18)
que es la SNLF, la cual cambia conforme el número de enrollamientos que se desea generar.
2.3.1. SNLF para dos enrollamientos
La fig.2.7 muestra la gráfica que contiene 3 segmentos, para generar dos enrollamientos el cual sera el punto de enfoque en el proyecto, analizando dicha gráfica la SNLF se describe como:
f(x;α, k, h, p, q) =
k x > qh+α
sx −α≤x≤α
−k x <−ph−α
(2.19)
Figura 2.3.1: Grafica de 3 segmentos para generar dos enrollamientos
Diseño de osciladores caóticos basados
en amplificadores operacionales
3.1. Implementación de las variables de estado
3.1.1. Generalidades de los opamps
El opamp mostrado en la fig.3.1, es básicamente un amplificador de voltaje con la particularidad de tener dos entradas y amplificar sólo la diferencia entre ellas.
Figura 3.1.1: Modelo de un opamp
El opamp amplifica el voltaje Vi con una ganancia Av llamada también ganancia di-ferencial de voltaje de lazo abierto produciendo un voltaje de salida V0=Av(V1-V2). Las entradas V1 y V2 pueden alimentarse por dos voltajes referidos a tierra, o por un voltaje flotante Vi, aplicado directamente entre las entradas. Idealmente el opamp tiene una ga-nancia infinita de voltaje diferencial (Av), una resistencia de entrada infinita, una resistencia de salida cero, CMRR y ancho de banda infinitos [20].
3.1.2. Configuraciones básicas
Configuración seguidor
Figura 3.1.2: Configuración seguidor
Configuración inversor
La configuración en modo inversor de voltaje para el opamp se muestra en la fig.3.3
Figura 3.1.3: Configuración inversor
Configuración sumador
La configuración en modo sumador de voltaje para el opamp se muestra en la fig.3.4
La configuración en modo integrador de voltaje para el opamp se muestra en la fig.3.5
Figura 3.1.5: Configuración integrador
Configuración restador
La configuración en modo restador de voltaje para el opamp se muestra en la fig.3.6
Figura 3.1.6: Configuración restador
Configuración comparador de voltaje
Figura 3.1.7: Configuración comparador de voltaje
Configuración derivador
La configuración en modo derivador de voltaje para el opamp se muestra en la fig. 3.8
Figura 3.1.8: Configuración derivador
3.1.3. Implementación electrónica del sistema
Oscilador con funciones saturadas con opamps
Figura 3.1.9: Diagrama del sistema caótico
Este sistema puede implementarse utilizando opamps como se muestra en la fig.3.10
Figura 3.1.10: Implementación con opamps
a
b Figura 3.1.11: a) SNLF con TL082, b) Grafica de la SNLF
Oscilador con diodo de Chua implementado con opamps Diseño del inductor con operacionales
Para el diseño del inductor se opto por utilizar un convertidor de impedancias generaliza-do[21].
Un convertidor de impedancias también se puede llamar simulador de impedancias, en este caso usando el modelo genérico mostrado en la fig.3.12
Figura 3.1.12: Configuración genérica
Zin =
V1
I1
= Z1Z3Z5 Z2Z4
(3.1)
Así tomando : Z1 = R1 ; Z3 = R3 ; Z5 = R5 y una de las dos Z2 ó Z4 como un capacitor y la otra resistiva, se tiene:
L= R1R3R5 R2
Cs (3.2)
Como el valor del inductor es conocido simplemente se hace un arreglo en (3.2) propo-niendo el valor de 3 de las resistencias y un capacitor quedando solo una resistencia como incógnita para quedar de este modo:
R4 =
R1R3R5
L Cs (3.3)
Figura 3.1.13: Convertidor de impedancias generalizado
Una vez conocido el modelo de un convertidor de impedancias generalizado se pro-pone que R1=R3=R5=1KΩ y el C=2.2nF teniendo a R4=2200Ω, como el opamp no es
Figura 3.1.14: Inductor con convertidor generalizado
Diseño del diodo de Chua con opamps
Esta es determinado por la fuente de alimentación y por la estructura interna del opamp, necesariamente se debe conocer este valor ya que el valor de la pendiente y los puntos de rompimiento son muy importantes para el optimo funcionamiento del circuito[22].
Figura 3.1.15: Esquema del diodo de Chua con opamp
Tomando como referencia la fig.3.15:
Se escoge a R1 lo suficientemente grande (por decir 330Ω)
R3 =
Esat
(Bp1−Esat)g2−Bp1g1
(3.4)
Se calcula
R4 =
Esat
(Bp1)(g2−g1)
(3.5)
R4=R5
Se evalúa
R6 =
Esat
(Esat−Bp1)(g2−g1)
(3.6)
a
Figura 3.1.17: Circuito de Chua completo
3.1.4. Pruebas de los sistemas
Comparación de los osciladores de Chua y el basado en SNLF
Teniendo el diseño de los dos osciladores en cuestión, la correspondiente simulación y pruebas en laboratorio, se tomaron en algunos criterios de selección tales como:
a) b)
Figura 3.1.18: Pruebas en laboratorio: a) Diodo de Chua y b) SNLF
Figura 3.1.19: FFT SNLF
Diseño de generador de números
aleatorios
4.1. Generador de números aleatorios
Los números aleatorios tienen aplicaciones en muchas áreas: simulación, criptografia, evaluación de múltiples integrales etc.
Generadores que producen secuencias aleatorias pueden ser clasificados en dos tipos: generador de números verdaderamente aleatorios (por sus siglas en ingles TRNGs) y genera-dor de números pseudo-aleatorios(PRNGs). TRNGs toman ventaja de la fuente de entropia impredecible la cual verdaderamente produce números aleatorios.
Todos los sistemas criptograficos requieren de valores impredecibles, por lo tanto los TRNG son un componente fundamental para mecanismos criptograficos.
Figura 4.1.1: Generador de bits aleatorio
Figura 4.1.2: Señal del generador de bits
4.2. Pruebas
4.2.1. Aleatoriedad
Prueba de mono-bits
Para comprobar la aleatoriedad del generador de bits, se necesito ayuda de la plataforma arduino debido a su fácil comunicación en modo serial, así mismo el apoyo de MATLAB fue indispensable ya que fue ahí donde se elaboro el scritp de recopilación de datos, para realizar una prueba de mono-bits (ver apéndice D), la cual consta en recolectar una muestra de 20000 bits y hacer una comparación respecto a datos preestablecidos en normas de pruebas de aleatoriedad [27].
Leyes de control, simulación y pruebas
Un gran numero de trabajos en control cinemático de robots caóticos están basados en un típico movimiento diferencial con dos grados de libertad, compuesto por dos activas, pa-ralelas e independientes ruedas y una tercera rueda con función exclusiva de equilibrio[12,24-27].
El chasis del robot es considerado como un cuerpo rígido operando en un plano horizon-tal, el movimiento del robot móvil propuesto esta descrito por la velocidad lineal v(t) y la velocidad angular w(t), la velocidad lineal provee un movimiento lineal de punto medio del ejes de las llantas, mientras la velocidad angular provee un movimiento rotacional del robot sobre el mismo punto. En la fig.5.1 se muestra la descripción del movimiento del robot en un plano. El sistema de la ecuación 5.1 describe el control de movimiento del robot.
˙ x(t) ˙ y(t) ˙ θ(t) = cosθ(t) 0 sinθ(t) 0 0 1 " v(t) ω(t) # (5.1)
donde x(t) y y(t) son las posiciones del robot y θ(t) es la orientación.
Estas ecuaciones constituyen un sistema dinámico nonholomico; El control de este siste-ma ha sido estudiado extensamente por varios grupos de investigación y diversas soluciones son posibles por ejemplo[26,28].
En este trabajo la trayectoria del robot es producida por una secuencia de coordenadas (x,y), dos diferentes leyes de control son usadas por otros investigadores [24-27]
5.1. Leyes de control retroalimentadas
Figura 5.1.1: Configuración del control cinemático
El modelo cinemático del robot descrito por (5.1), donde x(t) y y(t) son las posiciones del robot y θ(t) es la orientación. Se puede definir el angulo ϕ entre el eje XR y el vector
respecto al centro del robot y la posición deseada como se muestra en la fig.5.2. La otra configuración de variables, ρy ψ, describen la distancia entre la posición presente y la deseada y el angulo entre la dirección al objetivo y el eje X0 respectivamente. considerando
ϕ= 180 +θ−ψ
la descripción del movimiento en la nuevas coordenadas son:
" ˙ ρ ˙ ϕ # = " −cosϕ 0 1
ρsinϕ 1
# "
v ω
#
(5.2)
Considerando esta descripción del sistema de coordenadas polares, es necesario remarcar que la transformación de la coordenada no esta definida en x=y=0. El propósito de la ley de control define una realimentación para determinar la entrada del sistema, v y ω:
v =k1ρcosϕ;ω =−k1sinϕcosϕ−k2ϕ (5.3)
5.2. Control simple y discontinuo
Un segundo control cinemático esta basado en un esquema de control muy simple y discontinuo. en este esquema, el robot ejecuta dos fases de acción de control: la primera consiste en un movimiento de rotación exclusivamente con una velocidad angular respecto al su centro, con esto la dirección del robot apunta hacia el siguiente punto:
˙ x ˙ y ˙ θ = 0 0 ω (5.4)
Completada esta fase, el robot puede ejecutar el movimiento hacia el punto deseado con una velocidad constante:
˙ x ˙ y ˙ θ = cosθ sinθ 0 h
vi (5.5)
Evidentemente, si un obstáculo es encontrado en la trayectoria, el robot chocara.
Figura 5.2.1: Diagrama del sistema físico completo
En la fig. 5.3 se muestra una representación del sistema completo:
La parte principal se constituye por el oscilador caótico, el cual es el encargado de brindarle datos a la siguiente etapa, es decir, a un generador de bits aleatorio, este interpreta la pequeña señal del oscilador caótico y la transforma a una señal de datos lógicos (1 y 0), mismos que son interpretados por el microcontrolador para enviar una serie de ordenes a los motores encargados de brindarle movimiento al sistema.
5.3. Programación de la ley de control
Una vez hecho el algoritmo en MATLAB, se procede a la escritura de la ley de control en un microcontrolador (16f887) (ver apéndice C), utilizando el modulo de lectura analó-gica para capturar los datos arrojados por el generador de bits aleatorios, guardarlos para procesarlos y ser estos datos las coordenadas de trabajo para el movimiento del robot.
5.4. Pruebas
5.4.1.
Programa en el microcontroladorFigura 5.4.1: Prueba del control de motores
Las pruebas realizadas arrojaron resultados positivos, es decir que el algoritmo elaborado y el funcionamiento físico del hardware funciono de manera adecuada para proseguir con el paso próximo.
Una vez realizadas las pruebas necesarias de la ley de control, el siguiente paso es una prueba especifica, es decir construir un pequeño prototipo para realizar las pruebas a nivel 2D.
Para el diseño del robot móvil se opto por usar un material liviano pero resistente, así mismo se usaron dos motores a paso, y una rueda loca para el equilibrio ya antes mencionado.
En esta etapa del proyecto se necesito ingenio para visualizar la dimensión del móvil y así no exceder la capacidad de esfuerzo de los motores y que el móvil se moviera tranquilamente.
Tabla 5.1: Comparación de pruebas realizadas.
Prueba/parametros #1 #2 #3 #4 #5 #6
% erroneo Rotación 80 65 30 5 3 3
% erroneo Traslación 90 75 20 3 3 3
% erroneo Permanencia (1.5m2) 85 80 60 10 6 2
% erroneo Permanencia (2m2) 80 55 25 8 3 2
% erroneo Permanencia (3m2) 70 60 35 10 3 2
Conclusiones y trabajos futuros
6.1. Conclusiones
El uso del caos tiene muchas aplicaciones, tales como comunicaciones seguras, encrip-tación, aparatos de aplicación medica, construcción de robots móviles planeadores de tra-yectorias; aun falta mucho por desarrollar y experimentar con respecto a robots planeadores implementando osciladores caóticos.
El uso de osciladores para aplicación en robots móviles es una gran alternativa para ahorrar hardware computacional, es decir la el corazón del robot planeador sera un oscila-dor caótico, acompañado de dispositivos como sensores que apoyaran el mejor desempeño dependiendo de la aplicación a la cual este destinada el móvil.
El uso de osciladores mas complejos podría mejorar la eficiencia de cobertura de área de un robot móvil en un plano, es decir si el uso de un oscilador de dinámica simple puede cubrir un área considerable, que no haría uno de dinámica mas compleja.
A continuación se presentan las conclusiones relacionadas con el desarrollo de este trabajo, de acuerdo al orden de los puntos que se tratan en cada capítulo.
Se presentó el modelado matemático del sistema caótico mediante el uso de variables de estado y aproximaciones PWL. Se propuso una nueva estructura de la SNLF, con la cual se reducen los niveles de voltaje para su implementación con dispositivos comerciales.
Para la síntesis, se partió del sistema en variables de estado y su representación en diagrama de bloques, la cual se implementó con tres integradores y un sumador, mismos que se realizaron utilizando opamps comerciales.
ajustándose al modelo de ganancia finita del opamp, lo cual permitió controlar los puntos de quiebre y pendientes de la función no lineal.
Se presento el diseño de un generador de Bits aleatorios para constituir coordenadas de desplazamiento del robot móvil, así mismo se demostró que el generador cumple algunas de las normas establecidas para identificar la aleatoriedad de un generador de ese tipo.
Para el control, se partió del análisis de un sistema cinemático, así como el análisis de leyes de control ya antes utilizadas por algunos investigadores aplicadas a robots móviles con implementación de osciladores caóticos.
Los motores usados en la estructura del móvil fueron motores a pasos de 7.5 grados por paso y por tal motivo la exactitud del prototipo no es 100 % eficiente, así mismo la tracción de la ruedas fue otro factor en contra del optimo funcionamiento del prototipo móvil, factores que son puntos específicos de mejora para trabajos futuros.
6.2. Trabajos futuros
Se proponen las siguientes actividades por realizar en trabajos posteriores:
Realizar un estudio para cuantificar la calidad de la aleatoriedad y validar la utilidad de exploración de un robot móvil en un campo.
Buscar otras aplicaciones al sistema diseñado.
Continuar experimentando con diferentes sistemas caóticos de dinámicas más com-plejas, como sistema caótico de n-enrollamientos en 2D.
Mejora del diseño en este proyecto:
1. Motores a pasos como una mayor cantidad de pasos 2. Ruedas de mayor tracción
3. Armazón resistente a diferentes medios
[1] Claude E. Shannon, “Communication Theory of Secrecy Systems”. Bell System Tech-nical Journal, Vol 28, Oct 1949, pgs 656-715
[2] P. Sooraska, K. Klomkarm, No-CPU Chaotic Robots: From Classroom to Commerce, IEEE Circuits and Systems Magazine 10(2010)46-53.
[3] J. Lü, G. Chen, “Generating Multiscroll Chaotic Attractors: Theories, Methods and Applications”, International Journal of Bifurcations and Chaos, vol. 16, no. 4, 2006, pp. 775-858.
[4] Yu, S. M., Ma, Z. G., Qiu, S. S., Peng, S. G. & Lin, Q. H. “Generation and synchro-nization of nscroll chaotic and hyperchaotic attractors in fourthorder systems”, Chin. Phys. 13, 2004, pp. 317328.
[5] J. Lü, S. Yu, H. Leung and G. Chen. “Experimental verification of multidirectional multiscroll chaotic attractors”, IEEE Trans. Circuits Syst.-I 53, 2006, pp. 149-165. [6] Chen W. K., Vandewalle J. and Vandenberghe L., “Piecewise-linear circuits and
piecewise-linear analysis: Circuits and Filters Handbook”, CRC Press/IEEE Press, (1995).
[7] C. Liu, T. Liu, L. Liu, Y. Su, “A New Nonlinear Chaotic System”, International Journal of Nonlinear Sciences and Numerical Simulation, 7(3): 345-352 (2006).
[8] H. Sira-Ramírez and C. Cruz-Hernández, “Synchronization of Chaotic Systems: A Generalized Hamiltonian Systems Approach”, International Journal of Bifurcations and Chaos, vol 11, no. 5, 2001, pp. 1381-1395.
[9] Ashraf Anwar Fahmy ment of Computer Engine,Chaotic Mobile Robot Workspace Coverage Enhancement, Journal of Automation, Mobile Robotics & Intelligent Systems VOLUME 6, N°1 2012
[11] CHRISTOS K. VOLOS AND N.G. BARDIS, Implementation of Mobile Robot by Using Double-Scroll Chaotic Attractors, Recent Researches in Applications of Electrical and Computer Engineering, ISBN: 978-1-61804-074-9
[12] A.B. Eduardo, S.J. Tomás, V.V. Martín, Control no Lineal Discontinuo de un Robot Móvil, Computación y Sistemas, número especial, Marzo 2002, pp. 042-049.
[13] Mainzer, K. Thinking in Complexity: The Complex Dynamics of Matter, Mind, and Mankind. Springer-Verlag, 1994.
[14] V.H. Carbajal-Gómez, Diseño de Osciladores Caóticos para Comunicaciones Seguras, Tesis de Ingenieria en electronica y comunicaciones, BUAP, México 2009.
[15] Juan A. Rodríguez Liñán & Jesús de L. Morales. “Control de Sistemas Caóticos”. Ciencia UANL Enero-Marzo 2008; vol. (IX).
[16] Robot autónomo controlado por CPU
[17] J. Lü, G. Chen, X. Yu and H. Leung, “Design and Analysis of Multiscroll Chaotic At-tractors From Saturated Function Series”, IEEE Transactions on Circuits and Systems, vol 51, no. 12, 2004, p. 2476-2490.
[18] J.M. Muñoz-Pacheco and E. Tlelo-Cuautle, “Synthesis of n-Scroll Attractors using Saturated Functions from High-Level Simulation”, Journal of Physics- Conference Se-ries: 2nd Int. Symposium on Nonlinear Dynamics, 96(1) (2008). DOI: 10.1088/1742-6596/96/1/012050.
[19] E. Tlelo-Cuautle, M.A. Duarte-Villaseñor, Designing Chua’s circuit from the beha-vioral to the transistor level of abstraction,Science Direct, Applied Mathematics and Computation 184 (2007) 715–720
[20] Adel A. Sedra, Kenneth C. Smith, “Circuitos Microelectrónicos”. Oxford University Press.1998.
[21] Análisis y sintesis de circuitos,Departamento de Teoría de la Señal y Comunicacio-nes. Universidad de Alcalá,Michael Peter kennedy, Robust opamp realization of chuas circuit, National Science Foundation
[22] Adoracion Hermoso Fernandez,Circuitos con amplificadores operacionales
Mathematical Problems in Engineering. v2007. 1
[25] S.-O. Lee, Y.-J. Cho, M. Hwang-Bo, B.-J. You, S.-R. Oh, A stable target-tracking control for unicycle mobile robots, in: Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems, Takamatsu, Japan, vol. 3, October-November 2000, pp. 1822-1827.
[26] Ch.K. Volos, I.M. Kypriandis, I.N. Stouboulos, A Chaotic Path Planning For Autono-mous Mobile Robots, Robotics and AutonoAutono-mous Systems, Vol. 60, Enero 2012, pp. 651-656.
[27] C. Canudas de Wit and O. J. Sordalen, “Exponential Stabilization of mobile robots with nonholomic constraints”, IEEE Transactions on Automatic Control, vol. 37, no. 11, pp. 1791-1797, 1992.
[28] J. Lü, G. Chen, “Generating Multiscroll Chaotic Attractors: Theories, Methods and Applications”, International Journal of Bifurcations and Chaos, vol. 16, no. 4, 2006, pp. 775-858.
[29] Katsuhiko Ogata, “Ingieneria de Control Moderna”. Prentice Hall Hispanoamericana, S.A., 3a edición, México 2000.
[30] Data Sheet TL082,
http://www.datasheetcatalog.net/es/datasheets_pdf/T/L/0/8/TL082.shtml [31] Data Sheet LF356N,
http://www.datasheetcatalog.com/datasheets_pdf/L/F/3/5/LF356N.shtml [32] Data Sheet PIC16F887,
www.engr.usask.ca/classes/EE/391/notes/PIC16F886.pdf [33] Moriello, S.A. “Sistemas complejos, caos y vida artificial”.
http://redcientifica.com/doc/doc200303050001.html
[34] Y. Nakamura and A. Sekiguchi, The Chaotic Mobile Robot, IEEE Trans. Robot. Au-tom., Vol. 17, 2001, 898–904.
[35] Andrés Cánovas López , MANUAL DE USUARIO DEL COMPILADOR PCW DE CCS [36] Eduardo García Breijo , COMPILADOR CCS y SIMULADOR PROTEUS PARA MI-CROCONTROLADORES PIC, Primera Edición, Alfa omega Grupo Editor. S.A . de c.v., México, ISBN:978-97015-1397-2, pp-276
Código MATLAB para el modelado de
SNLF de dos enrollamientos
código en MATLAB para el Modelado del circuito de chua para dos enrollamientos clear
clc
disp(’2 enrollamientos’) h=1e-7;
g1 = -1/1358; g2 = -1/2464; BP1 = 0.114; C1 = 450e-12; C2 = 1.5e-9; L = 1e-3; R = 1655; n=0;
Xn=[0.01;0;0]; Xn1=Xn; Vc1=Xn1(1); Vc2=Xn1(2); iL=Xn1(3);
while n<20000 if Xn(1)<-BP1
fb=g2*Xn(1)+((g2 - g1)*BP1); elseif Xn(1)<BP1
fb=g1*Xn(1); else
fb=g2*Xn(1)+((g1 - g2)*BP1); end
%****************** Xn=Xn+h*((A*Xn)+(B*fb)); Xn1=[Xn1 Xn]; n=n+1; end
Vc1=Xn1(1,:); Vc2=Xn1(2,:); iL=Xn1(3,:); plot3 (Vc1,iL,Vc2) grid on;
Código MATLAB para el modelado de SNLF de dos
enrolla-mientos
clc clear
disp(’2 enrollamientos’) s=2;
k=1;
alpha=6.4e-3; a=.7;
disp(’GENERANDO GRAFICA’) switch (s)
%**************************************************** case 2
%CONSTANTES a=a; b=a; c=a; d=a;
%CONDICIONES INICIALES xn0=.1; yn0=.1; zn0=.1;
%PROGRAMA t=t0;
tab1=[t,xn0,yn0,zn0]; int=[t0:h1:tf];
for i=1:length(int)-1
%APROXIMACIÓN POR EULER xn=xn0+h1*(yn0);
yn=yn0+h1*(zn0); %SNLF
if xn0 > alpha
zn=zn0+h1*(-a*xn0-b*yn0-c*zn0+d*k); elseif xn0 >= -alpha & xn0 <= alpha
zn=zn0+h1*(-a*xn0-b*yn0-c*zn0+d*(k*xn0)); elseif xn0 < -alpha
zn=zn0+h1*(-a*xn0-b*yn0-c*zn0-d*k); end xn0=xn; yn0=yn; zn0=zn;
%ARREGLO t=t+h1;
p1=[t,xn,yn,zn]; tab1=[tab1;p1]; end
%GRAFICA
ylabel(’yn’) grid
subplot(2,2,2),plot(tab1(:,2),’blue’) xlabel(’t’)
ylabel(’x’) grid
subplot(2,2,3),plot(tab1(:,3),’blue’) xlabel(’t’)
ylabel(’y’) grid
subplot(2,2,4),plot(tab1(:,4),’blue’) xlabel(’t’)
ylabel(’z’) grid
%plot3(tab1(:,2),tab1(:,3),tab1(:,4),’blue’) otherwise
Ley de control MATLAB
% Calculo de frecuencia angular o angulo de giro y distancia
clearclc x0=0; y0=0; teta0=0;
x=[5 3 6 0 8 0 8]; y=[5 2 8 0 8 0 8]; n=1;
while n<8
xx=abs(x(n)-x0); yy=abs(y(n)-y0); r=sqrt(xx^2 + yy^2)
teta=((atan2((y(n)-y0),(x(n)-x0))))*(180/3.141593) w=teta-teta0 x0=x(n);
y0=y(n); teta0=teta; n=n+1;
Ley de control PIC
#include <16f887.h>
#fuses NOWDT,HS,NOMCLR,NOLVP #device adc=10
#use delay (clock = 20MHZ) #include <math.h>
#include "flex_lcd.c" #use standard_io(A) //#use standard_io(B) #use standard_io(C)
int16 valor; float volts; int i,j,xa,a,b,c,d,x,y,hh;
SIGNED int ii;//Variable con signo que nos sirve para recorrer el array pasos int1 giro; int captura[8]; float teta;
float hipotenusa;////distancia a recorrer float w;////angulo de rotacion
////////////////////////////////////////////// void rotacion(void)/// rotación en propio eje
{
set_tris_b(0b00000000);// 1= Entradas ; 0 = Salidas const int8
pasos[8]={0b10000001,0b1100011,0b01000010,0b01100110,00100100,00111100,10011001}; if(giro==0)//Si x vale 0 el motor gira en un sentido, si vale 1 girara en el contrario
{
for(ii=0;ii<8;ii++) // Recorremos el array pasos haciendo girar el motor {
}
if(giro==1) {
for(ii=8;ii>=0;ii–)// Recorremos el array pasos haciendo girar el motor en sentido contrario { output_b(pasos[ii]); delay_ms(100); } } }
void movimiento(void)//// recorrido de distancia {
{
set_tris_b(0b00000000);// 1= Entradas ; 0 = Salidas const int8
pasos[8]={0b10001000,0b11001100,0b01000100,0b01100110,00100010,00110011,10011001}; for(ii=0;ii<8;ii++) // Recorremos el array pasos haciendo girar el motor
{ output_b(pasos[ii]); delay_ms(100); } } } //////////////////////////////////////////////// void main() {
lcd_init();
int x0=0, y0=0; float teta0=0; enable_interrupts(INT_CCP2); enable_interrupts(GLOBAL); setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(sAN0); setup_adc_ports(VSS_VDD); set_adc_channel(0); setup_ccp2(CCP_COMPARE_RESET_TIMER);
ccp_2=1200; // cuenta hasta 220us setup_timer_1(T1_INTERNAL |T1_DIV_BY_1); set_timer1(0);
else {d=0;} y=a+b+c+d; /////////////////////////////////////////////////// //////////////////// /* for(j=0;j<4;j++) { printf(lcd_putc," %d",captura[j]); delay_ms(20); } lcd_gotoxy(1,2); printf(lcd_putc,"y= "); for(j=4;j<8;j++) { printf(lcd_putc," %d",captura[j]); delay_ms(20); } */
//////////////////////// ////////////////////////// cálculos float x1=x;///se guarda el valor actual en la variable x1 y y1
float y1=y; float xx=(x1-x0); float yy=(y1-y0);
float hipo=((xx*xx)+(yy*yy));/// distancia
hipotenusa=(SQRT(hipo));//4;//// calcula la distancia a recorrer teta=((ATAN2((y1-y0),(x1-x0)))*(180/3.141593)); w=teta-teta0; printf(lcd_putc,"\f"); lcd_gotoxy(1,1); //printf(lcd_putc,"xx= %d",xx); //printf(lcd_putc,"teta= %f",teta); printf(lcd_putc,"hip= %f",hipotenusa);
teta0=teta; if(w<=0) {
giro=1; } else { giro=0; }
if(w==0 && x==0 && y==0) {
set_tris_b(0b00000000);
} /////// ((250cm / 25cm)*(12))/sqrt(225) (12 es el numero de veces que se //repite el for de movimiento para alcanzar 25 cm // para 250 X 250 cm el factor= 8 //para 200 X 200 cm el factor= 6.4 //
for(j=0;j<=abs(w/30);j++)////este lo debe dar w {
rotacion(); }
for(hh=0;hh<=(hipotenusa*8);hh++)//// hipotenusa y depende del radio de la rueda {
movimiento(); }
set_tris_b(0b00000000);
/////////////////////////////// delay_ms(200);
} }
#INT_CCP2
void lectura_adc() // interrupción cada 200us {
valor=read_adc(); output_high(PIN_A2);
// para ver que se esta ejecutando cada 200us delay_us(10);
Test de mono-bits MATLAB-arduino
% % % % Código MATLAB
clearclc
S=serial(’/dev/ttyUSB4’,’BaudRate’,9600,’StopBits’,1,’Terminator’,’CR/LF’,’DataBits’,8,’Parity’,’none’,’Timeout’,3); fopen (S);
zeros=0; unos=0; n=1; y=0; a=0; x=20000;
while n<=20000 x(n)=fscanf(S,’ %d’); if x(n)==1
y=y+1; else a=a+1; end n=n+1; end x
clear S;
% INSTRFIND
///////// Codigo Arduino
// set pin numbers:const int buttonPin = 2;
// the number of the pushbutton pin const int ledPin = 13;
// the number of the LED pin // variables will change: int buttonState = 0;
// variable for reading the pushbutton status void setup() {
// initialize the LED pin as an output: pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT);
Serial.begin(9600); } void loop(){
// read the state of the pushbutton
value: buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) {
// turn LED on:
//digitalWrite(ledPin, HIGH); }
else {
// turn LED off:
//digitalWrite(ledPin, LOW); }
///////// Codigo PIC16f887
#include <16f887.h>#fuses NOWDT,HS,NOMCLR,NOLVP #device adc=10
#use delay (clock = 20MHZ) #include <math.h>
#use standard_io(A) //#use standard_io(B) #use standard_io(C)
int16 valor; float volts; int xa;
////////////////////////////////////////////// //////////////////////////////////////////////// void main() {
enable_interrupts(INT_CCP2); enable_interrupts(GLOBAL); setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(sAN0); setup_adc_ports(VSS_VDD); set_adc_channel(0); setup_ccp2(CCP_COMPARE_RESET_TIMER);
ccp_2=1200; // cuenta hasta 220us setup_timer_1(T1_INTERNAL |T1_DIV_BY_1); set_timer1(0);
output_low(PIN_A2);
//para mostrar que la lectura adc es cada 200us for(;;) {
volts=(valor*5.0)/1023; if (volts<4.5) {
xa=0; output_low(PIN_A3); } else { xa=1; output_high(PIN_A3); } /////////////////////////////////////////////////// /////////////////////////////// } } #INT_CCP2
output_high(PIN_A2);
// para ver que se esta ejecutando cada 200us delay_us(10); output_low(PIN_A2);