pilotare motore dc 12 volts con mosfet

Bn sera a tutti,

sono un diversamente giovane, appassionato di modellismo dinamico,
soprattutto di slot car. Mi piacerebbe realizzare un controller con arduino.
Dato che sono un principiante sto effettuando ricerche sul web per vedere
se ci sono progetti da poter adattare al mio scopo e quindi realizzarli per
imparare ad usare la scheda, oltre che al linguaggio di programmazione.
Nelle varie ricerche mi sono imbattuto in questo schema:

e questo è il relativo sketch:

int trimmer_pin = A0;
int trimmer_val;
int mosfet_pin = 9;
int mosfet_val;

void setup()
{
  TCCR1B = TCCR1B & 0b11111000 | 0x02;      //imposta la frequenza del PWM sui pin 9 e 10 a 31250/8 = 3906 hz

  Serial.begin(9600);
  pinMode(trimmer_pin, INPUT);
  pinMode(mosfet_pin, OUTPUT);
}

void loop()
{
  trimmer_val = analogRead (trimmer_pin);
  Serial.print ("valore ingresso: ");
  Serial.println (trimmer_val);
  mosfet_val = map (trimmer_val, 0, 1023, 0, 255);
  analogWrite (mosfet_pin, mosfet_val);
  Serial.print ("valore pwm uscita: ");
  Serial.println (mosfet_val);
}

Il circuito lo alimento a 12 volts, stesso voltaggio di alimentazione delle piste slot, ed il mosfet che uso
è il IRF540N che è l’unico che ho trovato nel negozio di elettronica .

Quando lancio il programma dalla finestra di sitema vedo che ruotando il potenziomentro
i valori cambiano, e collegando l’oscilloscopio tra la massa ed il pin 9 a monitor vedo che
si forma l’onda quadra del segnale PWM e che varia al variare del segnale letto dal potenziometro.
Ma il motore non gira, se stacco il ponticello a massa sul gate o adirittura gli inverto la polarità
il motore parte a pieno regime di giri, ma non sente il segnale proveniente dal potenziometro.

Gentilmente potete aiutarmi a capire dove sbaglio?

Grz 1000
Max

Ciao.
Edita il tuo post e metti il codice tra i tag code prima che lo veda Guglielmo…
Poi non sono pratico di hardware, quindi non so dirti molto circa il collegamento del mosfet, ma quel mosfet credo che non vada bene perché non è logic-level.

>libeccio: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

Dopo aver messo a posto il post ... d iquali motori stai parlando ? ... tensione, corrente a vuoto, corrente sotto sforzo massimo ... ce ne sono tanti ...

Bn sera a tutti,

spero di aver editato correttamente il post, e chiedo scusa per l'errore.

Per quanto riguarda i motori, per il momento mi limiterei ad un pulsante per i motori meno potenti.
Le piste vengono alimentate a 12.5 volts, come assorbimento di picco alla partenza siamo sotto i 5 amp,
che scende intorno ai 0,5 amp al raggiungimento della massima velocità.

Ciao
Max

Il primo problema e' sicuramente quello che ti ha indicato anche fratt ... i normali mosfet per andare in saturazione (tutto ON) richiedono almeno 10V sul gate ... per usarli con elettronica di pilotaggio e MCU a 5V o meno, servono quelli cosiddetti "logic-level" ...

Secondo, un mosfet e' fondamentalmente una resistenza variabile, anche ad ON ha una sua minima resistenza interna (RdsON), e di solito piu e' bassa la portata in Ampere del mosfet, piu e' alta la RdsON, per cui si preferisce usare mosfet con portate molto piu alte del necessario per ridurla al minimo ... anche perche' da questa RdsON dipendono, in base alla corrente che circola, sia la caduta di tensione sul mosfet che la potenza dissipata in calore dal mosfet stesso ...

Il tuo IRF 540, se fosse IRL540, sarebbe logic-level adatto per lavorare pilotato a 5V ... avrebbe circa 77 milliohm con VGS di 5V, quindi allo spunto dei 5A avresti una caduta di tensione sul mosfet di 5*0.77=385mV e dissiperebbe circa 2W, se rimanesse sotto sforzo si brucerebbe senza dissipatore ... ma a regime potrebbe ancora andare ... la RdsON dell'IRF non e' nemmeno indicata a 5V, perche' non e' proprio previsto per funzionare a quella tensione di gate ...

Se poi ci devi fare un regolatore, meglio sceglierne comunque un modello diverso con portata maggiore ... ma per dei test, anche un IRL540 andrebbe bene ... NON l'IRF che hai, pero' ...

Etemenanki grazie per la risposta, e ne approfitto per chiederti se puoi consigliarmi
un mosfet più potente.

Slt
Max

Una piccola nota: dovendo convertire dal valore letto su un ingresso analogico, il cui convertitore è a 10 bit, a un'uscita PWM, che lavora a 8 bit, devi solo dividere per 4 (due bit), quindi puoi semplicemente scrivere:

 mosfet_val = trimmer_val/4;

o addirittura, lavorando direttamente sui bit:

 mosfet_val = trimmer_val >> 2;
(sposta a destra di 2 bit).
Esempio:
1023 =  0b01111111111
1023>>2=0b00011111111=255.

Datman:
... o addirittura, lavorando direttamente sui bit: ...

... non complicarti la vita, il compilatore è sufficientemente intelligente ed ottimizzato da saper riconoscere quando una divisione può esser trasformata in uno shift e lo fa da solo ... ;D

Guglielmo

WOW! (o meglio, in italiano: UAU!)
...però è istruttivo! :slight_smile:

libeccio:
... un mosfet più potente.

Be', dato che ci devi pilotare un piccolo motore, non servono mosfet esagerati, ma starei comunque su uno con buona portata di corrente per ridurre la RdsON (e che non costi una fortuna, cosa che di solito non guasta :D) ... cercando su mouser.it ho trovato al volo PSMN2R0-30PL , sui 2 milliohm di RdsON in TO220 (escludendo i componenti SMD) intorno all'euro e qualche centesimo ...

... più le spese di spedizione! :frowning:

Vero, ma se li vuoi velocemente non ci sono molte altre alternative, a parte trovare un negozio che li abbia in casa ... oppure da aliexpress 10 pezzi per 12 dollari, ma un mese o piu di tempi di consegna ...

grz, giusto il problema è riuscirli a trovare sottocasa, su Amazon o su ebay li spediscono dalla cina e ci vuole piu di un mese, da domani anche qui in Toscana siamo in lock down, quindi le spese di spedizione non spaventano pur di riuscire a passare il tempo

Su ebay c’è qualcosa d’interessante dall’Italia… :slight_smile:

Datasheet:

... occhio che non so se siano davvero dall'Italia ... "Consegna: Stimata tra gio. 14 gen. e gio. 21 gen." mi sembra piu un tempo di spedizione dalla Cina (o un'italiano moooooolto pigro :D) ... purtroppo alcuni venditori dichiarano falsamente la provenienza della merce, controllate sempre i tempi di consegna ... :wink:

Uhmm... Sì, strano. Eppure il venditore è italiano, Cosenza. Ci sono anche 1,20€ di una tipica spedizione economica italiana... Forse li acquista su ordinazione dalla Cina! :slight_smile:
Scusatemi. Quando sto per fare un acquisto, però, sono un po' più pignolo nel leggere tutto!

Non preoccuparti, e' gia capitato anche a me ... probabilmente e' un "dropshipper", uno di quei venditori che si limita a raccogliere gli ordini e poi passarli alla Cina o a Taiwan , a quei grossisti che offrono il servizio dropship ... mi hanno fregato una volta, anni fa, e da allora controllo sempre i tempi di spedizione :slight_smile:

Bn sera ragazzi,

finalmente mi sono arrivati i mosfet che ho ordinato da mauser, spediti dagli USA!,
l'ho montato sulla board, ma c'è qualcosa che non torna :frowning:
Sul monitor seriale vedo che il valore del trimmer_val e mosfet_val variano a seconda di
come manovro il trimmer, ma il mosfet è sempre aperto ed il motore gira sempre al massimo
dei giri.
Rispetto allo schema che ho postato ho provato anche a connettere la massa della parte digitale
alla basetta, ma nulla di fatto, ho anche provato a "girare l'alimentazione" del mosfet dal negativo al positivo,
ma l'unica cosa che ho riscontrato è stato un calo del nr di giri, ma non sente assolutamente il potenziometro.

Secondo voi dove sbaglio?

Ciao e grz 1000
Max

Puoi postare uno schema completo delle tue connessioni ?