Autor Tema: Encendido electronico  (Leído 6461 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Encendido electronico
« en: 19 de Septiembre de 2014, 15:05:27 »
Estoy haciendo un encendido electrónico programable con Arduino y con un interface en Visual C++ que es lo que me trae loco.
EN el fondo es simple para un programador en C++ para Windows pero yo deje de programar en C++ en tiempos del MSdos, Es que soy muy viejo.
El programa en C++ es un simple formulario en que se introducen 21 ints y tiene dos teclas, una de enviar del PC al Arduino , la otra de leer los datos del Arduino al PC.
Lo ideal seria hacer también un menú de configuración del puerto serie, al menos la selección de el Com a usar.
Si sabeis de Arduino, que seguro que si, entenderéis que el protocolo de envio/recepción me da igual. Los enteros seguidos de "," o lo que sea.
Es el paquete completo no de uno en uno.
Os subo lo que tengo hecho.....(perdón no se hacer nada mejor, esta hecho en Visual C++ 2010 el gratuito)

este es el enlace a lo que tengo hecho

http://1drv.ms/1qRFrFq

A ver si alguien que sepa de las dos cosas me puede ayudar.
Por cierto es un motor de explosión experimental asi que entenderéis que no es nada estándar, aunque se podría implementar en alguna moto antigua con platinos o cosas asi.
Los datos, para los aficionados a los motores, son el angulo de avance de encendido que corresponderá a las rpm del motor, es decir la curva de avance de encendido.
Mil gracias a quien me pueda ayudar con esto



Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Encendido electronico
« Respuesta #1 en: 19 de Septiembre de 2014, 16:38:59 »
El soft es lo mas simple, lo mas complejo es ajustar el avance con el arduino, realmente para este tipo de proyecto te convendria pasarte a un microcontrolador ya que el arduino quizas se te quede corto.

Si quieres una idea, yo estoy haciendo uno y el soft tiene este aspecto:


El envio al micro es simple, yo lo hago mediante tramas, seria algo asi:

INICIO TRAMA | COMANDO | DATOS

por ejemplo;

0x01|0x01|0x2 0x40

Eso lo lees y lo que haces es detectar que envias 0x01, luego que el comando es 0x01 (por ejemplo escritura de una tabla de encendido), y luego le asignas a la posicion 0x02 de la tabla el valor 0x40.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Encendido electronico
« Respuesta #2 en: 19 de Septiembre de 2014, 16:50:23 »
El motor es experimental y no sube de 1600 rpms. Es mas simple que lo que tu estas haciendo.
De hecho ya esta patentado a nivel mundial y yo ayudo al desarrollo con el encendido y una inyección que vendrá después.
Con 10 valores de curva tengo de sobra y el Arduino me da para eso de sobra con esas rpm.
Lo que no se es como pasar todo del PC al Arduino , toda la tabla de valores rpms/grados
Si me echais una mano en eso....tened en cuenta que el que diseña el motor es un Señor de 75 años, que es un genio de la mecánica pero es un simple usuario de PC que necesita algo muy sencillo.
Una tabla de valores de 21 valores y dos botones , enviar y leer los datos del encendido. Poco mas.
Si me pasas un fuente de una tabla de 25 valores y demás ya me vale.....
Mil gracias

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Encendido electronico
« Respuesta #3 en: 19 de Septiembre de 2014, 18:54:05 »
Lo primero es, lo vas a pasar por rs232 no??

Si es asi, sabes usar el rs232 para comunicarte con arduino??


Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Encendido electronico
« Respuesta #4 en: 20 de Septiembre de 2014, 03:07:10 »
Si claro, el problema para mi es la parte del pc, la comunicacion seria con el arduino por el usb. Lo que no se hacer bien es el programa del pc.
La trama podria ser del pc al arduino algo como esto

200,3,400,4.......
Asi irian los 21 datos, que son todos int
Luego la peticion del pc al arduino seria una simple letra
El pc envia "r"
El arduino le devuelve los 21 enteros y el programa del pc rellena el formulario con ellos....el usuario los cambia si quiere y los reenvia al arduino. Las tramas de pueden ser identican en ambos sentidos de comunicacion

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Encendido electronico
« Respuesta #5 en: 20 de Septiembre de 2014, 08:47:53 »
Yo lo haria de la siguiente manera:
-Al conectar el arduino le da los valores que estan en memoria para asi visualizarlos.
-El usuario modifica el valor que quiere y le da a "escribir" o directamente al darle a intro se autoenvia
-El arduino recibe el valor y la posicion de la tabla y modifica el valor en la tabla

Es decir, sin tener que recibir y enviar todos los datos siempre, tambien olvidate de enviarlo con comas y en modo ascii, envialo como un simple byte o un word en caso de ser superior a 255.

La comunicacion del pc con el arduino realmente no se como va, yo en mi caso he usado ft234xd y dspic33e y en ambos te trae su driver para comunicarte como si fuese un puerto COM. Supongo que en el arduino ocurrira igual. Si estas usando la comunicacion como puerto COM entonces es muy sencillo, te pongo ejemplos simples para que los veas:
Bajate de aqui: http://www.microchip.com/pagehandler/en-us/devtools/mla/home.html
Donde pone: v2014-07-22   Windows   Microchip Libraries for Applications   (en el pie de pagina esta)
Luego instala solo USB y aqui tienes un ejemplo sencillo: C:\microchip\mla\v2014_07_22\apps\usb\device\cdc_basic\utilities\src\vc++2008
Aqui otro: C:\microchip\mla\v2014_07_22\apps\usb\device\cdc_serial_emulator\utilities\src\vc++2008

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Encendido electronico
« Respuesta #6 en: 20 de Septiembre de 2014, 09:34:25 »
Lo miro y ya te digo, muchas gracias

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Encendido electronico
« Respuesta #7 en: 20 de Septiembre de 2014, 13:17:14 »
He mirado lo que me dices, y si desde luego es parecido a lo yo necesito, pero lo entiendo poco.
No se casi nada de Visual C++, por lo que no se como adjudicar un int a cada control de introducción de datos del formulario que hago.
Tampoco como hacerlo como una tabla ya que lo he hecho (lo habras visto si lo miraste) como entradas numéricas independientes, aunque me gustaba mas como tabla de datos tipo Excel o parecido
Una vez que tenga todos los datos en una matriz mandárselos al puerto serie parece mas fácil, pero necesitare elegir el COM correspondiente al Arduino con una selección....o eso supongo.
Y el paso de los datos recibidos a las casillas del selector tampoco se como va.
EN resumen.....mal voy
He programado mucho en C para MSdos hace años, también en C para pics y Arduino, pero el visual....se me escapa.
A ver como hago esto que es simple..... seguiré mirando y aprendiendo
Gracias de nuevo.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Encendido electronico
« Respuesta #8 en: 20 de Septiembre de 2014, 13:38:23 »

Cógete algún fuente que ya esté hecho para VC++, por ejemplo el que da Microchip para su bootloader (AN1388), te puede servir como punto de partida para adecuarlo a tus necesidades. En ese fuente, el programa permite seleccionar una comunicación por puerto Serie, USB o Ethernet, seleccionando el puerto y velocidad de comunicación del COM, el PID y VID para USB, o la IP para TPC/IP.

http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en554836

Yo utilicé ese fuente como partida para crear mi bootloader encriptado, aunque luego le añadí algunas rutinas, modifiqué otras y adecué los datos que pide por pantalla. Si no te convence, seguro que puedes localizar muchos más fuentes de ejemplo en VC++para comunicar por USB o RS232, y modificarlos en vez de partir de cero.


« Última modificación: 20 de Septiembre de 2014, 14:12:28 por planeta9999 »

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Encendido electronico
« Respuesta #9 en: 20 de Septiembre de 2014, 19:26:22 »
Como te dice Planeta, lo mejor es agarrar un ejemplo, un programilla ya funcionando y estudiarlo para saber que cambiar.

Los que trae de ejemplo el framework de Microchip estan muy buenos porque tienen muchos comentarios.

Yo he probado todos los modo de comunicación USB y me he quedado con el HID, creo es el mas simple, pero si dominas el serie, pues ve por ese lado.

Arduino se ha popularizado mucho en este último tiempo, yo creo que si buscas un poco por la red tiene que existir alguien que haya hecho algo como tu proyecto y puede usarlo de referencia.

Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Encendido electronico
« Respuesta #10 en: 21 de Septiembre de 2014, 03:54:57 »
pues como dice el amigo Willynovi, puede buscar en Google algun proyecto basico con visual basis como este http://randomnerdtutorials.com/arduino-control-servo-with-visual-basic/

en Youtube hay un monton de videos tambien
t=33

Saludos