Controllo di velocità per motori in Corrente Continua attraverso comando PWM.
Due pulsanti UP/DOWN permettono di regolare la velocità in modo "proporzionale" con una "gradinata" di 256 valori diversi.
Uno stadio driver a transistore BJT accoppia/separa lo stadio finale attuatore.
Dimensionando opportunamente lo stadio è anche possibile alimentare un motore a tensioni nominali diverse (es. 12 V o 24 volt).
/* ------------------------------Inizio Programma -------------------------------------
* 26/5/2015
* PWM per comando dei motori in CC (controllo UP/DOWN)
* L'uscita va disaccoppiata con uno stadio driver.
* Modificato da Achille De Santis il 07-07-2019
*
*/
// -------------------------- I/O .------------------------
#define UP 2
#define DOWN 3
#define USCITA 9 // Uscita PWM
// --------------------------------------------------------
bool S1; // variabili booleane interne
bool S2;
const int PAUSA=10; // Costante pausa. Serve a dare comandi progressivi non troppo veloci.
int pwm; // variabile di uscita
void setup()
{
// Impostazione di pull-up interna ad Arduino
pinMode(UP, INPUT_PULLUP); // il pulsante va collegato verso massa
pinMode(DOWN, INPUT_PULLUP); // il pulsante va collegato verso massa
pinMode(USCITA, OUTPUT); // uscita per comando motore
pwm = 0;
}
void loop()
{
S1=digitalRead(UP);
S2=digitalRead(DOWN);
if(S1=LOW && pwm<255) pwm++;
else if(S2=LOW && pwm>0) pwm--;
analogWrite(USCITA, pwm);
delay(PAUSA);
}
// ------------------------------ Fine Programma -------------------------------------
Simulazione: Controllo motore in DC con PWM
Nessun commento:
Posta un commento