Está en la página 1de 17

UNIVERSIDAD DE LAS FUERZAS ARMADAS

ESPE

DEPARTAMENTO DE ENERGÍA Y MECÁNICA

INGENIERÍA MECATRÓNICA

AUTOMATIZACIÓN INDUSTRIAL
MECATRÓNICA

TEMA: IMPLEMENTACIÓN DE UN
PERCEPTRÓN

ESTUDIANTES:
-Pérez Ronnie
-Pérez Samuel
-Quinaluisa Laydi
-Soria Polo

NOVIEMBRE 2020 – ABRIL 2021


1. TEMA: IMPLEMENTACIÓN DE UN PERCEPTRÓN

2. OBJETIVOS:
Objetivo general:

• Implementar un perceptrón utilizando una tarjeta Arduino para diferentes compuertas


lógicas
Objetivos específicos:

• Usar software para el entrenamiento de un perceptrón.


• Implementar el perceptrón usando una tarjeta embebida

3. INTRODUCCIÓN
Se desea realizar la implementación de una compuerta and, nand, or o nor, usando para ellos una
tarjeta Arduino que perita la programación de la salida de la neurona, teniendo como entradas la
lectura de dos canales analógicos y presentado la respuesta en un led, como activación del
perceptrón.

4. MARCO TEÓRICO

4.1. Redes Neuronales Artificiales


Consisten en unidades de procesamiento densamente interconectadas, llamadas neuronas por su
similaridad funcional con las neuronas biológicas. Las unidades de procesamiento reciben,
procesan y transmiten señales, tal como las neuronas biológicas.

Fig1. Estructura de una neurona biológica típica

4.2. Función de salida


Esta función proporcionada la salida global de la neurona y(t) en función de su estado de
activación actual a(t). muy frecuentemente la función de salida es simplemente la identidad
F(x)=x, de modo que el estado de activación de la neurona se considera como la propia salida.
𝑦𝑖 (𝑡) = 𝐹𝑖 (𝑎𝑖 (𝑡)) = (𝑎𝑖 (𝑡)
Esto ocurre en los modelos mis comunes, como el MLP o la adalina. La función de salida puede
ser también de tipo escalón, lo que supone que la neurona no se dispare hasta que la activación
supere un cierto umbral.

Fig2. Funciones de activación habituales

4.3. Modelo estándar de neurona artificial


En la práctica suele utilizarse una denominada neurona estándar, que constituye un caso particular
del modelo del PDP, considerando que la regla de propagación es la suma ponderada y que la
funci6n de salida es la identidad. De esta forma, la neurona estándar consiste en
Un conjunto de entradas 𝑥𝑗 (𝑡) y pesos sinápticos 𝑤𝑖𝑗

Una regla de propagación ℎ𝑖 (𝑡) = 𝜎 (𝑤𝑖𝑗 , 𝑥𝑗 (𝑡)) ; ℎ𝑗 (𝑡) = ∑ 𝑤𝑖𝑗 𝑥𝑗 es la más común.

Una función de activación 𝑦𝑖 (𝑡) = 𝑓𝑖 (ℎ𝑖 (𝑡)), que representa simultáneamente la salida de la
neurona y su estado de activación.

Fig3. Modelo de neurona estándar

4.4. Modelo matemático de una neurona (una o varias entradas)


Fig4. Modelo de una neurona de una entrada

𝑎 = 𝑓(𝑤𝑝 + 𝑏)

Fig5. Modelo de neurona con varias entradas y bias

4.5. Clasificación de los modelos neuronales


Dependiendo del modelo de la neurona concreto que se utilice, de la arquitectura o topología de
conexión, y de algoritmo de aprendizaje, surgirán distintos modelos de redes neuronales.

Fig6. Clasificación de ANS por el tipo de aprendizaje y la arquitectura

4.6. Algoritmo de aprendizaje de un perceptrón


La importancia del perceptrón radica en su carácter de dispositivo entrenable, pues el algoritmo
de aprendizaje introducido por Rosenblatt permite que el perceptrón determine automáticamente
los pesos sinápticos que clasifican un determinado conjunto de patrones etiquetados.
Como entrenar una neurona
El entrenamiento de las redes neuronales se realiza mediante unos algoritmos de entrenamiento
que se basan siempre en intentar buscar los pesos de las neuronas que ofrezcan mejores resultados.
Entrenamiento de un perceptrón
Primero inicializar aleatoriamente su vector de pesos asociado, y después ir actualizando este para
conseguir mejores resultados.
𝑤𝑖 ← 𝑤𝑖 + ∆𝑤𝑖
Para cada iteración del algoritmo se actualizará el vector de pesos:
De manera que:
∆𝑤𝑖 = ɳ(𝑡 − 0)𝑥
Siendo n tasa de entrenamiento con un valor positivo y que hará la función de hacer que la
convergencia sea más o menos rápida. Es recomendable que n sea pequeña (entre 0.1 y 0.2) para
que los resultados sean correctos.
Esta forma de recalcular los pesos se basa en el gradiente descendente de la función de error.

5. MATERIALES
• Computador,
• Tarjeta Arduino,
• Protoboard,
• Sensores/entradas análogas acondicionados para Arduino,
• Led,
• Cables.

6. DESARROLLO
6.1. Procedimiento compuerta NAND
1. El primer paso para realizar la implementación de un perceptrón con la compuerta
NAND, se debe encontrar los valores de los pesos y el bias, con los cuales se objetivo
esperado.
Para esto se debe realizar un código pequeño en el software Matlab, el cual facilita la
obtención de dichos valores; a continuación, se presenta el código utilizado en el
software.
P1 P2 Y
0 0 1
0 1 1
1 0 1
1 1 0
Fig7. Clasificación de ANS por el tipo de aprendizaje y la arquitectura

En la entrada se colocarán los valores de entrada para el perceptrón, las cuales serán los
valores correspondientes a la compuerta NAND.
El objetivo será la salida que esperamos obtener con las entradas.
El comando train sirve para realizar el entrenamiento del perceptrón, con las entradas y
objetivos deseados.

Fig8. Perceptron puerta NAND

2. Armar un circuito con dos sensores analógicos, con se respectivo acondicionamiento en


caso de ser necesario.
Para este caso se usará un LM35 y un potenciómetro, los cuales irán conectados a las
entradas analógicas 0 y 1 del Arduino para la adquisición de los datos.
Fig9. Circuito compuerta NAND

3. Una vez encontrados los valores de los pesos y bias, se procede a realizar la
implementación del perceptrón utilizando el software ArduinoIDE y una tarjeta Arduino,
se debe tener en cuenta que la función de activación utilizada para este caso será la
escalón.

Fig10. Código compuerta NAND

Para realizar la programación se utilizará dos sensores analógicos; para nuestro caso se
usó un LM35 y un potenciómetro.
Se debe leer cada una de las entradas analógicas, luego hay que escalar los valores de las
entradas analógicas para pasarlos a las entradas del perceptrón, ya que es necesario que
estén en un rango de 0 a 1.
Posterior a esto se debe encontrar el valor a del perceptrón, aplicando la ecuación:
𝑎 = ∑𝑝 ∗ 𝑤 + 𝑏
Y por último para obtener la salida, ya que se utilizó la función escalón, se debe tener en
cuenta que los valores de la salida serán 0 ó 1, según los siguientes parámetros:

Sí 𝑎 ≥ 0, entonces salida=1

Sí 𝑎 < 0, entonces salida=0

4. Una vez terminado el programa se debe cargar a la placa Arduino y abrir el monitor serial
para ver el funcionamiento, y verificar los valores.

Fig11. Puerto Serial compuerta NAND

6.2. Procedimiento compuerta AND

1. Se realiza el mismo procedimiento de la compuerta anterior cambiando el objetivo para


obtener una salida de una compuerta AND
P1 P2 Y
0 0 0
0 1 0
1 0 0
1 1 1
Fig12. Perceptrón compuerta AND

Obtenemos pesos y el bias correspondiente

Fig13. Perceptrón compuerta AND

2. Realizar el circuito con dos sensores analógicos, con se respectivo acondicionamiento en


caso de ser necesario.
Para este caso se usará un sensor ultrasónico y un potenciómetro, los cuales irán
conectados a las entradas analógicas del Arduino para la adquisición de los datos.

Fig14. Circuito compuerta AND


3. Una vez encontrados los valores de los pesos y bias, se procede a realizar la
implementación del perceptrón utilizando el software ArduinoIDE y una tarjeta Arduino,
se debe tener en cuenta que la función de activación utilizada para este caso será la
escalón.

Fig15. Código compuerta AND

Para realizar la programación se utilizará dos sensores analógicos; para nuestro caso se
uso un sensor ultrasónico y un potenciómetro.
Se debe leer cada una de las entradas analógicas, luego hay que escalar los valores de las
entradas analógicas para pasarlos a las entradas del perceptrón, ya que es necesario que
estén en un rango de 0 a 1.
Posterior a esto se debe encontrar el valor a del perceptrón, aplicando la ecuación:
𝑎 = ∑𝑝 ∗ 𝑤 + 𝑏
Y por último para obtener la salida, ya que se utilizó la función escalón, se debe tener en
cuenta que los valores de la salida serán 0 ó 1, según los siguientes parámetros:

Sí 𝑎 ≥ 0, entonces salida=1

Sí 𝑎 < 0, entonces salida=0

4. Una vez terminado el programa se debe cargar a la placa Arduino y abrir el monitor serial
para ver el funcionamiento, y verificar los valores.
Fig16. Puerto Serial compuerta AND

6.3. Procedimiento compuerta OR

1. Se realiza el mismo procedimiento de la compuerta anterior cambiando el objetivo para


obtener una salida de una compuerta OR
P1 P2 Y
0 0 0
0 1 1
1 0 1
1 1 1

Fig17. Perceptrón compuerta OR

Obtenemos pesos y el bias correspondiente


Fig18. Perceptrón compuerta OR

2. Realizar el circuito con dos sensores analógicos, con se respectivo acondicionamiento en


caso de ser necesario.
Para este caso se usará un LM35 y un potenciómetro, los cuales irán conectados a las
entradas analógicas 0 y 1 del Arduino para la adquisición de los datos.

Fig19. Circuito compuerta OR

3. Una vez encontrados los valores de los pesos y bias, se procede a realizar la
implementación del perceptrón utilizando el software ArduinoIDE y una tarjeta Arduino,
se debe tener en cuenta que la función de activación utilizada para este caso será el
escalón.
Fig20. Código compuerta OR

Para realizar la programación se utilizará dos sensores analógicos; para nuestro caso se
usó un LM35 y un potenciómetro.
Se debe leer cada una de las entradas analógicas, luego hay que escalar los valores de las
entradas analógicas para pasarlos a las entradas del perceptrón, ya que es necesario que
estén en un rango de 0 a 1.
Posterior a esto se debe encontrar el valor a del perceptrón, aplicando la ecuación:
𝑎 = ∑𝑝 ∗ 𝑤 + 𝑏
Y por último para obtener la salida, ya que se utilizó la función escalón, se debe tener en
cuenta que los valores de la salida serán 0 ó 1, según los siguientes parámetros:

Sí 𝑎 ≥ 0, entonces salida=1

Sí 𝑎 < 0, entonces salida=0

4. Una vez terminado el programa se debe cargar a la placa Arduino y abrir el monitor serial
para ver el funcionamiento, y verificar los valores.
Fig21. Puerto serial compuerta OR

6.4. Procedimiento compuerta NOR

1. Se realiza el mismo procedimiento de la compuerta anterior cambiando el objetivo para


obtener una salida de una compuerta NOR
P1 P2 Y
0 0 1
0 1 0
1 0 0
1 1 0

Fig22. Perceptrón compuerta NOR

Obtenemos pesos y el bias correspondiente


Fig23. Perceptrón compuerta NOR

2. Realizar el circuito con dos sensores analógicos, con se respectivo acondicionamiento en


caso de ser necesario.
Para este caso se usará un sensor ultrasónico y un potenciómetro, los cuales irán
conectados a las entradas analógicas 0 y 1 del Arduino para la adquisición de los datos.

Fig24. Circuito compuerta NOR

3. Una vez encontrados los valores de los pesos y bias, se procede a realizar la
implementación del perceptrón utilizando el software ArduinoIDE y una tarjeta Arduino,
se debe tener en cuenta que la función de activación utilizada para este caso será la
escalón.
Fig25. Código compuerta NOR

Para realizar la programación se utilizará dos sensores analógicos; para nuestro caso se
usó un sensor ultrasónico y un potenciómetro.
Se debe leer cada una de las entradas analógicas, luego hay que escalar los valores de las
entradas analógicas para pasarlos a las entradas del perceptrón, ya que es necesario que
estén en un rango de 0 a 1.
Posterior a esto se debe encontrar el valor a del perceptrón, aplicando la ecuación:
𝑎 = ∑𝑝 ∗ 𝑤 + 𝑏
Y por último para obtener la salida, ya que se utilizó la función escalón, se debe tener en
cuenta que los valores de la salida serán 0 ó 1, según los siguientes parámetros:

Sí 𝑎 ≥ 0, entonces salida=1

Sí 𝑎 < 0, entonces salida=0


4. Una vez terminado el programa se debe cargar a la placa Arduino y abrir el monitor serial
para ver el funcionamiento, y verificar los valores.
Fig26. Puerto serial compuerta NOR

7. CONCLUSIONES
• Todas las compuertas implementadas en este laboratorio se las puede resolver mediante
el perceptrón utilizado en Matlab.
• Arduino se puede utilizar para la implementación de una red neuronal dándonos
resultados satisfactorios ya que se logró acondicionar todos los sensores utilizados para
que la programación en Arduino IDE nos de la salida esperada de cada compuerta.

8. RECOMENDACIONES
• Establecer los rangos correctos en los valores que los sensores nos muestran para que
nuestra red pueda funcionar correctamente.

9. BIBLIOGRAFÌA

Brío, B. M. (2001). Redes Neuronales y Sistemas Difusos. Zaragoza: Alfaomega.


Constante, P. (08 de mayo de 2020). Ingeniería mecatrónica. Obtenido de https://mectronic-
ingenieria.blogspot.com/2016/05/rna.html

También podría gustarte