controllo motore bldc con arduino, motore hd recuperato e sensori hall
Casa » Blog » Controllo motore bldc con arduino, motore hd recuperato e sensori hall

controllo motore bldc con arduino, motore hd recuperato e sensori hall

Visualizzazioni: 0     Autore: Editor del sito Orario di pubblicazione: 2020-09-02 Origine: Sito

Informarsi

pulsante di condivisione di Facebook
pulsante di condivisione su Twitter
pulsante di condivisione della linea
pulsante di condivisione wechat
pulsante di condivisione linkedin
pulsante di condivisione di Pinterest
pulsante di condivisione di whatsapp
pulsante di condivisione Kakao
pulsante di condivisione di Snapchat
pulsante di condivisione del telegramma
condividi questo pulsante di condivisione

Al giorno d'oggi, gli appassionati sono molto interessati al controllo della DC senza spazzole (BLDC).
Rispetto al tradizionale motore DC, le prestazioni del motore sono migliorate, anche l'efficienza energetica è migliorata, ma è più difficile da usare. Esistono molti prodotti standardizzati
per questo scopo.
Ad esempio, ci sono molti piccoli controller BLDC che funzionano molto bene per gli aerei RC.
Per coloro che vogliono approfondire il controllo del BLDC, ci sono anche molti microcontrollori diversi e altro hardware elettronico per utenti industriali, che di solito hanno un'ottima documentazione.
Finora non ho trovato alcuna descrizione completa su come utilizzare il microcontrollore Arduino per il controllo BLDC.
Inoltre, se sei interessato alla frenata rigenerativa o all'utilizzo di un BLDC per la generazione di energia, non ho trovato molti prodotti adatti all'uso con piccoli motori, né ho scoperto come controllare il generatore trifase.
Questa struttura era originariamente in una storia sul
calcolo in tempo reale, continuo a farlo dopo la fine del corso.
L'idea del progetto è quella di mostrare un modello proporzionale di un'auto ibrida con accumulo di energia nel volano e frenata rigenerativa.
Il motore utilizzato nel progetto è un piccolo BLDC ripulito dal disco rigido del computer danneggiato.
Questo manuale descrive come utilizzare il microcontrollore Arduino e
i sensori di posizione Hall-Influenza nelle modalità di guida e frenata rigenerativa.
Tieni presente che visitare oscillisoft è molto utile, se non essenziale, per completare questo progetto.
Se non riesci ad accedere all'ambito, ho aggiunto alcuni suggerimenti su come farlo senza l'ambito (passaggio 5).
Una cosa che questo progetto non dovrebbe includere in nessun vero controllore motore è alcuna funzione di sicurezza come la protezione da sovracorrente.
In effetti, la cosa peggiore è che bruci il motore HD.
Tuttavia, implementare la protezione da sovracorrente con l'hardware attuale non è difficile e forse prima o poi lo farò.
Se stai cercando di controllare un motore più grande, aggiungi una protezione da sovracorrente per proteggere il tuo motore e la tua sicurezza.
Vorrei provare a utilizzare questo controller con un motore più grande che possa svolgere un lavoro \'reale\', ma non ho ancora quello giusto.
Ho notato che eBay ha venduto un'auto da 86 W per circa $ 40.
Sembra un buon candidato.
Esiste anche un sito Web RC chiamato \'GoBrushless\' che vende kit che assemblano il proprio BLDC.
Questi non sono troppo costosi e vale la pena fare l'esperienza per costruirne uno.
Si prega di notare che su questo sito Web non è presente alcun sensore Hall per il motore. Wow!
Scrivere questa struttura è un grande lavoro.
Spero che lo troviate utile, lasciate i vostri commenti e suggerimenti.
Multimetro digitale (DMM) -
Se il tuo DMM ha un oscilloscopio frequenzimetro (
è meglio avere almeno 2 canali)
driver Torx T8 (
ne hai bisogno per aprire qualsiasi disco rigido).
C'è un buon negozio di ferramenta.
Officina meccanica e prototipo rapido (
sono molto utili ma penso che questo progetto possa essere realizzato senza di essi).
Materiale Anello magnetico del motore BLDC dal disco rigido del computer (
metà del motore)
Da un altro disco rigido Diversi (3-6)
C'è un secondo piccolo motore nel disco argentato sul disco rigido (CC spazzolato OK)
Elastico o (preferibilmente)
Il motore CC senza spazzole con una maniglia con un altro motore Piatto elettronico per il pane a filo solido mese l'Arduino Duemilanove Resistenza da 120 k ohm Resistenza da sei a 400 ohm lineare o rotante Potenziometro Microcircuito ST da 100 k ohm L6234 CI driver motore trifase due condensatori da 100 uF un condensatore da 10 nF un condensatore da 220 nF un condensatore da 1 uF un condensatore da 100 uF tre diodi di ricezione Uno 2.
Fusibile Hall-5 Amp bipolare Honeywell SS411A 1 portafusibile 3
Nota: Mike Anton ha progettato e venduto un prodotto che sostituirà l'elettronica di potenza e i circuiti dei sensori Hall mostrati in questo manuale (
è controllato utilizzando l'induzione del contropotenziale).
Le specifiche e le informazioni sull'approvvigionamento possono essere trovate in questi due link: Se hai intenzione di realizzare questo progetto, ti suggerisco di prenderti il ​​tempo per comprendere a fondo come funziona e controlla il BLDC.
Ci sono un gran numero di riferimenti online (
vedi sotto per alcuni suggerimenti).
Tuttavia, nel mio progetto includo alcuni grafici e tabelle che dovrebbero aiutarti a capire.
Ecco un elenco dei concetti che ritengo più importanti per comprendere questo progetto: Transistor MOSFET Semiponte trifase 6-
Riduzione della frase in 3 fasi
Modulazione di larghezza di impulso del motore di fase (PWM)Hall-
Microchip AVR443: riferimento generale ai sensori Motore DC Principi di base per i sensori di posizione digitali
Controllo del motore DC brushless trifase basato sul controllo del motore DC atmelbrusless
Controllo del motore BLDC di fase del sensore Flying Star Hall, un buon video sulla pulizia del disco rigido motore, ma l'autore sembra far funzionare il motore come un motore passo-passo e come un motore passo-passo. Una pagina web di riferimento più specifica per il BLDC sul circuito integrato di azionamento del motore l6234, incluse schede tecniche, note applicative e informazioni sull'acquisto.
Campione gratuito per l'azionamento del motore brushless PM per applicazioni su veicoli elettrici ibridi.
Questo è l'unico documento che ho trovato che descrive l'ordine del cambio di fase della frenata rigenerativa.
Questo articolo, la frenata rigenerativa nei veicoli elettrici è utile, ne ho preso in prestito alcuni numeri, ma penso che descriva erroneamente come funziona la rigenerazione.
Ho realizzato questo progetto con un motore con unità disco riciclato perché era facile da passare e mi piace usare un piccolo motore a bassa tensione per apprendere il cavo controllato da BLDC e non causare problemi di sicurezza.
Inoltre, la configurazione del magnete del sensore Hall diventa molto semplice utilizzando l'anello magnetico (rotore)
del secondo di questi motori (vedere passaggio 4).
Se non vuoi affrontare tutta la seccatura di installare e calibrare il sensore Hall (passaggi 5-7),
so che ci sono almeno alcuni motori di unità CD/DVD integrati nel sensore Hall.
Per fornire una certa inerzia di rotazione al motore e dargli un po' di carico, ho messo 5 dischi rigidi sul motore, incollati delicatamente insieme con un po' di colla forte e incollati al motore (
questo ha creato il volano nel mio progetto originale).
Se hai intenzione di rimuovere il motore dal disco rigido, avrai bisogno di un'unità Torx T8 per svitare l'alloggiamento (
di solito ci sono due viti nascoste dietro il bastoncino nell'etichetta centrale)
e le viti interne che tengono il motore in posizione.
È inoltre necessario rimuovere la testa del lettore (
Sound Circle Executive).
In questo modo è possibile estrarre il disco di memoria per raggiungere il motore.
Inoltre, avrai bisogno di un secondo stesso motore del disco rigido per rimuovere il rotore da quel motore (
all'interno è presente un magnete).
Per smontare il motore, ho afferrato il rotore (in alto)
Una morsa del motore e l'ho fatta leva sullo statore (in basso)
I due cacciaviti sono a 180 gradi l'uno dall'altro.
Non è facile tenere il motore su una coppia sufficientemente stretta senza deformazioni.
Potresti voler costruire un
blocco a V in legno utilizzato per questo scopo.
Ho praticato un foro nell'anello magnetico del tornio in modo che si adatti comodamente alla parte superiore del motore.
Se non potete usare il tornio potete fissare il rotore invertito sul motore con una colla forte.
Le immagini 2 e 3 sotto mostrano l'interno di uno dei motori che ho smontato.
Nella prima metà ci sono (il rotore) 8 poli (
magnete avvolto in plastica).
Nella seconda metà (lo statore)
ci sono 12 cave (avvolgimenti).
Ciascuna delle tre fasi del motore ha 4 slot in serie.
Alcuni motori HD hanno tre contatti nella parte inferiore, un contatto per fase e l'altro è il rubinetto centrale del motore (
dove si incontrano tre stadi).
In questo progetto non è richiesto il tocco centrale, ma può tornare utile nel controllo senza sensori (
spero di pubblicare un giorno una nota sul controllo senza sensori).
Se il tuo motore ha quattro contatti, puoi identificare la fase con un ohmetro.
La resistenza tra la presa centrale e la fase è la metà della resistenza tra due fasi qualsiasi.
La maggior parte della letteratura sui motori BLDC tratta quelli con una forma d'onda del potenziale posteriore a forma di scala, ma il motore del disco rigido sembra avere un potenziale posteriore che assomiglia a un seno (vedi sotto).
Per quanto ne so, pilotare un motore a onda sinusoidale con un PWM a onda sinusoidale funziona bene, anche se l'efficienza potrebbe diminuire leggermente.
Come tutti i motori BLDC, questo è costituito da un ponte a mezzo transistor trifase
(
vedere la seconda foto sotto).
Utilizzo l'IC prodotto da ST Micro (L6234)
per il bridge, noto anche come driver del motore.
Il collegamento elettrico dell'L6234 è mostrato al punto 8.
La terza foto sotto mostra un diagramma schematico del driver del motore e delle tre fasi del motore.
Affinché il motore funzioni in senso orario, l'interruttore verrà effettuato nel seguente ordine (
La prima lettera è il transistor superiore e la seconda lettera è il transistor inferiore)
: Passo 1 2 3 4 5 6 in senso orario: CB, AB, AC, BC, BA, CA in senso antiorario: BC, BA, CA, CB, AB, AC questi 6-
La sequenza dei passi richiede un \'grado elettrico\' di 360, ma solo un grado fisico di 90 per questi motori.
Pertanto, la velocità di rotazione di ciascun motore avviene quattro volte.
Le due sequenze sembrano essere le stesse, ma non sono le stesse perché per
la sequenza a 6 fasi, per CW, la direzione della corrente attraverso la fase è una direzione, e per CCW, la direzione della corrente è opposta.
Puoi verificarlo tu stesso applicando la tensione della batteria o dell'alimentatore a una delle fasi del motore.
Se si applica la tensione, il motore si sposterà leggermente in una direzione e si fermerà.
Se è possibile modificare rapidamente la tensione sulla fase in una delle sequenze sopra indicate, è possibile ruotare manualmente il motore.
Transistor e microcontrollori completano tutti questi interruttori molto rapidamente, commutando centinaia di volte al secondo quando il motore funziona ad alta velocità.
Inoltre, tenere presente che se la tensione viene applicata a entrambe le fasi, il motore si muove leggermente e poi si ferma.
Questo perché la coppia è zero.
Puoi vederlo nella quarta foto qui sotto, che mostra il potenziale posteriore di una coppia di fasi motorie.
Questa è un'onda sinusoidale.
Quando l'onda attraversa
l'albero x, la coppia fornita da questa fase è zero. Nella
sequenza di cambiamento di fase del BLDC in sei fasi che non è mai avvenuta.
Prima che la coppia su una particolare fase diventi bassa, la potenza viene commutata su un'altra combinazione di fasi.
I motori BLDC più grandi sono generalmente realizzati con sensori Hall all'interno del motore.
Se disponi di un motore di questo tipo, puoi saltare questo passaggio.
Inoltre, so che ci sono almeno alcuni motori di unità CD/DVD già integrati nel sensore Hall.
Quando il motore gira, vengono utilizzati tre sensori Hall per il rilevamento della posizione, quindi il cambio di fase viene eseguito al momento giusto.
Il mio motore HD funziona fino a 9000 giri/min (150 Hz).
Poiché ci sono 24 cambi per ruota, a 9000 giri/min, la macchina viene cambiata ogni 280 microsecondi.
Il microcontrollore Arduino funziona a 16 MHz, quindi ogni ciclo di clock è di 0,06 microsecondi.
Non so quanti cicli di clock siano necessari per eseguire una riduzione di pena, ma anche se ne occorrono 100, cioè ci vogliono 5 microsecondi per ogni riduzione di pena.
I motori HD non dispongono di sensori Hall, quindi è necessario installarli all'esterno del motore.
Il sensore deve essere fissato rispetto alla rotazione del motore ed esposto ad una serie di poli coerenti con la rotazione del motore.
La mia soluzione è rimuovere l'anello magnetico dallo stesso motore e installarlo capovolto sul motore da controllare.
Ho quindi installato tre sensori Hall sopra questo anello magnetico, distanti 30 gradi l'uno dall'altro sull'albero del motore (
rotazione del motore elettrico di 120 gradi).
Il mio supporto per sensore Hall è costituito da un semplice supporto composto da tre parti in alluminio da me lavorate e tre parti in plastica realizzate su un prototipo veloce.
Se non disponi di questi strumenti, non dovrebbe essere difficile trovare un altro modo per indicare la posizione.
La creazione di staffe per i sensori Hall sarà più impegnativa.
Questo è un possibile modo di lavorare: 1.
Trova un vassoio di plastica della giusta dimensione e puoi resinare con cura il sensore Hall. 2.
Sulla carta viene stampato un modello, che ha lo stesso cerchio del raggio dell'anello magnetico e i tre segni sono distanti 15 gradi 3.
Incolla la sagoma sul disco, quindi utilizzala come guida per posizionare con cura la resina epossidica del sensore Hall in posizione.
Ora che i sensori Hall sono installati sul motore, collegali al circuito mostrato di seguito e testali utilizzando un multimetro digitale o un oscilloscopio per assicurarti che l'uscita aumenti e diminuisca mentre il motore ruota.
Utilizzo questi sensori sotto i 5 V utilizzando l'uscita 5 V di Arduino.
Il sensore Hall ha un'uscita alta o bassa (1 o 0)
Dipende se sentono l'Antartide o l'Artico.
Poiché sono a 15 gradi di distanza, i magneti ruotano sotto di loro e cambiano la polarità ogni 45 gradi, questi tre sensori non saranno mai alti o bassi contemporaneamente.
Quando il motore ruota, l'uscita del sensore è 6-
Lo schema di passi mostrato nella tabella seguente.
Il sensore deve essere allineato con il movimento del motore in modo che uno dei tre sensori cambi esattamente nella posizione di cambio fase del motore.
In questo caso, il fronte di salita del primo sensore Hall (H1)
dovrebbe essere coerente con l'apertura della combinazione C (alto) e B (basso).
Ciò equivale ad accendere i transistor 3 e 5 nel circuito a ponte.
Allineo il sensore con il magnete con un oscilloscopio.
Per fare ciò, devo utilizzare tre canali di ambito.
Ruoto il motore collegandolo alla cinghia del secondo motore e misuro il potenziale posteriore tra le due combinazioni di fase (
A e B, A e C).
Questo è due sinusoidi.
Come le onde nell'immagine qui sotto.
Quindi osserva il segnale del sensore Hall 2 sul canale 3 dell'oscilloscopio.
Il supporto del sensore Hall viene ruotato finché il bordo di salita del sensore Hall non è completamente allineato con il punto in cui deve essere eseguito il cambio di fase (vedere sotto).
Ora mi rendo conto che ci sono solo due canali per eseguire la stessa calibrazione.
Se il BEMF della combinazione di fase B
utilizza C, il fronte di salita di H2 sarà correlato alla curva BC.
Il motivo per cui in questo caso si dovrebbe eseguire il cambio di fase è quello di mantenere sempre la coppia del motore più elevata possibile.
Il potenziale posteriore è proporzionale alla coppia e noterai che ogni cambiamento di fase avviene quando il potenziale posteriore passa al di sotto della curva dello stadio successivo.
Pertanto, la coppia effettiva è costituita dalla parte più alta di ciascuna combinazione di fasi.
Se non riesci ad accedere all'ambito, ecco la mia idea di allineamento.
Questo è in realtà un esercizio interessante per chiunque voglia sapere come funziona il motore BLDC.
Se la fase A del motore è collegata (positiva) e B (negativa)
all'alimentazione e si accende l'alimentazione, il motore ruoterà leggermente e si fermerà.
Quindi, se il cavo di alimentazione negativo viene spostato sulla fase C e l'alimentazione viene attivata, il motore girerà ulteriormente e si fermerà.
La parte successiva della sequenza consisterà nello spostare il conduttore positivo sulla Fase B, ecc.
Quando si esegue questa operazione, il motore si ferma sempre dove la coppia è zero, che corrisponde a un punto in cui il grafico passa attraverso l'asse x sul grafico.
Si noti che il punto zero della combinazione della terza fase corrisponde alla posizione di cambiamento di fase delle prime due combinazioni.
Pertanto, la posizione della coppia zero della
combinazione B-C è dove si desidera posizionare il fronte di salita di h2.
Contrassegnare questa posizione con segni sottili o lame affilate, quindi regolare il supporto del sensore Hall utilizzando il DMM fino a quando l'uscita di H2 è esattamente più alta su questo segno.
Anche se ti discosti leggermente dal programma scolastico, il motore dovrebbe funzionare bene.
La fase tre del motore riceverà alimentazione dal driver del motore trifase L6234.
Ho scoperto che questo è un buon prodotto che può resistere alla prova del tempo.
Esistono molti modi per friggere accidentalmente i componenti quando si utilizzano dispositivi elettronici di potenza, non sono un ingegnere elettrico e non sempre so cosa sta succedendo.
Nel mio programma scolastico, abbiamo realizzato la nostra
uscita a semiponte trifase di 6 transistor MOSFET e 6 diodi.
L'abbiamo usato sull'HIP4086 dell'altro driver Intersil, ma abbiamo molti problemi con questa configurazione.
Abbiamo bruciato un sacco di transistor e chip.
Utilizzo L6234 (
quindi il motore) a 12V.
L'L6234 ha un insolito set di ingressi per controllare un mezzo ponte di 6 transistor.
Non tutti i transistor hanno un ingresso, ma un
ingresso di abilitazione (EN) per ciascuno dei tre stadi, e poi un altro ingresso (IN).
Seleziona quale transistor nella fase aperta (superiore o inferiore).
Ad esempio, accendere il transistor 1 (superiore) e 6 (inferiore).
Sia EN1 che EN3 sono alti (
EN2 basso per mantenere lo stadio chiuso)
IN1 alto, IN3 basso.
Ciò rende la combinazione di fase-C.
Mentre la nota applicativa dell'L6234 suggeriva di applicare il PWM utilizzato per controllare la velocità del motore al pin IN, ho deciso di farlo sul pin EN perché, in quel momento, penso che sarebbe \'strano\' accendere alternativamente i transistor superiore e inferiore della fase \'.
In effetti, sembra che non ci sia niente di sbagliato nell'accendere i transistor bassi di entrambe le fasi contemporaneamente, perché hanno lo stesso potenziale, quindi nessuno dei due passa attraverso la corrente.
Con il mio metodo, la fase alta è abilitata e disabilitata alternativamente alla frequenza PWM, mentre la fase bassa rimane accesa durante l'intero cambio di fase.
Di seguito è riportato uno schema dell'azionamento del motore, ho aggiunto il collegamento dei pin alla scheda Arduino. Ho anche aggiunto un
fusibile da 2,5 A tra il cavo positivo della batteria e il circuito, un fusibile da 100 uF tra l'alimentatore e la terra per ridurre l'ondulazione nella corrente rigenerativa.
Questa cifra è un po' piccola, quindi per le versioni più grandi, fare riferimento alla documentazione L6234
Nota: Mike Anton ha realizzato il PCB per L6234, che (credo)
sostituirà questa traccia e ti risparmierà il lavoro di assemblarlo.
Vedi questi collegamenti per specifiche e informazioni sull'acquisto: Non ho trovato molto su 3-
Descriverò la mia comprensione di come funziona.
Tieni presente che non sono un ingegnere elettrico e apprezzeremmo qualsiasi correzione alla mia spiegazione.
Durante la guida, il sistema di controllo invia la corrente in tre fasi del motore in modo da
massimizzare la coppia frenando, anche il sistema di controllo massimizza la coppia, ma questa volta è una coppia negativa che fa rallentare il motore mentre rimanda la corrente alla batteria. Il metodo di frenata rigenerativa
dell'Oakridge National Laboratory negli Stati Uniti
Nella
che ho utilizzato proviene da un articolo
critica
La tensione BEMF nella fase del motore fluttua su e giù.
figura, mostra il momento in cui BEMF è alto nello stadio B e basso nello stadio.
In questo caso, è possibile che la corrente passi da B a. Frenatura
, i transistor di fascia bassa si accendono e si spengono rapidamente (
migliaia di interruttori PWM al secondo).
quando il transistor di fascia bassa è spento , ma a una tensione più elevata, la corrente fluisce istantaneamente attraverso il diodo \'anti-eccitazione\' accanto a ciascun transistor e quindi ritorna alla batteria. Allo stesso tempo, la corrente in questa direzione (
Questa energia viene rilasciata
è come un dispositivo chiamato convertitore boost, in cui l'energia viene immagazzinata nella fase del motore (Wikipedia
ha un buon articolo che spiega come funziona il convertitore boost).
interagisce con anello magnetico per produrre una coppia negativa che rallenta
il motore. Il transistor low-side utilizza un interruttore PWM e il ciclo di lavoro del PWM controlla la quantità di frenata .
Durante la guida, la commutazione
contrariamente alla guida )
del motore passa da una combinazione a quella successiva a tempo debito per
fanno sì che
mantenere la coppia più elevata possibile. La commutazione del freno rigenerativo è molto simile perché alcune modalità di commutazione
il motore produca quanta più coppia negativa possibile non funziona bene. Penso che il motivo principale sia che il motore del disco rigido che utilizzo ha una coppia molto bassa, quindi non
produce molto BEMF tranne che alla massima velocità. A una velocità inferiore, la frenata rigenerativa è minima (se presente). Inoltre, il mio sistema funziona a una tensione relativamente bassa
poiché ogni percorso attraverso il diodo anti-eccitazione riduce la tensione di diversi volt, questo riduce notevolmente anche l'efficienza prestazioni migliori se utilizzo alcuni
(12 V). Inoltre,
da
Resistore
diodi speciali con caduta di tensione inferiore. Di seguito è riportato un elenco di ingressi e uscite su arduino Includi
di
anche grafici e foto della mia scheda 2- Ingresso digitale 1 Resistenza da 120 K di Gnd 3 Ingresso digitale da 2 Resistenza da 120 K di Gnd 4 Ingresso digitale da 120 K di Gnd resistenza 5 1 Uscita digitale in serie con resistenza da 400 ohm 6 2 Uscite digitali in serie con.
400
ohm
EN
2
in
con
serie
7 3 Uscite digitali in serie con resistore da 400 ohm 9- Uscita digitale di EN 1 in serie con resistore da 400 ohm 10- Uscita digitale
resistore da 400 ohm
resistore da 400 ohm
11- L'uscita digitale EN 3 è in serie con un
, potenziometro da 100 k Ohm, con 5 V e terra collegati ad entrambe le estremità e pin analogico 0 collegato al centro il potenziometro
viene utilizzato per controllare la velocità del motore e il volume della frenata.
L'alimentazione da 5 V viene utilizzata anche per far funzionare i sensori Hall (vedere il passaggio 5
Ecco l'intero programma che ho scritto per Ardjuino, che include i commenti:/* bldc_congroller 3. 1.
1*3 di David Glazer
La serie X è
un driver del motore trifase ST L6234 * che fa funzionare il motore dell'unità disco in senso orario * con frenatura rigenerativa * velocità del motore e frenata controllate da un singolo potenziometro * posizione del motore tramite tre.
Sensore ad effetto Hall * Arduino riceve l'uscita da 3 sensori Hall (pin 2,3,4)
* E converte la loro combinazione in 6 diversi passaggi di cambiamento di fase sui pin 9, 10, 11 a 32 kHz * Uscita PWM (
corrispondente a EN 1,2, 3*3 DO sui pin 5,6, 7, rispettivamente
* Collegare la simulazione in 0 al potenziometro per modificare il ciclo di lavoro PWM e cambiare * tra guida e frenata rigenerativa *. * 0-
499: freno * 500-
523: Taxi * 524-
1023: automobilismo * commenta molte righe per il debug stampando vari valori su una connessione seriale
*/Int allstate1
(IN 1,2,3)
Variabili
di tre sensori Hall int MSP; = 0;
/Livello di velocità int bSpeed = 0 per il motore ;
= 0; /Questa variabile viene utilizzata insieme all'ingresso analogico per misurare la posizione dell'impostazione del gap del potenziometro dell'acceleratore (){pinMode(2,INPUT)
del freno dell'acceleratore
/Livello
;
INPUT);
/Hall 1 pinMode (3,
/In 1 pinMode (6,OUTPUT);
/In 2 pinMode (7,OUTPUT);
/In 3 pinMode (9,OUTPUT);
/EN 1 pinMode (10,OUTPUT);
/EN 2 pinMode (11,OUTPUT); /EN 3/serial. begin(9600);
If you will be using a serial connection, please uncomment this line.
The flush command at the end of the program.
/* Set PWM frequenza sui pin 9, 10 e 11/imposta PWM su 32 kHz per i pin 9, 10/prima cancella tutti e tre
/Crea una variabile chiamata prescalerVal e impostala su uguale al numero binario \'00000111
i bit pre-divisori: int prescalerVal = 0x07;
\' TCCR1B & = ~ Prescaler /
E il valore in TCCR0B con un numero binario di \'11111000\'/ora imposta il bit
; 3,11 ( Questo programma utilizza solo il Pin 11
di precodifica appropriato: int bit di precodifica 2 = 1; /Imposta prescalerVal uguale al numero binario \'00000001\' TCCR1B = prescalerVal2 /
O valore in TCCR0B con un numero binario di \'00000001\'/imposta PWM su 32 kHz per pin
) /Cancella prima tutti e tre i bit di pre-caler: TCCR2B & = ~ Pre-calerval; /E il valore in TCCR0B con un numero binario di \'11111000\'/ora imposta il bit di pre-codifica appropriato:
=
TCCR2B |
Pre
-codifica bit 2 ; \'00000001\'
/prima cancella tutti e tre i bit precodificati :} Il ciclo principale del /PRGROM
void loop (){ /Time = millis (); Tempo dopo l'avvio del programma di stampa println(
/La guida è mappata sulla metà superiore del potenziometro
time); print(\'\');
/Frenata rigenerativa a metà parte
bSpeed = map ( Throttle, 0,511,255,
0) ;
nella parte inferiore del potenziometro/MSP ed = 100; /
Per il debug HallState1 = digitalRead (2); 3 (8, HallState1);
/Quando il sensore corrispondente è ad alta potenza, il led si accende
Originariamente utilizzato per eseguire il debug di digitalWrite (
9, HallState2); //digitalWrite(10, HallState3); HallVal = (HallState1)+ (2*HallState2)+ (4*HallState3)
;
port. println(HallState1); Serial. print(\'H 2: \'); Serial. println(HallState2); Serial. print(\'H 3: \'); Serial. println(HallState3);
Serial. println(\' \'); */ //Serial. println(mSpeed); //Serial. println(HallVal); //Serial. print(\'\');
/Monitor uscita/ritardo (1000);
/* T1 = ~T1;
T2 = digitalRead
(4); //T2 = digitalRead (5); print(\'\t\'); Serial. print(T3); Serial. print(\'\'); Serial. print(\'\'); Serial. print(digitalRead(3)); Serial. print(\'\t\'); Serial. print(digitalRead(9)); Serial. print(\'\t\'); Serial. println(digitalRead(10)); Serial. print(\'\'); Serial. print(\'\'); //delay(500);
*/Cambio di fase di guida/ogni numero binario ha un caso corrispondente ai diversi transistor accesi/bit matematici utilizzati per modificare il valore dell'uscita arduino: /PORTD contiene l'uscita del pin IN sul driver L6234/l'uscita utilizzata per determinare se il transistor superiore o quello inferiore/pin EN per ciascuna fase è controllato dall'analogia del comando Arduino, imposta il duty cycle di PWM (
0 = OFF, 255 = ON o valore dell'acceleratore controllato dal potenziometro) se (acceleratore > 511){interruttore (HallVal){
Caso 3:/PORTD = 1111xxx00;
L'uscita prevista del pin 0-7
xxx si riferisce all'ingresso Hall e = B00011111 non deve essere modificato;
/
chiusura
fase (
transistor di fascia alta)analogWrite(10,0);
fase B (duty = 0)analogWrite(11,255); // Fase C on -duty = 100% (
transistor di fascia bassa)break;
B00100000; /Analowrite (
9 ,mSpeed)
;
10,255);
//
PWM su fase A ( transistor di fascia alta)analogWrite(
Fase B su (transistor di fascia bassa)analogWrite(11,0); //Fase B spenta (duty = 0)break;
B00011111; /PORTD | = B10100000;
analogWrite(9,0); analogWrite(10,255); analogWrite
11,mSpeed)
(
; break; Case 4:/PORTD = B100xxx00; /Expected output of pin 0- 7 PORTD & = B00011111; PORTD |
= bym000; /Analowrite (9,255); analogWrite(10,0); analogWrite(11,mSpeed); break; Case 6:/
PORTD
B110xxx00
=
; /Expected output
PORTD & = B00011111;
of pin 0-
7
PORTD b11. 000 =;
/Analowrite (9,255); analogWrite(10,mSpeed); analogWrite(11,0); break;
Case 2:/PORTD = B010xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111;
B0201700 PORTD | =;
/Analowrite (9,0); analogWrite(10,mSpeed); analogWrite(11,255); break; }}
/Regenerative brake phase change/PORTD (
Output of IN pin on L6234)
The pins are always basso, quindi durante la frenatura vengono utilizzati solo transistor bassi. else{
//PORTD = B000xxx00;
/Uscita prevista del pin 0-7
PORTD & = B00011111 |.
analogWrite(10,0);
analogWrite(11,0); break; Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0); break;
Case 5: analogy writing (9,0); analogWrite(10,0); analogWrite
(11,bSpeed); break; Case 4: analogy writing (9,0); analogWrite
(10,0); analogWrite(11,bSpeed); break;
Case 6: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break;
Case 2: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break; }}
/Time = millis ();
Time after the printing program starts. println(time); //Serial. print(\'\'); //Serial. flush();
/If you want to debug using a serial port, please uncomment}
Penso che l'operazione eseguita da Arduino in questo progetto sia così semplice che sembra uno spreco eseguire questa operazione con un microprocessore.
In effetti, le note applicative di L6234 consigliano un semplice array di gate programmabile (
GAL16V8 realizzato con Lattice Semiconductor) per eseguire questo lavoro.
lo
Un'altra
opzione è quella di assemblarli le porte logiche discrete
Ho ideato alcune sequenze logiche relativamente semplici che potrebbero pilotare l'IC L6234 dall'uscita dei tre sensori Hall. Il grafico per
stadio A è mostrato di seguito e la tabella di verità per tutti e tre gli stadi (
Affinché il circuito logico delle fasi B e C, la porta \'non\' deve essere commutata sull'altro lato di \'o.
Il problema con questo approccio è che ci sono quasi 20 connessioni in ogni fase, quindi ci vuole un bel po' di lavoro per metterlo. insieme.
È meglio programmarlo come una porta logica programmabile.

Il gruppo HOPRIO, un produttore professionale di controller e motori, è stato fondato nel 2000. Sede del gruppo nella città di Changzhou, provincia di Jiangsu.

Collegamenti rapidi

Contattaci

WhatsApp: +86 18921090987 
Tel: + 18921090987 
Aggiungere: No.19 Mahang South Road, distretto high-tech di Wujin, città di Changzhou, provincia di Jiangsu, Cina 213167
Lasciate un messaggio
CONTATTACI
Copyright © 2024 ChangZhou Hoprio E-Commerce Co., Ltd. Tutti i diritti riservati. Mappa del sito | politica sulla riservatezza