Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa Próxima revisión Ambos lados, revisión siguiente | ||
proyectos:cochesolar2022 [2022/06/14 09:43] Sergio Alvariño |
proyectos:cochesolar2022 [2022/06/20 09:40] Sergio Alvariño |
||
---|---|---|---|
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 ===== | ||
Línea 17: | Línea 15: | ||
Servo motor; | Servo motor; | ||
- | int pin = 5; | + | int pin = 5; |
- | int pin2= 18; | + | int pin2= 18; // entrada de acelerador |
- | int led= 2; | + | int led= 2; // define led interno y externo(si procede) |
unsigned long direccion; | unsigned long direccion; | ||
unsigned long acelerador; | unsigned long acelerador; | ||
- | unsigned long restadegiro; | + | unsigned long restadegiro; |
- | unsigned long motorinterior; | + | // |
- | unsigned long receptor; | + | unsigned long motorinterior; |
- | unsigned long resta=0 ; ///registro donde ajustaremos la cuantia de la atenuacion | + | // |
- | unsigned long modulado; | + | unsigned long receptor; |
- | unsigned long potActual; | + | unsigned long resta=0 ; // registro donde ajustaremos la cuantia de la atenuacion |
- | float operando1=20; | + | unsigned long modulado; |
+ | unsigned long potActual; // factor de potencia de la ultima medida | ||
+ | float operando1 = 20; | ||
float operando2; | float operando2; | ||
float operando3; | float operando3; | ||
- | float caidaV; | + | float caidaV; |
- | float VoltMinima; | + | float VoltMinima; |
- | float VoltMaxima=3300; | + | float VoltMaxima = 3300; // tension maxima registrada partimos de 3300 aprox=> |
- | float voltaje=3300; | + | float voltaje = 3300; // tension medida en panel (antes588) |
- | float voltajeanterior; | + | float voltajeanterior; |
- | float factorpot=1; | + | float factorpot = 1; |
- | float factorRc=0; | + | float factorRc = 0; // valor del factor de ajuste de la atenuacion en funcion de la señal del receptor |
- | float factorV=0; | + | float factorV = 0; |
void setup() { | void setup() { | ||
- | // | + | |
- | // motorizquierdo.writeMicroseconds(1500); | + | // motorizquierdo.writeMicroseconds(1500); |
- | // Serial.begin(9600); | + | // Serial.begin(9600); |
pinMode(pin, | pinMode(pin, | ||
- | | + | |
motor.writeMicroseconds(1500); | motor.writeMicroseconds(1500); | ||
- | // Serial.begin(9600); | + | |
pinMode(pin2, | pinMode(pin2, | ||
- | | + | |
- | digitalWrite(led, | + | digitalWrite(led, |
- | | + | delay (100); |
- | | + | digitalWrite(led, |
- | | + | delay (100); |
- | | + | digitalWrite(led, |
- | | + | delay (100); |
- | | + | digitalWrite(led, |
} | } | ||
void loop() { | void loop() { | ||
- | + | | |
- | | + | |
lectura:; | lectura:; | ||
- | | + | |
- | voltaje = analogRead(A0); | + | voltaje = analogRead(A0); |
- | operando2=voltaje/ | + | operando2= voltaje/ |
- | operando3=VoltMaxima/ | + | operando3= VoltMaxima/ |
- | VoltMaxima=operando3*19+operando2; | + | VoltMaxima= operando3*19 + operando2; |
- | if(operando1> | + | if (operando1> |
- | //receptor = pulseIn(pin, | + | //receptor = pulseIn(pin, |
- | // | + | // |
bucle:; | bucle:; | ||
- | voltaje = analogRead(A0); | + | voltaje = analogRead(A0); |
- | | + | VoltMaxima = (3300); |
- | | + | acelerador = pulseIn(pin2, |
- | caidaV=VoltMaxima-voltaje; | + | caidaV = VoltMaxima - voltaje; |
- | | + | // Serial.println(caidaV); |
- | | + | if (voltaje> |
- | // if (voltaje> | + | // if (voltaje> |
- | if (caidaV> | + | if (caidaV> |
- | if (caidaV> | + | if (caidaV> |
- | if (resta> | + | if (resta> |
goto salta; | goto salta; | ||
- | recupera:; | + | |
- | if (resta< | + | recupera:; |
- | resta=resta-0.5; | + | if (resta< |
- | if (caidaV< | + | resta=resta-0.5; |
- | if (caidaV< | + | if (caidaV< |
- | | + | if (caidaV< |
- | // Serial.println(resta); | + | |
- | | + | salta:; |
- | | + | // Serial.println(resta); |
- | modulado=acelerador-resta; | + | if (resta> |
- | | + | if (resta< |
- | if (modulado> | + | modulado = acelerador - resta; |
- | // | + | if (modulado< |
- | modulado=acelerador; | + | if (modulado> |
+ | // resta=0; | ||
+ | modulado=acelerador; | ||
} | } | ||
- | motor.writeMicroseconds(modulado); | + | |
- | + | ||
- | // Serial.println(modulado); | + | // Serial.println(modulado); |
- | + | ||
- | | + | voltajeanterior = voltaje ; |
- | goto bucle; | + | goto bucle; |
} | } | ||
+ | |||
</ | </ | ||
+ | |||
+ | {{: | ||
+ | |||