Estou fazendo testes com 3 micro processadores, o Arduino nano, STM 32 e o ESP 32.
Tive problemas com leitura de controle de fluidos e achei os resultados um pouco estranhos, por isso resolvi fazer testes utilizando um osciloscópio.
A principio resolvi fazer um simples teste com a função delayMicroseconds com pinout high de 1.2 ms em cada um dos três.
Os Arduino (UNO e NANO), ESP32 Wroom estavam precisos com a leitura do osciloscópio mas o STM32 precisou de um fator de correção para diminuir o tempo que estava acima de 1.2 ms.
Estaria eu utilizando um pino errado (PB5) para executar esta função?
Segue abaixo o exemplo do código utilizado no arduino ide
Código: Selecionar todos
// ################# Definicao de constantes
#define FUEL PB5 // output DO PULSO
// ################# Declaracao de variaveis
float PULSO = 1.2 ; // TEMPO DE DURAÇÃO DO PULSO EM MS a ser convertido em microsegundos
float FATOR = 0.85; // fator de correção de 0,85 para ajustar o tempo lido no osciloscópio
float PULSOM = PULSO * 1000 * FATOR ; // TEMPO ESTADO HIGH
do
{
digitalWrite(FUEL, HIGH);
delayMicroseconds(PULSOM);
digitalWrite(FUEL, LOW);
delay(500); // TEMPO DE ESTADO LOW
}
while (1 == 1);