Está en la página 1de 3

MEc Mecatrnica Ecuador Integracin de Simulink coder con Arduino

Un buen da en la universidad me asignaron el desarrollo de un sistema de adquisicin, procesamiento de seales, y control. Un proyecto de 40 horas y tena poco tiempo para entregarlo, mis profesores son de los que creen que el da de trabajo tiene 24 horas, as que solo tena 2 das, y por supuesto bajo presupuesto. El diseo me llev la mayor parte del tiempo y me quedaba muy poco para la implementacin. Me decid por Arduino para el hardware, y la generacin del cdigo C++ del modelo que haba desarrollado en Simulink. Nunca antes haba 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 mquina no apareca mi tarjeta, solo Arduino UNO no apareca en el listado del men Tools --> Board. No se por qu, pero segu las instrucciones de instalacin. Bueno, abr el archivo boards.txt ubicado en /arduino/contents/resourses/java/ hardware/arduino y aument las siguientes lneas de texto (Esto lo hice comparando una instalacin 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.le=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 integracin del cdigo 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 haba seguido algunos webinars de Mathworks referentes al diseo de sistemas embebidos, entonces proceda de la siguiente manera a la conguracin del modelo para la generacin de cdigo: Simulation --> Congiguration Parameters --> Solver Type: Fixed - step Solver: discrete (no continuous states) Fixed - step size: 0.001 Simulation --> Congiguration Parameters --> Code Generation System target le: ert.tlc Language: C++ Check on en la opcin 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 cdigo, 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 nalizar mi conguracin prob con el siguiente cdigo, que enciende un led en el pin 13 del microcontrolador.

#include <stdio.h> #include "selectorLed.h" #include "rtwtypes.h" int y; void setup() {

/* This ert_main.c example uses printf/fush */ /* Model's header le */

// inicializo las funciones del subsistema de Simulink selectorLed_initialize(); selectorLed_U.In1 = 1; // deno 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 conguracin de mi borad no apareci en el listado de la IDE de Arduino. Y cuando gener cdigo C en Simulink, en el sketch tena errores de referencias no denidas, por eso lo hice en C++ y ningn error. Espero resolver estas dudas en los prximos das.

También podría gustarte