Lectura de RPM del tacómetro de infrarrojos basados en Arduino con GUI de MATLAB (2 / 3 paso)

Paso 2: Escriba el código de

CÓDIGO DE ARDUINO

El código de arduino es básicamente la misma que usted puede encontrar aquí: sino porque aquí yo solo quiero mostrar las rpm de valor (no el valor de rps y el texto "rps" y "rpm") así que he editado algunas líneas (los que tienen Serial.print(), porque anteriormente el programa fue diseñado para presentar la lectura en el monitor serial estilo Bloc de notas pero ahora solo nos falta el rpm el valor para alimentar en la cadena de texto estático). OK, para hacerlo rápido y fácil para copiar el código, puede comprobar por usted mismo para la comparación con el código anterior. Recuerde que el propósito principal del código de arduino es sólo pasar un valor a comm serial, por lo que este programa es solo como ejemplo, si usted tiene su propio programa que imprime el valor de cualquier sensor a serial y luego ignorar esto, vaya por delante que el código MATLAB.

 int sensorvalue;<br>int state1 = HIGH; int state2; float rps; float rpm; long prevMillis = 0; long interval = 100; long currentTime; long prevTime = 1; long diffTime; int sensorthreshold = 30; // this value indicates the limit reading between dark and light, // it has to be tested as it may change acording on the // distance the leds are placed. // to see what number is good, check the sensorvalue variable value // as printed out in the serial monitor</p><p>void setup() { Serial.begin(9600); pinMode(13,OUTPUT); // assign pin 13 led as indicator because we cannot se the IR light } void loop() { sensorvalue = analogRead(0); // read from pin 0 if(sensorvalue < sensorthreshold) state1 = HIGH; else state1 = LOW; digitalWrite(13,state1); // as iR light is invisible for us, the led on pin 13 // indicate the state of the circuit. if(state2!=state1){ //counts when the state change, thats from (dark to light) or //from (light to dark), remember that IR light is invisible for us. if (state2>state1){ currentTime = micros(); // Get the arduino time in microseconds diffTime = currentTime - prevTime; // calculate the time difference from the last sensors meet-up rps = 1000000/diffTime; // calculate how many rev per second - good to know rpm = 60000000/diffTime; // calculate how many rev per minute unsigned long currentMillis = millis(); // print to serial at every interval - defined at the variables declaration if(currentMillis - prevMillis > interval){ // see if now already an interval long prevMillis = currentMillis; Serial.println(rpm); // this line is edited from the code in the prev instructable } prevTime = currentTime; } state2 = state1; } /* only for testing to determine the sensorthreshold value delay(500); Serial.println(sensorvalue); */ } 

CÓDIGO MATLAB

En la ventana de diseño de diseño de GUI de MATLAB, haga clic en ver - Editor (o buscar en la barra de herramientas un cuadro de papel y lápiz sin mano). Se abrirá una ventana del editor con algunos códigos escritos ya, MATLAB les escribió para usted no hay problema. Sólo escriba la función de devolución de llamada para el botón de alternar, que el resto del código puede ser tocado. En mi caso, llama mi botón OnOffToggle, así la función en que escribí el código es función OnOffToggle_Callback (true, eventdata, asas).

Los datos enviados a través de la serie se recuperan aquí como una variable rpmdata, por lo que sólo deseamos imprimir los datos de rpm a la pantalla, eso es todo. Una cosa más, comprobar que se conecta tu arduino al puerto COM correcto como se escribe en el código. En este código escribí COM3 porque conecté mi arduino a COM3.

Guarde su archivo de m.

Abajo está el código completo (modificar sólo la función de OnOffToggle_Callback):

 function varargout = gui(varargin) % GUI MATLAB code for gui.fig % GUI, by itself, creates a new GUI or raises the existing % singleton*. % % H = GUI returns the handle to a new GUI or the handle to % the existing singleton*. % % GUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GUI.M with the given input arguments. % % GUI('Property','Value',...) creates a new GUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before gui_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to gui_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help gui % Last Modified by GUIDE v2.5 14-Mar-2015 01:06:09</p><p>% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', ... 'gui_OutputFcn', ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before gui is made visible. function gui_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to gui (see VARARGIN) % Choose default command line output for gui handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes gui wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = gui_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; function currentEdit_Callback(hObject, eventdata, handles) function currentEdit_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function OnOffToggle_Callback(hObject, eventdata, handles) button_state = get(hObject,'Value'); if button_state == get(hObject,'Max') set(handles.OnOffToggle,'String','Stop'); drawnow; i=2; while i > 1 rpmdata = serial('COM3','BaudRate',9600); % this Baud rate should be the same as that in Arduino code fclose(instrfindall); fopen(rpmdata); b = fscanf(rpmdata); set(handles.textCurrent,'String',b); drawnow; delete(rpmdata) if get(hObject,'Value') == get(hObject,'Min') break end end set(handles.OnOffToggle,'String','Start'); drawnow; rpmdata = serial('COM3','BaudRate',9600); fclose(rpmdata); end 

Artículos Relacionados

Limpie y lubrique un Cable del tacómetro

Limpie y lubrique un Cable del tacómetro

En este video instructivo, intentar fijar una aguja de tacómetro que despide por limpiar y lubricar el cable del tacómetro en mi motocicleta Honda Nighthawk CB450SC. El tacómetro rebote tanto ocioso y en velocidad.Herramientas:Herramientas y piezas S
Paso a paso de 28BYJ-48 sistema de Control de Motor basado en Arduino con la viruta del ULN2003

Paso a paso de 28BYJ-48 sistema de Control de Motor basado en Arduino con la viruta del ULN2003

ICStation Equipo introducir este sistema de control de motor paso a paso basado en ICStation UNO compatible con Arduino. Utiliza chip ULN2003 para coche. El voltaje de funcionamiento es DC5V. Es ampliamente utilizado en el cajero automático, impresor
Sistema de RADAR basado en Arduino con reconocimiento del meta

Sistema de RADAR basado en Arduino con reconocimiento del meta

RADAR es un sistema de detección de objetos que utiliza ondas de radio para determinar la variedad, altitud, dirección o velocidad de objetos. Sistemas de radar vienen en una variedad de tamaños y tienen especificaciones diferentes. Algunos sistemas
Medida de RPM - tacómetro óptico

Medida de RPM - tacómetro óptico

Este Instructable le mostrará cómo hacer un Tacómetro óptico Digital portátil usando un Arduino Uno.En vez de un sensor de ranurado, tiene un sensor de reflexión. Por lo tanto:1. usted no tiene que preocuparse por el espesor del rotor2. el número de
Tacómetro RPM Digital DIY | Contador RPM con Arduino

Tacómetro RPM Digital DIY | Contador RPM con Arduino

Hola amigos, escribo este artículo para compartir mi último proyecto DIY RPM tacómetro o se pueden decir cuentarrevoluciones. Al crear un proyecto muchas veces tenemos que controlar la velocidad del motor y necesitamos tacómetro RPM que puede contar
Tacómetro óptico basado en Arduino

Tacómetro óptico basado en Arduino

hace más de diez años puse una página web con instrucciones detalladas sobre la construcción de un motor eléctrico simple basado en una de serie de TV mundo de Beakman. Llamó la página "Motor de eléctrico de Beakman" y durante los años que ha te
Instalar tacómetro de microTach instrumentos Speedway en motocicleta Harley-Davidson más adelante 2004

Instalar tacómetro de microTach instrumentos Speedway en motocicleta Harley-Davidson más adelante 2004

este instructable describe cómo instalar el Speedway instrumentos microTach + tacómetro TM en cualquier motocicleta Harley-Davidson 2004 o posterior. Para estas motos modelo se utiliza la versión digital de la microTach + tacómetro TM. Funciona exclu
Cómo abrir una Honda CB/CX/GL estilo tacómetro y velocímetro

Cómo abrir una Honda CB/CX/GL estilo tacómetro y velocímetro

un día mientras mi 1981 Honda GL500 tuve la fortuna de miss de tener los tornillos que sostienen la esfera de mi hilo de un tacómetro después de 29 años de la vibración y el rostro giren alrededor libremente dentro de la caja. Lamentablemente el caso
Tacómetro infrarrojo utilizando Arduino

Tacómetro infrarrojo utilizando Arduino

Hola, este es sólo otro tacómetro como puedes encontrar muchos tutoriales por ahí. Hay diferentes enfoques en la medición de rpm, lo que utilizo se basa en método de analogRead como escrito en playground de arduino aprendizaje página (http://playgrou
Calidad Pro recolección devanadera - 3000 + RPM recogida con tacómetro, contador y autostop

Calidad Pro recolección devanadera - 3000 + RPM recogida con tacómetro, contador y autostop

¿Por qué construir este enrollador?Rendimiento vs de los costos para empezar. Características para el otro. ¿Quiere hacer su decisión sobre el borde? Usted puede construir esta devanadera para $158,00 y tienen un montón de máquinas de muy poca invers
LinkIT Portable un tacómetro sin contacto

LinkIT Portable un tacómetro sin contacto

Uso de tacómetro en nuestra industria. Así como hacer un tacómetro para ver en casa con los recursos disponibles.Paso 1: Materails necesaria 1) Linkit una tabla con la batería.2) infra rojo LED y diodo de la foto - 1no.3) 16 x 2 pantalla de LCD Seria
Tacómetro

Tacómetro

Mi proyecto es un tacómetro controlado por microcontrolador MSP430, estoy documentando mi proceso porque al diseñar este tacómetro aprecié todos los recursos de la interfaz del msp430 y LCD 16 x 2 que pude encontrar.Paso 1: Descripción Un tacómetro e
Tacómetro automotriz en un motor fuera de borda

Tacómetro automotriz en un motor fuera de borda

probablemente presionado en este link que me diga que no se puede hacer.Digo que puede, y posiblemente usted ahorrará $50No quiero tener que pedir un tach para mi motor, un 1973 65hp 3cylinder Evinrude.Paso 1: Averiguar cuántos polos o pulsos que mot
Tacómetro de tarjeta de sonido

Tacómetro de tarjeta de sonido

Esta había diseñado como un sustituto de un tacómetro láser sin contacto.Utiliza un par emisor/detector de IR montado en una varilla de mano.La señal resultante se envía a la entrada de micrófono de la computadora y la forma de onda con un osciloscop