Autor Tema: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR  (Leído 38803 veces)

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

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Hola amigos Foreros..

Tengo una Bateria de 12 Voltio Marca GigaWatt G68R  12 Voltio 68 Ah 570A que me regalaron, la bateria la puse en mi Auto para probar, todas una semana ,cada dia poniendo haciendo 30 kilometro con ella sin ningun problema, pues ahora quiero poner la original que viene con mi Auto que siempre me va bien y no quiero tirar la otra claro, la quiero dejar en el Sotano de los Cacharros , pero el dia que la necesite seguro que estara descargada, y se me ocurrio la idea de hacer un cargador
automatico que con una carga minima y al bajar sus voltage el cargador se active para cargar, el programa casi lo tengo hecho, pero me gustaria saber la opiniones de Ustedes, el programa es muy simple
Código: [Seleccionar]
    '******************************************
'* Monitor de Bateria para Auto 12 Voltio      *
'* con  ATtiny45                             *
'* 3 Estado con -LEDs para ver sus voltage     *
'***********************************************
$regfile = "attiny45.dat"
$crystal = 8000000
$hwstack = 60
$swstack = 60
$framesize = 60

'configuracion de los Puertos
 Config Portb.0 = Output   ' LED1 < 11.80 V
 Config Portb.1 = Output   ' LED2 >11.8 V..12.5 V
 Config Portb.2 = Output   ' LED3  crgando
 Config Portb.4 = Output  ' Led3 control de carga encendida/apagada
 Portb.0 = 0    'LED1 verde Bateria en estado bajos 11,80 voltio
 Portb.1 = 0    'LED2 amarillo Bateria en estado  12,50 voltio
 Portb.2 = 0    'LED3 rojo Bateria en estado Cargando
 Portb.4 = 0    ' Relais para activar cargador de Bateria
 Dim W As Word
Dim Channel As Byte
Channel = 0
Config Adc = Single , Prescaler = Auto , Reference = Avcc   ' Voltage de referencia externo con Pote
'inicio del Programa
 Do
 Start Adc
 W = Getadc(3)        ' pin3 ADC para Leer el Voltage del Pote
 Stop Adc
 'Voltage bajos 11,80 voltios
If W <= 863 And W < 863 Then      ' si el voltage en menor o igual que  11.80 V (1024 / 14 * 11,80 = 863)
   Portb.0 = 1           '  LED Rojo Encendido indica Bateria baja y salta para cargar
   Portb.1 = 0           ' LED amarillo Apagado
   Portb.2 = 0           '  LED rojo apagado

   Portb.4 = 1           ' Batteria cargando
End If

If W >= 853 And W > 863 Then     ' si el voltage es 12,50 Voltio
Portb.0 = 0         'Led Rojo
Portb.1 = 1         'LED Amaraillo encendido indica cargando
Portb.2 = 0         'LED Verde

Portb.4 = 1        'Reles Activado
End If

 If W >= 863 And W > 950 Then
 Portb.0 = 0
 Portb.1 = 0
 Portb.2 = 1
 Portb.4 = 0                                                'Relay desactivado
 End If
Loop


Pero no encuentro la logica que cuando la Bateria este a 12,50 que debe estar en Su estado , en mi programa me este cargando todos el tiempo,
en el Manual de mantenimiento pone que necesita 14,40, aclaro que esta es una bateria Sellada, el fabricante recomienda en caso de no usarla poner en lugar Fresco y Seco, y claro mi Sotanos lo requiere, tambien dice de comprobar el Voltage cada 6 meses y recargarla si el Voltage es inferior a 12,50 Voltio.
¿Tienen ustedes algunas otras ideas mejor a la mia?
aclaro mi circuito se alimenta con la Bateria y lleva un Reles SSR que desconecta el Cargador de Bateria(el Cargador de Bateria se ajusta la corriente a 14,40 Voltio y es de 2 Amp)
Saludos
« Última modificación: 04 de Marzo de 2015, 15:43:37 por stk500 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #1 en: 04 de Marzo de 2015, 14:25:37 »
Por los ejemplos que vi por internet sobre como usar el ADC esto esta por demas:

Citar
Stop Adc

Y el Start Adc deberia fuera del main, como si fuera una configuracion.

Luego esta parte del codigo se va a ejecutar rapidamente y no lo vas a ver por lo rapido:

Código: [Seleccionar]
'Voltage bajos 11,80 voltios
If W <= 863 And W < 863 Then      ' si el voltage en menor o igual que  11.80 V (1024 / 14 * 11,80 = 863)
   Portb.0 = 1           '  LED Rojo Encendido indica Bateria baja y salta para cargar
   Portb.1 = 0           ' LED amarillo Apagado
   Portb.2 = 0           '  LED rojo apagado

   Portb.4 = 1           ' Batteria cargando
End If

Por lo cual esta por demas. Lo cual te dejan 2 If con las condiciones


Otra de las cosas es que no veo un ciclo de histeresis... Me explico:

El ADC lee 862 y se pone a cargar, lee nuevamente a los pocos milisegundos y lee 864 el cual para y desactiva el rele, nuevamente se descarga la bateria en unos milisegundos y lee 862 y activa. Tu salida estaria oscilando bastante

ahora si fuera algo asi:

Código: [Seleccionar]
If W >= 512 And W > 863 Then   'De 7V a 12.5V la bateria carga
'Cargo
End If
If W>= 950 Then                  ' 13V para de cargar
'Paro de cargar
End iF

Esto hace que tenga un margen desde que se activo hasta que se vuelva a activar nuevamente. ( Supuse que 950 eran unos 13v como para dar uan idea ) Y observar que no hay limite superior, cualquier voltaje superior pararia el cargador.
Tambien introduzco un limite inferior ( no lo calcule ) asi si la bateria esta con 7v podes hacer otra cosa.

Se podria hacer un promedio de varias muestras para que las lecturas no sean muy fluctuantes tambien.



Eso en cuanto a la programacion, la pregunta ahora es: Como carga el cargador ? Por que si le da tensiona a la bateria estarias leyendo el voltaje del cargador. Entonces ahi podrias hacer que cada 1min por ejemplo que desconecte el cargador y vos puedas medir la tension de la bateria.. Tambien segun la tension que tiene seria mas o menos tiempo a esperar hasta que cargue por completo es otra opcion.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #2 en: 04 de Marzo de 2015, 15:42:03 »
Hola Killer, gracias por tu sugerencia,
el programa lo hice algo de prisa y se me escapo despues del DO Start adc siendo asi me funcionaba todos bien, fluctuaciones no me hace por eso dentro del IF hago comparacion de su estado, sin esa comparacion me hace Fluctaciones.
le hice algunos Cambio y me funciona bien.
los estoy probando con una Fuente regulable de 10 a 30 voltio y midiendo con  2 Multimetro, mido la variacion del Voltage de REF y con el otro la variacion de la fuente regulable cuando la regulo.
Mañana la pruebo y te comentare, lo unico que me preocupa es, que cuando la bateria este en 12,50 o 13 Voltio me vuelva a cargar, zmi idea seria poner una Resistencia de 0,22 Ohm 5 Vatio que seria asi
Polo negativo bateria   <<< Resistencia 0,22 Ohm  >>>> y aqui al negativo del circuito , y leo el polo negativo directo de la bateria para asi saber la Carga o su Amperaje..
Tu que opina?


Aqui estan mi nuevos cambios

Código: [Seleccionar]
    '******************************************
'* Monitor de Bateria para Auto 12 Voltio                            *
'* con ATtiny45                                                                 *
'* 3 Estado con -LEDs para ver sus voltage                         *
'***********************************************
$regfile = "attiny45.dat"
$crystal = 8000000
$hwstack = 60
$swstack = 60
$framesize = 60

'configuracion de los Puertos
 Config Portb.0 = Output                                    ' LED1 < 11.80 V
 Config Portb.1 = Output                                    ' LED2 >11.8 V..12.5 V
 Config Portb.2 = Output                                    ' LED3  crgando
 Config Portb.4 = Output                                    ' Led3 control de carga encendida/apagada
 Portb.0 = 0                                                'LED1 verde Bateria en estado bajos 11,80 voltio
 Portb.1 = 0                                                'LED2 amarillo Bateria en estado  12,50 voltio
 Portb.2 = 0                                                'LED3 rojo Bateria en estado Cargando
 Portb.4 = 0                                                ' Relais para activar cargador de Bateria
 Dim W As Word
'Dim Channel As Byte
'Channel = 0
Config Adc = Single , Prescaler = Auto , Reference = Avcc   ' Voltage de referencia externo con Pote
'Programmstart

 Start Adc
 Do
 W = Getadc(3)                                              ' pin3 ADC para Leer el Voltage del Pote
' Stop Adc
 'Voltage bajos 11,80 voltios
If W <= 863 And W < 863 Then                                ' si el voltage en menor o igual que  11.80 V (1024 / 14 * 11,80 = 863)
   Portb.0 = 1                                              '  LED verde Encendido
   Portb.1 = 0                                              '  LED amarillo Apagado
   Portb.2 = 0                                              '  LED rojo apagado

   Portb.4 = 1                                              ' Rele activo Batteria cargando
End If

If W >= 863 And W > 924 Then                                ' if battery voltage is 12.50
Portb.0 = 0                                                 'Led Rojo
Portb.1 = 1                                                 'LED Amaraillo
Portb.2 = 0                                                 'LED Verde

Portb.4 = 1                                                 'Rele activado
End If


 If W <= 924 And W > 950 Then
 Portb.0 = 0
 Portb.1 = 0
 Portb.2 = 1
 Portb.4 = 0                                                'Rele apagado
 End If

 If W > 995 Then                                            'si voltage es 14 voltio

 Portb.0 = 0
 Portb.1 = 0
 Portb.2 = 1                                                'led verde encendido
 Portb.4 = 0                                                'rele desactivado
 End If





Loop  

Un Saludos

« Última modificación: 04 de Marzo de 2015, 15:44:23 por stk500 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #3 en: 04 de Marzo de 2015, 17:58:30 »
Sigo viendo las condiciones mal... Pongo las 4 para que veas:


If W <= 863 And W < 863 Then     -----------     Esta no tiene sentido 2 condiciones con una basta  : If W < 864 Then

If W >= 863 And W > 924 Then      ----------      Mal signo de la segunda condicion dice Mayor e igual a 863 y mayor a 924, es decir de 863 a 1024, lo cual mientras este cargada jamas dejaria de cargar
                                                                     La correcion para que este entre 863 y 924 seria: If W>= 863 And W < 924

If W <= 924 And W > 950 Then        ------------  Esta es rara... entra cuando W tiene un valor de 0 a 924 y de 950 a 1024, es decir cuando esta descargada. La correccion creo que buscas es: If W >= 924 Then


If W > 995 Then                           --------------  Esta de mas esta. Si observas en la de arriba tenias una condicion de 950 a 1024. Que si corregis la de arriba te queda de 924 a 1024, cubriendo esta posibilidad.
                                                                     Ademas observo que el programa no cambia



Código: Visual Basic
  1. '******************************************
  2. '* Monitor de Bateria para Auto 12 Voltio                            *
  3. '* con ATtiny45                                                                 *
  4. '* 3 Estado con -LEDs para ver sus voltage                         *
  5. '***********************************************
  6. $regfile = "attiny45.dat"
  7. $crystal = 8000000
  8. $hwstack = 60
  9. $swstack = 60
  10. $framesize = 60
  11.  
  12. 'configuracion de los Puertos
  13. Config Portb.0 = Output                                    ' LED1 < 11.80 V
  14. Config Portb.1 = Output                                    ' LED2 >11.8 V..12.5 V
  15. Config Portb.2 = Output                                    ' LED3  crgando
  16. Config Portb.4 = Output                                    ' Led3 control de carga encendida/apagada
  17. Portb.0 = 0                                                'LED1 verde Bateria en estado bajos 11,80 voltio
  18. Portb.1 = 0                                                'LED2 amarillo Bateria en estado  12,50 voltio
  19. Portb.2 = 0                                                'LED3 rojo Bateria en estado Cargando
  20. Portb.4 = 0                                                ' Relais para activar cargador de Bateria
  21. Dim W As Word
  22. 'Dim Channel As Byte
  23. 'Channel = 0
  24. Config Adc = Single , Prescaler = Auto , Reference = Avcc   ' Voltage de referencia externo con Pote
  25. 'Programmstart
  26. Start Adc
  27.  
  28.  Do
  29.  W = Getadc(3)                                              ' pin3 ADC para Leer el Voltage del Pote
  30.  
  31.  
  32. 'Voltage bajos 11,80 voltios
  33. If W <= 863 Then                                ' si el voltage en menor o igual que  11.80 V (1024 / 14 * 11,80 = 863)
  34.   Portb.0 = 1                                              '  LED verde Encendido
  35.   Portb.1 = 0                                              '  LED amarillo Apagado
  36.   Portb.2 = 0                                              '  LED rojo apagado
  37.   Portb.4 = 1                                              ' Rele activo Batteria cargando
  38. End If
  39.  
  40. 'Voltaje intermedio de carga
  41.  
  42. If W >= 863 And W < 924 Then                                ' if battery voltage is 12.50
  43. Portb.0 = 0                                                 'Led Rojo
  44. Portb.1 = 1                                                 'LED Amaraillo
  45. Portb.2 = 0                                                 'LED Verde
  46. Portb.4 = 1                                                 'Rele activado
  47. End If
  48.  
  49. 'Voltaje alto, paro de cargar.
  50.  
  51.  If W >= 924 Then
  52.  Portb.0 = 0
  53.  Portb.1 = 0
  54.  Portb.2 = 1
  55.  Portb.4 = 0                                                'Rele apagado
  56. End If
  57.  
  58. Loop

Y la resistencia si la pones en serie te permitiria ver la corriente que circula

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #4 en: 05 de Marzo de 2015, 07:37:01 »
Hola Killer,
por muchas condiciones que ponga  de esa forma no podre controlar el estado de la bateria, conclusion es pensado de usar un Timer con un interrupciones y a ver que pasa, aunque la idea de poner una Resistencia en Serie con la bateria y el cargador no la he probado, voy a intentar cuando tenga tiempo.
osea si me corregiste en las condiciones ante lo tenia como tu la pusiste solo que me palpadeaban los Led y el Reles se encendia y apagaba, por eso lo cambie y a lo loco :P , ya me marea el programita ese  :D.
sequre probando cuando tenga tiempo.
Gracias una vez mas por tu colaboracion.

Saludos

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto Bascom AVR_Solucionado
« Respuesta #5 en: 07 de Abril de 2015, 06:27:06 »
 :-/ :-/ :-/ :-/ :-/

Despues de pasa dias y noche probando mi cargador ,ya encontre la solucion gracias a la Ayuda de un amigo Forero EDC del Foro BascomAVR.
hice prueba descargando la bateria con una lampara de 12 voltio 60 Vatio que me duros muchas hora hasta descargarla y dejarla en 12 voltio sin carga.
le agregue un LCD para asi ver el estado de la bateria y no estar midiendo el voltage ,siendo asi lo tengo montado desde el dia 23 de Marzo, en mi Balcon,vean Fotos.
Aqui os dejo el programa
Código: [Seleccionar]
'$sim
$regfile = "m8def.dat"                                      ' Atmega32
$crystal = 4000000                                          '4Mhz
$hwstack = 40
$swstack = 40
$framesize = 40
'_______________Configuracion del LCD ________________________________
Config Lcdpin = Pin , Rs = Portd.5 , E = Portd.4 , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0
Config Lcd = 16 * 2
Cursor = Off
Cls
'---------------Configuracion del ADC---------------------------------
   Config Adc = Single , Prescaler = Auto , Reference = Avcc
   Start Adc
 Config Portb.0 = Output : Rele Alias Portb.0               'Rele SSR
 Config Portb.1 = Output : Ledamarillo Alias Portb.1        ' bateria baja led intermitente
 Config Portb.2 = Output : Ledrojo Alias Portb.2            'indicador de voltage bajo 12,20 voltio
 Config Portc.0 = Input                                     ' pin para ADC
Dim A As Byte                                               'calculo de 15volt x ADC
Dim Valueadc As Word                                        'Voltage bateria
Dim Voltage As Word                                         'calculo del valor ADC
Dim Displayvolt As String * 5                               'convertir string a decimal
 Dim Status As Byte
   Const X = 0
   Const Cargando = 1
   Const Descargada = 2
'### inicio de Programa ###
Do
  Valueadc = 0
   For A = 1 To 15
    Valueadc = Valueadc + Getadc(0)
   Next A
        Select Case Status
        'despues del inciar
         Case X
               Select Case Valueadc
                  Case 0 To 12000
                    Home : Lcd "No hay bateria  "
                   Case 12226 To 13800
                     Home : Lcd "Cargando... "
                      Status = Cargando
                       Set Rele
                   Case 13801 To 15421
                     Home : Lcd "Bateria cargada"
                       Status = Descargada
                 End Select                                 'fin despues de iniciar
           ' si la bateria esta cargando
          Case Cargando
                Select Case Valueadc
                   Case 0 To 12000

                    Home : Lcd "No hay bateria  "
                     Reset Rele
                      Status = X
                   Case 13801 To 15421
                      Home : Lcd "Bateria llena"
                      Status = Descargada
                       Reset Rele
                   End Select                               'end select when charging
           Case Descargada
                  Select Case Valueadc
                    Case 0 To 12000
                      Home : Lcd "No hay bateria  "
                      Status = X
                    Case 11001 To 12225
                      Home : Lcd "Cargando... "
                      Status = Cargando
                       Set Rele
                   End Select                               'end select when waiting for discharge
           End Select                                       'end select STATUS
   If Valueadc < 12250 Then
   Ledrojo = 1
   Waitms 50
   Ledrojo = 0
   Else
   Ledrojo = 0
   End If
   If Valueadc > 12226 Then
    Ledamarillo = 1
    Else
    Ledamarillo = 0
   End If
    Voltage = Valueadc / 10                                 '100
    Displayvolt = Str(voltage)
    Displayvolt = Format(displayvolt , "00.00")             '" 0.0")
    Lowerline : Lcd Displayvolt ; "V  "
Wait 1
Loop
End
'****Fin de programa
 




Aqui las Fotos






Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #6 en: 07 de Abril de 2015, 06:47:27 »
Bueno al menos funciono, llamame loco, duro de cabeza pero sigo pensando que se necesitaria casi 3 veces menos codigo, realmente no entiendo por que no funcionaba lo otro como querias. , Ingresa switch case para luego preguntar nuevamente por los mismos rangos es casi sin sentido. En el cual la unica diferencia es cuando esperas que cargue la bateria.

Pero bueno si asi funciona, que quede asi, a veces cuando las cosas funcionan las tocas un poco y ya no hay forma de que funcionen de nuevo xD

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #7 en: 07 de Abril de 2015, 07:12:44 »
Hola killer,
los otros codigo claro que funcionan, pero no como es debido, cuando uso la setencia de condiciones.
Quizas tu no me comprendiste y te repito
cuando la bateria esta un tiempo guardada su carga va bajando, eso lo he comprobado osea
que la bateria cuando esta a plena carga el voltage llega a 14, 10 voltio y luego poco a poco va bajando hasta 12,30 voltio mas o menos
 y es aqui donde estuve el primer problema con las condiciones de IF THEN sin que me haga Hysterie. con los codigo de arriba la bateria siempre me carcaba entre 12,30 y 14,40 voltio, con el mi ultimo programa me vuelve a cargar cuando la bateriaa este en 12,20 voltio que estoy haciendo la prueba solo con la carga del circuito de control que consume 0.05 mA o sea 0,065 Mw, llevo ya 2 semana con el cargador, desde que descargue la bateria y volver a cargarla asi la he dejado y estoy esperando que me vuelve a caragar para asi saber cuantos tiempo duras la cargas de 0,05mA.
como puede ver en la Fotos el voltage 12,30 voltio ,es calculado que consume ,eso 0,05mA cada dias, me dio cuenta porque cada dia el voltage desciende en Milivoltio tambien.
hablando de la condiciones If Then,  quizas Tu me pueda convencer dandome un ejemplo y asi lo pruebo :lol:

Saludos



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #8 en: 07 de Abril de 2015, 08:33:28 »
Ahora creo que entiendo un poco mas lo que queres hacer :)

Pero
Antes de hacer el programa, como funciona esto?

Código: [Seleccionar]
                 Select Case Valueadc
                    Case 0 To 12000
                      Home : Lcd "No hay bateria  "
                      Status = X
                    Case 11001 To 12225
                      Home : Lcd "Cargando... "
                      Status = Cargando
                       Set Rele

Si es 11900 por ejemplo. Entra en el primer case y en el segundo no? o entra en ambos ?

Por lo que veo lo unico que cambia es eso...

12000 o menos para el status X o Cargando es igual
13801 o mas para el status X o Cargando es igual

Y por ultimo luego tengo ese codigo, que si sigo las reglas de C solo ejecutaria el primer Case, lo cual termina siendo el simple IF con ninguna "hysteresis", ahora si ambos se ejecutan ahi si tendrias una histeresis. Aunque haria falta uno solo..


EDIT: aca un programa de ejemplo de lo que digo.

Código: Visual Basic
  1. '$sim
  2. $regfile = "m8def.dat"                                      ' Atmega32
  3. $crystal = 4000000                                          '4Mhz
  4. $hwstack = 40
  5. $swstack = 40
  6. $framesize = 40
  7. '_______________Configuracion del LCD ________________________________
  8. Config Lcdpin = Pin , Rs = Portd.5 , E = Portd.4 , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0
  9. Config Lcd = 16 * 2
  10. Cursor = Off
  11. Cls
  12. '---------------Configuracion del ADC---------------------------------
  13.   Config Adc = Single , Prescaler = Auto , Reference = Avcc
  14.    Start Adc
  15.  Config Portb.0 = Output : Rele Alias Portb.0               'Rele SSR
  16. Config Portb.1 = Output : Ledamarillo Alias Portb.1        ' bateria baja led intermitente
  17. Config Portb.2 = Output : Ledrojo Alias Portb.2            'indicador de voltage bajo 12,20 voltio
  18. Config Portc.0 = Input                                     ' pin para ADC
  19. Dim A As Byte                                               'calculo de 15volt x ADC
  20. Dim Valueadc As Word                                        'Voltage bateria
  21. Dim Voltage As Word                                         'calculo del valor ADC
  22. Dim Displayvolt As String * 5                               'convertir string a decimal
  23. Dim Auxiliar As Word
  24.  Dim Status As Byte
  25.    Const X = 0
  26.    Const Cargando = 1
  27.    Const Descargada = 2
  28. '### inicio de Programa ###
  29.  
  30. Auxiliar = 0
  31. Do
  32.   Valueadc = 0
  33.    For A = 1 To 15
  34.     Valueadc = Valueadc + Getadc(0)
  35.    Next A
  36.  
  37.  
  38.         If Valueadc < (12000 - Auxiliar)  Then
  39.              Home : Lcd "No hay bateria  "
  40.              Reset Rele
  41.              Ledrojo = 1
  42.              Waitms 50
  43.              Ledrojo = 0
  44.              Ledamarillo = 0
  45.              Auxiliar = 0
  46.         Else
  47.              Ledamarillo = 1
  48.              If Valueadc > 13801 Then
  49.                      Home : Lcd "Bateria cargada"            ' o llena
  50.                      Reset Rele
  51.                      Auxiliar = 1000
  52.              Else
  53.                      If Valueadc < (13801 - Auxiliar) Then
  54.                              Home : Lcd "Cargando... "
  55.                              Set Rele
  56.                      End If
  57.              End If
  58.         End If
  59.  
  60.  
  61.     Voltage = Valueadc / 10                                 '100
  62.    Displayvolt = Str(voltage)
  63.     Displayvolt = Format(displayvolt , "00.00")             '" 0.0")
  64.    Lowerline : Lcd Displayvolt ; "V  "
  65. Wait 1
  66. Loop
  67. End
  68. '****Fin de programa

Funcionamiento:

Similar a lo tuyo cuando se ejecute ambos Case comentado al comienzo de mi post.
Apenas lo conectas, al comienzo, los rangos son:

x<12000 Sin bateria
12001<x<13800 Cargando
x>13800 Bateria llena

Si se pone a cargar , lo va a seguir haciendo hasta que llene la bateria, es decir cuando llegue a 13801, una ves que se llena por la carga, o si esta llena de comienzo los rangos quedan:

x<11000 Sin bateria
11000<x<13800 Cargando (Pero solo arranca a cargar cuando se cumple  11000<x<12800)
x>13800 Bateria llena

Es decir no va a empezar a cargar hasta que baje a 12800 ( y va a estar cargando y descargando desde 12800 a 13800). Tambien baje el valor de la tension de Sin bateria como en tu programa, ( si es que se ejecuta el 2do case problematico ese ), pero lo veo improbable ya que hay 2 opciones, o se descarga hasta llegar a 12800 y empieza a cargar o si decis que se puede guardar y luego usarlo cuando se necesite, significaria que el circuito no se alimentaria y comenzaria nuevmaente por 12000 como en tu codigo. Si se alimenta desde la misma bateria el PIC, entonces puede ser valido.

Si el codigo de condicion se reemplaza por:

Código: Visual Basic
  1. If Valueadc < 12000 Then
  2.              Home : Lcd "No hay bateria  "
  3.              Reset Rele
  4.              Ledrojo = 1
  5.              Waitms 50
  6.              Ledrojo = 0
  7.              Ledamarillo = 0
  8.              Auxiliar = 0
  9.         Else
  10.              Ledamarillo = 1
  11.              If Valueadc > (13801 - Auxiliar) Then
  12.                      Home : Lcd "Bateria cargada"            ' o llena
  13.                      Reset Rele
  14.                      Auxiliar = 1600
  15.              Else
  16.                      Auxiliar = 0
  17.                      Home : Lcd "Cargando... "
  18.                      Set Rele
  19.              End If
  20.         End If

Funciona igual que el tuyo solo si se ejecuta como en C (es decir si se cumple la condicion del primer case lo hace y sale):

Start:

x<12000 Sin bateria
12001<x<13800 Cargando
x>13800 Bateria llena

Una ves que se llego a bateria llena, indistinto si fue cargandose o si directamente estaba llena pasa a ser:

x<12000 Sin bateria
12001<x<12200 Cargando
x>12200 Bateria llena

Es decir solo cargaria a partir de los 12200, pero no modifico el limite inferior. Una ves que se pone a cargar sigue con el mismo rango que en el comienzo
Este seria el caso aproximado en que solo el primer Case se ejecute (en el programa que tenes vos ).
« Última modificación: 07 de Abril de 2015, 09:54:08 por KILLERJC »

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #9 en: 08 de Abril de 2015, 03:59:30 »
UFF, tengo muchas cosas que contestarte!!!
pero vamos por parte,
la bateria siempre esta conectada con el micro, la fuente de alimentacion es solo para cargar la bateria y queda desactivada cuando termina de cargarla.
la bateria como explique arriba , es para guardarla en mi Sotano todos el tiempo,quizas años,siglo  :D lo que dure.
Código: [Seleccionar]
Select Case Valueadc
                    Case 0 To 12000
                      Home : Lcd "No hay bateria  "
                      Status = X
                    Case 11001 To 12225
                      Home : Lcd "Cargando... "
                      Status = Cargando
                       Set Rele
a mi se me hace complicado de explicartelo.
con decirte que el CASE X es un caso tratado como desconocido para que el micro haga solo esa sentencia y no comience a cargar despues de acabar
de cargarla, y ademas para que no me haga HYSTERIE, no se como se dice esto en Español :?

las otras preguntare te la contestare'  despues de releer tus  mensaje y este fin de semana probare tus programa.

Saludos


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #10 en: 08 de Abril de 2015, 21:11:23 »
exactametne por ese codigo no te pregunto que hace el switch case, se como funciona al menos en C.

Select Case Valueadc
                    Case 0 To 12000
                      Home : Lcd "No hay bateria  "
                      Status = X
                    Case 11001 To 12225
                      Home : Lcd "Cargando... "
                      Status = Cargando
                       Set Rele


Pongo en colores los 2 casos que pueden suceder. Si da que el valor de Valueadc es 11900 ambos casos se cumplen, tanto el azul como el marron, entonces la pregunta era.
Ejecuta azul solo? o
Ejecuta ambos ?


Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #11 en: 09 de Abril de 2015, 02:48:32 »
Ahhh, ahora te comprendo,
pues los dos caso son diferente.
Te explico:
el circuito se alimenta con la bateria y si el ADC no detecta nada , entonce no hay bateria, este es el primer caso,
aunque lo vea asi de raro, eso se puede cambiar a gusto, lo puse asi, porque si pongo otra bateria que este baja me lo indique ,
y como vera aqui
 
Código: [Seleccionar]
If Valueadc < 12250 Then
   Ledrojo = 1
   Waitms 50
   Ledrojo = 0
   Else
   Ledrojo = 0
   End If
   If Valueadc > 12226 Then
    Ledamarillo = 1
    Else
    Ledamarillo = 0
   End If
en la primera Sentencia pongo un LED que me indica o bateria baja de corriente o a pinto de cargar, que seria el LED amarillo
el Segundo valueADC
se entienda que esta cargando la bateria.
al principio me fue dificil de comprenderlo.
porque como te explique arriba con la Sentencia IF THEN al querer configurarlo paraa cuando la bateria este cargada y la bateria comience a bajar a su corriente normal de 12,30 voltio no me vuelva a cargar la bateria, osea que la bateria si esta baja a 12,20 voltio es cuando se activa el RELE SSR.
el circuito me consume 0,05mA, lo he probado cada dia, imaginaste desde el 23 de Marzo hasta 6 de Abril, en ese periode de dia me fue bajando la corriente casi MiliVoltio, hasta que estuvo 2 dia que no baja mas de 12,30 voltio.
ayer le puse una lampara a la bateria de 60 Vatio,(Bateria sola) y la estoy cargando,ahora mismo acabo de ver la corriente y esta a 13,00 voltios, espero que termine su carga y luego la meto al sotano y aqui acaba el jodio projecto  :D :D
muchas gracias Killer por tu gran comentario. aunque voy a probar tu codigo cuando tenga tiempo y ya te comentare´.
Un Saludos
 

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #12 en: 09 de Abril de 2015, 10:51:20 »
Dependiendo del tipo de bateria (gel, agm, ...) tienen distinto valor en carga, aun asi, las normales la carga esta entre 12.5 y 12.7, las de gel y agm el valor en full es 12.7v,  menos de eso es un 80% de carga. Yo probaria a hacer que cargasen sobre los 12.7V, luego dejas unas horas que la bateria repose y entonces vuelves a detectar el voltaje, si baja de X voltios la bateria puede estar en mal estado, una en perfecto estado agm te daria 12.7V, comprobado por mi.

yo tengo un cargador automatico que estudie en su tiempo, te explico el funcionamiento, quizas te sirva para mejorar tu cargador:

-Las pinzas no tienen corriente cuando esta desenchufado, asi al enchufar detecta si esta enchufada en la polaridad correcta, y evita que haga corto si se chocan las pinzas.
-Detecta el voltaje que tiene la bateria, en caso de ser por ejemplo por encima de 12.2V la carga normalmente, en caso de ser menor de este valor (no recuerdo bien si este era su valor), lo que hace es dar unos pulsos de unos 16V (con duty 50% de 1 segundo aproximadamente), con este procedimiento hace que la bateria se desulfate sin sufrir daños, al pegar esos picos hace que los cristales que sulfatan los polos se vayan deshaciendo.
-Despues de este procedimiento vuelve a comprobar el voltaje, si se ha quedado por debajo o igual entonces le pega unos picos mayores (de unos 18-19V).
-Vuelve a comprobar, si consigue hacer que aumente el voltaje entonces la comienza a cargar, en caso contrario da como bateria defectuosa y vuelve a repetir el proceso de desulfatacion pasados unos minutos.
-La carga la empieza a dar en una intensidad determinada (no voltaje) es decir, por ejemplo le aplica 5A constantes, cuando llega a cierto valor de voltaje, baja esa intensidad para dar una carga mas lenta al final.
-Deja la bateria en reposo un tiempo (creo que unas horas) y comprueba su voltaje, si este es correcto te da como bateria cargada, en caso contrario, te da como bateria cargada incompletamente y vuelve a intentar cargarla.
-Si la bateria ha sido cargada correctamente, entonces cada X tiempo (unas horas) le da una pequeña carga para evitar su descarga, esto lo hace para almacenar baterias en largos periodos sin que se auto-descargen.

Espero que esto te de ideas, algo complejo, pero bastante sencillo.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #13 en: 10 de Abril de 2015, 04:22:56 »
Hola Merlinz,
gracias por tu Tutorial,
hasta ahora siempre he hecho cargador de bateria con amplificadores operacional ajustando el limite de carga ,pero cada tipo de bateria como tu dice tiene su historia,
yo no quise hacer un cargador proFI, yo queria hacer algo simple para guardar esa bateria en mi sotano y cuando la necesite poder usarla, si es que funcione en su tiempo, pero te explico mi Odisea con esa bateria que tu vee en las fotos.
Resulta que esa bateria estaba montada en un coche Suzuki que mi amigo habia comprado para sacarle el motor y ya no necesitaba la bateria y me pregunto si la queria, y resulta que despues a mi se me estropeo la bomba de Servo de mi Golf3 y le quite la correa que la hacia girar y claro esa correa hacia girar el Alternador,por falta de tiempo y  porque necesitaba el coche para ir a trabajar.
pues bien esta bateria me ayudo muchos porque estuve casi un mes que iba a trabajar con 2 bateria y sin funcion del alternador, cuando llega al trabajo me ponia a carga la bateria que ya claro estaba casi descargada porque ya con una Ida de viaje (30Kilometro) la bateria no hacia mover el motor de arranque , lo mismo hacia al llegar a casa,sacar la bateria ponerla a cargar y meter la otra cargada, asi dure casi 3 semana y nunca me fallo ninguna de la dos, la ponia a cargar con una fuente de alimentacion regulable de 10 a 18 voltios 6Amp.
Esa bateria no conozco su caracteristica tecnica, lo unico que se que la compañia TESLA  la venden y la he visto en algunos Supermercados Grande,Cuesta casi 59€, en el libro que trae explica que para cargar necesita corriente constante de 14,40 Voltio , en la plegatina pone
CALCIUM TECHNOLOGY FILLED, esto para mi es Chino  :? mi no comprender :5}
llevo ya desde el 22 de Marzo hasta ahora experimentando con ella y probando con el cohe para arrancar y no ha fallado en ninguna de mi prueba.
mi experiencia con alguna bateria que he tenido, cuando la cargaba varias veces ya habia que tirarla aun asi usando cargadores de bateria Automatico.
claro esta que una buena bateria depende de su Quimica y caracteristica tecnica.
Aclaro que mi circuito se alimenta de la bateria y consume 50mA la he medido siempre un monton de veces, el circuito activa el Rele(SSR) la entrada de 230voltio.
el cargador es muy simpre ,transformador de 12 voltio secundario y 2Amp. lleva un Rectificador de 10Amp y un Electrolitico de 3300uf/25voltio. en el puente AC he puesto un condensador de 100nF y claro tambien en la salidaa DC.
En mi prueba he usado una Bombilla de 12 voltio 60 Vatios para descargarla,que algunos casos me duraba casi 4 horas de descargaba, cuando veia que la lampara se encendia en su luz minima y midiendo me llegaba corriente de 10 Voltio y es aqui cuando quitaba la bombilla y ponerla a cargar.ya he hecho 4 prueba porque estuve algo de problema con mi circuito que al estar la bateria completamente descargada no me funcionaba mi circuito,por lo que hice un puente en el Rele para que el circuito se alimente con el caragador y cuando veia que el voltage subia le quitaba el puente y asi iba cargando a travez del circuito.
Hoy es mi ultima prueba, la bateria la tengo cargando cuando termine su carga la bajo al Sotano y asi me quedo a dormir tranquilo.  :P

vaya rollo es  :D
Saludos y muchas gracias por tu comentarios

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Cargador de 12 Voltio para bateria de Auto con attiny45 y Bascom AVR
« Respuesta #14 en: 10 de Abril de 2015, 05:22:24 »
Ahora que me pongo a pensar.... si el circuito se alimenta de la bateria. Por que tener algo que te avise que no tiene bateria ?, Si cuando esto ocurra el circuito no va a estar funcionando xD


 

anything