-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO.txt
236 lines (187 loc) · 10.5 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
IMPLEMENTACIÓN DE UN DAC (BluePill no cuenta con DAC)
-----------------------------------------------------
Generar una salida PWM + filtro pasa bajos. Tener en cuenta la frecuencia
del PWM y la frecuencia de corte del filtro para la tasa de bits máxima del
PWM en nuestra placa BluePill. A su vez la salida este MCU tiene una salida
lógica de 3.3V, por lo que el filtro deberá tener una ganancia, dependiendo
de la Vgs Threshold del mosfet
SOLUCIÓN IMPLEMENTADA:
Se utiliza un Filtro Activo tipo Bessel de 2do Orden con una
ganancia de 1.51
http://sim.okawa-denshi.jp/en/OPseikiLowkeisan.htm
Manejo de un LCD [ HECHO ]
-------------------------
Se usara un lcd de un Nokia 3310
Control de el mosfet que activa el Cooler Fan, driving
-----------------------------------------------------
Como la salida lógica del STM32 es 3.3V, tendría que cambiar este IRF540N
por un 2N7002, por ejemplo. Revisar cuanto consume el cooler!!!
SOLUCIÓN IMPLEMENTADA:
Se implementa un driver simple mediante un transistor NPN
https://www.laboratoriogluon.com/controlar-mosfets-de-potencia-irfz44n-con-3-3v/
Sensores de Tensión de la Batería
---------------------------------
Se utiliza un divisor resistivo
SOLUCIÓN IMPLEMENTADA:
Para calcularla see toma el valor de la tensión a
1V y luego para calcular la V se utiliza la
relación:
V = ADC_V_ACTUAL / ADC_1V
Sensor de corriente ASC712
--------------------------
La tensión de salida (Vout) del ACS712-05B se puede calcular utilizando la
siguiente fórmula:
Vout = Vcc/2 + (Sensibilidad x Corriente)
donde Vcc es la tensión de alimentación del sensor (que es de 5V en este caso),
Sensibilidad es la sensibilidad del sensor (que es de 0,185 V/A para el ACS712-05B) y
Corriente es la corriente que se está midiendo.
Si asumimos que la tensión de alimentación es de 5V, la fórmula se convierte en:
Vout = 2,5V + (0,185V/A x Corriente)
Para una corriente de 5A, la tensión de salida sería:
Vout = 2,5V + (0,185V/A x 5A)
Vout = 2,5V + 0,925V
Vout = 3,425V
SOLUCIÓN IMPLEMENTADA:
Se toma el valor de la corriente a 0A y luego como
referencia, la de 1A. Luego para calcular la I se
utiliza la relación:
I = (ADC_I_ACTUAL-ADC_0A) / (ADC_1A-ADC_0A)
Sensor de Temperatura LM35
--------------------------
Rango de salida: de 0 a 1.5V máximo, en la configuración básica (2 a 150ºC)
NO haría falta un convertidor de niveles 3.3 a 5V
http://www.ocfreaks.com/interfacing-lm35-sensor-lpc2148/
Interrupciones del PWM cuando se usa tone()
-------------------------------------------
Al invocar la función tone() de Arduino y mientras se tiene activa otra
salida PWM, se observa que se produce una interrupción en la salida de
dicho pin.
SOLUCIÓN:
Se implemento una función tone() personalizada, utilizando el TIM2,
canal 2, perteneciente al gpio PA1
Interfaz
--------
Estando apagado(a la espera)
Mostrar la corriente de Carga deseada
Estando encendido
* Mostrar de alguna manera (por presión larga del botón, por ejemplo),
la corriente de salida seleccionada
* Posibilidad de modificar dicha corriente de salida
SOLUCIÓN IMPLEMENTADA:
Al girar el Encoder, se modificara
automáticamente el nuevo Setpoint. No hace
falta presionar el botón. Por ahora :|
EEPROM
------
Guardar el ultimo valor de corriente utilizado. De este modo en la próxima
encendida ya podemos recuperarlo fácilmente.
Se utilizará la implementación de Arduino, EEPROM.h
Salida PWM múltiple para el control de dos mosfet
-------------------------------------------------
La idea es poder extender el rango de corriente de salida, pero por la
utilización de dos MOSFET de modo que la corriente quede divida y por lo
tanto cada uno calentara menos
SOLUCIÓN IMPLEMENTADA:
Se utiliza dutycyle fijo en el segundo MOSFET, a la
mitad del setpoint.
ampereSetpoint = dutyCycleToAmpere(dutyCycle);
Output2 = ampereToDutycycle(ampereSetpoint/2, MOSFET2);
Ver estado de la Tensión de Entrada
-----------------------------------
Esto es para no arrancar el PID si todavía no se conecto la BATERÍA/FUENTE
Si el PID se sigue calculando en ausencia de Tensión, cuando conectamos la
batería, la carga consume el máximo ya que estuvo intentando subirla,
máximo PID.
Pulsación larga para reiniciar parámetros
-----------------------------------------
Una pulsación larga me reinicia los contadores de Tiempo, Wh y mAh
Alarmas por caída en la fuente a testear
----------------------------------------
Indicar si la fuente cae demasiado, por debajo de un 15% por ejemplo, en su
tensión de salida. Esto para indicar la calidad y si cumple con los
parámetros de salida indicadas.
dutyCycle a Amperes
-------------------
Cuando se setea el nuevo setpoint por medio del encoder, la conversion
debería ser en función del ACS712?????
selecciono corriente -> convierto a ADC -> convierto a dutyCycle
Agregar Modos de funcionamiento
-------------------------------
Por ejemplo:
Corriente constante por un determinado Tiempo
Watts constantes
Medición de mAh de una batería
Reacción frente a pulsos de corriente, para ver si cae la Vin
En Modo Potencia constate, que debería hacer?:
* Configurar el *encoder* para tener nuevo rango de limites
Si considero que voy a medir un máximo de 100W y con una resolución
de 0.1W, por ejemplo, entonces mis limites serian de 0 a 1000.
* Modificar la variables de control dependiendo del tipo de MODO
seleccionado.
Ahora el Input seria la tensión y corriente (potencia) leídas en cada
ciclo. A su vez el Setpoint sera la Potencia deseada. En tanto el
Output seguirá siendo dutyCycle ya que es el único parámetro que se
puede controlar para controlar la corriente.
Tener en cuenta que en este caso variaran tanto la tensión como la
la corriente al mismo tiempo(en el mejor de los casos solo variara
uno, dependiendo del tipo de fuente). Por lo que el Setpoint deberá
ajustarse continuamente ya que solo podemos controla la corriente.
* Modo Inteligente (Prueba de carga)
Con este modo se intentaría comprobar el valor de corriente máxima
entregada por una fuente.
En dicho modo se debería ir subiendo, desde 0 por ejemplo, la
corriente hasta que veamos que la fuente cae por debajo de un 10/15%
de su valor nominal
Formas en que se muestra la Corriente [HECHO]
-------------------------------------
Para corriente menor a 1A, 1000mA, se debería mostrar otra escala
por ejemplo: en lugar de mostrar 0.15A se debería mostrar 150mA
Notificación cuando se conecta/desconecta la fuente/batería estando Menu activo
-------------------------------------------------------------------------------
Resulta molesto la notificación de "No battery" cuando se ingresa a la
configuración.
En caso de ingresar al Menu, debería inhabilitarse las notificaciones hasta
que se sale de dicho Menu.
Solo voy a mostrar la notificación de Batería desconectada, cuando no
este dentro del Menu
Limite inferior, V min, de descarga
-----------------------------------
El limite inferior de descarga es para no dañar las baterías, ya que si
bajan por debajo de 2.7V, por ejemplo, podrían dañarse.
También si se quiere poner otro limite seguro de caída tensión, en fuentes
o baterías.
Al iniciar, girando el Encoder seleccionamos para setear la V min o la
Corriente de Carga. Para configurar el parámetro deseado hacemos un
click, corto, movemos el encoder para setear el valor y por ultimo
hacemos otro click corto para volver a la selección de configuración.
Una vez seteado los dos parámetros o solo el deseado, hacemos un click
Largo para continuar y arrancar el proceso.
En caso de NO querer modificar ninguno de los parámetros en el arranque,
solo basta con hacer un Click Largo y ya podemos iniciar el proceso
normalmente.
Si quisiéramos modificar la V min cuando el proceso ya esta en
funcionamiento, solo debemos entrar al Menu, con Doble click, y ahi
vamos a "Configurar" y seleccionamos "V mínimo" para modificarlo.
Al iniciar, ya configurado los parámetros iniciales, o no, y estando el
proceso apagado, se mostrara los limites configurados de Tensión y
Corriente en colores invertidos.
Interfaz simplificada [NO IMPLEMENTADA]
---------------------
La idea es hacerla lo mas simple posible, que para activar la Carga, la
idea es que la misma tenga la menor cantidad de pasos. Por ejemplo:
Arranca y muestra la Corriente en negrita, signo de que ese parámetro
se puede modificar. Caso contrario, girando hacia la derecha, me cambia
hacia otro parámetro. Por ejemplo la secuencia:
...->Corriente->mAh->Wh->Tiempo->Tensión de corte->Corriente->.....
Si giro hacia la izquierda, estando resaltado el parámetro que quisiera
modificar, comienza a parpadear (cambiando Negro sobre blanco a Blanco
sobre Negro), se habilita para modificarlo.
Luego si el parámetro esta en el valor deseado, solo con hacer un click
corto ya quedaría seteado.
Finalmente para arrancar el proceso hacemos un Click, suponiendo que
los parámetros ya están en los valores deseados.
En caso de Iniciar y querer usar la configuración por default, solo
bastaría con hacer un Click para que se inicie.
En caso de ya estar en funcionamiento el proceso y si se quisiera
modificar algún parámetro, solo bastaría con hacer un Doble Click para
ingresar al Menu y desde ahi modificar lo deseado.