Go Down

Topic: Styra två DC motorer oberoende av varandra  (Read 10681 times) previous topic - next topic

kristert

Hej jag har ett projekt med Temperarturstyrning ,jag använder två LM35 tempsensorer med varsin analog ingång A0 A1 på arduino uno  sedan är en pumpmotor ansluten till en mosfetbrygga  IRF520 https://www.kjell.com/se/produkter/el-verktyg/arduino/moduler/mosfet-modul-irf520-for-arduino-p87045.
En fläkt är kopplad likadant med IRF520 . De båda Mosfet-modulerna är anslutna till utgång 5 respektive 9

Nu till min fråga " varför är den lm35 som sitter på ingång A0 den som styr båda utgångarna 5 resp 9 , min tanke var att A0 skall styra utgång 5 och A1 skall styra utgång 9 .

Bifogar skethen

jag undrar om det är något fel i coden och om det finns bättre sätt att lösa detta

Code: [Select]


// Temperaturmonitor till Creality CR10 s4

/*Import following Libraries*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//I2C pins declaration
LiquidCrystal_I2C lcd(0x27, 16, 2);

int sensorPin1 = A0;
int sensorPin2 = A1;
//int sensorPin3 = A2; not used in this setup
int PWM1 = 9;
int PWM2 = 5;
//int PWM3 = 11; not used in this setup
int sensorVal1;
int sensorVal2;
//int sensorVal3;
int PWMVal1;
int PWMVal2;
//int PWMVal3;
//int A = sensorPin1;
//int B = sensorPin2;
//int C = sensorPin3;

void setup() {
  // put your setup code here, to run once:
  lcd.begin();//Initializing display
  lcd.backlight();//To Power ON the back light
  //lcd.backlight();// To Power OFF the back light

  pinMode(sensorPin1, INPUT);
  pinMode(sensorPin2, INPUT);
  // pinMode(sensorPin3, INPUT);
  pinMode(PWM1, OUTPUT);
  pinMode(PWM2, OUTPUT);
  //pinMode(PWM3, OUTPUT);
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  //this code prints sensor value to the console
  //Write your code
  // lcd.setCursor(0,0); //Defining positon to write from first row,first column .
  // lcd.print("TEMPERATUR "); //You can write 16 Characters per line .
  // delay(1000);//Delay used to give a dynamic effect
  // lcd.setCursor(0,1);  //Defining positon to write from second row,first column .
  // lcd.print("3-Dprinter =");
  // delay(800);
  // lcd.clear();//Clean the screen
  lcd.setCursor(0, 0);
  lcd.print("Kylvatten c =");
  lcd.print(sensorVal1);
  lcd.setCursor(0, 1);
  lcd.print("Extmotor  c =");
  lcd.print(sensorVal2);
  //   delay(80);

  Serial.print("Kylvatten = ");
  Serial.print(sensorVal1);
  Serial.print("\t");
  Serial.print("Extrudermotor = ");
  Serial.print(sensorVal2);
  Serial.print("\t");
  Serial.println("Vattentank = ");
  //  Serial.println(sensorVal3);



  // delay(40);

  //read sensor value and set upper limit cap
  sensorVal1 = analogRead(sensorPin1);
  sensorVal2 = analogRead(sensorPin2);
  // sensorVal3 = analogRead(sensorPin3);

  sensorVal1 = analogRead(sensorPin1);
  sensorVal1 = (sensorVal1 * 5.0 * 100.0) / 1024.0; //beräkna temperaturen i Celsius
  sensorVal2 = analogRead(sensorPin2);
  sensorVal2 = (sensorVal2 * 5.0 * 100.0) / 1024.0; //beräkna temperaturen i Celsius
  //  sensorVal3 = analogRead(sensorPin3);
  //   sensorVal3 = (sensorVal3 * 5.0*100.0)/1024.0; //beräkna temperaturen i Celsius

 //sätter övre tempgräns

  if (sensorVal1 > 100) {
    (sensorVal2 > 100);
    //(sensorVal3 >100);

    sensorVal1 = 100;
    sensorVal2 = 100;
    // sensorVal3 = 100;
  }

  //map and assign pwm values to the fan output 0 to 255 corresponds to 0 to 100%
  PWMVal1 = map(sensorVal1, 35, 100, 240, 255 );
  PWMVal2 = map(sensorVal2, 35, 100, 240, 255 );
  // PWMVal3 = map(sensorVal3, 0, 110, 90, 40 );

  //set 30 as out cutout or cut in limit where the fan switches from off to the lower PWM limit
  if
  (sensorVal1 < 30) {
    (sensorVal2 < 30);
    //(sensorVal3 <20);

    PWMVal1 = 0;
    PWMVal2 = 0;
    // PWMVal3 = 0;
  }

  //write the PWM value to the pwm output pin
  analogWrite(PWM1, PWMVal1);
  analogWrite(PWM2, PWMVal2);
  //analogWrite(PWM3, PWMVal3);
}

Go Up