Denna modul kan styra 2 st DC-motorer.
I dessa exempel är det bara en motor kopplad.
I videon kör jag med 7 Volt på 5 Volts motor,
Det gör att den går mycket jämnare.
Det går bra om motorn inte går i full hastighet för länge.
Uno kortet styr H-Bryggan med PWM-styrning.
Direkt styrning, ingen PWM.
Enkaste typen av styrning,
bara tryckknappar som kopplar B-IB och B-IA till GND
Modulen har inbyggt skydd.
Om du trycker på båda knapparna samtidigt,
går ingen ström till motorn
/*
Experiment med UNO R3 och Motor med L9110.
Micro knapp strömbrytare.
Koppla strömbrytare till 8 och ett ben till 10.
Micro knapp strömbrytare.
Koppla strömbrytare till 11 och ett ben till 13.
Koppla L9110 Modulen
GND till Uno GND
Vcc Till Extern strömförsörjning (5 Volt motor så 5V strömförsörjning).
B-IB till Uno 3
B-IA till Uno 5
Extern Strömförsörjning
GND till Uno GND
Uno kortet får sin ström från datorn via USB
*/
//#define debugCar
#define MotorPinneFram 3
#define MotorPinneBack 5
//
#define pinneInKnapp1 13
#define pinne2Knapp1 11
#define pinneInKnapp2 10
#define pinne2Knapp2 8
int Hastighet = 0;
long Flyttat = 0;
long Raknare = 0;
int fram = 1;
int back = 1;
void setup() {
#if defined debugCar
Serial.begin(9600);
Serial.println("Setup");
#endif
pinMode(pinneInKnapp1, INPUT_PULLUP);
pinMode(pinneInKnapp2, INPUT_PULLUP);
pinMode(pinne2Knapp1, OUTPUT);
pinMode(pinne2Knapp2, OUTPUT);
digitalWrite(pinne2Knapp1, LOW);
digitalWrite(pinne2Knapp2, LOW);
pinMode(MotorPinneFram, OUTPUT);
pinMode(MotorPinneBack, OUTPUT);
}
void loop() {
Raknare = Raknare + 1;
if(Raknare > 4000){
Raknare = 0;
back = digitalRead(pinneInKnapp1);
fram = digitalRead(pinneInKnapp2);
if (fram == 0){
Hastighet = Hastighet + 5;
if(Hastighet > -99 && Hastighet < 0){
Hastighet = 0;
}
if(Hastighet > 0 && Hastighet < 100){
Hastighet = 100;
}
if(Hastighet > 255){
Hastighet = 255;
}
}
if (back == 0){
Hastighet = Hastighet - 5;
if(Hastighet < 0 && Hastighet > -130){
Hastighet = -130;
}
if(Hastighet > 0 && Hastighet < 130){
Hastighet = 0;
}
if(Hastighet < -255){
Hastighet = -255;
}
}
DebugCarDump();
}
if(Hastighet == 0){
digitalWrite(MotorPinneBack, HIGH);
digitalWrite(MotorPinneFram, HIGH);
}
if(Hastighet > 0){
digitalWrite(MotorPinneBack, HIGH);
analogWrite(MotorPinneFram, 255 - Hastighet);
}
if(Hastighet < 0){
digitalWrite(MotorPinneFram, HIGH);
analogWrite(MotorPinneBack, 255 - abs(Hastighet));
}
}
void DebugCarDump(){
#if defined debugCar
Serial.print("fram=");
Serial.print(fram);
Serial.print(" back=");
Serial.print(back);
Serial.print(" Hastighet=");
Serial.print(Hastighet);
Serial.print(" Raknare=");
Serial.println(Raknare);
#endif
}