Bici elettrica con arduino (controller pwm)

I parametri del motore purtroppo non sono disponibili, oltre le info che ho già dato in prima pagina non si trova altro.

Per quanto riguarda la strumentazione di misura ho solo un paio di multimetri e niente di più.

Ho mandato una mail all'ideatore di ebe per vedere che frequenze ha usato.

Allora l'ideatore di ebe non conosce la frequenza usata per il pwm poichè non avendo esperienza e strumenti di misura adeguati ha scelto la via della sperimentazione aiutato da un suo amico ingegnere, quindi l'unico modo adesso è studiare lo schema del 555 e capire la frequenza dai valori delle resistenze e del condensatore.

Lo schema è il seguente:

Ho provato con alcuni programmi a tirare fuori la frequenza ma non capisco se è corretta o meno, qualcuno di voi può provare in modo da darmi conferma, grazie mille.

Allora non riesco a tirare fuori la frequenza dallo schema del 555, il programma che sto usndo mi da valori troppo elevati e probabilmente sono io che sbaglio e non capisco dove.

Comunque in giro ci sono altre persone che hanno lavorato su motori come il mio e la cosa strana è che alcuni lavorano con frequenza molto basse (100/500Hz), altri con frequenze alte (15/20Khz), ho scoperto inoltre che le centraline vendute nei kit per bici elettriche lavorano a 16Khz, quindi direi che è un buon punto di partenza almeno per iniziare le prove, visto che il mio motore nasce per lavorare con queste centraline.

Ora mi rimane solo un dubbio, come faccio ad accorgermi che la frequenza non è quella esatta, a cosa devo stare attento ?
Non so magari il mos scalda troppo o cose del genere...

Infine in parallelo al motore mi sa che il diodo 1N4007 non va bene, forse ci vuole qualcosa di più veloce, consigli ?

BY255 è uno schotchy da 2A oppure FR306 è un ultrafast da 2A io ne metterei due tre in parallelo ad ogni modo :smiley:
eventualmente usa un MBR45 se riesci a trovarlo anche perchè costa un occhio della testa...
Per quanto riguarda la frequenza non so aiutarti... io proverei a vedere se scalda molto o dal rumore.. ora come ora sto provando a controllare un motore di una minimoto che a vuoto consuma la bellezza di 7.5A (non è a magnati permanenti ma a doppio avvolgimento però dovrebbe avere le 00 quadrate :stuck_out_tongue: ) e usando il PWM standard di arduino fischia... se alzi la frequenza non lo fa più...

Grazie dei consigli ratto93, domani vedo se trovo i diodi da un rivenditore locale altrimenti mi tocca fare un altro ordine.

Per lo zener 12v cosa consigli, ne devo prendere uno particolare ?

Ciao, adesso ho tutto il materiale che mi serve per mettere su un circuito di prova, ho preso i diodi schottky BY255 da mettere in parallelo al motore e uno zener BZV58 da 12V per ricavare i 12V necessari al mosfet driver dalla batteria, poi ho aggiunto una resistenza da 1K 2W prima del diodo zener per limitare la corrente.

Il risultato è questo:

Oggi dovrei avere un pò di tempo per testare il circuito, farò delle prove alla frequenza PWM di default fornita da arduino con analogWrite() e poi provero a 16Khz.

Ah dimenticavo, forniro alimentazioni separate ad arduino e al motore per non avere disturbi ecc, ma le masse di arduino e le batterie devono andare in comune giusto ?
Alimentero arduino dalla usb del pc, ci sono accorgimenti particolari che devo considerare ?

Grazie a tutti

Le masse vanno comuni, lo zener però non ho capito dove vuoi metterlo....
occhio ad alimentare il tutto, mettici un fusibilino da 10A in modo da non friggere il mos se sbagli qualcosa... per di più io eviterei di alimentare arduino da PC, ha tutte loe protezioni del caso ma poco ci vuole a sbagliare e magari a rimetterci parte del PC.....
usa un potenziometro e alimentalo a parte...

Lo zener è collegato come da schema sopra, è il diodo con sigla BZV58, ho preso spunto dallo schema ebe che trovi alla pagina precedente del topic.

Purtroppo posso alimentare arduino da pc oppure con un alimentatore da rete che fornisce 5V 500mA, non ho altrnative.

Inoltre stavo pensando che non è il caso di mettere tutto su breadboard che probabilmente non supporta correnti elevate, mi sa che devo cablare tutto con del cavo trecciato da 15A, comunque non credo che il motore a vuoto consumi più di un ampere.

Ora supponendo di alimentare arduino con l'alimentatore da rete USB, le masse delle batterie e del resto del circuito devono confluire nell'ingresso GND di arduino giusto ?

Scusa, non avevo visto lo schema, le masse sempre in comune a tutto :slight_smile:
per il discorso della potenza erogabile, si hai ragione ma a quel punto metti volante solo il mosfet e l resto del circuito lo lasci su breadboard... occhio se comincia a scaldare lo devi raffreddare opportunamente..

Allora le prove effettuate con il circuito postato sopra hanno avuto successo :grin:

In pratica ho prima utilizzato la frequenza pwm di default del pin 9 pari a 490Hz, risultato: il motore faceva un pò di rumore e assorbiva a vuoto circa 1.3A

Con la frequenza di 16Khz invece il rumore è sparito e l'assorbimento a vuoto è calato a 0.7A, quindi direi che se i controller pwm commerciali vanno a 16Khz ce un motivo ! :smiley:

L'unica nota negativa è che durante le prove ho fatto fuori un mosfet per una banale distrazione :sweat_smile:, in pratica per misurare la tensione che arrivava al motore ho messo il multimetro in parallelo al motore stesso dimenticandomi che era impostato per misurare la corrente quindi ho creato un corto e il mosfet è letteralmente esploso !

La distrazione è una brutta bestia :~

Ora che il circuito base è completo credo di proseguire nel modo seguente:

  • realizzare il circuito su pcb usando come controllore un attiny85, montare la corona sulla ruota posteriore e incominciare a fare delle prove su strada, successivamente usare arduino per realizzare il resto (tachimetro, ecc.)

Vorrei strutturare il circuito in 2 moduli che prevedono l'uso di due microcontrollori, il 328 e il tiny85, in modo che il 328 sia dedicato a computer di bordo che gestisce tutte le funzionalità del caso, mentre il modulo con il tiny85 gestisce solo il mosfet driver e quindi abbia un ruolo di "potenza".
In questo modo è possibile usare sempre il computer di bordo e in caso di cambio motore sarà sufficiente sostituire solo il modulo di "potenza" con un mosfet driver e relativo mosfet adeguato.

Cosa ne pensate ?

Mi sembra un ottima soluzione :slight_smile:

Ho un dubbio che mi assale, devo mettere una resistenza sul gate del mosfet ?

Ho visto che alcuni mettono una resistenza da pochi ohm in serie tra il mosfet driver e il gate per ridurre l'effetto "ringing", e mettono anche una resistenza tra il gate e massa da 10K piu o meno per scaricare la capacità di gate quando viene spento il circuito.

Allora faccio un passo avanti e due indietro sigh :~

Facciamo il punto della situazione, grazie ad astrobeed ho capito che le resistenze al gate ci vogliono e fin qui tutto bene.

Oggi dopo aver programmato l'attiny85 per ottenere un onda quadra a 16Khz ho deciso di montare il circuito di "potenza" completo, in pratica ho aggiunto lo stadio di alimentazione con un 7805 che si occupa di prendere in ingresso i 24V delle batterie e trasformarli in 5V per alimentare l'attiny85 e il potenziometro da 10K, come potete vedere da schema:

Il problema è che cosi non va, cioè appena giro il potenziometro per accelerare il motore fa dei sobbalzi e poi parte a manetta, mentre se al posto del 7805 uso arduino per alimentare il tutto il circuito funziona alla grande, arduino viene alimentato con un alimentatore da parete USB.

Il 7805 lo uso sempre ma in questo caso non so cosa non va !

Da quanto è il potenziometro ? il 7805 che versione è ? 78L05,7805 o 78H05?

Il potenziometro è da 10K, mentre il 7805 è la versione L7805CV.

strano che rompa le balle, se fosse la versione da 100mA magari la lettura del micro potrebbe sballarsi un attimo ma la versione da 1A non deve vacillare... prova con un teste a misurare la tensione ai capi del nanetto mentre muovi il potenziometro e poi sul pin a cui è collegato il pot in modo da vedere se la tensione oscilla oppure se è il pot ad avere problemi..non mi viene in mente altro al momento.. dubito che le interferenze date dal motore possano influire.. il motore lo alimenti a batteria o tramite trasformatore ? perchè se alimenti tutto a bat e ti da questo problema ok ma se lo alimenti da rete potrebbe essere una massa che non tocca o che tocca male, anche se dipende da come lo hai collegato.
se il 7805 è da 100mA vuol dire che non riesce ad alimentare tutto.
una piccola parentesi, dove hai comprato i driver ? me ne servirebbero un paio.

Il 7805 è da 1A e anche io non mi spiego perchè fa cosi, alimento tutto da batterie in pratica dovrebbe essere la prova finale del circuito prima di realizzare il pcb e il dissipatore per il mosfet.

Se non funziona cosi non so proprio cosa fare, ho provato con il multimetro a verificare la tensione in uscita al 7805 ed è di 5V, il tutto è collegato come da schema sopra tramite cavi e breadboard, le parti che assorbono molto sono collegate mediante cavi da 15A.

I driver li ho presi da rs.

se la batteria di alimentazione del circuito è la stessa che alimenta il motore, allora è causato dal calo di tensione e dalla richiesta di amperaggio del motore. Prova ad usare una batteria a parte, o usare dei grossi condensatori per mantenere constante la potenza a valle del 7805

Quanto grossi devono essere i condensatori ?

Domani provo ad alimentare il 7805 con una batteria da 9V per vedere se si ripresenta il problema, grazie del consiglio Lesto.

non so le dimensioni, non sono un esperto di elettronica, ma ho visto altre volte problemi simili risolti in questo modo