Bici elettrica con arduino (controller pwm)

Ciao a tutti!

Ho trovato finalmente un po' di tempo da dedicare allo studio della problematica frequenza PWM e dopo (a dire il vero breve) ricerca puff è venuta fuori questa libreria PWM.h che sembra fare proprio al caso mio!

se ho interpretato bene come utilizzarla il codice si evolve nel modo seguente:

#include <PWM.h>
int32_t frequency = 16000; //frequenza in Hz


int mosfetdriver = 9;      // mosfet driver connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value
int duty_cycle = 0;


void setup()
{
  InitTimersSafe();
  bool success = SetPinFrequencySafe (mosfetdriver, frequency);
  if (success){
    pinMode (13, OUTPUT);
    digitalWrite (13, HIGH); 
  }
  pinMode(mosfetdriver, OUTPUT);   // sets the pin as output
  Serial.begin(9600);
}

void loop()
{
  val = analogRead(analogPin);   // read the input pin
  analogWrite(mosfetdriver, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
  duty_cycle = (( val / 4) / 2.55);
  Serial.println(val);
  Serial.println(duty_cycle);
  delay(10);

  
  
}

Purtroppo non ho modo in questo momento di provare il codice in quanto sono in partenza verso gli USA per lavoro, ma almeno la compilazione va a buon fine

Qualcuno ha suggerimenti in merito?

Come sempre grazie mille a tutti!

@icio
ho modificato lo stadio di alimentazione del mosfet gate driver utilizzando un L7812CV con un condensatore elettrolitico da 100uF in parallelo e devo dire che il comando del mosfet è diventato molto più fluido

avrei intenzione di affinare il circuito e dal datasheet ho notato che viene suggerito una configurazione di questo tipo (vedi allegato) pensi possa andare?

Luigi

12V con 7812.JPG