Meu post importado de outro forum.
Um salve a todos do forum.
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
// ################# 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);
###############################################################################
Tags:
Bom dia Carlos,
Acho que esta havendo um mal entendido.
Você informou RC interno . Eu entendi que você estava usando o clock interno RC .
Na verdade para o clock do seu STM32 deve usar um cristal.
Qual a frequencia do cristal (clock) da sua placa. Qual é a sua placa? envie o link por favor.
Como eu já havia informado, essas placas chinesas usam cristais baratos e de baixa qualidade. A frequência do clock pode ter desvios expressivos.
Você chegou a medir a frequência do clock (cristal) com osciloscópio?
Todos os circuitos de temporização do Micro-controlador dependem do clock (cristal).
Se a frequência do cristal estiver errada, todos os timers terão o mesmo erro.
O teste do STM32 foi efetuado com o fator de correção = 1 ?
[ ]´s
Neste gráfico não, mas fiz com fator 1 e mediu 2200 useg
RV
10% de erro para mais.
Ou é erro do compilador Arduíno IDE para STM_32, ou é cristal ou você tem um STM32 que veio do mesmo lote que o meu rs...
Obrigado pelos testes.
Qual seria o próximo passo?
Notificar algum desenvolvedor do Arduino ou da STM?
Vendo o cristal oscilador dele com osciloscópio de um ciclo a cada 0,12 useg,
o que resulta em +- 8,333 MHz.
RV
isso ai.
Testei o seu sketch para nano, no ESP8266, mudando os port para 4 e 5.
O resultado foi : tempo do pulso 2,004 μseg.
O ESP8266 tem um cristal muito fera de 26 MHz, que fica dentro do modulo revestido pela blindagem.
2004 total. Erro de 4 em 2000 = 2%%
RV
Mas se a frequência do cristal for maior que a indicada, isso significa que timer interno ficou ligeiramente mais rápido e partindo deste pensamento, o delay do pulso deveria ser menor que 2 ms e não o inverso dos testes que ficou 10% mais lento.
Então imagino que possa ocorrer algum problema no compilador.
Existe outro compilador para STM32 que não seja o Arduíno IDE para testar?
A versão é a mesma, só o Arduíno ide que uso é 1.8.5
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por