martes, 28 de mayo de 2019

KIT MOTOR ELECTRICO: MI BICI

Como uno ya es un viejuno y no se ve con fuerzas para disfrutar del todo del monte con la bici, sumado a que cada vez tengo menos tiempo libre, me plantee hace un año cambiarme al mundo eléctrico.

Tenia dos opciones, o comprar una eléctrica o electrificar la mía.
La primera opción después de mucho bichear la descarte por el tema económico, no por que no pudiera si no por que para el uso que le doy ahora a la bici (fines de semana y un poco mas en verano) no me parecía una buena inversión gastarme 4000 euros...

Asi que empece a mirar los kits eléctricos, hay mucho donde elegir distinguiendo dos tipos de kits, los que van integrados en el buje de la rueda, bien sea delante o detrás, y los que se ubican en la parte central, en el pedalier.

Para montaña los primeros tienen el problema del calentamiento, están diseñados para ventilarse aprovechando la velocidad y diseñados para funcionar a altas rpm, en montaña que en muchos casos vas al tran tran, estos motores se fuerzan al rodar a bajas rpm y con el calentamiento acaban "quemándose".

Otra desventaja es el reparto del peso, el peso se ubica en la rueda, casi 4 kilos detrás o delante que hacen que la bici sea menos manejable. También la potencia estos motores la entregan directamente a la rueda, haciendo que el pedaleo sea menos natural. Y por ejemplo en el motor de buje delantero la potencia parte de delante haciendo que sea distinta su conducción.

Los que van el pedalier tienen la ventaja de repartir bien el peso, y tirar de la rueda de forma natural, pues mueven el eje donde se ubican los platos, la desventaja es que la altura del pedalier al suelo se reduce teniendo menos paso por piedra...

De este tipo de motores hay dos tipos los que asisten "continuamente" al pedaleo usando un sensor de paso, es decir si detecta movimiento sigue asistiendo a una velocidad programada.
El otro tipo son los que asisten según la potencia que se infrinja al pedal, estos son llamados de sensor de torque, si el sensor detecta fuerza en el pedal asiste a una velocidad programada.

Motor Bafang BB02
Motor TSDZ2


Estos últimos son los que mas se parecen a una ebike comercial, y es por ello que me decante por instalar el TSDZ2 que es por ahora el motor que en relación calidad precio mejor me pareció.

Hay muchas versiones de motor pero realmente lo que determina la version es el controlador que llevan es decir, un controlador limita los amperios a los que trabaja el motor. En Europa el limite de motores para las ebikes esta en 250W, pero las baterías de estas ebike son de 36v y sus controladores están limitados a 15A, entonces...36v x 15A = 540 watios, esto implicaría que superan el limite legal... los fabricantes se acojen a que esos 540 watios es la potencia máxima,  los 250 watios es la potencia continua, es decir la potencia a la que ese motor trabaja habitualmente, si se supera esta potencia se quemaría el motor....La contradiccion viene porque a mayor voltaje de bateria mas watios a menos amperios, con lo que el motor se calentaria menos...en fin una ley absurda. Si a limitar velocidad pero en cuanto a limitar watios es una norma copiada del código de circulación.

Así que lo que realmente mide la potencia es la programación del controlador (que limita los amperios que da para que no se queme el motor) y la bateria, estas pueden ser de 36/48/52v las primeras son las mas baratas, pero por contra las que pesan mas.

Para la bateria tenia claro que iba a utilizar una de 36v y 15A en caja de batería para el tubo diagonal, alguna tipo hailong shark o similar. Con esto y el controlador a 15A me da potencia máxima suficiente para lo que quiera.

Una vez elegido el motor empece a mirar como encajar la bateria en el cuadro...y aquí mi problema...porque en mi cuadro no entraba la batería en el tubo diagonal...asi que tendría que ponerla en el horizontal...













Al final viendo que esto iba a ser una chapuza, me fui por el camino de el medio y compre un cuadro de segunda mano con espacio.

Vi este en un foro que sigo muy bien de precio y me enamore, estaba tirado de precio, pero tirado porque tenia soldado el basculante...yo como soy asi de arriesgado y me fio de la gente me lance a por el. Una vez adquirido ya lo pintaria...



Soldaduras en el basculante


El problema es que al pintarlo me dijeron que tenia otra fisura en el brazo superior del basculante...el comprador se porto y lo apañamos en un taller de aquí que trabajan aluminio, al final soldadura a prueba de bombas...(1 año ya sin problemas y toco madera)


Comprobando que la batería encaja en el cuadro nuevo.

 De esta forma procedí a montar todo, la batería va anclada en el tubo diagonal para ello solo añadí un agujero mas a los que 2 del portabotellin con un remache roscado M5.

Un problema de estos motores es que si cambias el plato de origen por el adaptador y un plato distinto al 42, la linea de la cadena empeora de 51mm a 56/61mm (rígida/doble) con lo que olvidaros de montar un casete 10v 11/46, cruzaríais en exceso la cadena es mejor quitar piñones y jugar con las velocidades del motor. Yo monto un 10v 11/36 pero quitándole un piñón , así mejoro la linea de la cadena.

Ademas le quite unos centímetros al motor por su parte interior para evitar que el plato toque con el basculante. (si no tendría que alejar el plato añadiendo una arandela al pedalier, pero esto empeoraría la linea de cadena)


de esta forma tenemos este montaje:

El motor TSDZ2 para una bici doble necesita un anclaje extra puesto que el anclaje original se fija sobre el triangulo trasero, en una rígida no hay problema pero en una doble este se mueve, así que no queda otra que poner un anclaje al cuadro como el de la foto. De nuevo dos remaches roscados M5 en el tubo diagonal y una brida metálica aseguran la pieza al cuadro.

Lo vende KITSEMTB

Anclaje original en bicicleta rigida



                                                                            Anclaje en bicicleta doble


Para evitar las piedras que por el pedalier mas bajo puedan golpear al motor instale un protector para el motor cortesía de KITSEMTB


Al final tenemos este montaje que es el que llevo ahora y con el que estoy muy contento:




martes, 16 de octubre de 2018

EL FINAL DE LA PS3

Ya han pasado más de 14 años desde que salió a la venta la exitosa Sony PlayStation 3. Desde el 2006 este centro multimedia ha cosechado numerosos ingresos para Sony, imponiendose a la Xbox360 y a la Nintendo Wii.

El último título exclusivo de la consola fue lanzado en octubre de 2016 y la fabricación de la misma se paro en abril de 2017 en Japón.

Hasta esa fecha el último modelo de la PS3, la conocida como SuperSlim era un modelo seguro, en el que por software se hacia imposible ejecutar algo que no fuera original, imposibilitando el uso de homebrew, mods y como no los "backups" de juegos...

Sony supo dar respuesta a la demanda, poniendo a disposición de los usuarios una tienda digital (PSN Store) desde la que permitía adquirir títulos de por vida para sus usuarios.

Estos 14 años que han dado a SONY beneficios por la venta de consolas y la venta de licencias de juegos y su distribución. pero SONY ha declarado que a partir de mayo del 2019 cerrara el servicio de PSN+,

El año 2018 nos deparo la sorpresa para las consolas PS3 SuperSlim puesto que el PS3Xploit Team desarrollo un exploit mediante el cual se aprovechaba de una vulnerabilidad en el navegador para acceder a la memoria nand, de este modo "abrimos el firmware" v4.81/82 y podemos dumpear el idps y poder "firmar" cualquier archivo para que la PS3 detecte cualquier software como original de SONY. 
Resultado de imagen de ps3xploit

Ahora SONY ha tomado cartas en el asunto sacando un nuevo firmware v4.83 que evita la ejecución del webkit. 

La legislación es clara en cuento a los derechos de las licencias, pero sin entrar en el tema de la ilegalidad del uso de los backups, cuando se debe dejar morir a un hardware?

La propia SONY ha declarado que a partir de mayo del 2019 cerrara la PSN+, con lo que los usuarios de PS3 ya no tendran muchos motivos para suscribirse, y poco a poco se cerraran servidores online, con lo que es de esperar que solo podrán ejecutar los blueray que se encuentren en el mercado de segunda mano y las descargas digitales que queden...

es moralmente justo desde esa perspectiva revivirla mediante la posibilidad de firmar contenido digital?


Resultado de imagen de ps3 discontinued

viernes, 28 de septiembre de 2018

BARTOP ARCADE CLASSIC

Con la crisis de los 40 me decidi a realizar una maquina recreativa, ante todo remarcar que es una cutre maquina, por dinero, tiempo y la familia...intento escaquearme por las noches al trastero a darle caña, pero con dos peques y una un bebe, es dificil, menos mal que mi costilla me lo consiente...a veces....

ANTECEDENTES:
Todo empezó cuando iba a tirar un viejo PC que no funcionaba...se me ocurrió abrirlo y observe que la placa tenía dos condensadores cascados...

asi que se me ocurrio cambiarlos todos y asi lo hice...y zas la placa revivió


asi que me encontre con un athlon xp 2800+, 2 gb de memoria y 250gb de disco en una placa dfi ultra nf2...y me dije, que hago con esto....pues una bartop para las peques y sobre todo el peque grande...

Como soy cutre, tenía por el trastero también tablas de cuadros dm de 10mm que me sobro de no sé que narices, así que me puse a montarla sobre este tablero.

MODELO: BARTOP
Tenia en cuenta que quería algo ligero, para llevarla (ahora me doy cuenta que con un pc dentro y un monitor de 19" va a ser pesada), y también algo para que pudiesen jugar cómodos dos adultos, asi que seria de 55mm.

Rebuscando por internet encontre este y otros foros, y empece mi andadura...

Para el diseño me guie por koenig y la starcade de rolfebox, añadiendo cosas de este foro que encontre por aqui...
http://www.koenigs.dk/mame/eng/stepweecade.htm
http://www.instructables.com/id/2-Player-Bartop-Arcade-Machine-Powered-by-Pi/

si alguien quiere los planos modificados se los paso, pero vamos que solo modifique el ancho de la máquina sobre los planos de la starcade, sobre el papel cogen bien el monitor de 19" y la placa base con fuente ATX.



El monitor lo cambie porque me pareció ridículo, era uno de 15" que tenia por ahí, al final conseguí otro en wallapop de segunda o quinta pata por 10€, es un hyundai x19 formato 4:3 con dos altavoces de 2w. el sonido no lo sacare de ahí usare un ampli y otros altavoces de PC...

MANOS A LA OBRA

  • herramientas caseras use (banco de trabajo, tornillo de banco, escuadras, sargentos, brocas varias, taladro, accesorio lijador taladro, caladora, pequeña herramienta y atornillador eléctrico)...y mucha escoba y recogedor...
  • como base elegí tablero MDF de 10mm, renunció al T-molding, pero tengo pensado poner molduras tipo U de coche de 10mm.

Tras dos noches


Tras una mañana de trabajo, este es el resultado:






aprendí que para el marcianito en tablero de 10mm hay que separar mas la distancia de los agujeros o se rompe...ya lo reparare con masilla




Fallos que veo: cantos en 45 grados, ni idea que la caladora podía hacerlos...ahora se que si,

por ese fallo antes de pintar tendré que rellenar con masilla o cola termica la parte que une la tapa trasera con la superior, asi como el CPO y la parte inferior de este...

Otra noche y he terminado el hueco en la tapa para la fuente de alimentación y la ventilación de la parte de arriba, con pacman y un fantasma...

Me voy a poner con la pintura, como soy reacio a ir al leroy merlin, he estado en la tienda de pinturas del barrio, y el dependiente (de los que llevan pintura hasta detrás de las orejas) me ha dado una pintura esmalte al agua satinada que dice que no necesita imprimación para el DM, que con lijarla bien, ya agarra, una capa 12 horas y otra después...

me parece raro que no necesite imprimación, cuando he leído que el DM chupa lo suyo....pero el tipo parece entender bastante... y al final tenia razon...

la pintura es esta: https://www.titanlux.es/es/productos/producto/unilak-esmalte-laca-universal

esto va tomando forma, ya esta pintada, no ha quedado tan mal, solo pequeños defectos por usar madera reciclada... ahora me doy cuenta de un pequeño error de diseño, la tapa superior no deja espacio superior con los laterales, así que no podre poner un canto de pvc bonito...

ya tengo el metacrilato con lo que ahora solo falta poner los controles y encargar vinilos...



La parte de los controles me la he saltado, porque es relativamente facil...y hay miles de tutoriales, yo elegi unos de aliexpress...

Los vinilos para la decoracion los encargue en pixartprinting, vinilos con brillo y diseñados por mi en plantillas de photoshop.

Son vinilos de pegar normales y la propia presión del metacrilato los fijan...

Al final gracias al los tuneadores de coches encontré una moldura para dm10.

pongo dos vídeos de como ha quedado la maquina, el software usado es el MAXIMUS ARCADE.







REGULAR VELOCIDAD VENTILADOR SEGUN TEMPERATURA PLAYSTATION 3


Esta entrada esta basada en el trabajo de David Losada:

http://miqueridopinwino.blogspot.com/2016/08/diy-evita-problemas-de-calentamiento-PS3.html

David Losada, al que debo el post, ha ideado esta fantástica solución, mediante un sencillo chip de poco mas de 2 euros y programación se consiga regular el ventilador de las PS3 o cualquiera que este controlado por pulsos (PWM)

Al principio las videoconsolas no contaban con procesadores que generasen excesivo calor, por lo que muy pocas llevaban ventiladores, con la aparición de la PS2 y de la XBOX se cambio el diseño, era necesario evacuar el calor que generaban los procesadores, y para ello se dotaron de amplios disipadores con ventiladores...

Las consolas están destinadas a ser un centro de juegos y generalmente se ponen en la sala de estar, cuando salieron las primeras PS3 muchos usuarios se quejaron del alto ruido que generaban al calentarse...Sony cambio el diseño y saco los modelos slim y superslim..

En las primeras PS3 la alta temperatura dañaba las soldaduras del procesador (soldaduras que de fabrica tampoco eran las mejores), el resto de PS3 sufren tambien de calentamientos que al cabo de pocos años pasa factura.

Como otros periféricos como los PCs, la PS3 tiene tambien un ventilador regulado por pulsos PWM,


Hay gente que ha regulado el ventilador de forma fija para que vaya siempre más acelerado (con una resistencia en el cable gris conectado a los 12V, regulando a 1V aprox., o bien con un potenciómetro para hacerlo manualmente), pero no es la mejor solución ya que no tiene en cuenta la temperatura del procesador (que puede variar mucho según la temperatura ambiente), y aunque funciona, al tener que cubrir todos los casos, suele quedar más ruidoso.


Para este mod se va a usar el chip attiny85 de Atmel. Es un chip se puede programar fácilmente con Arduino.


Materiales
1. Módulo Attiny85 Digispark Digispark (placa derivada de Arduino, con conexión USB). Esta placa es pequeña, económica y compatible con el IDE ARDUINO. Por su dimensiones es perfecta para desarrollos que requieran poco espacio, cuenta con 6 pines I/O, dos de los cuales son utilizados durante la carga por USB. 
  • Alimentación externa 5v­12v 
  • Corriente máxima 500 mA 
  • Comunicación USB, I2C(UART Sof.) 
  • PWM 3 Canales ADC 4 
  • Canales Memoria 8K (2 para bootloader ) 
  • Recomendaciones: Usar alimentación externa inferior a 12V.






2. sensor de temperatura para regular la línea PWM (cable gris) del ventilador de la PS3 slim entre 0,8V y 1,3V

En la siguiente foto vemos los cables ya soldados. 


En el pin 4 tenemos la regulación PWM (cable amarillo), en el 2 un lado del sensor (por el otro lado la resistencia que necesita a masa) y el otro lado del sensor a 5V out del chip. 


Y la alimentación conectada directamente a la alimentación del ventilador (el regulador integrado admite entre 6 y 15V).

Se ha soldado directamente la resistencia 6K8 que necesita este sensor NTC  por la parte de atrás de esta pequeña placa:.

Una vez programado (el programa Arduino esta al final de este tutorial), se procede a instalarlo.

Una vez que la tengamos la PS3 sin la carcasa superior, podremos ver los tres cables que van de la placa al ventilador. El rojo es el positivo +12V, el negro es masa o -12V y el gris es el de regulación de voltaje por anchura de pulsos.



Cortamos el gris, aislando el trozo que viene desde la placa base con un poco de cinta aislante para evitar que toque cualquier parte y se produzca un indeseado corto. La parte que nos interesa es la que sale del ventilador, y es sobre la que vamos a regular el ventilador. 


Para conectar los cables rojo y negro sólo los he pelado un poco sin llegar a cortarlos, para aplicarles un poco de estaño con el soldador y alimentar con ellos el ATTINY85.

ES MUY IMPORTANTE colocar bien el sensor de temperatura, para que haga buen contacto con el disipador del RSX, de ello depende que se regule correctamente. Yo lo he sujetado con silicona (puede aguantar temperaturas altas) una vez que he comprobado que todo funcionaba bien: 


Se escamotean bien los cables y se cierra la consola de nuevo.

PROGRAMA

Instrucciones de instalación del software: http://digistump.com/wiki/digix/tutorials/software

El Digispark funciona igual al resto de productos Arduino, excepto que durante la carga del software no hay que conectar el Digispark al inicio. Hay que pulsar antes el botón de subida y en el cuadro inferior de estado se pedirá que conectemos el Digispark, en ese momento se debe enchufar o desconectar y conectar nuevamente. Empezará el progreso de carga y cuando termine ejecutará inmediatamente el código introducido en el Digispark.

Al conectarlo siempre espera 5 segundos antes de que el código se ejecute. Este retardo es la comprobación para determinar si se está tratando de programar.
/*  ==================================================================

  Sketch control ventilador por PWM con ATTiny85 económico termistor NTC.
  Configurado para ventilador Playstation 3; con autolimpieza al arranque.
  
  Autor: David Losada, basado en trabajos de Rafael Torrales y Antonio Moles.
  Version: 1.32 (Ahora la autolimpieza la hace cada vez que se enciende la consola)
  Fecha: 20 de julio de 2016. Última actualización 7/02/2017
  Compila con Arduino 1.6.9

    ==================================================================   */

#include  //Instalar esta rutina si no la tenéis; está en el repositorio general de Arduino 1.6.9
//Si anduviéramos cortos de memoria, habría que eliminar la librería EEPROM y el código relacionado

//******************* A CAMBIAR SEGÚN TU CONFIGURACIÓN ********************************
//Control temperatura
const float resistor = 6800; //El valor en ohmnios de la resistencia del termistor a 25ºC
const float voltage = 5.0; // El voltaje real en el punto 5Vcc de tu placa Arduino

//Deltas de temperatura
int tempMin = 20; //Temperatura mínima de activación del ventilador
int tempMax = 37; //temperatura a la que funcionará al 100%
//0,85V=velocidad mínima de vent. PS3 y 1,25V vel. máxima
float PWMMin = 0.65; //Voltaje PWM de funcionamiento con temp. mínima (el de la PS3 se pone en marcha con 0,8V)
float PWMMax = 1.3; //Voltaje PWM de funcionamiento al máximo ventilador
//Hay que tener en cuenta que los voltajes se ajustan a las temperaturas pero no se ciñen a ellas,
//es decir, que a tempMin el voltaje será PWMMin, pero a menor temp. el voltaje bajará, y lo mismo
//con el voltaje máximo; si sigue subiendo la temperatura, el voltaje PWM aumentará en consecuencia,
//hay que tener cuidado porque podríamos dar más voltaje del necesario al ventilador

//Definición pines digitales para activar relés
int TempPIN=1; //En el ATTiny85 las entradas son (1)=P2; (2)=P4; (3)=P3; (0)=P5 -> Pin al que conectamos el termistor
int motorPWM=4; //Pin PWM de control motor; P0, P1, P4 el en ATTiny85
const int frecseg = 1; //Tiempo en segundos entre cada ejecución del programa (recomendado entre 1 y 5 segundos)
int ledPIN=1; //Según la placa, en este caso el LED del ATTiny85 B es el 1

//Variables
float Temp= 0; //Valor entrada sensor temp
int fanSpeed= 0; //Velocidad de motor
long timeLED=0; //Para almacenar tiempo
unsigned long millisInicio=0; //Para comprobar paso de horas

//Parte del cálculo temperatura
//Para ahorrar cálculos lo definimos como constante en esta parte del programa
const float K= 273.15; //Para pasar a grados Kelvin
const float e = 2.718281828459045; //Constante matemática 
//const float B = log(RPto2/RPto1)/(1/(TPto2+K)-(1/(TPto1+K))); //Valor Beta de tu termistor calculado de dos puntos
const float B = 3850; //Valor Beta del Datasheet; comentar esta línea si se meten los datos de los dos puntos
const float unodivr = 1/(resistor * pow(e,(-B/298.15))); //Con pow elevamos e al resultado

float T = 0; //Declaramos la variable Temperatura
int grados, decimas; //Para ponerle coma al resultado (en español)

void setup()   { 
//Resetea la EEPROM la primera vez que la usamos
EEPROM.setMemPool(0,512); //Establecemos inicio y tamaño de EEPROM de la tarjeta utilizada
EEPROM.setMaxAllowedWrites(128); //Mínimo para que pueda hacerse el primer borrado completo
//rellenamos de 0 los datos de EEPROM
//Attiny85 tiene 512 Bytes de EEPROM; ajustar según el que uséis
if (EEPROM.readLong(508)!=7091976) { //En ese punto, preferiblemente al final, guardo un valor para saber si ya la he reseteado
  for(int i=0; i<502 -="" 0="" 10000="" 10="" 16="" 1:="" 255="" 25ms="" 2:="" 2="" 3:="" 3="" 5="" 5v="" :="" a="" acar="" acemos="" activaci="" actuamos="" al="" alimentar="" alor="" anal="" analogwrite="" and="" ara="" arte="" attiny85="5V" attiny="" aumente="" ax="" b="(RPto2/RPto1);//(1/(TPto2+K)-(1/(TPto1+K)));" bajar="" basandose="" beta.="" calcula="" calcular="" caracteres="" coja="" comprobando="" con="" consecuencia="" consola="" convertimos="" correcta="" corresponde="" de="" dejamos="" del="" delay="" desde="" disponible="" divisor="" ecesitamos="" ecoge="" ecuaci="" eeprom.update="" eeprom="" efinir="" egla="" el="" elocidad:="" emp:="" emp="" emppin="" en="" encendido:="" enciende="" entre="" erial.print="" erial.println="" espera="" estar="" fanspeed="" filas="" final="" float="" for="" forma="" gico="" ha="" haga="" i="" iempo="" if="" in="" indicativo="" inicializado="" input="" int="" justar="" la="" lcd.begin="" lecturas="" led="" ledpin="" leemos="" limpieza="" lmacenamos="" lo="" loop="" los="" ltima="" m="" media="" mediante="" medias="" mero="" millisinicio="millis();" modifica="" motor="" motorpwm="" n="" no="" o="" omprobamos="" onemos="" onvertimos="" orrado="" output="" pantalla="" para="" parar="" parpadear="" parte="" pines="" pinmode="" ponemos="" por="" posici="" progresiva="" puerto="" pwm="" pwmmax="(255*PWMMax)/5;" pwmmin="(255*PWMMin)/5;" que="" r1="r1a" r1a="(voltage*float(resistor))/v2;" rango="" resistance="" resistencia="" resistor="" revoluciones="" sacar="" se="" seg="" segundos="" serial="" so="" sobre="" speramos="" steinhart-hart="" t="B/log(r1*unodivr);" tama="" tarda="" temp="" temperatura="" tempmax="" tempmin="" tenemos="" terminado="" thermistor="" tiempo="" timeled="" tope="" total="" tres="" un="" v2="(R2*V)/(R1+R2)" valor="" valores="" veces="" velocidad="" ventilador="" void="" voltage="4.83" voltaje="" voltios.="" voltios="" voltmax="" volvemos="" x="" ximas="" y="" ya="">millis()) { //Cuando pasen 50 dias resetear
    timeLED=millis();
  }
  if ((millis()-timeLED)>frecseg*1000*2) {
      analogWrite(ledPIN,100); //enciende LED indicando funcionamiento
      timeLED=millis();
  }
    if ((millis()-timeLED)>frecseg*1000) {
      analogWrite(ledPIN,0); //apaga led
    }

//Si ha pasado una hora desde la puesta en marcha, añadimos una hora
// al contador de la EEPROM, para estadística
if ((millis()-millisInicio)>3600000) { //Ha pasado una hora
  millisInicio=millis(); 
  EEPROM.update(0,EEPROM.readLong(0)+1); //Añadimos una hora
}

  delay(frecseg*1000); //Ponemos en espera al Atmel
}

// *************** RUTINA MAP MEJORADA (admite fracciones)
double doubleMap(double x, double in_min, double in_max, double out_min, double out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
  

<255 br="" i="i+25)"><5 br="" nbsp="" x=""><--final br="">