PDF de programación - Integración de Simulink coder con Arduino

<<>>
Imágen de pdf Integración de Simulink coder con Arduino

Integración de Simulink coder con Arduinográfica de visualizaciones

Publicado el 5 de Septiembre del 2019
810 visualizaciones desde el 5 de Septiembre del 2019
55,5 KB
3 paginas
MEc Mecatrónica Ecuador
Integración de Simulink coder con Arduino
Un buen día en la universidad me asignaron el desarrollo de un sistema de adquisición,
procesamiento de señales, y control. Un proyecto de 40 horas y tenía poco tiempo para
entregarlo, mis profesores son de los que creen que el día de trabajo tiene 24 horas, así
que solo tenía 2 días, y por supuesto bajo presupuesto. El diseño me llevó la mayor parte
del tiempo y me quedaba muy poco para la implementación. Me decidí por Arduino para el
hardware, y la generación del código C++ del modelo que había desarrollado en Simulink.
Nunca antes había usado Arduino, entonces lo primero fue instalar la IDE en mi
computador, un MacBook con Mac OS X Lion, Arduino Uno SMD la tarjeta. Cuando
instalé la IDE en mi máquina no aparecía mi tarjeta, solo Arduino UNO no aparecía en el
listado del menú Tools --> Board. No se por qué, pero seguí las instrucciones de
instalación. Bueno, abrí el archivo boards.txt ubicado en /arduino/contents/resourses/java/
hardware/arduino y aumenté las siguientes líneas de texto (Esto lo hice comparando una
instalación de la IDE de Arduino en PC).
uno.name=Arduino uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
uno.build.variant=standard
Con esto logré que mi Mac se comunique con mi board, el hardware estaba listo!!
Para probar la integración del código C generado en Simulink a la IDE de Arduino, creé
un modelo muy simple que multiplica la entrada unitaria por 2 en un canal, por 11 en otro
canal, luego las suma, así obtengo el valor de 13 que voy a asignar al pin del
microcontrolador que encenderá un led de prueba.

Dentro del subsistema se encuentra el conjunto de los siguientes bloques

Antes de hacer esto, ya había seguido algunos webinars de Mathworks referentes al
diseño de sistemas embebidos, entonces procedía de la siguiente manera a
la
configuración del modelo para la generación de código:
Simulation --> Congiguration Parameters --> Solver
Type: Fixed - step
Solver: discrete (no continuous states)
Fixed - step size: 0.001
Simulation --> Congiguration Parameters --> Code Generation
System target file: ert.tlc
Language: C++
Check on en la opción generate code only
Simulation --> Congiguration Parameters --> Code Generation --> Report
Habilitar: Create code generation, Code-to-model, Model-to-code
Simulation --> Congiguration Parameters --> Hardware Implementation
Device type: 8-bit Embedded Processor
Aplicamos los cambios y Ok.
En el modelo de Simulik damos click derecho en el subsistema creado y elegimos Code
generation --> Build Subsystem.
Una vez generado el código, en la IDE de Arduino creamos un nuevo sketch e
importamos los archivos de la siguiente manera:
Sketch --> Add File...
Los archivos que debemos adjuntar al sketch son:
nombreSubsistema.cpp
nombreSubsistema.h
rtwtypes.h
nombreSubsistema_data.cpp
nombreSubsistema_private.h
nombreSubsistema_types.h
Y para finalizar mi configuración probé con el siguiente código, que enciende un led en el
pin 13 del microcontrolador.

#include <stdio.h> /* This ert_main.c example uses printf/fflush */
#include "selectorLed.h" /* Model's header file */
#include "rtwtypes.h"
int y;
void setup() {

// inicializo las funciones del subsistema de Simulink
selectorLed_initialize();
selectorLed_U.In1 = 1; // defino la entrda del subsistema
selectorLed_step();
y = selectorLed_Y.Out1; // capturo la salida del subsistema

// initialize the digital pin as an output:
pinMode(y, OUTPUT);
}
void loop() {
digitalWrite(y, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(y, LOW); // set the LED off
delay(1000); // wait for a second
}
Logré entregar el proyecto a tiempo, no este de encender el led obvio, pero me quedaron
algunas dudas. Por qué la configuración de mi borad no apareció en el listado de la IDE
de Arduino. Y cuando generé código C en Simulink, en el sketch tenía errores de
referencias no definidas, por eso lo hice en C++ y ningún error. Espero resolver estas
dudas en los próximos días.
  • Links de descarga
http://lwp-l.com/pdf16539

Comentarios de: Integración de Simulink coder con Arduino (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad