jueves, 6 de febrero de 2020

NUEVO FIRMWARE PARA EL TSDZ2 Y PANTALLAS ORIGINALES, v0.20

Tenemos un nuevo firmware para el motor Tsdz2 y las pantallas compatibles, en esta ocasión stancecoke y mbrusa han adaptado el código de marcoq a la versión que bubba desarrollo para las pantallas LCD3, la version 0.20 del firmware.

Entre sus novedades la posibilidad de ver multiples parámetros en las pantallas de serie, y además la posibilidad de cambiar entre cuatro modos de conducción

  1. Modo Potencia, el que viene de serie en los motores, si doy 100 wattios de potencia pedaleando me lo resta de lo que tenga configurado como maximo en ese nivel.
  2. Modo Cadencia, asistiendo segun la cadencia que llevemos en la pedalada (rotación de los pedales)
  3. Modo par o Torque, asistiendo a la presión ejercida en los pedales
  4. Modo emtb, imitando a las ebikes, un mix del modo torque y potencia

Para los parámetros básicos existe un programa en java de fácil uso, aunque para los parámetros más avanzados en esta ocasión se prescinde del configurador java, y se propone editar los archivos de configuración del sistema. 

aunque no es tan intuitivo como el configurador, eso si hay unos completos manuales explicando todas las opciones.



Para modificar los parámetros usaremos el archivo edit_config.bat y el archivo edit_advanced.bat

Para compilar usaremos el archivo compile_20.bat (previamente tenemos que tener el SDCC_Compiler instalado en nuestra unidad C:)


Para flashear usaremos el archivo program_20.bat   (necesitamos tener instalado el ST_Visual_Programmer, instalado en C:, así como el usb con el programado stlink2)

edit_config.bat

/*
 * config.h
 *
 *  Automatically created by TSDS2 Parameter Configurator
 *  Author: stancecoke
 */

#ifndef CONFIG_H_
#define CONFIG_H_

#define MOTOR_TYPE 1

Elegir el motor TSDZ2 valor 0 = 48V valor 1 36V. 

No introducir otros valores!

#define MOTOR_ASSISTANCE_WITHOUT_PEDAL_ROTATION 0

Permite la asistencia solamente con los pies sobre los pedales sin rotación. Se recomienda utilizar esta función con los sensores de freno instalados y activados. El empuje mínimo necesario para iniciar la ayuda se ajusta con el parámetro siguiente:

#define ASSISTANCE_WITHOUT_PEDAL_ROTATION_THRESHOLD 20
La sensibilidad a la ayuda al arranque sin rotación del pedal. Emplear valores bajos, poco a poco aumentar si es necesario. Se ajusta al 100% simplemente aplicar un par mínimo a los pedales. Los valores recomendados 10-20.


#define ENABLE_VLCD6 0
#define ENABLE_VLCD5 0
#define ENABLE_XH18 1
Elegir el tipo de pantalla utilizado. Habilitar sólo uno


#define PEDAL_TORQUE_PER_10_BIT_ADC_STEP_X100 67
Se utiliza para un cálculo correcto de la potencia aplicada sobre los pedales para dar el valor de torque real. Con valores mayores existe una reactividad mayor. Se recomienda realizar el procedimiento de calibración por hardware indicado en el wiki de TSDZ2 para mejorar la resolución del sensor de par.

#define MOTOR_ACCELERATION  25

Valor por defecto = 0% 
36 voltios motor, 36 voltios batería = 35% 
36 voltios motor,  48 ​​voltios batería = 5% 
36 voltios motor 52 voltios batería = 0% 
48 voltios motor 36 voltios batería = 45% 
48 voltios motor 48 ​​voltios batería  = 35% 
48 voltios motor,  52 voltios batería  = 30%
Aceleración del motor. En una primera configuración, use valores bajos, poco a poco aumentar si es necesario. Tenga en cuenta los valores de la tabla como valores máximos.
Ajuste con cuidado, consciente de que un valor más alto de lo necesario puede causar un mayor estrés en los engranajes de la trasmisión

#define BATTERY_CURRENT_MAX 15
Máxima corriente de la batería en amperios. 
Establecer la corriente máxima que puede suministrar la batería. El valor máximo se limita internamente por software para un máximo de 18 A.

#define TARGET_MAX_BATTERY_POWER 540
Capacidad total de la batería en vatios hora. AH. Ejemplo: una bateria de 36 Volt y 14,5Ah tiene una capacidad nominal de 36vx14.5Ah= 540 Wh

#define BATTERY_CELLS_NUMBER 10
Número de celdas en serie. Este valor puede ser un número entero de 7 a la 14. 
07 - 24 V 
10 - 36 V 
13 - 48 V 
14 - 52 V

#define BATTERY_LOW_VOLTAGE_CUT_OFF 29
Voltaje de corte con batería baja. Si la tensión cae por debajo de este valor, el controlador reducirá automáticamente la corriente a fin de no caer por debajo del límite de tensión mínimo. 
Establecer este valor mediante la comprobación de las características de las células de la batería. 

#define WHEEL_PERIMETER 2114
Este parámetro se utiliza para calcular la velocidad y kilómetros recorridos. Se introduce el perímetro de la rueda en milímetros. 
Valores indicativos: 
rueda de 26 pulgadas =  2050 mm 
rueda de 27 pulgadas  =  2150 mm 
rueda 27,5 pulgadas  =  2215 mm 
rueda de 28 pulgadas  =  2250 mm 
rueda de 29 pulgadas  =  2300 mm 


#define WHEEL_MAX_SPEED 45
Límite de velocidad máxima. Más allá de este valor, el motor se para. 
Atención, si está activada la función ENABLE_WHEEL_MAX_SPEED_FROM_DISPLAY, este límite se ignora y se sustituye por el establecido en la pantalla. 

#endif /* CONFIG_H_ */



edit_advanced.bat


/*
 * advanced.h
 * parameters configuration file
 * for TongSheng TSDZ2 motor controller firmware
 * by (C)Casainho and EndlessCadence and Leon, 20 beta 1 version
 * adapted to stock displays VLCD5 VLCD6 XH18
 * from an idea of marcoq (Jobike forum)
 * Author: mbrusa
 * Version mb.20beta1.A
 */
#ifndef ADVANCED_H_
#define ACVANCED_H_
#define DEBUG_MODE                                 0
#define DEBUG_DATA                                  1

// experimental high cadence mode (1=ENABLED)
#define EXPERIMENTAL_HIGH_CADENCE_MODE              0
Si está habilitado, permite la asistencia del motor a una cadencia superior. Usarlo bajo vuestro propio riesgo. Parece que sólo es adecuado para motores de 36v

// cadence sensor high percentage (calibration required)
#define CADENCE_SENSOR_PULSE_HIGH_PERCENTAGE_X10    500
Parámetros para el sensor de cadencia en el modo avanzado. Valor por defecto.
El valor real sólo se puede obtener con una calibración correcta (todavía no implementado). Consulte el procedimiento en la página wiki dedicada (20 beta 1). Después de la calibración, introduzca el valor real.

// battery internal resistance (milliohms)
#define BATTERY_PACK_RESISTANCE                     196
Resistencia interna de la batería en miliohmios
Se utiliza para eliminar la oscilación de las muescas que indican el estado de carga de la batería, entre sin carga de tensión y la tensión bajo carga. Cómo calcular la resistencia de la batería:
Medir la diferencia entre la tensión sin carga y bajo carga, con una corriente constante. Ejemplo para 10 A de corriente, R = diferencia de 1,96 voltios / 10 Amp, R = 0,196 = 196 miliohmios.

// battery voltage calibration (95% to 105%)
#define ACTUAL_BATTERY_VOLTAGE_PERCENT              100
Parámetro para corregir el valor de tensión se muestra en la pantalla. 
Ejemplo, con una batería completamente cargada de 36V, la tensión debe estar cerca de 42V, si es inferior aumentar el parámetro de 1 en 1 hasta que de la lectura de 42V, y viceversa, si la tensión es más alta, el parámetro debe ser reducido. 

// battery capacity calibration (max 100%)
#define ACTUAL_BATTERY_CAPACITY_PERCENT 100
Parámetros para ajustar la capacidad real de la batería. Procedimiento de calibración: Con la batería completamente cargada, comprobar el porcentaje en la pantalla, que debe ser del 99,9%. En este punto, deje que la batería se descargue por completo.
Compruebe el porcentaje residual y calcule el valor efectivo porcentaje (100 - valor residual). Ajuste el parámetro con este valor.
Ejemplo, porcentaje final residual 8%, la capacidad efectiva 92% (100 - 8).

// li-ion cell
#define LI_ION_CELL_OVERVOLT                        4.30
A partir de el valor introducido el display muestra el error E08-ERROR_OVERVOLTAGE.
La unidad de medida de este y los parámetros subsiguientes es en voltios (de cada célula individual).
#define LI_ION_CELL_RESET_SOC_PERCENT               4.10
Valor de retorno automático a 99,9% del porcentaje de la capacidad residual, con la batería completamente cargada. Los valores recomendados de 4.10 a 4.15, de lo contrario, con los valores más bajos, después de un corto a su vez, si la tensión no cae por debajo de este valor, cuando se 
conecta de nuevo se restablece a 99,9 de nuevo. Si la batería no está totalmente cargada y la tensión es inferior a este valor, el restablecimiento no se activa automáticamente. Si se desea, se puede hacer manualmente activando el procedimiento previsto.

// full
#define LI_ION_CELL_VOLTS_FULL                      3.95
Valor mínimo de tensión para visualizar el indicador de carga de batería llena (barra llena)

El indicador de batería mostrado varia dependiendo si tenemos las pantallas VLCD6 y XH18  (4 barras) o el  VLCD5 (barras)

// 4 bars
#define LI_ION_CELL_VOLTS_3_OF_4                    3.70
#define LI_ION_CELL_VOLTS_2_OF_4                    3.45
#define LI_ION_CELL_VOLTS_1_OF_4                    3.25
valor de tensión para mostrar estados de carga intermedios. De 1 a 3 muescas, para VLCD6 y XH18 pantallas.

// 6 bars
#define LI_ION_CELL_VOLTS_5_OF_6                    3.85
#define LI_ION_CELL_VOLTS_4_OF_6                    3.70
#define LI_ION_CELL_VOLTS_3_OF_6                    3.55
#define LI_ION_CELL_VOLTS_2_OF_6                    3.40
#define LI_ION_CELL_VOLTS_1_OF_6                    3.25
valor de tensión para mostrar estados de carga intermedios. De 1 a 5 muescas, para la visualización VLCD5.

// empty
#define LI_ION_CELL_VOLTS_EMPTY                     2.90
Valor de tensión para visualizar el estado de la batería completamente descargada, barra roja o vacía. 
Para estos parámetros mejor comprobar las características técnicas de las células utilizadas.

// --------------------------------------------------------------------------
// FUNCTION
// --------------------------------------------------------------------------

// enable functions (1=ENABLED)
#define ENABLE_LIGHTS                               0
Permitir el uso de luces, dentro y fuera, a través del botón de las luces.

#define ENABLE_WALK_ASSIST                          1
Permite el uso de la ayuda al caminar, asistiendo hasta 6 km / h. 

#define ENABLE_BRAKE_SENSOR                         0
Habilita el uso de sensores de freno cuando se instala. También permite las funciones que requieren el uso de sensores: 
- asistencia al caminar con retardo de entrada 
- el modo de crucero sin movimiento del pedal 
- acelerador 
Por razones de seguridad, con los sensores instalados, incluso con la función desactivada, la parada del motor está siempre activa al frenar.

#define ENABLE_THROTTLE                             0
Habilita el acelerador sólo si se ha instalado. Sólo está disponible con sensores de freno instalados y activados. Informarse acerca de las restricciones legislativas de cada país.

#define ENABLE_TEMPERATURE_LIMIT                    1
Habilita el uso del sensor de temperatura se ha instalado.
Atención, la función de uso del acelerador y del sensor de temperatura no pueden estar activadas juntas. (por hardware es imposible también pues comparten entrada)

// FUNCTIONS ENABLED ON STARTUP
// street mode (0=OFFROAD 1=STREET)
#define ENABLE_STREET_MODE_ON_STARTUP               0
Activa el modo de calle al iniciar.  El modo de calle es una función para poner un modo de conducción legal que limita la velocidad y la potencia del motor. Además deshabilita el acelerador y el modo de crucero. Informarse acerca de las restricciones legislativas de cada país.

// display mode (0=DISPLAY DATA 1=SET PARAMETER)
#define ENABLE_SET_PARAMETER_ON_STARTUP             0
Se elige la forma de utilizar la pantalla. Si está activado, la modificación de parámetros está sólo activa en el inicio de la pedalada. Si se deja a 0, la visualización de datos está activa desde el arranque.


// odometer compensation (1=ENABLED)
#define ENABLE_ODOMETER_COMPENSATION                1
Permite añadir km al odometro. Incluso cuando la moto está parado, todos los datos enviados a la pantalla aumentan el odómetro. Al activar esta función, la distancia se añade y se recupera, durante esta operación la velocidad durante la conducción permanece en cero hasta que los kilómetros se equilibran.


// cadence sensor mode (0=STANDARD 1=ADVANCED)
#define CADENCE_SENSOR_MODE_ON_STARTUP              0
Modo de sensor de cadencia en el arranque. 
= modo estándar,
1 = modo avanzado (el doble de los impulsos).
Elegir el modo avanzado requiere una calibración (todavía no implementado).

// lights configuration (0 to 8)
#define LIGHTS_CONFIGURATION_ON_STARTUP             0
Modo de funcionamiento de las luces en el arranque. Este valor puede ser diferente del 3 seleccionable en el menú de la pantalla.
// lights configuration
#define LIGHTS_CONFIGURATION_1                      1
#define LIGHTS_CONFIGURATION_2                      6
#define LIGHTS_CONFIGURATION_3                      7
/*  NOTE: regarding the various light modes
    (0) lights ON when enabled
    (1) lights FLASHING when enabled
    (2) lights ON when enabled and BRAKE-FLASHING when braking
    (3) lights FLASHING when enabled and ON when braking
    (4) lights FLASHING when enabled and BRAKE-FLASHING when braking
    (5) lights ON when enabled, but ON when braking regardless if lights are enabled
    (6) lights ON when enabled, but BRAKE-FLASHING when braking regardless if lights are enabled
    (7) lights FLASHING when enabled, but ON when braking regardless if lights are enabled
    (8) lights FLASHING when enabled, but BRAKE-FLASHING when braking regardless if lights are enabled
*/
Configuración de los modos de luz seleccionables en el menú en la pantalla. Averiguar sobre el cumplimiento de la normativa vigente. 
Se pueden eliger 3 modos preferidos entre los 9 disponibles. 

// ridind mode (1=POWER 2=TORQUE 3=CADENCE 4=EMTB)
#define RIDING_MODE_ON_STARTUP                      1
Configuración del modo de asistencia al iniciar. Elija el preferido de los modos de asistencia disponibles. 
1 - POWER  asistencia proporcional a la potencia aplicada en los pedales 
2 - PAR  asistencia proporcional al par en los pedales 
3 - CADENCIA asistencia subordinada al movimiento de los pedales 
4 - EMTB asistencia con un porcentaje progresivo del par motor en los pedales 

// STREET MODE FUNCTION
// street mode power limit (1=ENABLED)
#define STREET_MODE_POWER_LIMIT_ENABLED             1
// street mode power limit value (Watt)
#define STREET_MODE_POWER_LIMIT                     500
Habilita el límite de potencia en modo CALLE. (MAX 500)

// street mode speed limit (km/h)
#define STREET_MODE_SPEED_LIMIT                     25
Límite de velocidad en km / h cuando el modo está activado CALLE. Más allá de este valor, el motor se para. Este límite de velocidad puede ser sustituida por el valor introducido en las opciones originales de la pantalla cuando se activa la función ENABLE_WHEEL_MAX_SPEED_FROM_DISPLAY. 

// street mode enable other functions
#define STREET_MODE_THROTTLE_ENABLED                0
Habilita el acelerador, si está instalado, en el modo CALLE. Sólo está disponible con sensores de freno montados y habilitados.

#define STREET_MODE_CRUISE_ENABLED                  0
Activa el modo crucero en el modo CALLE. Disponible en el modo con el movimiento del pedal activa, otro modo solamente con sensores de freno instalados y activados.

// throttle ADC values (optional)
#define ADC_THROTTLE_MIN_VALUE                      47
#define ADC_THROTTLE_MAX_VALUE                      176
Ajustes del acelerador, mínimo relativo y los valores máximos.

// motor temperature limit (sensor required)
#define MOTOR_TEMPERATURE_MIN_VALUE_LIMIT           65
Permite ajustar la temperatura a partir del cual se iniciará la protección del motor, lo que limita el poder. La potencia disminuye gradualmente hasta el límite de temperatura máximo, entonces el motor se para. Valores en grados Celsius.
#define MOTOR_TEMPERATURE_MAX_VALUE_LIMIT           80
Permite ajustar la temperatura máxima del motor. A esta temperatura, el motor se apagará. Valores en grados Celsius.

// enable temperature error at min limit value
#define ENABLE_TEMPERATURE_ERROR_MIN_LIMIT          1
Si está habilitado, se muestra el código de error E06 - ERROR_OVERTEMPERATURE cuando se supera el límite de temperatura mínima. Si está desactivada cuando se supera el límite máximo.

// --------------------------------------------------------------------------
// DISPLAY
// --------------------------------------------------------------------------

// display parameters
#define ENABLE_DISPLAY_WORKING_FLAG                 1
Permite que la pantalla se apague después de 5 minutos de inactividad.
#define ENABLE_DISPLAY_ALWAYS_ON                    0
Permite que la pantalla nunca se apague.
Se usa o uno u otro valor.


#define ENABLE_WHEEL_MAX_SPEED_FROM_DISPLAY         0
Habilita el límite de velocidad en la pantalla. Se ignora el límite superior del parámetro WHEEL_MAX_SPEED. El límite de velocidad siempre se mantiene activo en el modo CALLE.
Atención, cuando el límite de velocidad en la pantalla es menor que en el modo CALLE, el que está en la pantalla tiene prioridad. Ejemplo:
- límite de visualización 30 km / h, límite Street 25 km / h, límite utiliza 25 kmh 
- límite de presentación 20 km / h, límite Street 25 km / h, límite usaron 20 km / h durante el 
establecimiento del límite, consulte el manual de su pantalla.

// delay menu function (0.1 sec)
#define DELAY_MENU_ON                               50
Retardo máximo entre la primera pulsación del botón de la luz y la segunda confirmación, en el ajuste de parámetros. También es el momento en el que, después de la confirmación y con un código de destello, se puede pasar al siguiente parámetro.

// enable delay return to default display mode
#define ENABLE_RETURN_DEFAULT_DISPLAY_MODE          1
Permite el retorno automático al modo de uso omisión de la pantalla. Si está desactivado, el 
retorno al modo anterior debe hacerse manualmente.

// delay return to default display mode (seconds)
#define DELAY_DISPLAY_MODE_DEFAULT                  30
Retraso después de cambiar el modo de uso de la pantalla para el retorno automático al modo predeterminado. 
- ENABLE_SET_PARAMETER_ON_STARTUP = 0 vuelve a la visualización de los datos. 
- ENABLE_SET_PARAMETER_ON_STARTUP = 1 se vuelve a la modificación de los parámetros.

// displays double data (0=3 VALUES 1=6 VALUES)
Permite la visualización de dos series de datos (3 + 3 valores) 

#define ENABLE_DISPLAY_DOUBLE_DATA                  0
// delay display data (0.1 sec, max 255)
// first series
#define DELAY_DISPLAY_DATA_1                        50
#define DELAY_DISPLAY_DATA_2                        50
#define DELAY_DISPLAY_DATA_3                        250
// second series
#define DELAY_DISPLAY_DATA_4                        250
#define DELAY_DISPLAY_DATA_5                        50
#define DELAY_DISPLAY_DATA_6                        50
Es el tiempo de visualización de los datos seleccionados, Después de la primera pulsación del botón luces y la segunda confirmación se ilumina de nuevo para ir a la siguiente visualización de datos. 
El valor máximo es de 255 = 25,5 segundos y puede ser diferente para cada dato individual. 
Para detener la visualización de los datos antes de que finalice el tiempo, cambiar el nivel.

// display data configuration
// first series
#define DISPLAY_DATA_1                              1
#define DISPLAY_DATA_2                              0
#define DISPLAY_DATA_3                              2
// second series
#define DISPLAY_DATA_4                              4
#define DISPLAY_DATA_5                              5
#define DISPLAY_DATA_6                              7
/*  display data code configuration
0 - motor temperature (°C)
1 - battery SOC remaining (%)
2 - battery voltage (Volt)
3 - battery current (Amp)
4 - absorbed motor power (Watt/10)
5 - adc torque sensor (8 bit)
6 - adc torque sensor (10 bit)
7 - pedal cadence (rpm)
*/
Permite elegir los datos que se muestran en la pantalla. Hay que elegir los datos a visualizar, en el tipo y en el orden de preferencia entre las disponibles. 

// --------------------------------------------------------------------------
// ASSIST
// --------------------------------------------------------------------------
// CAUTION: all assist values _LEVEL_0 for safety must be set to zero
PRECAUCIÓN. Por razones de seguridad en valor de asistencia a nivel 0 debe ser cero. Hay 4 niveles disponibles para cada modo de asistencia:
1-ECO, 
2-TOUR, 
3-SPORT, 
4-TURBO.

// power assist (% max 500)
#define POWER_ASSIST_LEVEL_0                        0
#define POWER_ASSIST_LEVEL_1                        40
#define POWER_ASSIST_LEVEL_2                        60
#define POWER_ASSIST_LEVEL_3                        90
#define POWER_ASSIST_LEVEL_4                        140
Modo de asistencia proporcional a la potencia de los pedales. Los valores en porcentaje, (máx 500%)
Ejemplo, si damos 100 vatios a los pedales, con la asistencia del 300%, el motor proporciona 300 vatios.

// torque assist (max 254)
#define TORQUE_ASSIST_LEVEL_0                       0
#define TORQUE_ASSIST_LEVEL_1                       70
#define TORQUE_ASSIST_LEVEL_2                       100
#define TORQUE_ASSIST_LEVEL_3                       130
#define TORQUE_ASSIST_LEVEL_4                       160
Modo de asistencia proporcional al par en los pedales.La potencia suministrada por el motor es proporcional al par aplicado y los valores de asistencia conjunto. Valores relativos (máx 254).

// cadence assist (max 254)
#define CADENCE_ASSIST_LEVEL_0                      0
#define CADENCE_ASSIST_LEVEL_1                      70
#define CADENCE_ASSIST_LEVEL_2                      100
#define CADENCE_ASSIST_LEVEL_3                      130
#define CADENCE_ASSIST_LEVEL_4                      160
Modo de asistencia sujeta a movimiento del pedal. La potencia suministrada por el motor depende en parte del conjunto valores de asistencia y en parte de la cadencia de los pedales. Valores relativos (máx 254).

// eMTB assist (sensitivity 0 to 20)
#define EMTB_ASSIST_LEVEL_0                         0
#define EMTB_ASSIST_LEVEL_1                         4
#define EMTB_ASSIST_LEVEL_2                         7
#define EMTB_ASSIST_LEVEL_3                         10
#define EMTB_ASSIST_LEVEL_4                         15
Modo de asistencia con un porcentaje progresivo del par motor en los pedales. La potencia suministrada por el motor es progresivamente proporcional al par aplicado. 20 sensibilidades predefinidos están disponibles.Los valores altos corresponden a una asistencia menos progresiva, es más fácil y rápido llegar a la máxima potencia del motor. Elija los valores de sensibilidad preferidos de entre los disponibles, de 1 a 20.

// walk assist (max 100)
#define WALK_ASSIST_LEVEL_0                         0
#define WALK_ASSIST_LEVEL_1                         30
#define WALK_ASSIST_LEVEL_2                         40
#define WALK_ASSIST_LEVEL_3                         50
#define WALK_ASSIST_LEVEL_4                         60
Modo de asistencia al caminar hasta 6 km / h. Se activa con el botón dedicado, consulte el manual de su pantalla. El valor máximo 100. El uso de valores bajos con marchas largas pueden dañar la transmisión.

// walk assist threshold (speed limit max km/h)
#define WALK_ASSIST_THRESHOLD_SPEED                 6
Límite máximo de velocidad en modo asistencia al caminar, en km / h. Informarse acerca de las restricciones legislativas sobre el límite.

// walk assist debounce (brake sensor required)
#define WALK_ASSIST_DEBOUNCE_ENABLED                0
Permite usar el modo asistencia al caminar sin mantener pulsado el botón de ayuda. 
Útil en terrenos difíciles, cuando un rebote puede hacer que el botón sea liberado no deseado. Sólo está disponible con sensores de freno instalados y activados.

// walk assist debounce time (0.1 sec, max 255)
#define WALK_ASSIST_DEBOUNCE_TIME                   120
Tiempo que se mantiene la asistencia al caminar sin pulsar el boton.
Se recomienda ajustar este tiempo lo más bajo posible, ligeramente superior a la necesaria para la activación de la caminata ayudar. 
La asistencia permanece activa después de soltar el botón durante el tiempo establecido. Para detener la asistencia durante este tiempo hay que cambiar el nivel de asistencia, xej: con XH18 se detiene sólo cuando se mueve hacia el nivel superior.

// cruise level (target km/h, brake sensor required)
#define CRUISE_TARGET_SPEED_LEVEL_0                 0
#define CRUISE_TARGET_SPEED_LEVEL_1                 15
#define CRUISE_TARGET_SPEED_LEVEL_2                 18
#define CRUISE_TARGET_SPEED_LEVEL_3                 21
#define CRUISE_TARGET_SPEED_LEVEL_4                 24
Modo de asistencia con control de crucero.
El valor establecido en los niveles es la velocidad objetivo para ser mantenido en km / h. La potencia 
suministrada por el propio motor se ajusta para mantener la velocidad elegida. la velocidad no puede ser alcanzado debido a la limitada potencia del motor. Los límites de velocidad visto anteriormente tienen prioridad. 
Lea cuidadosamente la función del parámetro siguiente.

// cruise function with pedal rotation
#define CRUISE_MODE_CADENCE_ENABLED                 1
Habilita el modo de asistencia de crucero subordinado al movimiento de los pedales. La velocidad se mantiene sólo con un mínimo movimiento del pedal. Al parar de pedalear el motor se detiene.
Se puede comparar al modo cadencia, la diferencia es que el cambio del nivel no cambia la potencia suministrada por el motor, pero si la velocidad a alcanzar. Si está desactivado, no se requiere la rotación del pedal para mantener la velocidad.
Se puede comparar a un acelerador que permita variar de velocidad en pasos. El aumento del nivel aumenta la velocidad, disminuyendo disminuye, a 0-OFF las paradas del motor. Este modo sólo está disponible con los sensores de freno instalado y activado.
Informarse acerca de las restricciones legislativas relacionadas con el uso. 
// cruise threshold (speed limit min km/h)
#define CRUISE_THRESHOLD_SPEED                      10
Límite de velocidad mínima para activar el modo de crucero, en km / h. Por debajo de este 
valor, la asistencia en la cadencia ASSIST modo está activo.

#endif // ADVANCED_H_




Me limito a informar acerca del firmware y su desarrollo, los verdaderos autores y a los que se les debe reconocimiento por si labor son, entre otros:
Casainho, Bubba, stancecoke (endless-sphere.com), marcoq, mbrusa (Jobike forum) and others....



Descargas opensource:


viernes, 21 de junio de 2019

KIT MOTOR ELECTRICO (PARTE 4): MARCOQ FIRMARE VERSION 0.3.5 BETA


Marcoq sigue haciendo grandes cosas con este motor, en este caso con su nueva versión del configurador 0.3.5 ha implatando mejoras en el firmware, mejoras tanto propias como de la versión del firmware de casainho.

En este ultimo firmware se integran los últimos cambios de casainho y compañía (endless foro) relacionados con la administración del bloqueo de las ruedas, marcoq encontro otra solución alternativa pero considero más apropiado alinearse con Endless.


Una de las mejoras es el modo eMTB, como tienen los motores de las bicicletas electricas, este mood combina el sensor de torque con una cadencia especificada.


El modo eMTB solo funciona con el nivel de asistencia 3, su peculiaridad es "permitir el paso dinamico" desde el nivel de asistencia 2 (TOUR) al nivel de asistencia 4 (TURBO). 

Es posible configurar el valor de cadencia del pedaleo "Cadence for eMTB Max Power" para el cual se requiere asistencia máxima (pero siempre de acuerdo con la presión ejercida sobre los pedales). 

En cuanto a las funciones Offroad / Street y Boost, es posible habilitar y deshabilitar la función eMTB a través de las pantallas OEM, usando el mismo procedimiento pero solo cuando se selecciona el nivel de asistencia 3 (E02 = eMTB habilitado, E01 = eMTB deshabilitado). 

En cuanto a la función Street, cuando se arranca el motor, es posible habilitar la función eMTB de manera predeterminada y cambiar al modo SPORT simplemente realizando el procedimiento mencionado anteriormente (con el nivel 3 seleccionado). 

La implementación de Pas and Soft Start permite un inicio "suave" dentro de un tiempo definido en el campo "Rampa de tiempo de inicio suave", donde el tiempo se expresa en décimas de segundo (30 = 3 segundos). 

Al presionar el botón "Tbl" en el configurador, se abrirá una hoja de Excel en la que podrá evaluar la "pendiente de la rampa" según el parámetro "Factor de arranque suave K" (predeterminado = 0.990), cuanto más alto sea el valor, más la rampa será "lenta", poniendo 0 en Soft Start está deshabilitado.
El parámetro "Rampa de inicio suave" define el tiempo máximo de rampa, después de lo cual el sistema comienza a funcionar a plena capacidad. 

Esta función es útil cuando se comienza con altos niveles de asistencia, preservando efectivamente el desgaste del equipo "Azul". 


Se agrega la posibilidad de adaptar el firmware también a las pantallas XH18 (se apagaba el motor cuando se seleccionaba la opcion display working flag on) ... así que ahora toda la gama de OEM debería ser totalmente compatible con las nuevas implementaciones.


 
Las pantallas OEM, tal como se programaron originalmente, no pueden mostrar la misma información de codigos de eror, por lo que tuve que diferenciar los mensajes según la pantalla seleccionada en el configurador.

PANTALLAS VLCD5 y VLCD6 
errores:
SOBRETEMPERATURA -> E06 (solo si esta instalado el sensor de temperatura)
RUEDA EBIKE BLOQUEADA -> E07
SOBRETENSIÓN -> E08

funciones:
PARAMETROS POR DEFECTO -> E02 (Nivel 0)
MODO STREET HABILITADO -> E03 (Nivel 1)
MODO OFFROAD HABILITADO -> E04 (Nivel 1)
MODO BOOST HABILITADO -> E05 (Nivel 2)
MODO BOOST DESHABILITADO -> E01 (Nivel 2)
MODO EMTB HABILITADO -> E02 (Nivel 3)
MODO EMTB DESHABILITADO -> E01 (Nivel 3)

PANTALLA XH18
errores:
SOBRETEMPERATURA -> E06
RUEDA EBIKE BLOQUEADA -> E04
SOBRETENSIÓN -> E08

funciones:
PARAMETROS POR DEFECTO -> E02 (Nivel 0)
MODO STREET HABILITADO -> E02 (Nivel 1)
MODO OFFROAD HABILITADO -> E03 (Nivel 1)
MODO BOOST HABILITADO -> E03 (Nivel 2)
MODO BOOST DESHABILITADO -> E02 (Nivel 2)
MODO EMTB HABILITADO -> E03 (Nivel 3)
MODO EMTB DESHABILITADO -> E02 (Nivel 3) 

Para seleccionar cada uno de estas opciones tendremos que presionar el boton i durante 2" en cada uno de los niveles de asistencia, para la pantalla XH18 se pulsa el boton power dos veces en cada uno de los niveles.

de esta forma por ejemplo para la pantalla XH18:
  • con el nivel de asistencia 0 seleccionado:  (E02 = DEFAULT ON). Resetea todos los modos a la configuración por defecto
  • con el nivel de asistencia 1 seleccionado:  (E02 =  OFFROAD ON, E03 =  STREET ON). 
  • con el nivel de asistencia 2 seleccionado:  (E03 =  BOOST ON, E02 =  BOOST OFF). 
  • con el nivel de asistencia 3 seleccionado: (E02 = eMTB ON, E01 = eMTB OFF). 


miércoles, 19 de junio de 2019

PS3 HEN

Cuando creiamos que ya la PS3 estaba abandonada en equipo del ps3exploit nos sorprenden con un exploit nuevo, se trata del HEN ( Homebrew ENabler), un exploit para las consolas que no son de CFW.

Esta vulnerabilidad proporciona soporte para ejecutar homebrew y la posibilidad de ejecutar aplicaciones para firmwares modificados (CFW) para aquellas consolas que no pueden instalar un CFW tradicional, como son los modelos PS3 Slim y todas las consolas SuperSlim. 

Si tu consola puede instalar CFW, esta claro que esto no es para ti puesto que el CFW es mas completo que lo que podrias conseguir con ese exploit.

que es lo mas importante que nos permite hacer esta vulnerabilidad:

  • HAN Enabled por defecto!
  • webMAN MOD, multiman integrado en el sistema, posibilidad de gestionar los backups desde el menu XMB....
  • Control ajustable de potencia del ventilador segun temperatura, manual o por sistema...integrado en webMAN
  • Posibilidad de usar FTP para intercambio de archivos PC-PS3...integrado en webMAN
  • Hybrid Firmware Tools (herramientas como las de un CFW pero mas limitadas)
  • Backup managers: Managunz, MULTIMAN, IRISMAN ...
  • PSNPatch y SENENABLER
  • Posibilidad de ejecutar juegos de PS2, PS1, PSP
  • Capaz de manejar archivos ISO.
  • BD/DVD parcheado todas las regiones
  • Syscall deshabilitadas para evitar baneos
  • PS3MAPI support
  • Posiblidad de instalar y gestionar archivos PKG
  • Posiblidad de autoejecutar RAPs y C00 con juegos no licenciados
  • PSN conectividad
  • Todos los procesos ejecutados tras HEN tienen permisos rwx!
Actualmente la ultima version es la 2.2.2.

Al lio, como lo instalamos...

Hay miles de tutoriales por internet, lo mas facil bajo mi punto de vista es lo siguiente:

Tener una llave USB formateada en FAT32, a partir de ahi comprobar el firmware de nuestra consola, si no es OFW 4.84, tenemos que actualizar el firmware de la consola.

  • creamos en carpeta raiz del pendrive una carpeta llamada PS3 y dentro de esta otra llamada UPDATE, y ponemos el siguiente archivo (varia para cada region) pongo el link de la europea:  FIRMWARE OFW 4.82 EU
  • copiamos el archivo descargado "PS3UPDAT.PUP" en la ruta PS3/UPDATE.
  • Insertamos la llave en la PS3 en el usb mas cercano al lector y encedemos la consola
  • Vamos al menu XMB y en Configuración seleccionamos "Actualización del sistema"

  • Luego "Actualizar desde almacenamiento USB". Aceptamos todo y dejamos que el sistema de reinicie

La consola estará actualizada a OFW 4.84.
  • Abrimos el navegador web desde la PS3, borramos cookies  y cache. Salimos del navegador y volvemos a entrar

  • Vamos a la siguiente pagina desde el navegador web:  www.ps3xploit.com/hen/installer
  • El proceso es automático y se instalara el HEN. Si algo falla, borramos cookies/cache y lo volvemos a intentar.


Reiniciamos y ya tenemos HEN en el menu XMB en juegos.



Una vez esta instalado, solo nos queda instalar en webMAN MOD.

  • Nos bajamos de internet en el PC el ultimo webMAN MOD https://github.com/aldostools/webMAN-MOD/releases) y lo ponemos en la carpeta raíz del pendrive.
  • Insertamos el Pendrive en la PS3, iniciamos el HEN, y en el menu de juegos vamos a "Package Manager/Install Package Files/Package Directory" ahí ejecutamos el archivo (webMAN_MOD_1.47.23_Installer.pkg)
  • Una vez instalado ya nos aparece como un juego mas el webMAN MOD installer lo ejecutamos pulsando L1 y manteniendolo hasta que veamos que se reinicia y aparece el logo de sistema. 
  • Ahora cada vez que ejecutemos el HEN nos va a ejecutar las opciones del webMAN MOD.
Dentro de las opciones de webMAN MOD podemos configurar el ventilador para que se active cuando queramos.





lunes, 3 de junio de 2019

KIT MOTOR ELECTRICO (PARTE 3): SENSOR TEMPERATURA


Uno de los problemas del motor TSDZ2 es que por su construcción está diseñado para utilizarse en bicicletas urbanas, no se circula durante cortos periodos de tiempo a altas revoluciones por lo que el calor generado en estas condiciones no es excesivo y se acaba disipando…
Motor Bafang con
disipador en carcasa


Por el diseño del motor y su estanqueidad, este motor no está dotado de grandes disipadores como el bafang. El motor bafang si tiene aletas que disipan el calor a modo de intercambiador con el aire, el TSDZ2 no las tiene, y además deja una amplia cámara de aire entre el motor y la carcasa, lo que no ayuda a disipar el calor…

Por este motivo casainho cambia la forma en que su firmware interpreta la señal del acelerador, y programa una funcion a modo de sensor de temperatura. Para ello usa un sensor LM35 que le da lecturas de temperatura en voltios. Con su funcion el STM8 recoge la lectura de voltios del sensor  y  los interpreta como grados. 

El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC. Su rango de medición abarca desde -55 C hasta 150 C. La salida es lineal y cada grado Celsius equivale a 10 mV.

Para poder instalar el sensor, debemos separar el controlador del motor y soldarlo a la placa del mismo. No es difícil, pero si conlleva un riesgo de liarla si somos descuidados. Además es importante que nos aseguremos que no perdemos la estanqueidad del motor.

El gran "jbalattube" tiene un completo tutorial en youtube con la instalacion del sensor. Por este motivo, en su momento yo no saque muchas fotos, en este post cojo fotos del manual y mias, para que veáis que pasos hay que realizar.

Es aconsejable sacar el motor de la bicicleta, es buen momento para reengrasar los engranajes y comprobar su estado y el de los rodamientos.

PASOS: Lo primero es sacar las bielas, luego el conjunto plato y/o el adaptador para platos, son 5 tornillos allen.



A continuación quitamos la tapa por donde salen los de cables del motor. Son 2 tornillos allen.


Luego quitamos dos tornillos de estrella, con cuidado de no comerles la cabeza, es material malo…estos tornillos sujetan la parte del controlador.






Ahora viene una parte peliaguda, se trata de quitar la silicona que llevan los cables, nos podemos ayudar de un destornillador o de un cuter, con mucho cuidado de no cortar los cables. Sacamos la silicona negra, y ya podemos pasar los cables una vez quitemos la caja del controlador por el otro lado.




Del otro lado, sacamos la carcasa del motor, teniendo cuidado de no perder la junta del mismo.


A continuación tenemos que desconectar los cables de alimentación del motor, primero quitamos el prisionero, y luego los 2 cables que van conectados con clema. La clema con 2 cables del sensor de torque y la clema con los 8 cables del controlador.




Ahora ya podemos extraer la parte del controlador para trabajar la zona del sensor.

Todo el controlador está recubierto de un aislante, tipo silicona de color amarillo. Con cuidado y un cuter quitamos este aislante en la zona donde vamos a soldar.

Vamos a preparar el LM35, este tiene tres patas, tierra (GND), voltaje (Vcc) y E/S (THR). Le soldamos tres cables de colores, y luego le conectamos una clema que nos permita operar en el motor fuera de la carcasa sin retirar el sensor.


Yo preestaño siempre los cables que voy a soldar, así me  ahorro esta tarea a la hora de soldarlos a la placa, también les pongo termo retráctil para evitar cortos.



Vamos a la parte del controlador. Este es el esquema para el motor de 6 cables (sin acelerador). Con acelerador es mas fácil (8 cables) porque los cables del acelerador ya estan soldados a la placa. Sólo hay que cortarlos y empalmarlos a los del sensor:

Para el motor de 6 cables, tenemos que soldar. Retiramos la silicona que rodea los tres puntos y soldamos los cables, si tenemos flux mejor, para no dejar un pegote feo. Añadimos flux a los agujeros y soldamos los cables preestañados, los cables entran bien por los agujeros de la placa.

Aquí se ve como los he soldado yo, luego rellene silicona térmica para asegurar la estanqueidad. aunque este paso no os lo aconsejo, me di cuenta que si nos equivocamos al soldar, retirar esta silicona es complicado, yo no tengo ni idea de como sacar esta silicona térmica...




Ya solo nos queda, pegar el sensor al motor, yo utilice para ello “thermal pad” que se usa para pegar disipadores a chipset en electrónica. 
Con el thermal pad del lado de motor, se pone el chip encima, y se asegura todo con silicona especial para zonas de calor. 

Esta silicona negra también la usaremos para sellar el agujero que hemos dejado en la tapa de motor, una vez pasados los cables.


El montaje es a la inversa que el desmontaje, teniendo cuidado de asegurar bien las clemas con cinta térmica o aislante, y hay que fijarse que los cables y clemas quedan todos conectados y en su correcto orden. Asimismo todas las juntas que ahí tenemos que “untarlas” con grasa o vaselina que no afecte a las juntas.

A la hora de montar la última carcasa, donde hemos quitado la silicona negra, tenemos que rellenar ese agujero otra vez con silicona para asegurar la estanqueidad del motor.

Para configurar todo con el firmware de marcoq (sino no tiene sentido nada de esto), tenemos que activar la pestaña en el configurador java y seleccionar la temperatura mínima y máxima. En la mínima el firmware limita el motor y en la máxima lo apaga.