Controllo motore brushless con Arduino Uno Rev 3

Salve a tutti,
sono nuovo sia del forum che di arduino, ho soltanto delle basi.
Vorrei controllare un motore BLDC tramite Arduino senza l'ausilio di un ESC.
Le motivazioni sono curiosità, voglia di imparare e di capire cosa faccio, senza affidarmi a componenti hardware che non riesco a comprendere fino in fondo.
Ho provato a costruire il circuito nell'immagine su arduino con dei MOSFET e a scrivere un programmino ma non mi funziona. Se avete dei consigli da darmi vi ringrazio in anticipo.
Salve, XIX.
P.S. Vorrei anche evitare l'uso di sensori HALL
P.P.S. Non sono sicuro che la categoria sia quella giusta ma non sapevo quale selezionare.

image

Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso e stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.

1 Like

Il BLDC ha avvolgimenti con resistenza molto bassa, ciò significa che se il pwm si blocca anche per 1 solo millisecondo con 2 semiponti attivi la corrente aumenta al massimo distruggendo i MOSFET, per evitare questo si deve mettere un current sense che intervenga in hardware o in interrupt, in genere si preferisce non caricare il MC a livello software facendogli fare solo il movimento motore, lettura della bemf per il sensorless, limitazione isense, lettura del feedback di posizione o velocità se presente, modifica parametri di funzionamento e acquisizione del segnale di riferimento, 0-10v, step/dir,segnale ppm etc.. tutte cose necessarie al movimento e nient'altro, se metti display, sensori e altre cose non necessarie tieni presente le prime righe del messaggio, per questo si tende a delegare ad ogni MC la cosa che sa fare meglio, visto il basso costo dei MC sulla stessa scheda si usa mettere più di un MC, un drive per il motore , un motion controller etc ..., Non ne vale la Pena per risparmiare 1 euro concentrare in un solo MC il motore drive e il motion controller e altro a meno che il target è produrre una scheda ovviamente custom a bassissimo costo con "tiratura" elevata

Grazie per la risposta.
Io vorrei provare a farlo giusto solo per il gusto di farlo. So che non ne vale la pena a livello di tempo e costi. Non capisco bene come funziona la lettura della bemf, e non so cosa si intenda con limitazione isense, e non so come si faccia la lettura del feedback di posizione. Se poteste aiutarmi a capire sarebbe fantastico.
I MOSFET che utilizzo, IRLZ44N, reggono correnti molto alte quindi come mai dovrebbero distruggersi?
Sam

In rete ci sono dei progetti di ESC con atmega8 o atmega328 e con altri MC, li ho visti anni fa, cercali e studiali
Chiave ricerca. GitHub esc
Esempio

Di solito si usa l'assembler, non il C, ma se invece di usare un MC per uso generale come il 328 si usa un MC dedicato per motor drive allora si può usare il C

@icio come l'assembler?
Arduino non ha il suo linguaggio dedicato?

No, Arduino lo programmi con quello che vuoi (... che ovviamente trovi sul mercato) ... purché generi codice per la MCU che è montata sulla scheda che stai usando.

Ad esempio, per la MCU di Arduino UNO, ATmega328P, esistono compilatori C/C++, Pascal, Basic, Ada, ecc. ecc. oltre a linguaggi grafici di vario tipo ed, ovviamente, l'assembler ... l'unica cosa è che TUTTI, alla fine, devono generare un eseguibile compatibile con i codici machina della suddetta MCU :slight_smile:

Guglielmo

P.S.: ... e NON confondere il linguaggio con il "framework Wiring" che è un insieme di classi, metodi e funzioni, scritte in C/C++, che ti semplificano le complesse operazioni che ci sono dietro nascondendotele.

1 Like

Grazie @gpb01 non lo sapevo.

Potreste aiutarmi con la lettura della BMEF?
Come faccio a far arrivare l'INPUT dal pin dove c'è il MOSFET che è impostato su OUTPUT?

Ci vuole troppo tempo per spiegarti tutti i principi che in rete esistono già spiegati bene, seguendo il link che ti ho fornito, trovato in un minuto, e i link annessi piano piano analizza il codice, se non sai l'assembler AVR studialo perché come ti ho detto è difficile fare un ESC in C
Mi sembra di ricordare di aver visto qualcosa scritto in C molti anni fa ma devi cercartelo da te

Grazie @icio , allora mi farò un pò di studio :wink:
Ciaoo