buon giorno! ho acquistato da poco questo ponte h Dual H Bridge DC Stepper Motor Drive Controller Board Module L298N For Arduino | eBay
insieme a questi motori 1pcs For MABUCHI RF-500TB-12560 DC12V 5500RPM Micro Motor for Bell & Fragrance | eBay
qualcuno mi potrebbe spiegare come posso collegare quel ponte h a arduino? in oltre se mi potreste consigliare qualche tutorial, grazie ancora!
san google, aiutaci tu!
https://www.google.it/search?q=ponte+h+arduino&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:it:official&client=firefox-a&gfe_rd=cr&ei=Wod0U-HEIsTW8gfWqoDgAg
]
Quel motore non è un passo-passo ma un motorino DC, quindi a quel modulo ne puoi collegare 2, uno nel connettore di destra e uno in quello di sinistra.
NON alimentare i motorini direttamente da Arduino. L'alimentazione al modulo/motori devi prenderla da altra fonte, esempio pacco batterie da 12 (1,5*8=12V)
ho gia cercato su google! ho trovato vari schemi ma sono tutti mooolto tecnici(sopratutto per me) e non ci capisco nulla. vorrei solo sapere con quali pin devo collegare il ponte h per fallo funzionare.
Qui 1 motorino con ponteh, logicamente tu hai già tutto montato, qui invece con singolo chip:
http://scuola.arduino.cc/lesson/dd7ddb4/Controlla_un_Motore_DC_con_un_ponte_H_L293D
Qui da questo venditore c'e' foto (la terza nelle descrizioni) con spiegazione dei vari pin:
http://www.aliexpress.com/item/New-Dual-H-Bridge-DC-Stepper-Motor-Drive-Controller-Board-Module-Arduino-L298N-Free-Express-25pcs/827062987.html
Da questo venditore, stesso modulo ma ti dà un pò di info, foto e anche un link con codice (ma esempio è per stepper):
http://www.ebay.com/itm/L298N-Dual-H-Bridge-DC-Stepper-Motor-Drive-Controller-Board-Module-for-arduino-/110953019447
quindi io devo collegare i pin del motorino a output a del ponte h, alimentare a 12v, ma come posso comandare il motore? devo collegare un pin n1 a gnd e un pin n2 a un pin pwm di arduino ? piu è alto il segnale e piu il motore gira veloce?
intanto divertiti con questo codice
byte pwm;
byte EN1 = 7;
byte EN2 = 6;
void setup() {
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);
}
void avanti(byte pwm) {
digitalWrite(EN1, HIGH);
analogWrite(EN2, (255-pwm));
}
void indietro(byte pwm) {
digitalWrite(EN1, LOW);
analogWrite(EN2, pwm);
}
void ferma() {
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
}
void loop()
{
for ( pwm = 0; pwm <255; pwm++) {
avanti(pwm);
delay(20);
}
delay(1000);
ferma();
delay(2000);
for ( pwm = 255; pwm >0; pwm-- ) {
indietro(pwm);
delay(20);
}
delay(1000);
ferma();
delay(2000);
}
Da Arduino devi collegare il GND in comune al GND della alimentazione 12V
Poi da Arduino comandi il motorino collegando due pin, codice di @Brunello sono il pin 6 e 7 su IN1 e IN2
grz! e proprio quel che cercavo!
buon giorno.
mi sono molto divertito con quel codice e l'ho sviluppato arrivando a questo:
byte pwm;
byte EN1 = 7;
byte EN2 = 6;
byte EN3=8;
byte EN4=9;
void setup() {
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);
Serial.begin(9600);}
void avanti(byte pwm) {
digitalWrite(EN1, HIGH);
analogWrite(EN2, (255-pwm));
}
void indietro(byte pwm) {
digitalWrite(EN1, LOW);
analogWrite(EN2, pwm);
}
void ferma() {
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
}
void sterzaDestra(byte pwm) {
digitalWrite(EN3, HIGH);
analogWrite(EN4, (255-pwm));
}
void sterzaSinistra(byte pwm) {
digitalWrite(EN3, LOW);
analogWrite(EN4, pwm);
}
void diritto() {
digitalWrite(EN3, LOW);
digitalWrite(EN4, LOW);
}
char dir;
void loop() {
dir=Serial.read();
if(dir=='a'){avanti(255);}
if(dir=='i'){indietro(255);}
if(dir=='f'){ferma();}
if(dir='d'){sterzaDestra(255);}
if(dir='s'){sterzaSinistra(255);}
if(dir='x'){diritto();}
}
questo codice mi dovrebbe gestire due motori di una macchinetta. il primo la deve spingere avanti indietro(con i comandi avanti/indietro), il secondo la dovrebbe far sterzare. invice con questo codice funziona solo un motore(quello posto in OUT1,OUT2).
qualcuno a qualche idea? per comandare due motori bisogna fare qualcosa di speciale?
Bene, allora lezione numero 2
byte pwm ;
byte IN1 = 6;
byte IN2 = 7;
byte IN3 = 8;
byte IN4 = 9;
byte ENA = 5 ; // ENA Motore di Sinistra
byte ENB = 10 ; // ENB Motore di Destra
int dir ;
void setup() {
Serial.begin(9600); // Abilita seriale
pinMode(IN1, OUTPUT); // Imposta i pin come uscite
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
ferma();
}
void motore1_avanti(byte pwm) { // Motore di SInistra
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite (ENA, pwm );
}
void motore2_avanti(byte pwm) { // Motore di Destra
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite (ENB, pwm);
}
void motore1_indietro(byte pwm) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite (ENA, pwm );
}
void motore2_indietro(byte pwm) {
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite (ENB, pwm);
}
void ferma () {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite (ENA, 0);
analogWrite (ENB, 0);
}
void loop() {
while ( Serial.available() >0 )
{
dir = Serial.read();
if(dir == 'a'){
motore1_avanti(255);
motore2_avanti(255);
Serial.println("avanti");
}
if(dir == 'i'){
motore1_indietro(255);
motore2_indietro(255);
Serial.println("indietro");
}
if(dir == 'f'){
ferma();
Serial.println("ferma");
}
if(dir == 'd'){ // sterza a Destra
motore1_avanti(255); // Motore di sinistra Veloce
motore2_avanti(50); // Motore di destra piano
Serial.println("Sterza a destra");
}
if(dir == 's'){ // sterza a Sinistra
motore1_avanti(50); // Motore di Sinistra piano
motore2_avanti(255); // Motore di destra veloce
Serial.println("sterza a sinistra");
}
}
}