|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Huguen_aus_Tirol
Páginas: 1 ... 7 8 [9] 10 11 ... 13
201
« en: Martes 10 de Enero de 2006, 22:44 »
Hola! Veo que estan hablando del LM35. Yo implementé un termómetro/termostato con este sensor, y medía temperaturas negativas. Según el fabricante, este sensor nos dá 0V para 0ºC, siempre que el terminal común esté conectado a 0V. Yo conecté entre el terminal común y masa (0V) un diodo (1N4148) polarizado en directo. En criollo, levante la masa en unos 0.7V; es decir que para 0ºC tengo la tensión del polarización del diodo. Se debe ajustar el circuito, pero funciona. También es posible implementar una compenzación automática, para los efectos de la temperatura sobre el diodo que "levanta la masa"  Yo no lo hize, pero es posible... Otra opción es sar el LM335, nos dá 2.73V para 0ºC, con variaciones de 10mV/ºC. Se conecta distinto que el LM35!!!! Sin embargo, Farmada habla del LM75 Nunca lo usé, pero tengo el DS. Creo que solo hay que conectarlo y buscarle la vuelta en el soft!l Veamos que encuentro y les aviso, pero en los próximos días... Saludos a todos
202
« en: Martes 10 de Enero de 2006, 22:28 »
Hola muchachos! Desde hace un tiempo estoy entrando en el lenguaje C. Me simplifica muchas cosas, como por ejemplo el manejo de un LCD, ó trabajar con números reales... Pero en algunos aspectos el asembler tiene sus ventajas. De cualquier manera, creo que debemos empezar con el asembler, y luego pasar al C; esto nos dá más poder sobre el micro  Además, según mi punto de vista, el asembler nos "forma" una manera de pensar que simplifica bastante las cosas con, por ejemplo, el C. Saludos!
203
« en: Lunes 9 de Enero de 2006, 22:30 »
Hola Jaumegs! aquí te adjunto un archivo donde están declarados los registros para el 16F873; no debería haber problemas si lo usas con el 876. Solo tienes que incluirlo en tu .asm Te recomiendo bajar de la página de Microchip el manual del 16F876, te será de gran ayuda. Luego es solo configurar un par de registros... Pruebalo, y nos cuentas. No creo que tengas mayores problemas. Saludos
204
« en: Lunes 9 de Enero de 2006, 00:08 »
Hola! Estoy muy de acuerdo con Lalo_soft! Personalmente, cuando me hace falta un periférico, busco el micro que ya lo tenga implementado. Después es solo configurar algunos registros y, depende el caso, un poco de código. Pero también veo que aquí en el foro la mayoría es gente que se inicia en este mundo, aparentemente muchos estudiantes. Por este motivo no veo mal que hagan experimentos y pruebas, mientras se disponga de tiempo y ganas. Ya se darán cuenta con el tiempo y la experiencia de qué es lo más conveniente... En cuanto a costos, es mejor tener un micro con algún periférico que no usemos (es decir, pagar por un periférico extra) que implementar alguno por soft. Y en lo que respecta al 84, podemos ir olvidandonos de él; es más caro, e incluso está empezando a ser difícil conseguirlo... Conclusión: como dice Lalo_soft, para cualquier proyecto, busquemos el micro que tenga el periférico que necesitemos. Si es para practicar, fines didácticos, o jugar, podemos buscar de hacerlo por soft... pero no nos compliquemos mucho Saludos a todos!
205
« en: Viernes 6 de Enero de 2006, 09:51 »
Hola! Estuve viendo en detalle el programa, y debería hacer parpadear al led; al menos la configuración de los registros y demás está bien... Creo que deberías revisar el hard, y también como configuras los bits de configuración al programar le micro.
Saludos
206
« en: Jueves 5 de Enero de 2006, 23:13 »
Hola! Bueno, vamos por partes, dijo Jack el destripador... En primer lugar, sería bueno que al entrar a la interrupción guardes lo que esté en W y en el registro STATUS. Ya se que de NADA saltas a NADA, pero, y antes de eso? Al salir de la interrupción restableces los valores de W y STATUS (en el DS del 16F876 encontrarás el truquito de hacerlo simplemente) En segundo lugar, al entrar a la interrupción chequea que realmente sea el bit del timer 1 el que genera la interrupción. Ya sé, son costumbres, pero las buenas costumbres no vienen mal Tercero, deberías recargar el timer 1 (TMR1H y TMR1L) no solo al inicio del programa, sino cada vez que se genere una interrupción del timer 1 Cuarto, cuando estés en la dirección NADA, estarás siempre en NADA (perdón, el micro  ) Nunca más, salvo un reset, volverá a la dirección TIEMPO. Prueba y nos cuentas! Saludos
207
« en: Jueves 5 de Enero de 2006, 22:01 »
Hola a todos! Otro problema con los DS! Leo el Data Sheet de este micro, y dice que posee un comparador analógico. Pero en el pin out no figura pin alguno para este periférico; sin embargo en la sección del módulo ECCP, dice que (en modo half ó full bridge) se puede disparar una condición de fault por medio del comparador (entre otras cosas). Tampoco en el DS hay una sección que detalle el modulo del comparador Ya busqué en los "Errata" de Microchip... La pregunta del año: el 18F1320, tiene o no comparador analógico? si sí, que pines corresponden a este módulo? Gracias! Y saludos a todos!
208
« en: Jueves 5 de Enero de 2006, 21:48 »
Hola a todos! Por medio de mi trabajo, y luego de las inundaciones que afectaron a Tirol en Setiembre último, me hice de un panel con un display LCD de 4 líneas, 20 caracteres. El display sobrevivió, pero casi me vuelvo loco para poder utilizar las 4 líneas; me bajé la información que pude de la red, y me cansé de hacer pruebas. Bien, todos los Data Sheet me dicen que uno de los byte de configuración es: 0 0 1 DL N F x x Donde: DL: interfaz de 8/4 bits N: 1/2 líneas F: 5*11/5*8 puntos x: no importa Después de incansables intentos, y justo antes de volverme loco, probé poner los bits "x" a 1, es decir el byte quedó así: 0 0 1 0 1 0 1 1 Y, sorpresa, funcionó! Alguién sabe qué pudo haber sido? Los data sheet están mal? La inundación dejó al LCD chiflado? (descarto esta opción  ) Saludos!
209
« en: Jueves 5 de Enero de 2006, 21:28 »
Hola! Cuentanos más de tu problema con el timer 1, asi te damos una mano. De todas formas, te adelanto que el timer 1 posee dos registros, es decir que hay que tomar algunas precauciones al leerlos. Puedes encontrar buena información en el Data Sheet (sección 6.4.1). Antes de leerlos podrías poner el timer en stop (T1CON,0), y luego no olvides volver a arrancarlo! Cuéntanos más... Saludos!
210
« en: Jueves 5 de Enero de 2006, 14:12 »
Hola! Como les prometí, les dejo información... Lamentablemente no pude extraer los códigos de error y warnings de la documentación. Como el pdf es algo grande, les dejo el link para que lo lean o lo bajen. Es interesante leerlo si se va a programar en asembler Manual MPASM (Microchip)Espero les sea útil... Gracias Jonathan, lo mismo para vos! Y lo mejor en tus estudios! Saludos
211
« en: Jueves 5 de Enero de 2006, 12:52 »
Hola! Y pensar que yo empezé en el mundo de los PIC´s con el 16C54 Tengo algo de experiencia con el 16F876, asi que si puedo ayudarte en algo, con gusto! Saludos!
212
« en: Jueves 5 de Enero de 2006, 02:01 »
Hola Kain589! Estoy de acuerdo en lo que dices! Personalmente, creo que ya el 16F84 está jubilado, y con todos los honores Actualmente consigues micros con más periféricos y mucho más baratos... Pero la idea de crbrs no está mal; aparentemente está experimentando y eso es bueno. Seguramente, después buscará la solución con algún micro que tenga el módulo incorporado; pero entonces la experiencia ya la ha vivido... Y posiblemete le sirva para solucionar algún otro tipo de problema De cualquier manera, estoy muy de acuerdo contigo; y el 16F84 ya está totalmente descartado de mis proyectos: A pesar de ello, sigue siendo el "maestro" de mi experiencia con los PIC´s Un abrazo, y saludos
213
« en: Jueves 5 de Enero de 2006, 01:04 »
Hola! A ver si me explico: * Pongo a 1 el bit de carry * Veo si el pin de entrada es 1 * Si es cero pongo el bit de carry a cero * roto a la derecha una posición el registro de entrada * Espero el tiempo de un bit (ya está desfazado en medio tiempo de bit) * Repito hasta completar 8 veces En tu rutina es algo distinto; te dejo el trabajito de verlo. Con gusto te lo diría exactamente ahora, pero en esos casos pasa el tiempo y uno se olvida... Cuando nos rompemos el coco no nos olvidamos facilmente Creo que el hard está bien. El MAX232 (ó ICL o alguna de sus variantes) solo tiene 4 capacitores. Si estan bien conectados no hay problema; por otro lado, si transmites bien por RS232, deberías recibir bien (en lo que respecta al RS232). Salvo que esté mal la conexión de alguno de los pines, cosa que no creo Saludos
214
« en: Miércoles 4 de Enero de 2006, 21:48 »
Hola! Estuve comparando tu programa con una rutina de recepción que utilizé con un 16F84 y me funcionó. ;********** Rutina de lectura **************** Ndato BTFSC PORTB,1 ;Espera Bit START? GOTO Ndato MOVLW 8 ;Datos de 8 bits MOVWF ldato CLRF dRx ;Borra registro de dato entrante CALL RetaRx ;Retardo para fijar lectura en punto medio ;de cada bit, despues de detectar el START Birx BCF STATUS,C ;Borra carry RRF dRx ;Por defecto el primer bit a "0" BTFSC PORTB,1 ;Es un "0"? BSF dRx,7 ;Es un 1 CALL RetaTx ;Retardo de 104 us. => 9600 baudios DECFSZ ldato ;Ultimo bit? GOTO Birx MOVF dRx,w ;Copia registro del dato entrante en W y MOVWF dTx ;lo transfiere al registro de salida
Está casi todo igual, salvo... A continuación dejo el código de esta rutina que utilizé; fijate, y con unas pocas modificaciones debería funcionar ;------------------------------------------------------------------------------- ; RECEPCION DE UN BYTE ; El byte se detecta por interrupcion, es decir el bit de start. ; RECEIVE_232 BTFSC RXBF ; GOTO NO_232 ; BCF GIE ;inhabilito todas las interrupciones CLRF RXBUF ;borro buffer de recepcion MOVLW .8 ;son 8 bits MOVWF CNT232 ;a contar CALL HALF_BIT;espero medio bit CALL ONE_BIT ;y espero un bit mas LOOP_232RX BCF C ;supongo que llega un 0 BTFSC RX232 ;veo si es asi BSF C ;no, llego un 1 RRF RXBUF,1 ;acomodo bit en el buffer CALL ONE_BIT ;y espero un tiempo de bit DECFSZ CNT232,1;decremento contador de bits GOTO LOOP_232RX;si no llegaron 8 busco siguiente BSF RXBF ;indico buffer lleno NO_232 BCF INTF ; BSF INTE ;habilito interrupcion de puerto serie BSF GIE ;habilito interrupciones en general GOTO IVEND ;y salgo.
Yo utilizé la línea RB0, entonces el bit de start me generaba interrupción y activaba así la recepción. Esta bien leer el bit a la mitad Prueba y nos cuentas! Saludos
215
« en: Miércoles 4 de Enero de 2006, 19:10 »
Hola! Seguro que tiene que ser posible. En la página de Microchip ( www.microchip.com) encontrarás toda la información detallada de lo que es ICSP, y para cada modelo de micro. Aquí va el link: Link a ICSP de MicrochipLa idea es más que interesante, lamentablemente estoy muy flojo en VB. Puedo hacer algún que otro programita, pero nada complejo... así que desde el PIC hasta el conector a la PC puedo ayudarte Saludos y nos cuentas!
216
« en: Martes 3 de Enero de 2006, 23:49 »
Hola muchachos! El warning que dices es normal con MPlab; yo siempre lo tenía, y lo eliminé con la siguiente linea al principio del programa Ahora no recuerdo si el warning tiene el código 302 ó 215... Sí recuerdo que me los daba siempre, y con esta línea lo eliminé. De cualquier manera, el programa te funciona igual. Al final del manual del MPASM (creo  ) hay una tabla o lista con los distintos códigos de error y warnings. Voy a ver de subirlas al foro... Saludos
217
« en: Domingo 1 de Enero de 2006, 08:47 »
Hola crbrs! En los módulos I2C, ya sean maestro o esclavo, la linea SDA es siempre drenador abierto. Si a esta línea no se le conecta una R de pull-up (una resistencia entre SDA y VCC), la comunicación no funciona debidamente. En este caso, todo lo que escribas a la memoria funcionará correctamente, pero cuando quieras leerla, lo más seguro es que solo leas ceros (por eso no recibes el bit de NO ACK) Según el Data Sheet de la 24C02, esta R se aconseja de 10K para bus a 100 KHz o de 2K para 400 KHz. Personalmente, con 10K me funciona muy bien en ambas configuraciones. Saludos, y buen año a todos  !
218
« en: Martes 27 de Diciembre de 2005, 23:21 »
Hola Jaumegs! a ver si podemos ayudar algo.... Todo material que puede conducir la electricidad posee una caracteristica llamada resistividad, digamos "r", que está dada en [ohm*mm2/m]. Por ejemplo, para el cobre es 0,0175 ohm*mm2/m. Es decir que si tenemos un conductor de sección S y longitud L, sabiendo r podemos saber su resistencia. Ejemplo: un alambre de cobre de 1 mm2 de sección y 1 m de largo da una resistencia de 0,0175 ohm. Simple, no? Si tu alambre es de cobre, tienes una R de: (0,0175 * 0,6) / 0,4 (es la sección???) = 0,026 ohm Si lo conectas a tu trafo, tienes: I = V/R = 24V/0,026 ohm = 914 A. Es decir, tienes un buen fusible La resistividad varía de un material a otro, deberías fijarte en algún libro de electrotécnia; suelen tener tablas. Hay materiales especiales para estas cosas, creo que el tungsteno se suele usar para resistencias de potencia; tambien hay combinaciones (aleaciones). Teniendo tu resistencia (alambre) calculas la energía que disiparía con tu trafo; y con este dato puedes calcular cuanto calor obtienes. Lamentablemente en este tema ya no puedo ayudarte mucho, no tengo material a mano; pero consíguete un buen libro de electrotécnia... Bueno, espero no haber confundido; y que esto poco te pueda ayudar en tu problema... Saludos
219
« en: Viernes 9 de Diciembre de 2005, 07:04 »
Hola Andre52! Fijate que en el código que te pasé no utilizo la bandera de interrupción; recuerdo que traté de hacerlo con SSPIF, pero me dio problemas. Luego me funcionó sin utilizar este flag. No te olvides de conectar una R de 10 K entre SDA y VCC, y otra entre SCL y VCC. Bueno, más tarde me fijo más detenidamente tu código y vemos que pasa... Saludos
220
« en: Jueves 8 de Diciembre de 2005, 00:41 »
Hola! No sabía que era tan urgente! Bueno, mañana es feriado (se me había pasado), asi que me hago un tiempito para dejarte algo de código para los MCU que tienen el modulo MSSP. ;****************************************************************************** ; PLACA EXPERIMENTAL CON 16F873 ; ; Autor: Hugo Rodolfo ERHARD ; Fecha: 06/03/05 ; ;****************************************************************************** include "p16f873.h" errorlevel -215, -302 __CONFIG 0x3D31 ; M24C02 equ b'10100000'; ; CBLOCK 0x22 ; VARIABLES DE USO GENERAL CNT ; contador general CNT1 ; contador general COUNT ; COUNT01 ; TMP ; temporal general PTR ; puntero general REG0 REG1 REG2 count tmp_h tmp_l temp I2C_cmd I2C_adr I2C_dat I2C_aux ; _070lim ; ENDC ; #DEFINE STR PORTA,1 ; #DEFINE DAT PORTA,2 ; #DEFINE CLK PORTA,3 ; #DEFINE LED PORTA,4 ; #DEFINE PS PORTA,5 ; ; #DEFINE RSDIS PORTB,1 ; #DEFINE EDIS PORTB,3 ; ; #DEFINE SCL PORTC,4 ; #DEFINE SDA PORTC,3 ; #DEFINE COMEN PORTC,5 ; ; #DEFINE I2CDO I2CSTAT,6; #DEFINE I2CDI I2CSTAT,7; #DEFINE I2CACKF I2CSTAT,5; ; ; ;****************************************************************************** ; ORG 0 _POR goto MAIN ; ; ORG 4 _ISR movwf SAVE_W ; salvo W durante la interrupcion swapf STATUS,W; cargo STATUS en W invirtiendo nibbles movwf SAVE_S ; y salvo clrf STATUS ; para asegurar que este en banco 0 ;; btfsc TMR1IF ; timer 1 ;; goto TMR1_ISR; ;; btfsc RCIF ; USART Rx ;; goto RX485_ISR; _NOISR swapf SAVE_S,W; recupero STATUS invirtiendo nibbles movwf STATUS ; swapf SAVE_W,F; recupero W de esta manera para no afectar swapf SAVE_W,W; los bits de STATUS retfie ; ; ; ;*****************************************************************************; ; SUBRUTINAS VARIAS ; ;*****************************************************************************; ; I2C_IDLE bsf RP0 btfsc SSPRW goto $-1 movfw SSPCON2 andlw 0x1F btfss Z goto $-3 bcf RP0 return ; ; I2C_START bsf RP0 bsf SEN btfsc SEN goto $-1 bcf RP0 return ; ; I2C_WRITE movwf SSPBUF bsf RP0 btfsc SSPRW goto $-1 btfsc ACKSTAT goto $-1 bcf RP0 return ; ; I2C_READ bsf RP0 bsf RCEN btfsc RCEN goto $-1 bcf RP0 movfw SSPBUF return ; ; I2C_RESTART bsf RP0 bsf RSEN btfsc RSEN goto $-1 bcf RP0 return ; ; I2C_NOACK bsf RP0 bsf ACKDAT bsf ACKEN btfsc ACKEN goto $-1 bcf RP0 return ; ; I2C_STOP bsf RP0 bsf PEN btfsc PEN goto $-1 bcf RP0 return ; ; RD24C02 call I2C_IDLE call I2C_START ; movfw I2C_cmd call I2C_WRITE ; movfw I2C_adr call I2C_WRITE ; call I2C_RESTART ; movfw I2C_cmd iorlw 0x01 call I2C_WRITE call I2C_READ movwf I2C_dat ; call I2C_NOACK call I2C_STOP return ; ;******************************************************************* ; ; MAIN bsf RP0 ; banco 1 movlw b'00000001' ; puerto A movwf TRISA ; movlw b'00000000' ; puerto B movwf TRISB ; movlw b'10011001' ; puerto C movwf TRISC ; bcf RP0 ; banco 0 clrf PORTA ; todas las salidas en 0 clrf PORTB ; clrf PORTC ; clrf HOR ; clrf MIN ; clrf SEG ; ; ; Configuro MSSP como i2c maestro ; bsf RP0 ; movlw 0x09 ; velocidad 400 KHz movwf SSPADD ; movlw b'10000000' ; slew rate speed control enabled, niveles segun i2c movwf SSPSTAT ; movlw b'00000000' ; movwf SSPCON2 ; bcf RP0 ; movlw b'00111000' ; i2c habilitado, modo maestro movwf SSPCON ; clrf PIR1 clrf PIR2 ; bsf RP0 ; movlw b'00100001' ; int timer 1 movwf PIE1 ; bcf RP0 movlw b'11000000' ; movwf INTCON ; ; movlw 0xFF movwf I2C_aux clrf I2C_adr clrf I2C_dat ; MAIN_LOOP WAIT1i2c_wr movlw M24C02 movwf I2C_cmd movlw .20 movwf I2C_aux clrf I2C_adr clrf I2C_dat I2C_RLOOP call WR_OUT movlw M24C02 movwf I2C_cmd call RD24C02 ; movlw .1 movwf DSEG WAIT1i2c tstf DSEG bnz WAIT1i2c ; incf I2C_adr,f decfsz I2C_aux,f goto I2C_RLOOP ; movlw .1 movwf DSEG WAIT1S tstf DSEG bnz WAIT1S goto MAIN_LOOP ; end
Quite algunas partes del programa, para que no se vea más complicado. Pero las rutinas y configuración de lo que es I2C está tal como lo usé. Perdón por la falta de comentarios. Con este código puedes leer una 24Cxx. Te aconsejo tener a mano la hoja de datos de los modulos MSSP. Bueno, espero te sirva. Cualquier problema, aqui estoy! Saludos
221
« en: Miércoles 7 de Diciembre de 2005, 06:48 »
Hola! No hay problema, pero tendrás que tenerme un poquito de paciencia, por lo menos hasta el sábado. Estoy con demasiado trabajo, y tengo que buscar el programa para enviartelo. En otra discución veo que quieres implementar el I2C con un 16F877; este micro ya tiene modulo I2C. Asi que te pasaré el programa completo para emular I2C en un 16F84, y las rutinas para configurar este modulo en los micros que ya lo tienen. Pero paciencia  No prometo nada, pero si me da un tiempito en una de esas lo hago antes, pero no es promesa... Saludos
222
« en: Lunes 28 de Noviembre de 2005, 18:43 »
Gracias muchachos! Muy interesantes los links, creo que me sirve. La pregunta ahora es: que tipo de sensor o sonda se usa? Se debe comprar una, o es posible construirla mismo? En los links está el circuito, pero no encontré nada referido al sensor. Disculpen mi ignorancia, pero es que nunca tuve buena "quimica" con la quimica Boni, no me funcionó el link que has pasado Bueno, muchisimas gracias! Saludos
223
« en: Domingo 27 de Noviembre de 2005, 21:36 »
Hola a todos! Alguien tendría el esquemático de algún medidor de pH? No necesariamente tiene que ser con MCU, ya me encargaré de modificarlo... Tampoco tiene que ser muy preciso. Desde ya las gracias a todos! Saludos
224
« en: Domingo 27 de Noviembre de 2005, 21:32 »
Hola Che Karlitos! Fijate, en una de esas te sirve este link... Ultrasonic Range MeterSaludos!
225
« en: Sábado 26 de Noviembre de 2005, 10:21 »
Hola! Lo más bien se puede hacer un medidor ultrasónico con MCU; como dice Jonathan, con 84 basta. Existen en el mercado transductores que operan a 40 KHz bastante económicos. Debes enviar un pulso y esperar a que vuelva. El tiempo en volver, dividido por dos, lo usas para calcular la distancia. En realidad, debes esperar un tiempo, ya que puede ser que nunca vuelva el pulso Lo que deberías tener en cuenta, es en que medio lo vas a usar. La velocidad del sonido se define para el vacio, lo que no varía mucho en el aire; pero sí se ve afectada cuando hay otros gases o particulas en suspención. Una vez tuve que poner a punto un medidor de este tipo para un silo de astillas de madera; fue un desastre  En primer lugar, porque la superficie que se formaba no era plana; cuando se llenaba se formaba un cono hacia arriba, y al vaciarse un cono hacia abajo. Y en segundo lugar, la medida se veía afectada por las particulas de madera que "flotaban" en el aire. Para líquidos, en general y si el líquido no genera gases, no hay problemas ya que la superficie siempre es plana. Si se generan gases, hay factores de correción para el calculo; y si la superficie no está en reposo (agitada, o con "olas") puedes hacer varias mediciones y promediar. Si es un tanque de agua, no debería haber problemas Para líquidos, lo mejor es medir la presión en el fondo del tanque. Con este método se consiguen maravillas, pero no es nada económico... Bueno, espero te sirva. Saludos
Páginas: 1 ... 7 8 [9] 10 11 ... 13
|
|
|