Il y a quelques jours, j'ai reçu le contrôleur avec lequel je veux faire les essais de moteur sur mon tricycle que j'électrise XD.
Voici une photo du modèle avec ses prises :
48V 750W
Pour l'instant la prise qui m'intéresse est la nº5, elle est sensée lire les impulsions produite par un capteur hall placé dans le pédalier.
Je n'ai par contre pas trouvé le nombre d'aimants disposés dans le pédalier.
Pour l'instant, je n'ai pas de pédalier de ce type et je voudrais simuler ce signal.
Il me semble que cela devrait être un signal en créneaux dont la largeur et l'espacement est directement relatif à la vitesse de rotation du pédalier.
En mettant le contrôleur sous tension, il y a entre le fil rouge et noir de la prise nº5 une tension de 3V, j'en conclu que la valeur max lors de l'état haut du créneaux sera de 3V.
La fréquence de rotation d'un pédalier varie (suivant le pédaleur ) de 0 t/min à 150t/min, admettons qu'il puisse y avoir 2,4,8 aimants.
On aura au maximum respectivement pour chaque configuration 300, 600, 1200 impulsions/min soit 5, 10, 20 imp/sec (pas la mer à boire niveau débordement pour l'arduino XD).
Je n'ai aucune idée de la largeur de l'impulsion , mais je pense que si l'on met une valeur égale pour la valeur haute et la valeur basse, cela devrait fonctionner.
Pour faire varier les impulsions, je vais utiliser un potentiomètre (que j'ai monté dans une sonnette de vélo) :
const int throttelPin = 0; // potentiomètre
const int hallPin = 11; // pin de simulation du capteur hall
int hallState = LOW; // etat du capteur
long previousMicros = 0; // temps precedent
long interval = 0; // intervalle entre chaque impulsion (microseconds)
void setup() {
pinMode(hallPin, OUTPUT);
}
void loop()
{
interval = analogRead(throttelPin)*1000; ;
unsigned long currentMicros = micros();
if(currentMicros - previousMicros > interval) {
previousMicros = currentMicros;
if (hallState == LOW)
hallState = 153;
else
hallState = LOW;
analogWrite(hallPin, hallState);
}
}
Est ce que cela semble cohérent ?