Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
proyectos:cochesolar2022 [2022/06/14 09:41] – creado Sergio Alvariño | proyectos:cochesolar2022 [2022/08/19 17:08] (actual) – Andrés Luces | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Coche Solar 2022 ====== | ====== Coche Solar 2022 ====== | ||
- | El coche, está diseñado a partir del tren trasero y las manguetas delanteras de un antiguo fórmula 1 escala 1/10 (marca 3racing , modelo F109) es la típica configuración de motor transversal junto al eje rígido que integra un diferencial de bolas en la corona en este caso con ruedas de espuma. El tren delantero se ha ensanchado casi al del panel para aportar estabilidad y al tiempo garantizar el agarre lateral del trasero al dejarlo en su medida original mucho más estrecho. El resto del chasis está hecho con láminas de policarbonato de 3mm de espesor procedentes de recortes (salvados de la basura) sobrantes de la elaboración de mamparas protectoras y que aportan una buena torsión y un peso bastante bajo. Utiliza un servo de dirección básico y de consumo moderado Hitec HS325HB | + | El coche, está diseñado a partir del** **tren trasero** **y las manguetas delanteras de un antiguo fórmula 1 escala 1/10 (marca 3racing , modelo F109) es la típica configuración de motor transversal junto al eje rígido que integra un diferencial de bolas en la corona en este caso con ruedas de espuma. El tren delantero se ha ensanchado casi al del panel para aportar estabilidad y al tiempo garantizar el agarre lateral del trasero al dejarlo en su medida original mucho más estrecho. El resto del chasis está hecho con láminas de policarbonato de 3mm de espesor procedentes de recortes (salvados de la basura) sobrantes de la elaboración de mamparas protectoras y que aportan una buena torsión y un peso bastante bajo. Utiliza un servo de dirección básico y de consumo moderado Hitec HS325HB alimentado por las pilas reglamentarias junto con el receptor y el esp32 que supervisa la tensión procedente del panel y atenúa la señal de control del acelerador (canal 2 del receptor) solo si dicha tensión baja de 18v como pseudo mppt. |
- | Cómo sistema de tracción se utiliza un variador electrónico diseñado para coches de radiocontrol escala 1:8 (tekin rx8) que soportan la alta tensión del panel y también aportan un plus de unas 200 revoluciones más a la rueda en motores con sensores en su configuración del " | + | Cómo sistema de tracción se utiliza un variador electrónico diseñado para coches de radiocontrol escala 1:8 (tekin rx8) que soportan la alta tensión del panel y también aportan un plus de unas 200 revoluciones más a la rueda en motores con sensores en su configuración del " |
- | Lleva un piñón de motor de 13 dientes y una corona de 81 ya sobre el eje de las ruedas traseras. | + | |
El peso total es de unos 2,3kg y en las mejores condiciones hemos llegado a medir unos 25km/h de velocidad máxima. | El peso total es de unos 2,3kg y en las mejores condiciones hemos llegado a medir unos 25km/h de velocidad máxima. | ||
- | |||
===== Software ===== | ===== Software ===== | ||
+ | |||
+ | Este es el programa del Esp32 que supervisa que la tensión del panel no baje de 18v para lo que recibe la señal del acelerador del receptor y la reenvía modificada si es necesario en función de la medida de la tensión del panel a través de un divisor de tensión de tres resistencias: | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | |||
+ | Servo motor; | ||
+ | int pin = 5; // entrada de direccion del receptor | ||
+ | int pin2= 18; // entrada de acelerador | ||
+ | int led= 2; // define led interno y externo(si procede) | ||
+ | unsigned long direccion; | ||
+ | unsigned long acelerador; | ||
+ | unsigned long restadegiro; | ||
+ | // aplicado para restarle velocidad al motor interior de la curva | ||
+ | unsigned long motorinterior; | ||
+ | // menos en el interior de la curva antes de enviarlo | ||
+ | unsigned long receptor; | ||
+ | unsigned long resta=0 ; // registro donde ajustaremos la cuantia de la atenuacion | ||
+ | unsigned long modulado; | ||
+ | unsigned long potActual; // factor de potencia de la ultima medida | ||
+ | float operando1 = 20; | ||
+ | float operando2; | ||
+ | float operando3; | ||
+ | float caidaV; | ||
+ | float VoltMinima; | ||
+ | float VoltMaxima = 3300; // tension maxima registrada partimos de 3300 aprox=> | ||
+ | float voltaje = 3300; // tension medida en panel (antes588) | ||
+ | float voltajeanterior; | ||
+ | float factorpot = 1; // valor del pot de ajuste | ||
+ | float factorRc = 0; // valor del factor de ajuste de la atenuacion en funcion de la señal del receptor | ||
+ | float factorV = 0; // valor del factor de ajuste resultado de restar la tension max y la actual | ||
+ | |||
+ | void setup() { | ||
+ | // motorizquierdo.attach(4); | ||
+ | // motorizquierdo.writeMicroseconds(1500); | ||
+ | // Serial.begin(9600); | ||
+ | pinMode(pin, | ||
+ | motor.attach(15); | ||
+ | motor.writeMicroseconds(1500); | ||
+ | // Serial.begin(9600); | ||
+ | pinMode(pin2, | ||
+ | pinMode(led, | ||
+ | digitalWrite(led, | ||
+ | delay (100); | ||
+ | digitalWrite(led, | ||
+ | delay (100); | ||
+ | digitalWrite(led, | ||
+ | delay (100); | ||
+ | digitalWrite(led, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | VoltMaxima= analogRead(A0); | ||
+ | lectura:; | ||
+ | operando1 = operando1 - 1; | ||
+ | voltaje = analogRead(A0); | ||
+ | operando2= voltaje/ | ||
+ | operando3= VoltMaxima/ | ||
+ | VoltMaxima= operando3*19 + operando2; | ||
+ | if (operando1> | ||
+ | //receptor = pulseIn(pin, | ||
+ | // | ||
+ | |||
+ | bucle:; | ||
+ | voltaje = analogRead(A0); | ||
+ | VoltMaxima = (3300); | ||
+ | acelerador = pulseIn(pin2, | ||
+ | caidaV = VoltMaxima - voltaje; | ||
+ | // Serial.println(caidaV); | ||
+ | if (voltaje> | ||
+ | // if (voltaje> | ||
+ | if (caidaV> | ||
+ | if (caidaV> | ||
+ | if (resta> | ||
+ | goto salta; | ||
+ | |||
+ | recupera:; | ||
+ | if (resta< | ||
+ | resta=resta-0.5; | ||
+ | if (caidaV< | ||
+ | if (caidaV< | ||
+ | |||
+ | salta:; | ||
+ | // Serial.println(resta); | ||
+ | if (resta> | ||
+ | if (resta< | ||
+ | modulado = acelerador - resta; | ||
+ | if (modulado< | ||
+ | if (modulado> | ||
+ | // resta=0; | ||
+ | modulado=acelerador; | ||
+ | } | ||
+ | |||
+ | motor.writeMicroseconds(modulado); | ||
+ | |||
+ | // Serial.println(modulado); | ||
+ | |||
+ | voltajeanterior = voltaje ; | ||
+ | goto bucle; | ||
+ | } | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||