Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
16/07/2014 #2781

Avatar de inspector gadget

saludo expertos, estoy realizando una maqueta de una linea de montaje la cual tiene 5 estaciones con sensores fin de carrera y 5 pulsadores de llamada, la idea es que mediante los pulsadores de llamada, pueda hacer que el carrito se desplaze hasta una de las 5 estaciones a las que se envio y se detenga hasta que reciba otra orden para desplazarse, usare un motor dc con un puenteH para invertir el giro, por lo que tengo señal de avance y retroceso simuladas por 2 leds, no necesito que atienda los llamados con prioridad, simplemente tome el ultimo dato y se desplaze hasta alli, realize todas las combinaciones posibles, exceptuando las que si se encuentra el fin de carrera en la estacion 1, y se pulsa el llamado 1 no atienda ese llamado , si esta en la 2 y se pulsa el llamado 2 no atienda y asi con todas las 5 estaciones, serian 25 combinaciones menos 5 referentes al mismo piso que el llamado. quedan 20, bueno, emplee el condicional if-then, el problema es que no se me ocurre como efectuar la parada en la estacion, ya que si empleo el dato proporcionado por el fin de carrera para parar, lo hace, pero como el fin de carrera queda enclavado hasta recibir una orden para que se desplace, al dar la nueva orden el sistema permanece parado, ya que el fin de carrera dicta que por estar enclavado, el dato es leido como parada y no arranca hasta la siguiente posicion, espero que entiendan la explicacion y me puedan sugerir como hacer que pueda recibir la nueva orden y ejecutarla, osea se desplace, talvez no sea la manera precisa de encarar este programa y me refiero a usar combinaciones, o tal vez deba usar algun otro operador matematico para lograrlo, ojala me puedan ayudar sugiriendome como hacerlo, muchas gracias por su tiempo
18/07/2014 #2782

Avatar de torres.electronico

Nano, buscale la manera de guardarlo en la eeprom externa, y despues vemos como reproducirlo en la frecuencia correspondiente...

Código:
DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50

Adc VAR WORD

D0 VAR Adc.0
D1 VAR Adc.1
D2 VAR Adc.2
D3 VAR Adc.3
D4 VAR Adc.4
D5 VAR Adc.5
D6 VAR Adc.6
D7 VAR Adc.7
D8 VAR Adc.8
D9 VAR Adc.9

TRISA = %11111111
TRISB = %00000000
TRISD = %00000000

ADCON1.7 = 1

Inicio:
 
 ADCIN 0,Adc
 
 PORTD.0 = D0
 PORTD.1 = D1
 PORTD.2 = D2
 PORTD.3 = D3
 PORTD.4 = D4
 PORTD.5 = D5
 PORTD.6 = D6
 PORTD.7 = D7
 PORTB.0 = D8
 PORTB.1 = D9
 
GoTo Inicio
Basicamente lo que hace es reproducir en tiempo real el sonido que entra por el puerto analogico en un formato de 10 bits (algo similar al musiquita del mario bros en las antiguas family games jajaja); A la salida de este ejemplo, se implementa un dac, pero si lo guardas en una eeprom, te doy una mano para sacarlo con un sencillo filtro (resistencia + capacitor). Voy a ver si encuentro una idea que me habia compartido reimy en su momento para guardar y reflotar los valores en la eeprom
19/07/2014 #2783

Avatar de torres.electronico

inspector gadget, basicamente lo que necesitas es la logica del ascensor... hay algo acá:
Curso de programación de PIC en PICBasic Pro
solo te va servir para guiarte en la logica por que no esta terminado
21/07/2014 #2784

Avatar de Nano24

torres.electronico dijo: Ver Mensaje
Nano, buscale la manera de guardarlo en la eeprom externa, y despues vemos como reproducirlo en la frecuencia correspondiente...

Código:
DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50

Adc VAR WORD

D0 VAR Adc.0
D1 VAR Adc.1
D2 VAR Adc.2
D3 VAR Adc.3
D4 VAR Adc.4
D5 VAR Adc.5
D6 VAR Adc.6
D7 VAR Adc.7
D8 VAR Adc.8
D9 VAR Adc.9

TRISA = %11111111
TRISB = %00000000
TRISD = %00000000

ADCON1.7 = 1

Inicio:
 
 ADCIN 0,Adc
 
 PORTD.0 = D0
 PORTD.1 = D1
 PORTD.2 = D2
 PORTD.3 = D3
 PORTD.4 = D4
 PORTD.5 = D5
 PORTD.6 = D6
 PORTD.7 = D7
 PORTB.0 = D8
 PORTB.1 = D9
 
GoTo Inicio
Basicamente lo que hace es reproducir en tiempo real el sonido que entra por el puerto analogico en un formato de 10 bits (algo similar al musiquita del mario bros en las antiguas family games jajaja); A la salida de este ejemplo, se implementa un dac, pero si lo guardas en una eeprom, te doy una mano para sacarlo con un sencillo filtro (resistencia + capacitor). Voy a ver si encuentro una idea que me habia compartido reimy en su momento para guardar y reflotar los valores en la eeprom

Se ve sencillo la manera en que lo has colocado, lo simule en el proteus con una señal de audio y funciona

Hasta ahí llegan mis conocimientos, hasta ahora no he manejado memorias eeprom, necesitaría un programador de este tipo de memorias también.

torres.electronico dijo: Ver Mensaje
inspector gadget, basicamente lo que necesitas es la logica del ascensor... hay algo acá:
Curso de programación de PIC en PICBasic Pro
solo te va servir para guiarte en la logica por que no esta terminado

Aquí te adjunto el programa simulado en proteus, le elimine unas lineas de programación.
Archivos Adjuntos
Tipo de Archivo: rar SONIDO.rar (28,6 KB (Kilobytes), 61 visitas)
22/07/2014 #2785

Avatar de torres.electronico

Hola NANO, no necesitarias un grabador de eeprom, ya que es una ,memoria serial que la grabas y lees con el mismo PIC... Ahora, vi tu circuito, pero tenemos dos problemas...
Una, te falto acondicionar la entrada con un Amp Op... mas uqe nada para no perder picos del espectro del habla Humana o musica o lo que sea... O sea, acondicionamos la señal entrante para que trabaje en tensiones que esten entre 0 y 5 Vcc...
Dos, la salida para pdoer implementarla de esa manera, tendrias que cambiar todo el programa, ya que te faltaria un filtro y despues, tendrias que generar una tabla para poder reproducir el PWM que virtualizaria tu sonido... Tene en cuenta que cada fonema tiene su frecuencia, y si no lo reproducimos escalarmente, seria como escuchar ruidos entrecortados o como leer un libro mencionando cada letra por separado... "HOLA... Hache-O,ELE,A"; Se entiende hasta acá?
Bueno, para reducir el programa, lo que se hace, es implementar un DAC de 10bits conectado a esos 10 puertos de salida... cuando me refiero a DAC, me refiero a un CI similar a este:
(Fuente: http://www.analog.com/en/digital-to-...s/product.html )
Al implementar un Ci similar a este, lo que obtendriamos a la salida del DAC, seria algo similar a esto:



Fijate que se ve bien enmarcada la salida escalar (no necesariamente la señal de salida tiene forma triangular... busque en google una imagen escalar para mostrarte como quedaria, pero en si, es semisinuidal en realidad la señal de salida)...
Ahora, la salida del DAC te va a generar una tension muy pobre, asi que para amplificarla, con la implementacion de un Amp Op mas, tendrias todo practicamente resuelto... Hoy me pongo en campaña y te comparto la idea que me habia comentado en su momento el maestro Reimy...
22/07/2014 #2786


secuencia de luces
Hola amigos necesito que alguien me oriente en que estoy fallando en la programacion de este ejercicio que es de una secuencia de luces como la del auto fantastico, utilizando el puerto Ay B del pic 16f628a en basic, ya que las salidas RA6 y RA7 no quieren activarse.
les adjunto programa, la simulacion y el .hex
Saludos.....
Archivos Adjuntos
Tipo de Archivo: rar foro secuencia.rar (14,0 KB (Kilobytes), 26 visitas)
22/07/2014 #2787
Moderador

Avatar de D@rkbytes

Manrique dijo: Ver Mensaje
Hola amigos necesito que alguien me oriente en que estoy fallando en la programación de este ejercicio que es de una secuencia de luces como la del auto fantástico, utilizando el puerto A y B del pic16f628a en basic, ya que las salidas RA6 y RA7 no quieren activarse.
Es porque te falta agregar la palabra de configuración, si no la pones el compilador establece una por defecto con oscilador a cristal.

Es por eso que los pines RA6 y RA7 al estar configurados para usar oscilador a cristal, no funcionan.
Si no declaras los bits de configuración en tu programa, también lo puedes hacer en tu programador de PIC's, pero es muy importante que siempre uses una palabra de configuración.

Usa esta palabra de configuración y colócala en la cabecera del programa (Hasta arriba del código)

Código:
@ Device INTRC_OSC_NOCLKOUT, WDT_OFF, MCLR_OFF, PWRT_ON, BOD_OFF, LVP_OFF
También es importante que declares la frecuencia de trabajo.
Define OSC 4
Aunque en este caso al usar el oscilador interno que en el PIC16F628A es de 4MHz, el compilador también por defecto establece esta frecuencia.

Suerte.
22/07/2014 #2788

Avatar de torres.electronico

Nano, mirá...aca te subo la simu completa con todos los archivos... En la simulacion, tenes 3 capturas del osciloscopio... fijate que la señal o canal amarillo, es la señal analogica entrante... la del medio convertida y la ultima, la salida del DAC...

En un rato vuelvo con lo que me comento reymi alguna ves para complementar el mensaje y el tema

edit: acá subo parte de lo que alguna ves hablamos con Reimy sobre este proyecto

Reimy dijo:
bueno es una idea.imagina que creamos dos variables para la señal uno esas dos variables son para dividir el dato en dos
y poder grabarlo quedando algo asi

señaluno1.0 = adc.0
señaluno1.1 = adc.1
señaluno1.2 = adc.2
señaluno1.3 = adc.3
señaluno1.4 = adc.4
write 00,señaluno1


señaluno2.0 = adc.5
señaluno2.1 = adc.6
señaluno2.2 = adc.7
señaluno2.3 = adc.8
señaluno2.4 = adc.9
write 00,señaluno2
write 01,señaluno2


y para leerlo casi lo mismo fijate
READ 00,señaluno1
VAL.0 = señaluno1.0
VAL.1 = señaluno1.1
VAL.2 = señaluno1.2
VAL.3 = señaluno1.3
VAL.4 = señaluno1.4


READ 01,señaluno2
VAL.5 = señaluno2.0
VAL.6 = señaluno2.1
VAL.7 = señaluno2.2
VAL.8 = señaluno2.3
VAL.9 = señaluno2.4

y ya alli tendrias todo listo recordando si usas el for next que debes incrementar la variable de direccion de 8 en 8
Imágenes Adjuntas
Tipo de Archivo: png sound_pbp.png (101,4 KB (Kilobytes), 276 visitas)
Archivos Adjuntos
Tipo de Archivo: rar voz_PBP.rar (165,3 KB (Kilobytes), 58 visitas)
22/07/2014 #2789

Avatar de Dario

Exelente torres, ¿asi que con este circuito podes grabar audio en una memoria 24cxx mediante un pic? porque si es asi, seria genial!!! saludosss
22/07/2014 #2790

Avatar de torres.electronico

...hay que parcharlo para que no quede en solo pura chachara jajaja...esa idea que da Reimy es buena, pero hay qeu llevarlo a la practica... Yo calculo que con lo lento que es PBP, no se va poder reproducir asi; Yo creo que habria que guardarlo en la memoria ecxterna, y antes de reproducir, implementar espacios de memoria temporal para almacenar estos registros y recien despues de tener todos esos bits, reproducirlos... Igualmente estamos hablando de..1,5segundos casi 2...
Igualmente, de la idea a la practica hay un largo trecho... hay bastantes cosas por ver, probar etc etc

Edit:
Yo tengo un ejemplo completo en microbasic para trabajar esto mismo con una memoria 24cXXX y sacar el sonido por pwm; Pero no puedo llevar un codigo al otro, ya que trabaja con una variable tipo integer y justamente se me desbordo la memoria de tanto pensar como trabajar el punto flotante jajajaja.



No se si seria desvirtuar el tema, pero si Ricardo quiere y le parece buena idea para modificar, subo todo (archivo para convertir archivo WAV en 8bits para subir a la memoria - codigo de fuente - circuito - pcb) y arrancamos con la re-interpretacion del codigo, que en un 90% es muy similar a PBP
Imágenes Adjuntas
Tipo de Archivo: png var_integer.png (30,3 KB (Kilobytes), 265 visitas)
23/07/2014 #2791

Avatar de Dario

che, estaria bueno hacer algo asi con pic... no por hacerse un reproductor de mp3, sino porque sacar sonido con pic, podria servir para poner voz a un robot por ejemplo, o a un sistema automatizado, alarma etc etc... ya se que hay intgrados especificos para eso, pero en mi caso, no he podido encontrar por ejemplo, ni el ISD1100, que ya tiene como 20 años en el mercado y esto seria un buen reemplazo... saludosss
23/07/2014 #2792

Avatar de papirrin

Dario hay bastantes modulos ya prefabricados e integrados de muy buena calidad y a un precio mas bajo que un pic. no vale la pena perder el tiempo, un PIC no fue diseñado para eso.

como bien dijo torres.electronico que si solo es por aprender y el tiempo y dinero no es limitante, si estaria bueno.
23/07/2014 #2793


D@rkbytes dijo: Ver Mensaje
Es porque te falta agregar la palabra de configuración, si no la pones el compilador establece una por defecto con oscilador a cristal.

Es por eso que los pines RA6 y RA7 al estar configurados para usar oscilador a cristal, no funcionan.
Si no declaras los bits de configuración en tu programa, también lo puedes hacer en tu programador de PIC's, pero es muy importante que siempre uses una palabra de configuración.

Usa esta palabra de configuración y colócala en la cabecera del programa (Hasta arriba del código)

Código:
@ Device INTRC_OSC_NOCLKOUT, WDT_OFF, MCLR_OFF, PWRT_ON, BOD_OFF, LVP_OFF
También es importante que declares la frecuencia de trabajo.
Define OSC 4
Aunque en este caso al usar el oscilador interno que en el PIC16F628A es de 4MHz, el compilador también por defecto establece esta frecuencia.

Suerte.
Gracias por responder D@rkbytes, resulta que ya le habia colocado que utilizara el osc interno y apagado el mclr y el bod y aun asi no trabajan esas 2 salidas, adjunto el ejercicio y tambien otro ejercicio de solamente el puerto A, donde si funcionan esas 2 salidas y no veo diferencia.
Saludos.
Archivos Adjuntos
Tipo de Archivo: rar ejercicio.rar (40,9 KB (Kilobytes), 32 visitas)
23/07/2014 #2794

Avatar de torres.electronico

papirrin dijo: Ver Mensaje
Dario hay bastantes modulos ya prefabricados e integrados de muy buena calidad y a un precio mas bajo que un pic. no vale la pena perder el tiempo, un PIC no fue diseñado para eso.

como bien dijo torres.electronico que si solo es por aprender y el tiempo y dinero no es limitante, si estaria bueno.
Dario, un pic 16FXX y una memoria 24CXXX creoq ue ronda los 40-50 mangos? y el ICD creo que ronda los 280 pesitos... dejá...te paso porprivado las cosas asi achicamos comentaris que no tienen idea sobre el tema
23/07/2014 #2795
Moderador

Avatar de D@rkbytes

Manrique dijo: Ver Mensaje
Gracias por responder D@rkbytes, resulta que ya le había colocado que utilizara el osc interno y apagado el mclr y el bod y aún así no trabajan esas 2 salidas, adjunto el ejercicio y también otro ejercicio de solamente el puerto A, donde si funcionan esas 2 salidas y no veo diferencia.
Saludos.
Si hay diferencia y precisamente es lo que te mencioné anteriormente.
En el programa (Secuencia.pbp) tienes la palabra de configuración para usar oscilador interno, pero no está bien escrita y no permite compilarse.

El archivo Secuencia.hex tiene configuración con oscilador a cristal y así no va a funcionar.
El otro programa (juego de luces puerto A.pbp) también tiene la palabra de configuración para usar oscilador interno, también mal escrita pero el archivo ejecutable juego de luces puerto A.hex si está configurado para trabajar con oscilador interno y es por eso que ese programa si funciona.

Corrige eso porque de otra manera seguirá sin funcionar.
Ya te dije como hacerlo y así es cómo lo debes hacer.
Si quieres poner los bits de la palabra de configuración separados, no importa, pero separa las palabras.

Suerte.
24/07/2014 #2796
Moderador

Avatar de D@rkbytes

torres.electronico dijo: Ver Mensaje
No sé si sería desvirtuar el tema, pero si Ricardo quiere y le parece buena idea para modificar, subo todo (archivo para convertir archivo WAV en 8bits para subir a la memoria - código de fuente - circuito - pcb) y arrancamos con la re-interpretación del código, que en un 90% es muy similar a PBP
No hay ningún problema, aquí de lo que se trata es de aprender y difundir la información.
Si el código será realizado en PICBasic Pro, no hay ningún inconveniente de que sea posteado sobre este tema.

Será parte de los muchos otros ejemplos que han beneficiado a muchas personas y me parece muy bien.

Saludos.
24/07/2014 #2797


D@rkbytes dijo: Ver Mensaje
Si hay diferencia y precisamente es lo que te mencioné anteriormente.
En el programa (Secuencia.pbp) tienes la palabra de configuración para usar oscilador interno, pero no está bien escrita y no permite compilarse.

El archivo Secuencia.hex tiene configuración con oscilador a cristal y así no va a funcionar.
El otro programa (juego de luces puerto A.pbp) también tiene la palabra de configuración para usar oscilador interno, también mal escrita pero el archivo ejecutable juego de luces puerto A.hex si está configurado para trabajar con oscilador interno y es por eso que ese programa si funciona.

Corrige eso porque de otra manera seguirá sin funcionar.
Ya te dije como hacerlo y así es cómo lo debes hacer.
Si quieres poner los bits de la palabra de configuración separados, no importa, pero separa las palabras.

Suerte.
Que tal D@rkbytes, resulta que sigue igual yo he colocado los bits separados de las palabras y a la hora de compilar me genera errores en el pic basic pro 2.5, cuando lo escribo pegado como esta en mi ejemplo si me deja compilar pero las salidas RA6 y 7 no se activan, esto sucede en proteus, ya cuando cargo el .hex en el programador en los fuses escojo osc_RC INT y en la protoboard si funciona bien, encendiendo eso 2 puertos.
Gracias.
Saludos.
24/07/2014 #2798

Avatar de torres.electronico

D@rkbytes dijo: Ver Mensaje
No hay ningún problema, aquí de lo que se trata es de aprender y difundir la información.
Si el código será realizado en PICBasic Pro, no hay ningún inconveniente de que sea posteado sobre este tema.

Será parte de los muchos otros ejemplos que han beneficiado a muchas personas y me parece muy bien.

Saludos.
Excelente!!! bueno, acá esta el archivo... Yo arranque algo y ahora estoy buscando las librerias para entender un poquito mas el programa que esta en microbasic... Lei un poquito dos pdf sobre este lenguaje y no lo vi muy dificil; Mas para lo que ami me importa (traducir de Mbasic a PBP).
En la simulacion de proteus, tengan en cuenta que para cargar el archivo en la memoria, no los va dejar... no cambien el formato del archivo "PIC"... solo coloquen las dos priemeras letras del archivo y aparecera magicamente para seleccionarlo.
en el protoboard, se defiende un poco mejor que en proteus jajajajaja... Bueno, veamos que se puede hacer en conjunto... Ahi encontre mas ejemplos VIEJISIMOS de gente que implemento basic para reproducir archivos WAV... se ve que nunca habia implementado algunos tag y ahora aparecen como magia, en fin... Arranquemos con una interpretacion, y luego lo traducimos al PBP...saludos
Archivos Adjuntos
Tipo de Archivo: rar reproductor_16F88_sonido.rar (365,7 KB (Kilobytes), 47 visitas)
25/07/2014 #2799
Moderador

Avatar de D@rkbytes

Manrique dijo: Ver Mensaje
¿Qué tal D@rkbytes? Resulta que sigue igual, yo he colocado los bits separados de las palabras y a la hora de compilar me genera errores en el pic basic pro 2.5
Sip, debes actualizar la versión de PBP que estás usando, esa ya tiene mucho tiempo y han habido algunas mejoras con versiones más recientes.

En este momento ya se está usando la la versión 3.xx con MicroCode Studio 5.xx
Me parece que la más actual que se produjo para PBP 2.xx fue la 2.60C

Actualízate a esa versión para que puedas compilar tus programas sin problemas.

Suerte.
29/07/2014 #2800


tablero de futbol
hola gente estoy usando un circuito que pastearon y estoy tratando de adaptarlo para realizar dos cuantas independientes con un solo pic 16f628a para un marcador deportivo y no encuentro la falla. La verdad que la función ShiftOut no la conozco bien pero seria para especificar el clock (scl) y dato (sda). en fin seguiré intentando dejo la simulación en proteus y el pbp.uno de los contadores anda bien pero el otro no,y allí es donde nose cual es mi error, espero alguien lo encuentre antes que yo bien lo tenga todo funcionando lo subo. gracias
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.