• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie silnikiem DC poprzez IR
#1
Cześć. Mam zamiar zrobić silniki DC sterowane pilotem ale jak narazie wszystko idzie jak najgorzej...
Po podłączeniu całego układu oraz podczerwieni napisałem sterownik który na chłopski rozum powinien działać ale nie chce...
Co rozumiem poprzez nie chce? Po klikaniu na przyciski +/- PWM zmniejsza się i zwiększa lecz silnik nie startuje... dopiero gdy PWM dojdzie do 255 to silnik gwałtownie rusza..
Pomoże ktoś aby silnik powolutku przy każdym naciśnięciu przycisku ruszał coraz to szybciej lub wolniej?
Niżej zamieszczam cały kod:


Kod:
#include <IRremote.h>
#define irPin 3
IRrecv irrecv(irPin);
decode_results results;
int pwm = 50;

void setup() {
 pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1
 pinMode(10, OUTPUT);
 
 pinMode(7, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 1
 pinMode(8, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
    Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&results)) {
     switch (results.value){
       case 0x1002C2D:
         pwm=pwm+5;
         Serial.print("+ ");
         Serial.println(pwm);
         analogWrite(6, pwm);
         digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
         digitalWrite(8, HIGH);
         analogWrite(10, pwm);
         digitalWrite(11, LOW);
         digitalWrite(12, HIGH);
       break;

       case 0x100ACAD:
         pwm=pwm-5;
         Serial.print("- ");
         Serial.println(pwm);
         analogWrite(6, pwm);
         digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
         digitalWrite(8, HIGH);
         analogWrite(10, pwm);
         digitalWrite(11, LOW);
         digitalWrite(12, HIGH);
       break;

       case 0x1009293:
         analogWrite(6, pwm);
         analogWrite(10, pwm);
         digitalWrite(6, LOW);
         digitalWrite(8, HIGH);
         digitalWrite(11, LOW);
         digitalWrite(12, HIGH);
         break;

       default:
       Serial.print("Nie zostałem zaprogramowany dla tego przycisku.. Jest to: ");
       Serial.print("0x");
       Serial.println(results.value, HEX);
       break;
     }
     irrecv.resume();
     }
}



napewno nie jest to wina złego podłączenia do sterownika, bo poprzez pętle for normalnie silnik się rozpędza.. Prosze o pomoc, pozdrawiam Smile
 
Odpowiedź
  


Wiadomości w tym wątku
Sterowanie silnikiem DC poprzez IR - przez arogant - 15-06-2017, 17:52
RE: Sterowanie silnikiem DC poprzez IR - przez adix - 16-06-2017, 00:07

Skocz do:


Przeglądający: 1 gości