ajuste firmware pulverizador driver 2 canais
This commit is contained in:
parent
e03d84b498
commit
23a64b93ec
|
|
@ -609,11 +609,8 @@ namespace AgroBase.Models.Modules
|
||||||
Mandatorio = true,
|
Mandatorio = true,
|
||||||
Funcoes = new List<FuncoesPinout>()
|
Funcoes = new List<FuncoesPinout>()
|
||||||
{
|
{
|
||||||
FuncoesPinout.ENA,
|
FuncoesPinout.IN1,
|
||||||
FuncoesPinout.CS,
|
FuncoesPinout.IN2,
|
||||||
FuncoesPinout.INA,
|
|
||||||
FuncoesPinout.INB,
|
|
||||||
FuncoesPinout.PWM,
|
|
||||||
},
|
},
|
||||||
ValoresLeituras = new List<SensorValoresLeituraModel>()
|
ValoresLeituras = new List<SensorValoresLeituraModel>()
|
||||||
{
|
{
|
||||||
|
|
@ -660,11 +657,8 @@ namespace AgroBase.Models.Modules
|
||||||
Mandatorio = true,
|
Mandatorio = true,
|
||||||
Funcoes = new List<FuncoesPinout>()
|
Funcoes = new List<FuncoesPinout>()
|
||||||
{
|
{
|
||||||
FuncoesPinout.ENA,
|
FuncoesPinout.IN1,
|
||||||
FuncoesPinout.CS,
|
FuncoesPinout.IN2,
|
||||||
FuncoesPinout.INA,
|
|
||||||
FuncoesPinout.INB,
|
|
||||||
FuncoesPinout.PWM,
|
|
||||||
},
|
},
|
||||||
ValoresLeituras = new List<SensorValoresLeituraModel>()
|
ValoresLeituras = new List<SensorValoresLeituraModel>()
|
||||||
{
|
{
|
||||||
|
|
@ -1399,22 +1393,13 @@ namespace AgroBase.Models.Modules
|
||||||
(byte)(conectar ? 1 : 0),
|
(byte)(conectar ? 1 : 0),
|
||||||
(byte)Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha,
|
(byte)Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha,
|
||||||
(byte)Sensor_ID_Num,
|
(byte)Sensor_ID_Num,
|
||||||
(byte)(pinout.Pinos.FirstOrDefault(x => x.ComponenteID == ID && x.Funcao == FuncoesPinout.ENA)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
(byte)(pinout.Pinos.FirstOrDefault(x => x.ComponenteID == ID && x.Funcao == FuncoesPinout.IN1)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
||||||
(byte)(pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.CS)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
(byte)(pinout.Pinos.FirstOrDefault(x => x.ComponenteID == ID && x.Funcao == FuncoesPinout.IN2)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
||||||
};
|
|
||||||
|
|
||||||
List<byte> config2 = new List<byte>()
|
|
||||||
{
|
|
||||||
(byte)Componente,
|
|
||||||
(byte)(pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.INA)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
|
||||||
(byte)(pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.INB)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
|
||||||
(byte)(pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.PWM)?.Pino ?? PinoutUtils.PINO_INVALIDO),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return new List<(CanMessagePosicaoDados, byte[])>()
|
return new List<(CanMessagePosicaoDados, byte[])>()
|
||||||
{
|
{
|
||||||
(CanMessagePosicaoDados.Config1, config1.ToArray()),
|
(CanMessagePosicaoDados.Config1, config1.ToArray()),
|
||||||
(CanMessagePosicaoDados.Config2, config2.ToArray()),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -434,7 +434,9 @@ namespace AgroBase.Models.Modules
|
||||||
LeituraAngulo,
|
LeituraAngulo,
|
||||||
Cooler,
|
Cooler,
|
||||||
QtdPulsos,
|
QtdPulsos,
|
||||||
Periodo
|
Periodo,
|
||||||
|
IN1,
|
||||||
|
IN2
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PinoutUtils
|
public static class PinoutUtils
|
||||||
|
|
|
||||||
|
|
@ -108,8 +108,8 @@ BicoPulverizador_v2* ObterBicoPorId(uint8_t idNum) {
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#pragma region BOMBAS
|
#pragma region BOMBAS
|
||||||
BombaPressurizadora_v2 sBMB_Linha("BMBLN", 51, 40, 38, 37, 36, 39, TiposBarramentos::CONTROLADOR, 0, &sPRS_Linha);
|
BombaPressurizadora_v2 sBMB_Linha("BMBLN", 51, 36, 1, 37, 2, TiposBarramentos::CONTROLADOR, Sentido::Horario, &sPRS_Linha);
|
||||||
BombaPressurizadora_v2 sBMB_Agitador("BMBAGT", 52, 6, 7, 15, 16, 17, TiposBarramentos::CONTROLADOR, 1);
|
BombaPressurizadora_v2 sBMB_Agitador("BMBAGT", 52, 38, 3, 39, 4, TiposBarramentos::CONTROLADOR, Sentido::Horario);
|
||||||
|
|
||||||
BombaPressurizadora_v2* ObterBombaPorId(uint8_t idNum) {
|
BombaPressurizadora_v2* ObterBombaPorId(uint8_t idNum) {
|
||||||
switch (idNum) {
|
switch (idNum) {
|
||||||
|
|
|
||||||
|
|
@ -12,24 +12,22 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
BombaPressurizadora_v2(
|
BombaPressurizadora_v2(
|
||||||
const String& id,
|
const String& id,
|
||||||
uint8_t idNum,
|
uint8_t idNum,
|
||||||
int pinoEN,
|
int pinoIN1,
|
||||||
int pinoCS,
|
int canalIN1,
|
||||||
int pinoINA,
|
int pinoIN2,
|
||||||
int pinoINB,
|
int canalIN2,
|
||||||
int pinoPWM,
|
|
||||||
TiposBarramentos barramento = CONTROLADOR,
|
TiposBarramentos barramento = CONTROLADOR,
|
||||||
int canalPwm = 0,
|
Sentido sentido = Sentido::Horario,
|
||||||
SensorPressao_v2* sensor = nullptr,
|
SensorPressao_v2* sensor = nullptr,
|
||||||
int pressaoInicial = 0
|
int pressaoInicial = 0
|
||||||
)
|
)
|
||||||
: _ID(id),
|
: _ID(id),
|
||||||
ID_Num(idNum),
|
ID_Num(idNum),
|
||||||
_pinoEN(pinoEN, barramento, _OUTPUT),
|
_pinoIN1(pinoIN1, barramento, _PWM),
|
||||||
_pinoCS(pinoCS, barramento, _INPUT),
|
_pinoIN2(pinoIN2, barramento, _PWM),
|
||||||
_pinoINA(pinoINA, barramento, _OUTPUT),
|
_canalIN1(canalIN1),
|
||||||
_pinoINB(pinoINB, barramento, _OUTPUT),
|
_canalIN2(canalIN2),
|
||||||
_pinoPWM(pinoPWM, barramento, _PWM),
|
_sentido(sentido),
|
||||||
_canal(canalPwm),
|
|
||||||
sensorPressao(sensor),
|
sensorPressao(sensor),
|
||||||
_PressaoSP(pressaoInicial) {
|
_PressaoSP(pressaoInicial) {
|
||||||
}
|
}
|
||||||
|
|
@ -37,13 +35,13 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
String _ID;
|
String _ID;
|
||||||
uint8_t ID_Num = 0;
|
uint8_t ID_Num = 0;
|
||||||
|
|
||||||
PinoModel _pinoEN;
|
PinoModel _pinoIN1;
|
||||||
PinoModel _pinoCS;
|
PinoModel _pinoIN2;
|
||||||
PinoModel _pinoINA;
|
|
||||||
PinoModel _pinoINB;
|
|
||||||
PinoModel _pinoPWM;
|
|
||||||
|
|
||||||
int _canal = 0;
|
int _canalIN1 = 1;
|
||||||
|
int _canalIN2 = 2;
|
||||||
|
|
||||||
|
Sentido _sentido = Sentido::Horario;
|
||||||
|
|
||||||
float _Kp = 3.0;
|
float _Kp = 3.0;
|
||||||
float _Ki = 2.2;
|
float _Ki = 2.2;
|
||||||
|
|
@ -79,23 +77,20 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
|
|
||||||
MalhaFechada = (sensorPressao != nullptr);
|
MalhaFechada = (sensorPressao != nullptr);
|
||||||
|
|
||||||
_pinoEN.Conectar(false);
|
_pinoIN1.Conectar(0);
|
||||||
_pinoCS.Conectar();
|
if (_pinoIN1.Definido()) {
|
||||||
_pinoINA.Conectar(false);
|
ledcSetup(_canalIN1, 1000, 10);
|
||||||
_pinoINB.Conectar(true);
|
ledcAttachPin(_pinoIN1.num, _canalIN1);
|
||||||
_pinoPWM.Conectar(0);
|
ledcWrite(_canalIN1, 0);
|
||||||
|
}
|
||||||
if (_pinoPWM.Definido()) {
|
_pinoIN2.Conectar(0);
|
||||||
ledcSetup(_canal, 1000, 10);
|
if (_pinoIN2.Definido()) {
|
||||||
ledcAttachPin(_pinoPWM.num, _canal);
|
ledcSetup(_canalIN2, 1000, 10);
|
||||||
ledcWrite(_canal, 0);
|
ledcAttachPin(_pinoIN2.num, _canalIN2);
|
||||||
|
ledcWrite(_canalIN2, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Iniciado =
|
Iniciado = _pinoIN1.Definido() && _pinoIN2.Definido();
|
||||||
_pinoEN.Definido() &&
|
|
||||||
_pinoINA.Definido() &&
|
|
||||||
_pinoINB.Definido() &&
|
|
||||||
_pinoPWM.Definido();
|
|
||||||
|
|
||||||
if (Iniciado) {
|
if (Iniciado) {
|
||||||
_EstadoControle = Estado::Desligado;
|
_EstadoControle = Estado::Desligado;
|
||||||
|
|
@ -116,13 +111,11 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
}
|
}
|
||||||
|
|
||||||
_EstadoControle = Estado::Desligado;
|
_EstadoControle = Estado::Desligado;
|
||||||
AplicarSaida(false, 0);
|
ledcWrite(_canalIN1, 0);
|
||||||
|
ledcWrite(_canalIN2, 0);
|
||||||
|
|
||||||
_pinoPWM.Desconectar();
|
_pinoIN1.Desconectar();
|
||||||
_pinoEN.Desconectar();
|
_pinoIN2.Desconectar();
|
||||||
_pinoCS.Desconectar();
|
|
||||||
_pinoINA.Desconectar();
|
|
||||||
_pinoINB.Desconectar();
|
|
||||||
|
|
||||||
PotenciaLeitura = 0;
|
PotenciaLeitura = 0;
|
||||||
PercentualPotenciaLeitura = 0;
|
PercentualPotenciaLeitura = 0;
|
||||||
|
|
@ -181,7 +174,7 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AplicarSaida(_EstadoControle == Estado::Desligado, PotenciaLeitura);
|
AplicarSaida(_EstadoControle == Estado::Ligado, PotenciaLeitura);
|
||||||
AtualizarLeitura();
|
AtualizarLeitura();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -251,19 +244,13 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
void AplicarSaida(bool ligado, int pwm) {
|
void AplicarSaida(bool ligado, int pwm) {
|
||||||
if (!Iniciado && pwm != 0) return;
|
if (!Iniciado && pwm != 0) return;
|
||||||
|
|
||||||
_pinoEN.set(ligado);
|
if (!ligado) {
|
||||||
|
|
||||||
if (ligado) {
|
|
||||||
_pinoINA.set(false);
|
|
||||||
_pinoINB.set(true);
|
|
||||||
} else {
|
|
||||||
_pinoINA.set(false);
|
|
||||||
_pinoINB.set(false);
|
|
||||||
pwm = 0;
|
pwm = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pwm = LimitarPWM(pwm);
|
pwm = LimitarPWM(pwm);
|
||||||
ledcWrite(_canal, pwm);
|
ledcWrite(_canalIN1, _sentido == Sentido::Horario ? pwm : 0);
|
||||||
|
ledcWrite(_canalIN2, _sentido == Sentido::Horario ? 0 : pwm);
|
||||||
}
|
}
|
||||||
|
|
||||||
int LimitarPWM(int valor) {
|
int LimitarPWM(int valor) {
|
||||||
|
|
@ -275,7 +262,7 @@ class BombaPressurizadora_v2 : public ComponenteCAN {
|
||||||
void AtualizarLeitura() {
|
void AtualizarLeitura() {
|
||||||
if (!Iniciado) return;
|
if (!Iniciado) return;
|
||||||
|
|
||||||
EstadoLeitura = _pinoEN.get() ? Ligado : Desligado;
|
EstadoLeitura = (PotenciaLeitura > 0 && _EstadoControle == Estado::Ligado) ? Estado::Ligado : Estado::Desligado;
|
||||||
PercentualPotenciaLeitura = (RampaMax > 0)
|
PercentualPotenciaLeitura = (RampaMax > 0)
|
||||||
? (PotenciaLeitura / (double)RampaMax) * 100.0
|
? (PotenciaLeitura / (double)RampaMax) * 100.0
|
||||||
: 0.0;
|
: 0.0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue