Controllo motore in PWM

Sto cercando di realizzare un controller per una pompa acqua elettrica con motore brushless. La velocità di rotazione della pompa sarà funzione della temperatura dell'acqua.
Vorrei iniziare a cimentarmi con Arduino... ho letto alcuni tutorial e acquistato il libro Getting started with Arduino..

Il sensore di temperatura è una termoresistenza PT100.

La pompa ha queste caratteristiche:

flow rate: 900 litres per hour / 15 litres per minute
pressure: 0.1 Bar
nominal voltage: 12 Volt direct current
current consumption: max. 1.2 Ampere
Bosch number: 3920200064
weight: aproxx. 250 grams
protection category : IP 69K (protected against water, dust-proof)

Quello che chiedo per il momento è di aiutarmi a comprare l'hardware necessario (inclusa la board di Arduino più adatta).

Sicuro che la pompa abbia un motore brushless ??? di solito hanno dei brushedd, nel primo coso ti conviene prendere un controller già pronto perchè con arduino UNO o MEGA non puoi fartelo da te a meno che non usi un controller da modellismo e con arduino lo piloti... nel secondo caso ti serve un Mosfet adeguato e con le adeguate resistenze e/o driver.
Aspetto chiarimenti :slight_smile:

Io comprerei una Board Arduino uno, i pin ti bastano, costa poco e ci puoi anche cambiare l atmega se per caso lo fondi o vuoi metterlo stand alone. Non avendo mai lavorato con i brushless di più non ti so dire. Ciao!
Edit: scusa ratto non avevo visto la tua risposta mi hai preceduto :wink:

Il motore è sicuramente Brushless (c'è scritto nelle specifiche).

Controller programmabili già pronti non ne conosco quindi non ho alternative. Da quanto ho letto devo usare un ESC. Mi sbaglio?

Io piloto in pwm una pompa Swiftech MCP350 (MCP350 - Rouchon Industries Inc., dba Swiftech - PC Liquid Cooling Systems CPU Cooler VGA Water Block Heatsink Pump Radiator Heat Exchanger Kit) che ha caratteristiche simili alla tua.... col pwm di arduino (o qualsiasi altro AVR, anche attiny13) piloto un bc547, con cui piloto un bd244 (PNP) per avere gnd comune e poter leggere la velocità di rotazione!
Problemi:
-se il pwm non è a 255 (il massimo) si nota un fischio...risolto con un condensatore da 22uf in parallelo alla pompa
-se il pwm è un pò inferiore a 255 la pompa non parte.... basta impostare il pwm al massimo per un paio di secondi, poi lo si può ridurre (entro certi limiti)
-se il pwm è inferiore a 255, tipo a 150, la lettura tachimetrica non è corretta.... condensatore da 0.1uf tra +5 e il segnale

Ciao!

Per pilotare una brushless hai semplicemente bisogno di un esc.
Il cavo a tre poli arancione rosso marrone lo colleghi rispetticamente ad un pin di arduino, 5v, massa. L'esc non si comanda in PWM ma in PPM, cosa che puoi fare con la libreria servo.
I cavi per il motore sono quei 3 azzurro rosso e nero e credo che la polarità non conti, credo, ma invertendone uno cambi la direzione del motore.
I due per l'alimentazione del motore che prenderai da una batteria esterna sono i restanti. Ovviamente guarda le specifiche del motore per sapere la tensione e la corrente necessaria che deve fornire la batteria e per la scelta dell'esc, stando molto largo con gli ampere sopportabili da quest'ultimo.

Parte codice, per "armare" l'esc devi inizialmente dare un segnale per qualche secondo con un servo.write(0), poi puoi andare tranquillamente

ivan64:
-se il pwm non è a 255 (il massimo) si nota un fischio...risolto con un condensatore da 22uf in parallelo alla pompa

Sai questo perché?
Perché il core di Arduino "imbroglia" :wink:
Quando gli dici di mettere il PWM a 255 in realtà lui disattiva il timer e dà un segnale HIGH sul pin per cui non hai più un'onda quadra con duty cicle 100% ma hai un segnale alto fisso.
Stesso discorso per il PWM a 0, viene scritto un LOW sul pin digitale, staccando il timer.

leo72:
Perché il core di Arduino "imbroglia" :wink:

Farabutto!! Se lo vedo in giro gli do 4 legnate. ]:smiley:

leo72:
Sai questo perché?
Perché il core di Arduino "imbroglia" :wink:
Quando gli dici di mettere il PWM a 255 in realtà lui disattiva il timer e dà un segnale HIGH sul pin per cui non hai più un'onda quadra con duty cicle 100% ma hai un segnale alto fisso.
Stesso discorso per il PWM a 0, viene scritto un LOW sul pin digitale, staccando il timer.

Beh, in teoria con un duty cicle al 100% il segnale è sempre alto, come se il duty cicle è a 0% il segnale è sempre basso... una sua logica c'è (forse)...
...comunque anche con pwm a 250 o 245, il fischio non si sente o è inudibile....

@ivan:
sì, il risultato è simile ma non ottenuto nello stesso identico modo. Usando il timer, sarebbe questo a tenere alto o basso il segnale sul pin. Usando invece la digitalWrite si setta l'uscita del pin mediante l'uso dei registri di I/O, sganciando il pin dal timer.
Un piccolo trucco, insomma.

Ringrazio tutti per l'aiuto. Ho alcune domande.

  • La pompa che vorrei usare ha un connettore a 2 pin. Vi sembra adatta?
  • Quale board mi conviene acquistare? Che mi dite di arduino due?

  • Posso alimentare arduino con una tensione variabile tra i 13V-15V?

  • Per l'ESC me ne serve uno alimentabile con una tensione variabile tra 13-15V. Va bene questo: