Autor Tema: Salida del PORTC aplicada a DAC0808 y amplificada a 25V.  (Leído 2770 veces)

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

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Salida del PORTC aplicada a DAC0808 y amplificada a 25V.
« en: 06 de Noviembre de 2011, 14:31:58 »
Hola a todos. Estoy haciendo una fuente de alimentacion basada en un DAC para obtener salida analogica. Ya logre obtener un voltaje proporcional a 0-5v que luego del amplificador de tension obtengo de 0-25v mi problema va con la parte de la corriente.

Dejo mi programa que posee medidor de tension, medidor de corriente y medidor de temperatura. Porfavor ayudenme con la parte de potencia.

1. ¿como obtengo una corriente maxima de 2A?
2.¿ Un circuito con transistores de potencia?

Código: [Seleccionar]
;FUENTE DIGITAL CONTROLADA POR PIC
;VOLTAJE DE 0 - 24 V
;CORRIENTE DE 0 - 2 A
;RESOLUCION DE TENSION: 100mV
;RESOLUCION DE CORRIENTE: 8mA
;MEMORIAS PREDETERMINADAS: 5V 12V 24V
;DISEÑADO POR HUAMAN HUARCAYA,JOEL

__CONFIG _WDT_OFF&_PWRTE_ON&_HS_OSC&_LVP_OFF&_CP_OFF

LIST P=16F877A
INCLUDE <P16F877A.INC>
INCLUDE <MACROPIC.INC>

CBLOCK 0x20
VOLT,CORRIENTE,tecla1,tecla2,tecla3,tecla4,REG1,
REG2,CIEN,DIEZ,DATO1,DATO2,RESULTADO,CARGANDO,LIMITE1,
CUENTA_L,tecla,TEMPERATURA,
contador1 ;registro usado por retardo
contador2 ;registro usado por retardo
R_VAR1
R_VAR2
R_VAR3
R_VAR4
R_VAR5
ENDC
#DEFINE CORTE PORTA,2
#DEFINE VENTILADOR PORTA,4
#DEFINE LED_VERDE PORTA,5
#DEFINE ON_OFF PORTE,0
#DEFINE BUZZER PORTE,0
#DEFINE BACKLIGHT PORTE,2
ORG 0

; ---------------INICIANDO LCD Y TECLADO--------------------------------------
call INICIO_LCD ;inicia LCD.
call INICIO_TECLADO ;inicia TECLADO.
CURSOR OFF ;apaga el CURSOR.
;------------------CONFIGURANDO PUERTOS---------------------------------------
BANCO 1
MOV ADCON1,B'01000100' ;AN0,AN1,AN3 como analogicos.
MOV TRISA,B'00001011' ;solo son entradas los analogicos.
clrf TRISE ;todo el PORTE como salida.
clrf TRISC ;todo el PORTC como salida.
BANCO  0

REINICIO
clrf PORTE ;limpia el PORTE.
clrf PORTC ;limpia el PORTC.
bsf BACKLIGHT ;enciendo el backlight del LCD.
CLS ;limpia el LCD.
PRINTF MENSAJE1 ;FUENTE DIGITAL
ENTER
PRINTF MENSAJE2 ;BY JOEL HUAMAN
DELAY_S .2
;------------------RECUPERANDO DATOS DE LA EEPROM-----------------------------
movlw 0x00
call LEER_EEPROM
movwf RESULTADO

CLS ;limpia el LCD
PUTC    'V'
PUTC    ':'
MOV DATOC_H,0x00
MOVR DATOC_L,RESULTADO
RUTINA BINTOBCD
RUTINA  BCDTOASC
PUTV ASCII3
PUTV ASCII4
PUTC '.'
PUTV ASCII5
PUTC  '0'
PUTC   ' '
PUTC  ' '
PUTC  ' '
PRINTF MENSAJE3 ;OFF
ENTER
PRINTF MENSAJE4 ;I:0.00 A
;-----------------ESPERANDO Q SE PULSE MENU------------------
INICIO call lee_tecladok
movwf tecla
CJE tecla,0x48,MENU ;pulse MENU
CJE tecla,0x46,CONVERTIDOR ;pulse 2ND
goto INICIO
;-------MENU PARA INTRODUCIR EL VALOR DE VOLTAJE DESEADO-----
MENU CLS
PRINTF MENSAJE6 ;VOLTAJE:
PUTC ' '
PUTC '0'
PUTC '0'
PUTC '.'
PUTC '0'
PUTC '0'
CURSOR ON ;enciende el CURSOR
POSICION IZQ
POSICION IZQ
POSICION IZQ
POSICION IZQ
POSICION IZQ

PRIMERA call lee_tecladok ;CONSULTA EL PRIMER DIGITO
movwf tecla1
CJE tecla1,0X43,PRIMERA ;TECLA BLOQUEADA
CJE tecla1,0X44,PRIMERA ;TECLA BLOQUEADA
CJE tecla1,0X45,PRIMERA ;TECLA BLOQUEADA
CJE tecla1,0X46,PRIMERA ;TECLA BLOQUEADA
CJE tecla1,0X55,PRIMERA ;TECLA BLOQUEADA
CJE tecla1,0x48,PRIMERA ;TECLA BLOQUEADA
movf tecla1,0
andlw 0x0F ;para obtener el nible bajo
movwf tecla1
addlw 0x30 ;se suma 30H para obtener ASSCI
call EnviaCarLCD
SEGUNDA
call lee_tecladok ;CONSULTA EL PRIMER DIGITO
movwf tecla2
CJE tecla2,0X43,CLEAR_1 ;
CJE tecla2,0X44,SEGUNDA ;TECLA BLOQUEADA
CJE tecla2,0X45,SEGUNDA ;TECLA BLOQUEADA
CJE tecla2,0X46,SEGUNDA ;TECLA BLOQUEADA
CJE tecla2,0X55,SEGUNDA ;TECLA BLOQUEADA
CJE tecla2,0x48,SEGUNDA ;TECLA BLOQUEADA
movf tecla2,0
andlw 0x0F ;para obtener el nible bajo
movwf tecla2
addlw 0x30 ;se suma 0x30 para obtener ASSCI
call EnviaCarLCD
POSICION DER

TERCERA
call lee_tecladok ;CONSULTA EL PRIMER DIGITO
movwf tecla3
CJE tecla3,0X43,CLEAR_2 ;
CJE tecla3,0X44,TERCERA ;TECLA BLOQUEADA
CJE tecla3,0X45,TERCERA ;TECLA BLOQUEADA
CJE tecla3,0X46,TERCERA ;TECLA BLOQUEADA
CJE tecla3,0X55,TERCERA ;TECLA BLOQUEADA
CJE tecla3,0x48,TERCERA ;TECLA BLOQUEADA
movf tecla3,0
andlw 0x0F ;para obtener el nible bajo
movwf tecla3
addlw 0x30 ;se suma 0x30 para obtener ASSCI
call EnviaCarLCD

CUARTA
call lee_tecladok ;CONSULTA EL PRIMER DIGITO
movwf tecla4
CJE tecla4,0X43,CLEAR_3 ;TECLA BLOQUEADA
CJE tecla4,0X44,CUARTA ;TECLA BLOQUEADA
CJE tecla4,0X45,CUARTA ;TECLA BLOQUEADA
CJE tecla4,0X46,CUARTA ;TECLA BLOQUEADA
CJE tecla4,0X55,CUARTA ;TECLA BLOQUEADA
CJE tecla4,0x48,CUARTA ;TECLA BLOQUEADA
movf tecla4,0
andlw 0x0F ;para obtener el nible bajo
movwf tecla4
addlw 0x30 ;se suma 0x30 para obtener ASSCI
call EnviaCarLCD
CURSOR OFF
call lee_tecladok ;CONSULTA EL PRIMER DIGITO
movwf tecla
CJE tecla,0X46,SALIDA_ON
CJE tecla,0X43,CLEAR_4
aki goto aki

;----------RUTINA DE CLEAR------------------

CLEAR_1 POSICION IZQ
GOTO PRIMERA
CLEAR_2 POSICION IZQ
POSICION IZQ
GOTO SEGUNDA
CLEAR_3 POSICION IZQ
GOTO TERCERA
CLEAR_4 POSICION IZQ
CURSOR ON
GOTO CUARTA

;--------------------CENTENAS DECENAS Y UNIDADES-----------------------

SALIDA_ON MOV CIEN,.99 ;usado para multiplicar x100
MOV DIEZ,.9 ;usado para multiplicar x10

MOVR REG1,tecla1
REPIT movf tecla1,0
addwf REG1,1
DCJNE CIEN,.0,REPIT

PORDIEZ
MOVR REG2,tecla2
REPIT1 movf tecla2,0
addwf REG2,1
DCJNE DIEZ,.0,REPIT1

SUMANDO
movf REG2,0
addwf REG1,1
movf tecla3,0
addwf REG1,0
movwf RESULTADO
MOVR EE_DATO,RESULTADO ;se salva el resultado.
MOV EE_DIRECCION,0X00
call ESCRIBIR_EEPROM
;--------------------ADC DEL PIC------------------------------------------------------------
CONVERTIDOR

call INICIO_ADC ;configura el convertidor
movf RESULTADO,0 ;RESULTADO --> W
movwf PORTC ;lo muestra por el PORTC.
CLS ;limpia el LCD.
bcf PIR1,ADIF
bsf ADCON0,0 ;enciende el convertidor.
clrf ADRESH ;borrando reg interno del conversor
clrf ADRESL ;borrando reg interno del conversor
PUTC 'V'
PUTC ':'
bcf PIR1,ADIF ;limpia la bandera de termino de conversion
;------------------------MIDIENDO LA TENSION------------------------------------------------
CANAL 0 ;se selecciona el canal 0 MEDIR_TENSION
DELAY_MS .5
call muestra_ADC_8
movwf VOLT
MOV AARGB0,.100
MOVR BARGB0,VOLT
call MUL8X8_U ;multiplica VOLT x100, max 255x100=2550
MOVR DATOC_H,AARGB0
MOVR DATOC_L,AARGB1
call BINTOBCD
call    BCDTOASC
PUTV ASCII1
PUTV ASCII2
PUTC '.'
PUTV ASCII3
PUTV ASCII4
bsf ADCON0,0
DELAY_MS .20
;------------------------MIDIENDO LA TEMPERATURA-----------------------------------------------
CANAL 3 ;se selecciona el canal 3 MEDIR_TEMPERATURA
DELAY_MS .5
PUTC ' '
PUTC 'T'
PUTC ':'
call muestra_ADC_8
movwf TEMPERATURA
MOV AARGB0,.200
MOVR BARGB0,TEMPERATURA
call  MUL8X8_U ;multiplica TEMPERATURA x200 , maximo 255x200=51000
CJGE AARGB0,0x88,ENFRIAR
mostrar_t
MOVR DATOC_H,AARGB0
MOVR DATOC_L,AARGB1
call BINTOBCD
call BCDTOASC
PUTV ASCII1
PUTV ASCII2
PUTC '.'
PUTV ASCII3
PUTV ASCII4
PUTC 'C'
DELAY_MS .20

ENTER
bsf ADCON0,0
DELAY_MS .20
PUTC 'I'
PUTC ':'
;------------------------MIDIENDO LA CORRIENTE------------------------------------------------
CANAL 1 ;se selecciona el canal 1 MEDIR_CORRIENTE
DELAY_MS .5
call muestra_ADC_8
movwf CORRIENTE
MOV AARGB0,.8
MOVR BARGB0,CORRIENTE
call  MUL8X8_U ;multiplica CORRIENTE x8 , maximo 255x8=2040 =07F8h
CJGE AARGB0,0x07,CORTOCIRCUITO ;limita la corriente a 2A.Si es mayor salta a CORTOCIRCUITO
mostrar_i MOVR DATOC_H,AARGB0
MOVR DATOC_L,AARGB1
call BINTOBCD
call BCDTOASC
PUTV ASCII2
PUTC '.'
PUTV ASCII3
PUTV ASCII4
PUTV ASCII5
PUTC 'A'
DELAY_MS .20
GOTO CONVERTIDOR
;----------------SI SUPERA LOS 2AMPERIOS-------------
CORTOCIRCUITO
CJGE AARGB1,0xD0,corto_i
goto mostrar_i
corto_i bsf CORTE
clrf PORTC
CLS
PRINTF MENSAJE13
bsf BUZZER
DELAY_S .1
CLS
bcf BUZZER
DELAY_S .1
goto corto_i
;-----------------SI SUPERA LOS 35 GRADOS------------

ENFRIAR
CJGE AARGB1,0xB8,enfriar_t
bcf VENTILADOR
goto mostrar_t
enfriar_t bsf VENTILADOR
goto mostrar_t



INCLUDE <LCD.ASM>
INCLUDE <KEYPAD_2.ASM>
INCLUDE <mensaje.asm>
INCLUDE <RETARDO.ASM>
INCLUDE <EEPROM.ASM>
INCLUDE <COVERSION.ASM>
INCLUDE <math_877.inc>
INCLUDE <conv_ad.ASM>

ORG 2100H
END


« Última modificación: 06 de Noviembre de 2011, 14:39:14 por frozen »

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Salida del PORTC aplicada a DAC0808 y amplificada a 25V.
« Respuesta #1 en: 06 de Noviembre de 2011, 14:55:44 »
Dejo tambien mi placa de control y su grafica 3D. Espero sus aportes para terminar mi fuente.
SALUDOS.




Desconectado Yoshua

  • PIC16
  • ***
  • Mensajes: 207
Re: Salida del PORTC aplicada a DAC0808 y amplificada a 25V.
« Respuesta #2 en: 06 de Noviembre de 2011, 15:27:10 »

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Salida del PORTC aplicada a DAC0808 y amplificada a 25V.
« Respuesta #3 en: 06 de Noviembre de 2011, 15:33:38 »
fijate en la fuente de valdorre..
http://www.todopic.com.ar/foros/index.php?topic=18804.0


Si ya me fije. La fuente de Valdorre utiliza un PWM para regular la tension yo estioy utlizando un DAC. Y no se como obtener mayor corriente de la que me entrega el operacion lm324n.

Desconectado Yoshua

  • PIC16
  • ***
  • Mensajes: 207
Re: Salida del PORTC aplicada a DAC0808 y amplificada a 25V.
« Respuesta #4 en: 06 de Noviembre de 2011, 17:52:37 »
solo tendrias que usar un par de transistores como se usa en la etapa de potencia de la fuente de valdorre.


 

anything