Motore DC direzione e velocità con Arduino e Potenziometro – Risposta

Controllo velocità e direzione di un motore DC con Arduino, vediamo come!
Inizialmente questo articolo era stato scritto al volo per dare una risposta al commento di Enrico, che voleva pilotare un motore dc controllandone velocità e direzione tramite un potenziometro. Data la sua semplicità di comprensione e realizzazione, credo che lo schema ed il codice siano sufficienti.
Il circuito si rifà all’articolo L298N pilotare un motore DC con Arduino.
Lo schema:
Il codice:
/* Autore : Andrea Lombardo Web : http://www.lombardoandrea.com Articolo : https://wp.me/p27dYH-Jf */ //definizione dei pin static int pinDirezioneMarcia = A0; //pin analogico deputato a leggere i valori del potenziometro static int mA = 12; //pin digitale per determinare gli stati logici da inviare al modulo static int mB = 13; //pin digitale per determinare gli stati logici da inviare al modulo static int pinPotenza = 11; //pin digitale tramite il quale inviare un segnale di tipo PWM tramite la funzione analgWrite() //variabili usate per gestire e mostrare i valori di operazione int accelerazione; int potenza; //valore in uscita dal pin 11 void setup() { //inizializzo la comunicazione seriale cosi da mostrare i valori nel Monitor Seriale Serial.begin(9600); //inizializzo variabili accelerazione = 0; potenza = 0; //definisco tipologia pin pinMode(pinDirezioneMarcia, INPUT); //input in quanto legge il valore analogico del pin A0 pinMode(mA, OUTPUT); //output perche' definisce lo stato logico del pin IN1 del modulo L298N pinMode(mB, OUTPUT); //output perche' definisce lo stato logico del pin IN2 del modulo L298N pinMode(pinPotenza, OUTPUT); //output perche' definisce il valore PWM del pin EN1 del modulo L298N //pullDown sensore pinDirezioneMarcia digitalWrite(pinDirezioneMarcia, LOW); //Definisco il senso di marcia del motore /* mA | mB | Evento -----|-------|---------------------- LOW | LOW | fermo LOW | HIGH | Movimento in un senso HIGH | LOW | Movimento senso opposto HIGH | HIGH | Fermo */ digitalWrite(mA, LOW); digitalWrite(mB, HIGH); } void loop() { //leggo il valore analogico del potenziometro sul pin A0. int valorePotenziometro = analogRead(pinDirezioneMarcia); /* Il range dei valori analogici e' da 0 a 1023 mentre il range dei valori PWM e' da 0 a 255 per mantenere questa proporzionalita' eseguo la mappatura dei valori */ int valoreMappato = map(valorePotenziometro, 0, 1023, 0, 255); determinaMovimento(valoreMappato); } void determinaMovimento(int valoreMappato) { String direzione = ""; if (valoreMappato <= 121) { //vai in un senso digitalWrite(mA, LOW); digitalWrite(mB, HIGH); potenza = map(valoreMappato, 0, 121, 255, 0); direzione = "DIETRO"; } else if (valoreMappato >= 135) { //vai nell'altro digitalWrite(mA, HIGH); digitalWrite(mB, LOW); potenza = map(valoreMappato, 135, 255, 0, 255); direzione = "AVANTI"; } else if (valoreMappato > 121 && valoreMappato < 135) { //ferma il motore digitalWrite(mA, LOW); digitalWrite(mB, LOW); direzione = "FERMO"; valoreMappato = 0; } //Invio i dati letti al Monitor seriale, cosi da poterli vedere a video Serial.print("Accelerazione = "); Serial.print(potenza); Serial.print(" - direzione = "); Serial.println(direzione); analogWrite(pinPotenza, potenza); }
Come sempre
- Assicurati che tutti i collegamenti siano corretti;
- Ricordati di impostare la porta COM del tuo Arduino;
- Imposta la stessa velocità seriale definita in Serial.begin(9600), nel Monitor Seriale
- E ricorda che io non mi assumo nessuna responsabilità per eventuali danni o disastri che causi 😀
Trovi su Amazon
EsportsMJJ 775 Motore Dc 12V-36V 3500-9000Rpm Motore Grande Coppia Motore Ad Alta Potenza
11,99 €DollaTek 10Pcs DC 3V - 6V 130 Motore 17000 RPM per Arduino Fai da Te
6,99 €Angeek 10 mini motori da 3-6 V CC per giocattoli fai da te Arduino, modello 130
9,99 €XD-775 DC 24V 20000 RPM Motore elettrico con doppio cuscinetto a sfere ad alta coppia, motore CC a basso rumore ad alta velocità per trapano da tavolo
20,44 €yyuezhi Mini Motore DC 2 Pezzi Micromotore di Alta Qualità Piccoli Motori per Elettrodomestici Motore a Corrente Continua Acciaio Inossidabile Mini Motore Elettrico per Giocattoli fai da te
12,99 €BliliDIY Modulo Driver Motore Dc Dc Mos Tubo Ad Alta Potenza L298N / H Bridge Drive/Supporto Segnale Pwm Ppm
34,88 €DollaTek 5Pcs L298N Scheda Driver Dual H Bridge per Motore Passo-Passo per Arduino
12,99 €HiLetgo 5pcs L298N Motor Driver Controller Board Module Stepper Motor DC Dual H-Bridge for Arduino Smart Car Power UNO MEGA R3 Mega2560
13,49 €ARCELI 5 PCS L298N Modulo scheda controller azionamento motore Dual H Bridge Modulo passo-passo CC per Arduino
13,99 €L298N Modulo H Bridge Driver Board per Motore Passo-Passo Smart Car Robot Stepper Motor Smart Car Robot DC Stepper Motor Driver Controller Board
12,99 €GTIWUNG 20Pcs Potenziometro Rotativo a Cono Lineare B5K B10K B20K B50K B100K Ohm WH148 Albero 3pin con Dado e Rondella, Regolabile 3-Terminale B-Tipo Rotante Potenziometro con Pomello Berretto
10,99 €BOJACK 10 set B10K albero zigrinato 3 terminali Potenziometri rotativo conico lineare (WH148) 10K Ohm Resistori variabili kit di manopole in plastica blu
7,99 €arendo - Presa Dimmer con potenziometro - Potenziometro per lampadine a incandescenza - Max 275 Watt - Bianco
13,99 €RUNCCI-YUN 20pcs Potenziometro Rotativo, Arduino Potenziometri, Potenziometri Lineari, B5k B10k B20k B50k B100k Ohm Wh148 Regolabile 3-Terminale B-Tipo Rotante Potenziometro Con Pomello Berretto
10,65 €Hseamall 5PCS Potenziometro rotativo a 3 terminali per potenziometro lineare da 10 K OHM con cappucci e rondella
7,49 €Arduino Uno REV3 [A000066]
Elegoo UNO R3 Board Scheda ATmega328P ATMEGA16U2 con Cavo USB Compatibile con i progetti IDE di Arduino Conforme alla direttiva RoHS
10,99 €Arduino UNO SMD REV3 [A000073]
22,99 €AZDelivery Scheda Microcontrollore con Cavo USB e con eBook
9,49 €ARCELI USB Host Shield per Arduino UNO MEGA 2560 Supporto Google Android ADK USB HUB
10,99 €Approfondimenti
Motore DC direzione e velocità con Arduino e Potenziometro - File
- variatore velocità per motore a corrente continua (2)
- Controllo motore PWM Arduino (2)
- ridurre i giri motore lavatrice (2)
- variatore di velocità motori dc di potenza con arduino (1)
- schema collegamento azionamenti motori brushless (1)
- pilotare motore con arduino bassa velocità (1)
- motori a 12v con riduttore di velocita (1)
- controllo velocità motori elettrici dc (1)
- controllo motori arduino 12 (1)
- COME REGOLARE LA VELOCITA\ DI SERVOMOTORI (1)