Заголовок должен отражать суть темы. Переформулируй или тема будет удалена.
нашел проект станка для изготовления прутка для 3д принтера из пластиковых бутылок, но он не хочет работать.
температура переменным резистором меняется, а текущая температура почемуто отрицательная и нагреватель все время нагревается, если убрать ресистор который у датчика температуры, то текущая температура максимальная показывает и нагреватель не греет совсем
температура переменным резистором меняется, а текущая температура почемуто отрицательная и нагреватель все время нагревается, если убрать ресистор который у датчика температуры, то текущая температура максимальная показывает и нагреватель не греет совсем
C++:
#include <Arduino.h>
#include <Stepper.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define POSITIVE_ROUNDS 10
#define NEGATIVE_ROUNDS POSITIVE_ROUNDS * -1
#define STEPS_PER_REV 10
#define SPEED_RPM 50
#define IN1_PIN 11
#define IN2_PIN 10
#define IN3_PIN 9
#define IN4_PIN 8
#define ENA_PIN_A 12
#define ENA_PIN_B 7
void enableStepper(){
digitalWrite(ENA_PIN_A, HIGH);
digitalWrite(ENA_PIN_B, HIGH);
}
void disableStepper(){
digitalWrite(ENA_PIN_A, LOW);
digitalWrite(ENA_PIN_B, LOW);
}
char vstup;
int term;
boolean heated = false;
int potS;
int temp;
int potR;
int motorSpeed;
int setTemp = 250;
int buttonState = 0;
boolean motorStart = false;
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper stepper = Stepper(stepsPerRevolution, IN1_PIN, IN2_PIN, IN3_PIN, IN4_PIN);
int stepCount = 0; // number of steps the motor has taken
float currentMillis1;
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(5, OUTPUT);
pinMode(3, INPUT);
stepper.setSpeed(SPEED_RPM);
pinMode(ENA_PIN_A, OUTPUT);
pinMode(ENA_PIN_B, OUTPUT);
//lcd.begin(20,4);
lcd.init(); // initialize the lcd
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor ( 3, 0 );
lcd.print("->FILAMENTOR<-");
lcd.setCursor ( 0, 1 );
lcd.print("Set temperature:");
lcd.setCursor ( 15, 1);
lcd.print(setTemp);
lcd.setCursor ( 0, 2);
lcd.print("Temperature:");
lcd.setCursor ( 15, 2);
lcd.print(temp);
lcd.setCursor ( 0, 3);
lcd.print("Speed:");
lcd.setCursor ( 15, 3);
lcd.print(motorSpeed);
delay(2000);
currentMillis1 = millis();
}
void loop() {
while (motorStart == true) {
if (currentMillis1 + 500 < millis()) {
term = analogRead(A0);
potS = analogRead(A1);
potR = analogRead(A2);
motorSpeed = map(potS, 0, 1024, 1, 20);
temp = map(term, 0, 1024, -40, 270);
setTemp = map(potR, 0, 1024, 18, 270);
lcd.setCursor ( 15, 1);
lcd.print(" ");
lcd.setCursor ( 15, 1);
lcd.print(setTemp);
lcd.setCursor ( 15, 2);
lcd.print(" ");
lcd.setCursor ( 15, 2);
lcd.print(temp);
lcd.setCursor ( 15, 3);
lcd.print(" ");
lcd.setCursor ( 15, 3);
lcd.print(motorSpeed);
currentMillis1 = millis();
if (temp >= setTemp) {
heated = true;
}
if (temp < setTemp-3 && heated == true){
heated = false;
}
if (heated == true) {
digitalWrite(5, HIGH);
lcd.setCursor ( 19, 2);
lcd.print(" ");
} else {
digitalWrite(5, LOW);
lcd.setCursor ( 19, 2);
lcd.print("H");
}
}
stepper.setSpeed(motorSpeed);
stepper.step(-stepsPerRevolution / 100);
buttonState = digitalRead(3);
if (buttonState == 1) {
motorStart = false;
disableStepper();
lcd.setCursor ( 19, 3);
lcd.print(" ");
delay(700);
}
}
if (currentMillis1 + 500 < millis()) {
term = analogRead(A0);
potS = analogRead(A1);
potR = analogRead(A2);
motorSpeed = map(potS, 0, 1024, 1, 20);
temp = map(term, 0, 1024, -40, 270);
setTemp = map(potR, 0, 1024, 18, 270);
lcd.setCursor ( 15, 1);
lcd.print(" ");
lcd.setCursor ( 15, 1);
lcd.print(setTemp);
lcd.setCursor ( 15, 2);
lcd.print(" ");
lcd.setCursor ( 15, 2);
lcd.print(temp);
lcd.setCursor ( 15, 3);
lcd.print(" ");
lcd.setCursor ( 15, 3);
lcd.print(motorSpeed);
currentMillis1 = millis();
if (temp >= setTemp) {
heated = true;
}
if (temp < setTemp-3 && heated == true){
heated = false;
}
if (heated == true) {
digitalWrite(5, HIGH);
lcd.setCursor ( 19, 2);
lcd.print(" ");
} else {
digitalWrite(5, LOW);
lcd.setCursor ( 19, 2);
lcd.print("H");
}
}
buttonState = digitalRead(3);
if (buttonState == 1) {
motorStart = true;
enableStepper();
lcd.setCursor ( 19, 3);
lcd.print("M");
delay(500);
}
}